More coooode ....
2
Makefile
|
@ -11,7 +11,7 @@ build:
|
|||
|
||||
stat: build
|
||||
@filesize=`stat --printf="%s" muri.zip` && \
|
||||
echo $$filesize "byte ->" $$((100*$$filesize/13000)) "%"
|
||||
echo $$filesize "byte ->" $$((100*$$filesize/13312)) "%"
|
||||
|
||||
clean:
|
||||
rm -f src/muri.min.js muri.zip
|
||||
|
|
BIN
src/assets/images/laser_sheet.png
Normal file
After Width: | Height: | Size: 156 B |
Before Width: | Height: | Size: 86 B After Width: | Height: | Size: 86 B |
Before Width: | Height: | Size: 242 B |
Before Width: | Height: | Size: 248 B After Width: | Height: | Size: 505 B |
Before Width: | Height: | Size: 345 B After Width: | Height: | Size: 339 B |
Before Width: | Height: | Size: 488 B After Width: | Height: | Size: 603 B |
|
@ -49,3 +49,9 @@ canvas {
|
|||
font-family: monospace;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
#tryagain {
|
||||
position: relative;
|
||||
top: -200px;
|
||||
display: none;
|
||||
}
|
||||
|
|
|
@ -1 +1 @@
|
|||
link rel="stylesheet" href="assets/styles.css"></link> <h1>murí</h1><p>a js13kgame by <a href="https://aaron-fischer.net/">Aaron Fischer</a> (2017)</p><div id="content"> <div> <canvas width="100" height="40" id="js13k-2017"></canvas> <div id="bubble"></div></div></div><p id="loading">loading game ...</p><script src="vendor/kontra.min.js"></script><script src="muri.min.js"></script>
|
||||
link rel="stylesheet" href="assets/styles.css"></link><h1>murí</h1><p>a js13kgame by <a href="https://aaron-fischer.net/">Aaron Fischer</a> (2017)</p><div id="content"><div><canvas width="100" height="40" id="js13k-2017"></canvas><div id="bubble"></div></div></div><p id="loading">loading game ...</p><a href="" id="tryagain" onclick="window.location.reload(true);">Try again</a><script src="vendor/kontra.min.js"></script><script src="muri.min.js"></script>
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<p id="loading">loading game ...</p>
|
||||
<a href="" id="tryagain" onclick="window.location.reload(true);">Try again</a>
|
||||
|
||||
<script src="vendor/kontra.js"></script>
|
||||
<script src="muri.js"></script>
|
||||
|
@ -20,3 +21,4 @@
|
|||
<script src="room_hydro.js"></script>
|
||||
<script src="room_lift.js"></script>
|
||||
<script src="room_stasis.js"></script>
|
||||
<script src="room_end.js"></script>
|
||||
|
|
11
src/muri.js
|
@ -98,14 +98,23 @@ var muri = (function() {
|
|||
});
|
||||
};
|
||||
|
||||
muri.end = function(reason) {
|
||||
muri.changeRoom('end');
|
||||
muri.get('bubble')
|
||||
.talk(reason, [20, 20])
|
||||
.then(function() {
|
||||
document.getElementById('tryagain').style.display = 'block';
|
||||
});
|
||||
};
|
||||
|
||||
muri.setup = function() {
|
||||
kontra.assets.load(
|
||||
'room_stasis_dark.png',
|
||||
'room_stasis.png',
|
||||
'room_engine.png',
|
||||
'room_bridge.png',
|
||||
'room_hydro.png',
|
||||
'door_sheet.png',
|
||||
'laser_sheet.png',
|
||||
'stasis_lightSwitch.png',
|
||||
'room_lift.png',
|
||||
'lift_button.png'
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
(function() {
|
||||
'use strict';
|
||||
|
||||
var bridge = {};
|
||||
|
||||
var background, door = null;
|
||||
var roomState = {
|
||||
};
|
||||
|
||||
bridge.init = function() {
|
||||
background = muri.bg('bridge');
|
||||
door = muri.door('bridge', [83, 4]);
|
||||
};
|
||||
|
||||
bridge.onEnter = function() {
|
||||
door.sprite.playAnimation('close');
|
||||
};
|
||||
|
||||
bridge.update = function() {
|
||||
};
|
||||
|
||||
bridge.render = function() {
|
||||
background.render();
|
||||
};
|
||||
|
||||
bridge.name = 'bridge';
|
||||
muri.rooms.push(bridge);
|
||||
}());
|
12
src/room_end.js
Normal file
|
@ -0,0 +1,12 @@
|
|||
(function() {
|
||||
'use strict';
|
||||
|
||||
var end = {};
|
||||
|
||||
end.init = function() {};
|
||||
end.update = function() {};
|
||||
end.render = function() {};
|
||||
|
||||
end.name = 'end';
|
||||
muri.rooms.push(end);
|
||||
}());
|
|
@ -3,10 +3,11 @@
|
|||
|
||||
var engine = {};
|
||||
|
||||
var background, door = null;
|
||||
var background, door, lasers = null;
|
||||
var roomState = {
|
||||
firstVisit: true,
|
||||
engineBroken: true
|
||||
engineBroken: true,
|
||||
laserStates: [0, 0, 0]
|
||||
};
|
||||
|
||||
var randomSounds = function() {
|
||||
|
@ -25,9 +26,50 @@
|
|||
});
|
||||
};
|
||||
|
||||
var laser = function(i) {
|
||||
var laserAnimationSheet = kontra.spriteSheet({
|
||||
image: kontra.assets.images.laser_sheet,
|
||||
frameWidth: 5, frameHeight: 10,
|
||||
animations: {
|
||||
0: {frames: 0},
|
||||
1: {frames: 1},
|
||||
2: {frames: 2},
|
||||
}
|
||||
});
|
||||
var laserSprite = kontra.sprite({
|
||||
x: 36+i*20, y: 14,
|
||||
animations: laserAnimationSheet.animations
|
||||
});
|
||||
return muri.get('entity')
|
||||
.create('engine.laser'+i, laserSprite)
|
||||
.addCallback(function() {
|
||||
if (!roomState.engineBroken) return;
|
||||
var state = roomState.laserStates[i] + 1;
|
||||
if (state > 2) state = 0;
|
||||
laserSprite.playAnimation(state);
|
||||
roomState.laserStates[i] = state;
|
||||
|
||||
if (roomState.laserStates[0] == 2 &&
|
||||
roomState.laserStates[1] == 2 &&
|
||||
roomState.laserStates[2] == 2) {
|
||||
roomState.engineBroken = false;
|
||||
muri.get('bubble')
|
||||
.talk([
|
||||
'A huge beem light up and the whole ship vibrates.',
|
||||
'You\'ve made it, the engine is running again!'
|
||||
]);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
engine.init = function() {
|
||||
background = muri.bg('engine');
|
||||
door = muri.door('engine', [8, 10]);
|
||||
lasers = [
|
||||
laser(0),
|
||||
laser(1),
|
||||
laser(2)
|
||||
];
|
||||
};
|
||||
|
||||
engine.onEnter = function() {
|
||||
|
|
|
@ -36,6 +36,16 @@
|
|||
return;
|
||||
}
|
||||
|
||||
if (room === 'shot') {
|
||||
muri.end([
|
||||
'You stepped into a pressure shot ... ',
|
||||
'Which is broken on this ship.',
|
||||
'It takes no more than a second to drag you into space.',
|
||||
'You are lost ... ....',
|
||||
'... and die.']);
|
||||
return;
|
||||
}
|
||||
|
||||
muri.get('entity').get('lift.button'+i).sprite.playAnimation('on');
|
||||
var goMessage = muri.ra([
|
||||
'Sure, ' + room,
|
||||
|
@ -68,7 +78,8 @@
|
|||
createButtonEntity(0, 'bridge'), // Bridge
|
||||
createButtonEntity(1, 'hydro'), // Hydro Deck
|
||||
createButtonEntity(2, 'stasis'), // Stasis
|
||||
createButtonEntity(3, 'engine') // Engine room
|
||||
createButtonEntity(3, 'shot'), // Shot
|
||||
createButtonEntity(4, 'engine') // Engine room
|
||||
];
|
||||
buttons[2].sprite.playAnimation('on');
|
||||
};
|
||||
|
|