broadfield-dev commited on
Commit
fb90e7a
·
verified ·
1 Parent(s): d0e1c37

Update static/scripts.js

Browse files
Files changed (1) hide show
  1. static/scripts.js +28 -16
static/scripts.js CHANGED
@@ -3,23 +3,28 @@ const canvas = document.getElementById('gameCanvas');
3
  const ctx = canvas.getContext('2d');
4
  const tileSize = 32;
5
 
6
- // Preload images
7
- const images = {
8
- 'w': new Image(), 'f': new Image(), 'player': new Image(),
9
- 'goblin': new Image(), 'potion': new Image(), 'sword': new Image()
 
 
 
 
 
 
 
 
 
 
10
  };
11
- images['w'].src = '/static/wall.png';
12
- images['f'].src = '/static/floor.png';
13
- images['player'].src = '/static/player.png';
14
- images['goblin'].src = '/static/goblin.png';
15
- images['potion'].src = '/static/potion.png';
16
- images['sword'].src = '/static/sword.png';
17
 
18
  socket.on('update_game', (state) => {
19
  drawGame(state);
20
  document.getElementById('health').textContent = state.health;
21
  document.getElementById('attack').textContent = state.attack;
22
  document.getElementById('inventory').textContent = state.inventory.join(', ');
 
23
  document.getElementById('usePotion').disabled = !state.inventory.includes('potion');
24
  if (state.health <= 0) {
25
  alert('Game Over! Refresh to restart.');
@@ -34,17 +39,19 @@ socket.on('message', (msg) => {
34
 
35
  function drawGame(state) {
36
  ctx.clearRect(0, 0, canvas.width, canvas.height);
37
- // Draw terrain
38
  for (let y = 0; y < state.terrain.length; y++) {
39
  for (let x = 0; x < state.terrain[y].length; x++) {
40
- ctx.drawImage(images[state.terrain[y][x]], x * tileSize, y * tileSize);
 
41
  }
42
  }
43
- // Draw entities
44
  for (let y = 0; y < state.entities.length; y++) {
45
  for (let x = 0; x < state.entities[y].length; x++) {
46
- if (state.entities[y][x] && images[state.entities[y][x]]) {
47
- ctx.drawImage(images[state.entities[y][x]], x * tileSize, y * tileSize);
 
48
  }
49
  }
50
  }
@@ -59,4 +66,9 @@ document.addEventListener('keydown', (e) => {
59
 
60
  document.getElementById('usePotion').addEventListener('click', () => {
61
  socket.emit('use_item', 'potion');
62
- });
 
 
 
 
 
 
3
  const ctx = canvas.getContext('2d');
4
  const tileSize = 32;
5
 
6
+ // Load sprite sheet (assuming the same 96x64 sprite sheet)
7
+ const spriteSheet = new Image();
8
+ spriteSheet.src = '/static/images/spritesheet.png';
9
+
10
+ // Map entity types to sprite sheet coordinates (x, y)
11
+ const spriteMap = {
12
+ 'w': [0, 0], // Wall
13
+ 'f': [32, 0], // Floor
14
+ 'player': [64, 0], // Player
15
+ 'goblin': [0, 32], // Goblin
16
+ 'skeleton': [0, 32], // Reuse goblin sprite for simplicity (update later if needed)
17
+ 'potion': [32, 32], // Potion
18
+ 'sword': [64, 32], // Sword
19
+ 'door': [64, 32] // Reuse sword sprite for door (update later)
20
  };
 
 
 
 
 
 
21
 
22
  socket.on('update_game', (state) => {
23
  drawGame(state);
24
  document.getElementById('health').textContent = state.health;
25
  document.getElementById('attack').textContent = state.attack;
26
  document.getElementById('inventory').textContent = state.inventory.join(', ');
27
+ document.getElementById('level').textContent = state.level;
28
  document.getElementById('usePotion').disabled = !state.inventory.includes('potion');
29
  if (state.health <= 0) {
30
  alert('Game Over! Refresh to restart.');
 
39
 
40
  function drawGame(state) {
41
  ctx.clearRect(0, 0, canvas.width, canvas.height);
42
+ // Draw visible 10x10 area centered on player
43
  for (let y = 0; y < state.terrain.length; y++) {
44
  for (let x = 0; x < state.terrain[y].length; x++) {
45
+ const [sx, sy] = spriteMap[state.terrain[y][x] || 'f']; // Default to floor if empty
46
+ ctx.drawImage(spriteSheet, sx, sy, tileSize, tileSize, x * tileSize, y * tileSize, tileSize, tileSize);
47
  }
48
  }
49
+ // Draw entities on top
50
  for (let y = 0; y < state.entities.length; y++) {
51
  for (let x = 0; x < state.entities[y].length; x++) {
52
+ if (state.entities[y][x] && spriteMap[state.entities[y][x]]) {
53
+ const [sx, sy] = spriteMap[state.entities[y][x]];
54
+ ctx.drawImage(spriteSheet, sx, sy, tileSize, tileSize, x * tileSize, y * tileSize, tileSize, tileSize);
55
  }
56
  }
57
  }
 
66
 
67
  document.getElementById('usePotion').addEventListener('click', () => {
68
  socket.emit('use_item', 'potion');
69
+ });
70
+
71
+ // Ensure sprite sheet is loaded before drawing
72
+ spriteSheet.onload = () => {
73
+ console.log('Sprite sheet loaded');
74
+ };