Add mouse

This commit is contained in:
Aaron Fischer 2017-08-23 23:31:50 +02:00
parent e37aa56def
commit f8bf7dfb51
6 changed files with 84 additions and 11 deletions

View file

@ -1,14 +1,35 @@
(function() { (function() {
var act1 = {}; var act1 = {};
muri.get('bubble') var controlPanelSprite = kontra.sprite({x: 16, y: 13, width: 3, height: 2});
.story([
[['Beep', 'Bip, Bip'], [20, 15]], act1.init = function() {
[['Urgh ... ...', 'Where I am?', 'What happened?'], [35, 40]], if (kontra.store.get('current-room') === 'stasis_dark') {
[['I can\'t see a thing ...', '... need to turn on the light ...'], [35, 40]] muri.get('bubble')
]); .story([
[['Beep', 'Bip, Bip'], [20, 15]],
[['Urgh ... ...', 'Where I am?', 'What happened?'], [35, 40]],
[['I can\'t see a thing ...', '... need to turn on the light ...'], [35, 40]]
]);
}
};
act1.update = function() { act1.update = function() {
if (muri.get('mouse').clickedOn(controlPanelSprite)) {
muri.get('mouse').releaseClick();
if (kontra.store.get('current-room') === 'stasis_dark') {
kontra.store.set('current-room', 'stasis');
muri.get('bubble')
.talk([
'Ah, much better.',
'Looks like something happened to my stasis capsule.'
]);
} else {
muri.get('bubble')
.talk(['No, I will not turn off the light again!']);
}
}
}; };
act1.render = function() { act1.render = function() {

View file

@ -36,6 +36,7 @@ canvas {
image-rendering: pixelated; image-rendering: pixelated;
width: 800px; width: 800px;
height: 400px; height: 400px;
cursor: hand;
} }
#bubble { #bubble {

View file

@ -1,10 +1,9 @@
(function() { (function() {
var bubble = {}; var bubble = {};
var isactive = false;
var show = function(text, position) { var show = function(text, position) {
return new Promise(function(resolve) { return new Promise(function(resolve) {
isActive = true; muri.get('mouse').disable();
var dom = document.getElementById('bubble'); var dom = document.getElementById('bubble');
dom.style.display = ''; dom.style.display = '';
@ -16,7 +15,7 @@
var show = function() { var show = function() {
if (parts.length === 0) { if (parts.length === 0) {
setTimeout(function() { setTimeout(function() {
isActive = false; muri.get('mouse').enable();
dom.style.display = 'none'; dom.style.display = 'none';
return resolve(); return resolve();
}, 2000); }, 2000);
@ -32,7 +31,7 @@
bubble.talk = function(texts, position) { bubble.talk = function(texts, position) {
if (texts.length === 0) return; if (texts.length === 0) return;
var text = texts.shift(); var text = texts.shift();
return show(text, position || [5, 40]).then(function() { return show(text, position || [5, 44]).then(function() {
return bubble.talk(texts, position); return bubble.talk(texts, position);
}); });
}; };

View file

@ -15,4 +15,5 @@
<script src="vendor/kontra.js"></script> <script src="vendor/kontra.js"></script>
<script src="muri.js"></script> <script src="muri.js"></script>
<script src="bubble.js"></script> <script src="bubble.js"></script>
<script src="mouse.js"></script>
<script src="act1.js"></script> <script src="act1.js"></script>

44
src/mouse.js Normal file
View file

@ -0,0 +1,44 @@
(function() {
var mouse = {};
var isEnabled = true;
var canvas = document.getElementById('js13k-2017');
var mouseSprite = kontra.sprite({
x: -1,
y: -1,
width: 1,
height: 1,
color: 'green'
});
var clickEvent = function(evt) {
if (isEnabled) {
mouseSprite.x = Math.floor(evt.offsetX/8);
mouseSprite.y = Math.floor(evt.offsetY/8);
}
};
canvas.addEventListener('click', clickEvent);
mouse.clickedOn = function(sprite) {
return sprite.collidesWith(mouseSprite);
};
mouse.releaseClick = function() {
mouseSprite.x = -1;
mouseSprite.y = -1;
};
mouse.disable = function() {
isEnabled = false;
mouse.releaseClick();
canvas.style.cursor = 'progress';
};
mouse.enable = function() {
isEnabled = true;
canvas.style.cursor = 'hand';
};
mouse.name = 'mouse';
muri.modules.push(mouse);
}());

View file

@ -60,6 +60,9 @@ var muri = (function() {
muri.newGame = function() { muri.newGame = function() {
kontra.store.set('current-room', 'stasis_dark'); kontra.store.set('current-room', 'stasis_dark');
muri.modules.forEach(function(m) {
if (m.init !== undefined) m.init();
});
}; };
muri.setup = function() { muri.setup = function() {
@ -93,10 +96,14 @@ var muri = (function() {
} }
}).start(); }).start();
}); });
muri.newGame();
}; };
return muri; return muri;
}()); }());
document.getElementById('newGame').addEventListener('click', muri.newGame); document
.getElementById('newGame')
.addEventListener('click', muri.newGame);
window.onload = muri.setup; window.onload = muri.setup;