Replace NPC emoji with sprite: oak.png
This commit is contained in:
1 parent
d6bef7ad36
commit
439451229c
3 files changed
+23
-5
No files matched your search
@@ -16,8 +16,22 @@ const CONFIG = {
|
|||||||
namePrompt: "Hello there! Welcome to PokéAzure! My name is Professor Oak — the Azure Pokémon Professor. Now tell me, what is your name?",
|
namePrompt: "Hello there! Welcome to PokéAzure! My name is Professor Oak — the Azure Pokémon Professor. Now tell me, what is your name?",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
function setNPC(el, val) {
|
||||||
|
if (!el) return;
|
||||||
|
if (val && val.endsWith('.png')) {
|
||||||
|
el.innerHTML = '';
|
||||||
|
const img = document.createElement('img');
|
||||||
|
img.src = val;
|
||||||
|
img.style.cssText = 'height:1em;width:auto;image-rendering:pixelated;vertical-align:middle;';
|
||||||
|
el.appendChild(img);
|
||||||
|
} else {
|
||||||
|
el.textContent = val || '🧑';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const NPC = {
|
const NPC = {
|
||||||
'Professor Oak': '👴',
|
'Professor Oak': './oak.png',
|
||||||
'Rival Gary': '😤',
|
'Rival Gary': '😤',
|
||||||
'Old Man Bob': '🧓',
|
'Old Man Bob': '🧓',
|
||||||
'Nurse Joy': '👩⚕️',
|
'Nurse Joy': '👩⚕️',
|
||||||
@@ -998,7 +1012,7 @@ class Game {
|
|||||||
const msg = INTRO_MSGS[this.state.introStep];
|
const msg = INTRO_MSGS[this.state.introStep];
|
||||||
if (!msg) return;
|
if (!msg) return;
|
||||||
const npcEl = document.getElementById('intro-npc');
|
const npcEl = document.getElementById('intro-npc');
|
||||||
if (npcEl) npcEl.textContent = NPC[msg.npc] || '👴';
|
if (npcEl) setNPC(npcEl, NPC[msg.npc] || '👴');
|
||||||
document.getElementById('intro-speaker').textContent = msg.speaker;
|
document.getElementById('intro-speaker').textContent = msg.speaker;
|
||||||
document.getElementById('intro-arrow').style.display = 'none';
|
document.getElementById('intro-arrow').style.display = 'none';
|
||||||
this.typeText('intro-text',
|
this.typeText('intro-text',
|
||||||
@@ -1133,7 +1147,7 @@ class Game {
|
|||||||
|
|
||||||
const q = this.state.questions[this.state.currentQ];
|
const q = this.state.questions[this.state.currentQ];
|
||||||
const npcEl = document.getElementById('map-npc');
|
const npcEl = document.getElementById('map-npc');
|
||||||
if (q && npcEl) npcEl.textContent = NPC[q.npc]||'🧑';
|
if (q && npcEl) setNPC(npcEl, NPC[q.npc]||'🧑');
|
||||||
|
|
||||||
this._placeMapSprites();
|
this._placeMapSprites();
|
||||||
this._checkNPCProximity();
|
this._checkNPCProximity();
|
||||||
@@ -1181,7 +1195,7 @@ class Game {
|
|||||||
this.state.answering=false;
|
this.state.answering=false;
|
||||||
this.state.cursor=0;
|
this.state.cursor=0;
|
||||||
|
|
||||||
document.getElementById('battle-npc-sprite').textContent = NPC[q.npc]||'🧑';
|
setNPC(document.getElementById('battle-npc-sprite'), NPC[q.npc]||'🧑');
|
||||||
document.getElementById('battle-npc-name').textContent = q.npc.toUpperCase();
|
document.getElementById('battle-npc-name').textContent = q.npc.toUpperCase();
|
||||||
document.getElementById('battle-speaker').textContent = q.npc.toUpperCase();
|
document.getElementById('battle-speaker').textContent = q.npc.toUpperCase();
|
||||||
document.getElementById('battle-player-name').textContent= (this.state.playerName||'ASH').toUpperCase();
|
document.getElementById('battle-player-name').textContent= (this.state.playerName||'ASH').toUpperCase();
|
||||||
|
|||||||
+1
-1
@@ -74,7 +74,7 @@
|
|||||||
<!-- INTRO CUTSCENE -->
|
<!-- INTRO CUTSCENE -->
|
||||||
<div id="screen-intro" class="screen">
|
<div id="screen-intro" class="screen">
|
||||||
<div class="overworld-bg">
|
<div class="overworld-bg">
|
||||||
<div class="intro-npc" id="intro-npc">👴</div>
|
<div class="intro-npc" id="intro-npc"></div>
|
||||||
<div class="intro-player"></div>
|
<div class="intro-player"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dialog-box intro-dialog">
|
<div class="dialog-box intro-dialog">
|
||||||
|
|||||||
@@ -414,6 +414,8 @@ html, body {
|
|||||||
#screen-intro { flex-direction:column-reverse; }
|
#screen-intro { flex-direction:column-reverse; }
|
||||||
.intro-dialog { margin:10px; min-height:90px; }
|
.intro-dialog { margin:10px; min-height:90px; }
|
||||||
.intro-npc { position:absolute; right:22%; bottom:30%; font-size:clamp(44px,13vw,64px); animation:npcFloat 2s ease-in-out infinite; filter:drop-shadow(2px 3px 0 rgba(0,0,0,.4)); }
|
.intro-npc { position:absolute; right:22%; bottom:30%; font-size:clamp(44px,13vw,64px); animation:npcFloat 2s ease-in-out infinite; filter:drop-shadow(2px 3px 0 rgba(0,0,0,.4)); }
|
||||||
|
.intro-npc img { height:clamp(44px,13vw,64px); width:auto; image-rendering:pixelated; display:block; }
|
||||||
|
.intro-npc img { height:clamp(44px,13vw,64px); width:auto; image-rendering:pixelated; display:block; }
|
||||||
.intro-player {
|
.intro-player {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 22%;
|
left: 22%;
|
||||||
@@ -495,6 +497,8 @@ html, body {
|
|||||||
.map-npc-wrap { position:absolute; text-align:center; z-index: 30; }
|
.map-npc-wrap { position:absolute; text-align:center; z-index: 30; }
|
||||||
.npc-bubble { font-size:14px; font-family:var(--font); color:var(--black); background:var(--yellow); border:2px solid var(--black); width:20px; height:20px; display:flex; align-items:center; justify-content:center; margin:0 auto 2px; animation:bounce .7s ease-in-out infinite; }
|
.npc-bubble { font-size:14px; font-family:var(--font); color:var(--black); background:var(--yellow); border:2px solid var(--black); width:20px; height:20px; display:flex; align-items:center; justify-content:center; margin:0 auto 2px; animation:bounce .7s ease-in-out infinite; }
|
||||||
.map-npc { font-size:clamp(36px,10vw,52px); filter:drop-shadow(2px 3px 0 rgba(0,0,0,.35)); cursor:pointer; animation:npcFloat 2s ease-in-out infinite; }
|
.map-npc { font-size:clamp(36px,10vw,52px); filter:drop-shadow(2px 3px 0 rgba(0,0,0,.35)); cursor:pointer; animation:npcFloat 2s ease-in-out infinite; }
|
||||||
|
.map-npc img { height:clamp(36px,10vw,52px); width:auto; image-rendering:pixelated; display:block; }
|
||||||
|
.map-npc img { height:clamp(36px,10vw,52px); width:auto; image-rendering:pixelated; display:block; }
|
||||||
/* Player is fixed to the viewport centre horizontally; only Y moves */
|
/* Player is fixed to the viewport centre horizontally; only Y moves */
|
||||||
/* "..." bubble above player when pressing talk away from NPC */
|
/* "..." bubble above player when pressing talk away from NPC */
|
||||||
.player-bubble {
|
.player-bubble {
|
||||||
|
|||||||
Reference in new issue
Block a user