Add speech bubbles
This commit is contained in:
parent
e71d8b0466
commit
ec51e904d5
4 changed files with 55 additions and 5 deletions
|
@ -19,10 +19,17 @@ p {
|
||||||
color: gray;
|
color: gray;
|
||||||
}
|
}
|
||||||
|
|
||||||
canvas {
|
#content {
|
||||||
background-color: white;
|
|
||||||
margin: auto;
|
|
||||||
display: block;
|
display: block;
|
||||||
|
}
|
||||||
|
#content > div {
|
||||||
|
position: relative;
|
||||||
|
width: 800px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
canvas {
|
||||||
|
background-color: black;
|
||||||
border: 1px solid #5f5f7b;
|
border: 1px solid #5f5f7b;
|
||||||
image-rendering: -moz-crisp-edges;
|
image-rendering: -moz-crisp-edges;
|
||||||
image-rendering: -webkit-crisp-edges;
|
image-rendering: -webkit-crisp-edges;
|
||||||
|
@ -30,3 +37,12 @@ canvas {
|
||||||
width: 800px;
|
width: 800px;
|
||||||
height: 400px;
|
height: 400px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#bubble {
|
||||||
|
color: white;
|
||||||
|
top: 320px;
|
||||||
|
left: 70px;
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
|
@ -3,8 +3,14 @@
|
||||||
<h1>murí</h1>
|
<h1>murí</h1>
|
||||||
<p>a js13kgame by <a href="https://aaron-fischer.net/">Aaron Fischer</a> (2017)</p>
|
<p>a js13kgame by <a href="https://aaron-fischer.net/">Aaron Fischer</a> (2017)</p>
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
<div>
|
||||||
<canvas width="100" height="50" id="js13k-2017"></canvas>
|
<canvas width="100" height="50" id="js13k-2017"></canvas>
|
||||||
|
<div id="bubble" style="display: none;">Uh ...</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<p id="loading">loading game ...</p>
|
<p id="loading">loading game ...</p>
|
||||||
|
|
||||||
<script src="vendor/kontra.js"></script>
|
<script src="vendor/kontra.js"></script>
|
||||||
|
<script src="muri.js"></script>
|
||||||
<script src="main.js"></script>
|
<script src="main.js"></script>
|
||||||
|
|
|
@ -57,6 +57,12 @@
|
||||||
if (kontra.store.get('current-room') === null)
|
if (kontra.store.get('current-room') === null)
|
||||||
kontra.store.set('current-room', 'stasis_dark');
|
kontra.store.set('current-room', 'stasis_dark');
|
||||||
|
|
||||||
|
muri.talk([
|
||||||
|
'Uh ...',
|
||||||
|
'Where I am? ...',
|
||||||
|
'It is so dark in here, I can\'t even see my bare hands. I can\'t remember a thing and my brain hurts so bad. What happened here?'
|
||||||
|
], [40, 20]);
|
||||||
|
|
||||||
var rooms = {
|
var rooms = {
|
||||||
stasis_dark: kontra.sprite({x: 0, y: 0, image: kontra.assets.images.room_stasis_dark}),
|
stasis_dark: kontra.sprite({x: 0, y: 0, image: kontra.assets.images.room_stasis_dark}),
|
||||||
stasis: kontra.sprite({x: 0, y: 0, image: kontra.assets.images.room_stasis})
|
stasis: kontra.sprite({x: 0, y: 0, image: kontra.assets.images.room_stasis})
|
||||||
|
|
22
src/muri.js
Normal file
22
src/muri.js
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
var muri = {
|
||||||
|
bubble: function(text, position=[2, 7], delay=3, callback=false) {
|
||||||
|
var bubble = document.getElementById('bubble');
|
||||||
|
bubble.style.display = '';
|
||||||
|
bubble.style.left = position[0]*8;
|
||||||
|
bubble.style.top = position[1]*8;
|
||||||
|
bubble.innerHTML = text;
|
||||||
|
setTimeout(function() {
|
||||||
|
bubble.style.display = 'none';
|
||||||
|
if (callback !== false) callback.call();
|
||||||
|
}, delay*1000);
|
||||||
|
},
|
||||||
|
|
||||||
|
talk: function(texts, position) {
|
||||||
|
if (texts.length === 0) return;
|
||||||
|
var text = texts.shift();
|
||||||
|
var delay = Math.ceil(text.length/13);
|
||||||
|
this.bubble(text, position, delay, function() {
|
||||||
|
muri.talk(texts, position);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
Loading…
Reference in a new issue