Add title screen and load into it on boot
This commit is contained in:
parent
8a84157d24
commit
38e36acc97
4 changed files with 158 additions and 1 deletions
BIN
assets/sprites/logo.png
Normal file
BIN
assets/sprites/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.5 KiB |
2
init.js
2
init.js
|
@ -1,5 +1,5 @@
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
Game.init(function() {
|
Game.init(function() {
|
||||||
Game.setScene(Level("Test Level"));
|
Game.setScene(Title());
|
||||||
});
|
});
|
||||||
});
|
});
|
|
@ -68,6 +68,10 @@ Memory = (function() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Memory.file = function(slot) {
|
||||||
|
return JSON.parse(window.localStorage.getItem("dolphin-save-" + slot));
|
||||||
|
}
|
||||||
|
|
||||||
Memory.loadStage = function() {
|
Memory.loadStage = function() {
|
||||||
Game.setScene(Level(data.lastStage));
|
Game.setScene(Level(data.lastStage));
|
||||||
}
|
}
|
||||||
|
|
153
other/Title.js
Normal file
153
other/Title.js
Normal file
|
@ -0,0 +1,153 @@
|
||||||
|
Title = function() {
|
||||||
|
var title = Scene();
|
||||||
|
|
||||||
|
// Scroll planes
|
||||||
|
var background = ScrollPlane(0, 0, 360, 1, 3072, 0, "bg-mountains", 131);
|
||||||
|
var waterBack = ScrollPlane(0, 20, 1, 1, 0, 0, "waterback", 130);
|
||||||
|
var waves = [];
|
||||||
|
var logo = Renderer.sprite("logo");
|
||||||
|
logo.position.x = 240;
|
||||||
|
|
||||||
|
var createdby = Renderer.text("Made by RedEnchilada", 324, 0);
|
||||||
|
var jam = Renderer.text("For AdventureJam 2016", 20, 0);
|
||||||
|
|
||||||
|
var fade = new PIXI.Graphics();
|
||||||
|
|
||||||
|
var menu;
|
||||||
|
|
||||||
|
for (var i = 1024; i > 150; i *= 0.85) {
|
||||||
|
waves.push(ScrollPlane(
|
||||||
|
i, -3000/i, 40, 250/i, (i)/2, (Math.random()*300-150)/i, "water", Math.round(i/8)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
title.init = function() {
|
||||||
|
title.stage.addChild(background.plane);
|
||||||
|
title.stage.addChild(waterBack.plane);
|
||||||
|
waves.forEach(function(p) {
|
||||||
|
title.stage.addChild(p.plane);
|
||||||
|
});
|
||||||
|
title.stage.addChild(logo);
|
||||||
|
title.stage.addChild(createdby);
|
||||||
|
title.stage.addChild(jam);
|
||||||
|
|
||||||
|
fade.beginFill(0x000000);
|
||||||
|
fade.drawRect(0, 0, 500, 280);
|
||||||
|
fade.endFill();
|
||||||
|
title.stage.addChild(fade);
|
||||||
|
}
|
||||||
|
|
||||||
|
title.z = 600;
|
||||||
|
|
||||||
|
title.think = function() {
|
||||||
|
|
||||||
|
if (!menu) {
|
||||||
|
if (title.ticCount == 700 || Input.pressed("accept")) {
|
||||||
|
menu = [
|
||||||
|
Renderer.text("New Game", 200, 170),
|
||||||
|
Renderer.text("Load Game", 200, 190),
|
||||||
|
Renderer.text("Slot: " + Memory.slot, 215, 220),
|
||||||
|
];
|
||||||
|
|
||||||
|
menu.forEach(function(m) {
|
||||||
|
title.stage.addChild(m);
|
||||||
|
m.tint = 0x66FF00;
|
||||||
|
});
|
||||||
|
|
||||||
|
title.menuOption = Memory.file(Memory.slot) ? 1 : 0;
|
||||||
|
menu[1 - title.menuOption].alpha = 0.4;
|
||||||
|
txt();
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (title.leaving) {
|
||||||
|
if (fade.alpha >= 1) {
|
||||||
|
if (title.menuOption) {
|
||||||
|
Memory.load(true);
|
||||||
|
} else {
|
||||||
|
Memory.clear();
|
||||||
|
Game.setScene(Level("Intro"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Input.pressed("up")) {
|
||||||
|
title.menuOption = 0;
|
||||||
|
menu[0].alpha = 1;
|
||||||
|
menu[1].alpha = 0.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Input.pressed("down")) {
|
||||||
|
title.menuOption = 1;
|
||||||
|
menu[1].alpha = 1;
|
||||||
|
menu[0].alpha = 0.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Input.pressed("left")) {
|
||||||
|
Memory.slot = (Memory.slot + 3) % 5 + 1;
|
||||||
|
txt();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Input.pressed("right")) {
|
||||||
|
Memory.slot = Memory.slot % 5 + 1;
|
||||||
|
txt();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Input.pressed("accept")) {
|
||||||
|
if (title.menuOption == 0 || Memory.file(Memory.slot)) {
|
||||||
|
title.leaving = true;
|
||||||
|
} else {
|
||||||
|
// Indicate that this isn't possible
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function txt() {
|
||||||
|
var file = Memory.file(Memory.slot);
|
||||||
|
|
||||||
|
var list = { // SSSPPPOOOIIILLLEEERRRSSS.
|
||||||
|
"Save 1": "Ocean",
|
||||||
|
"Save 2": "Cavern",
|
||||||
|
"Save 3": "Lair",
|
||||||
|
"Save 4": "Final",
|
||||||
|
"Intro": "Epilogue",
|
||||||
|
"Save 5": "Closure",
|
||||||
|
};
|
||||||
|
|
||||||
|
menu[2].text = "Slot: " + Memory.slot + " - " + (file ? list[file.lastStage] : "EMPTY");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
title.render = function() {
|
||||||
|
waves.forEach(function(p) {
|
||||||
|
p.plane.tilePosition.x -= p.driftFactor + 0.01;
|
||||||
|
|
||||||
|
p.plane.position.y = 150 - title.z*p.moveFactor + p.z;
|
||||||
|
});
|
||||||
|
|
||||||
|
waterBack.plane.position.y = Math.max(0, Math.min(150-(title.z/5), 170-(title.z*1.5)));
|
||||||
|
waterBack.plane.scale.y = 280 - waterBack.plane.position.y;
|
||||||
|
|
||||||
|
background.plane.position.y = (title.z/-6)-160;
|
||||||
|
background.plane.tilePosition.x -= 0.3;
|
||||||
|
|
||||||
|
logo.position.y = 50 - title.z;
|
||||||
|
createdby.position.y = Math.min(500 - title.z, 250);
|
||||||
|
jam.position.y = 200 - title.z;
|
||||||
|
|
||||||
|
if (title.z > -50) {
|
||||||
|
title.z --;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (title.leaving) {
|
||||||
|
fade.alpha += 0.02;
|
||||||
|
} else if (fade.alpha > 0) {
|
||||||
|
fade.alpha -= 0.005;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return title;
|
||||||
|
};
|
Loading…
Add table
Reference in a new issue