about summary refs log tree commit diff stats
path: root/src/com/fourisland
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/fourisland')
-rw-r--r--src/com/fourisland/frigidearth/Item.java32
-rw-r--r--src/com/fourisland/frigidearth/MapViewGameState.java71
-rw-r--r--src/com/fourisland/frigidearth/mobs/Spider.java2
3 files changed, 64 insertions, 41 deletions
diff --git a/src/com/fourisland/frigidearth/Item.java b/src/com/fourisland/frigidearth/Item.java index 689d991..717d09c 100644 --- a/src/com/fourisland/frigidearth/Item.java +++ b/src/com/fourisland/frigidearth/Item.java
@@ -38,7 +38,7 @@ public enum Item
38 return ItemType.Scroll; 38 return ItemType.Scroll;
39 } 39 }
40 40
41 public void useItem() 41 public boolean useItem()
42 { 42 {
43 Main.currentGame.health += 20; 43 Main.currentGame.health += 20;
44 44
@@ -46,6 +46,34 @@ public enum Item
46 { 46 {
47 Main.currentGame.health = Main.currentGame.maxHealth; 47 Main.currentGame.health = Main.currentGame.maxHealth;
48 } 48 }
49
50 return true;
51 }
52 },
53 Key {
54 public String getItemName()
55 {
56 return "Key";
57 }
58
59 public char getDisplayCharacter()
60 {
61 return 'k';
62 }
63
64 public Color getDisplayColor()
65 {
66 return Color.YELLOW;
67 }
68
69 public ItemType getItemType()
70 {
71 return ItemType.Special;
72 }
73
74 public boolean useItem()
75 {
76 return false;
49 } 77 }
50 }; 78 };
51 79
@@ -53,7 +81,7 @@ public enum Item
53 public abstract char getDisplayCharacter(); 81 public abstract char getDisplayCharacter();
54 public abstract Color getDisplayColor(); 82 public abstract Color getDisplayColor();
55 public abstract ItemType getItemType(); 83 public abstract ItemType getItemType();
56 public abstract void useItem(); 84 public abstract boolean useItem();
57 85
58 public static Item getWeightedRandomItem() 86 public static Item getWeightedRandomItem()
59 { 87 {
diff --git a/src/com/fourisland/frigidearth/MapViewGameState.java b/src/com/fourisland/frigidearth/MapViewGameState.java index cfb7690..793fae9 100644 --- a/src/com/fourisland/frigidearth/MapViewGameState.java +++ b/src/com/fourisland/frigidearth/MapViewGameState.java
@@ -46,9 +46,6 @@ public class MapViewGameState implements GameState
46 private int playery = 4; 46 private int playery = 4;
47 private int viewportx = 0; 47 private int viewportx = 0;
48 private int viewporty = 0; 48 private int viewporty = 0;
49 private int keyx;
50 private int keyy;
51 private boolean haveKey = false;
52 private boolean snowGrow = false; 49 private boolean snowGrow = false;
53 private int heartbeat = 0; 50 private int heartbeat = 0;
54 private int floor; 51 private int floor;
@@ -317,37 +314,41 @@ public class MapViewGameState implements GameState
317 } 314 }
318 } 315 }
319 316
317 ItemInstance key = new ItemInstance();
318 key.item = Item.Key;
319
320 switch (keyRoomDirection) 320 switch (keyRoomDirection)
321 { 321 {
322 case North: 322 case North:
323 grid[room.getX()+room.getWidth()/2][room.getY()+room.getHeight()] = Tile.Door; 323 grid[room.getX()+room.getWidth()/2][room.getY()+room.getHeight()] = Tile.Door;
324 grid[room.getX()+room.getWidth()/2][room.getY()+room.getHeight()-1] = Tile.DirtFloor; 324 grid[room.getX()+room.getWidth()/2][room.getY()+room.getHeight()-1] = Tile.DirtFloor;
325 keyx = room.getX()+3; 325 key.x = room.getX()+3;
326 keyy = room.getY()+3; 326 key.y = room.getY()+3;
327 break; 327 break;
328 328
329 case East: 329 case East:
330 grid[room.getX()-1][room.getY()+room.getHeight()/2] = Tile.Door; 330 grid[room.getX()-1][room.getY()+room.getHeight()/2] = Tile.Door;
331 grid[room.getX()][room.getY()+room.getHeight()/2] = Tile.DirtFloor; 331 grid[room.getX()][room.getY()+room.getHeight()/2] = Tile.DirtFloor;
332 keyx = room.getX()+10; 332 key.x = room.getX()+10;
333 keyy = room.getY()+3; 333 key.y = room.getY()+3;
334 break; 334 break;
335 335
336 case South: 336 case South:
337 grid[room.getX()+room.getWidth()/2][room.getY()-1] = Tile.Door; 337 grid[room.getX()+room.getWidth()/2][room.getY()-1] = Tile.Door;
338 grid[room.getX()+room.getWidth()/2][room.getY()] = Tile.DirtFloor; 338 grid[room.getX()+room.getWidth()/2][room.getY()] = Tile.DirtFloor;
339 keyx = room.getX()+3; 339 key.x = room.getX()+3;
340 keyy = room.getY()+10; 340 key.y = room.getY()+10;
341 break; 341 break;
342 342
343 case West: 343 case West:
344 grid[room.getX()+room.getWidth()][room.getY()+room.getHeight()/2] = Tile.Door; 344 grid[room.getX()+room.getWidth()][room.getY()+room.getHeight()/2] = Tile.Door;
345 grid[room.getX()+room.getWidth()-1][room.getY()+room.getHeight()/2] = Tile.DirtFloor; 345 grid[room.getX()+room.getWidth()-1][room.getY()+room.getHeight()/2] = Tile.DirtFloor;
346 keyx = room.getX()+3; 346 key.x = room.getX()+3;
347 keyy = room.getY()+3; 347 key.y = room.getY()+3;
348 break; 348 break;
349 } 349 }
350 350
351 items.add(key);
351 rooms.add(room); 352 rooms.add(room);
352 353
353 adjustViewport(); 354 adjustViewport();
@@ -710,12 +711,6 @@ public class MapViewGameState implements GameState
710 } 711 }
711 } 712 }
712 713
713 // Render key
714 if ((!haveKey) && (gridLighting[keyx][keyy]))
715 {
716 g.drawImage(SystemFont.getCharacter('k', Color.YELLOW), (keyx-viewportx)*TILE_WIDTH, (keyy-viewporty)*TILE_HEIGHT, TILE_WIDTH, TILE_HEIGHT, null);
717 }
718
719 // Render items 714 // Render items
720 for (ItemInstance ii : items) 715 for (ItemInstance ii : items)
721 { 716 {
@@ -853,32 +848,31 @@ public class MapViewGameState implements GameState
853 break; 848 break;
854 849
855 case KeyEvent.VK_G: 850 case KeyEvent.VK_G:
856 if ((playerx == keyx) && (playery == keyy) && (!haveKey)) 851 for (ItemInstance ii : items)
857 { 852 {
858 haveKey = true; 853 if ((ii.x == playerx) && (ii.y == playery))
859 printMessage("You get the key");
860 printMessage("All the windows in the room shatter!");
861
862 for (int x=0; x<mapWidth; x++)
863 { 854 {
864 for (int y=0; y<mapHeight; y++) 855 printMessage("You get a " + ii.item.getItemName().toLowerCase());
856 Main.currentGame.inventory.add(ii.item);
857 items.remove(ii);
858
859 if (ii.item == Item.Key)
865 { 860 {
866 if (grid[x][y] == Tile.Window) 861 printMessage("All the windows in the room shatter!");
862
863 for (int x=0; x<mapWidth; x++)
867 { 864 {
868 grid[x][y] = Tile.ShatteredWindow; 865 for (int y=0; y<mapHeight; y++)
866 {
867 if (grid[x][y] == Tile.Window)
868 {
869 grid[x][y] = Tile.ShatteredWindow;
870 }
871 }
869 } 872 }
870 } 873 }
871 } 874
872 } else { 875 break;
873 for (ItemInstance ii : items)
874 {
875 if ((ii.x == playerx) && (ii.y == playery))
876 {
877 printMessage("You get a " + ii.item.getItemName().toLowerCase());
878 Main.currentGame.inventory.add(ii.item);
879 items.remove(ii);
880 break;
881 }
882 } 876 }
883 } 877 }
884 878
@@ -893,8 +887,9 @@ public class MapViewGameState implements GameState
893 { 887 {
894 if (grid[playerx][playery] == Tile.UpStairs) 888 if (grid[playerx][playery] == Tile.UpStairs)
895 { 889 {
896 if (haveKey) 890 if (Main.currentGame.inventory.contains(Item.Key))
897 { 891 {
892 Main.currentGame.inventory.remove(Item.Key);
898 Main.setGameState(new MapViewGameState(floor+1)); 893 Main.setGameState(new MapViewGameState(floor+1));
899 } else { 894 } else {
900 printMessage("The stairs are locked! You need a key."); 895 printMessage("The stairs are locked! You need a key.");
diff --git a/src/com/fourisland/frigidearth/mobs/Spider.java b/src/com/fourisland/frigidearth/mobs/Spider.java index 7d3330e..ac3eb9d 100644 --- a/src/com/fourisland/frigidearth/mobs/Spider.java +++ b/src/com/fourisland/frigidearth/mobs/Spider.java
@@ -49,6 +49,6 @@ public class Spider extends Mob
49 49
50 public int getBaseExperience() 50 public int getBaseExperience()
51 { 51 {
52 return 200; 52 return 150;
53 } 53 }
54} 54}