public static bool growable(Terrain terrain, int x, int y, LightMap lightMap, TerrainParameter thingToGrow) { //check for doors, trees, signs, graves if(TerrainManager.hasParameter(terrain, TerrainParameter.HAS_TREE) || TerrainManager.hasParameter(terrain, TerrainParameter.HAS_SIGN) || TerrainManager.hasParameter(terrain, TerrainParameter.HAS_GRAVE) || TerrainManager.hasParameter(terrain, TerrainParameter.HAS_DOOR)) { return false; } switch(thingToGrow) { //crops case TerrainParameter.HAS_SEED: if(terrain.getCode() == TerrainCode.FERTILE_LAND && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_SEED) && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_MOSS)) { return true; } return false; //mushrooms case TerrainParameter.HAS_MUSHROOM_SPORES: if(lightMap.getCalc(x, y) <= TerrainManager.SPORE_LIGHT_LEVEL_MAX && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_MUSHROOM_SPORES) && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_CLOVER) && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_SEED) && terrain.getCode() != TerrainCode.STONE_WALL && terrain.getCode() != TerrainCode.ROCK) { return true; } return false; //clover case TerrainParameter.HAS_CLOVER: if(!TerrainManager.hasParameter(terrain, TerrainParameter.HAS_MUSHROOM_SPORES) && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_CLOVER) && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_SEED) && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_MOSS) && terrain.getCode() != TerrainCode.STONE_WALL && terrain.getCode() != TerrainCode.ROCK && terrain.getCode() != TerrainCode.STREAM_BED && terrain.getCode() != TerrainCode.PATH) { return true; } return false; //moss case TerrainParameter.HAS_MOSS: if(terrain.getWater() <= 0 && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_MUSHROOM_SPORES) && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_CLOVER) && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_SEED) && !TerrainManager.hasParameter(terrain, TerrainParameter.HAS_MOSS) && (terrain.getCode() == TerrainCode.STONE_FLOOR || terrain.getCode() == TerrainCode.STONE_WALL || terrain.getCode() == TerrainCode.ROCK)) { return true; } return false; default: return true; } }
public static bool allowWaterToFlowBetween(Terrain oldTerrain, Terrain newTerrain) { int oldWater = oldTerrain.getWater(); int newWater = newTerrain.getWater(); if(newWater >= oldWater || newWater >= TerrainManager.MAX_WATER) { return false; } //If terrains are the same, then allow it if(oldTerrain.getCode() == newTerrain.getCode()) { return true; } //Handle water flow out switch(oldTerrain.getCode()) { case TerrainCode.STREAM_BED: return false; } return true; }
public static bool flammable(Terrain terrain, int x, int y, Quinoa quinoa) { //See if the area is wet if(terrain.getWater() > 0) { return false; } if(containsItem(ItemClass.LOG, x, y, quinoa) != null) { return true; } switch(terrain.getCode()) { case TerrainCode.PATH: case TerrainCode.DIRT: case TerrainCode.STONE_WALL: case TerrainCode.STONE_FLOOR: case TerrainCode.FERTILE_LAND: case TerrainCode.ROCK: case TerrainCode.STREAM_BED: default: return false; case TerrainCode.GRASS: return true; } }
public static bool allowsMonsterToPass(Terrain newTerrain, Monster monster) { //blocking newTerrain parameter check if(TerrainManager.hasParameter(newTerrain, TerrainParameter.HAS_TREE) || TerrainManager.hasParameter(newTerrain, TerrainParameter.HAS_SIGN)) { switch(monster.monsterCode) { case MonsterCode.HUMAN: return false; case MonsterCode.SPONGE: return false; case MonsterCode.GHOST: return true; case MonsterCode.SLIME: return false; case MonsterCode.SMALL_SLIME: return false; case MonsterCode.TINY_SLIME: return false; case MonsterCode.DEER: return false; case MonsterCode.PIG: return false; default: return false; } } //door newTerrain check if(TerrainManager.hasParameter(newTerrain, TerrainParameter.HAS_DOOR)) { DoorCode doorCode = (DoorCode)Enum.Parse(typeof(DoorCode), TerrainManager.getParameter(newTerrain, TerrainParameter.HAS_DOOR)); if(doorCode == DoorCode.CLOSED) { switch(monster.monsterCode) { case MonsterCode.HUMAN: return false; case MonsterCode.SPONGE: return false; case MonsterCode.GHOST: return true; case MonsterCode.SLIME: return false; case MonsterCode.SMALL_SLIME: return false; case MonsterCode.TINY_SLIME: return false; case MonsterCode.DEER: return false; case MonsterCode.PIG: return false; default: return false; } } } //deep water check if(newTerrain.getWater() >= TerrainManager.DEEP_WATER) { switch(monster.monsterCode) { case MonsterCode.GHOST: return false; case MonsterCode.TINY_SLIME: return false; default: break; //do nothing } } //empty newTerrain check switch(newTerrain.getCode()) { case TerrainCode.PATH: switch (monster.monsterCode) { case MonsterCode.HUMAN: return true; case MonsterCode.SPONGE: return true; case MonsterCode.GHOST: return true; case MonsterCode.SLIME: return true; case MonsterCode.SMALL_SLIME: return true; case MonsterCode.TINY_SLIME: return true; case MonsterCode.DEER: return true; case MonsterCode.PIG: return true; default: return false; } case TerrainCode.DIRT: switch (monster.monsterCode) { case MonsterCode.HUMAN: return true; case MonsterCode.SPONGE: return true; case MonsterCode.GHOST: return true; case MonsterCode.SLIME: return true; case MonsterCode.SMALL_SLIME: return true; case MonsterCode.TINY_SLIME: return true; case MonsterCode.DEER: return true; case MonsterCode.PIG: return true; default: return false; } case TerrainCode.ROCK: switch (monster.monsterCode) { case MonsterCode.HUMAN: return false; case MonsterCode.SPONGE: return false; case MonsterCode.GHOST: return true; case MonsterCode.SLIME: return false; case MonsterCode.SMALL_SLIME: return false; case MonsterCode.TINY_SLIME: return false; case MonsterCode.DEER: return false; case MonsterCode.PIG: return false; default: return false; } case TerrainCode.STREAM_BED: switch (monster.monsterCode) { case MonsterCode.HUMAN: return true; case MonsterCode.SPONGE: return true; case MonsterCode.GHOST: return true; case MonsterCode.SLIME: return true; case MonsterCode.SMALL_SLIME: return false; case MonsterCode.TINY_SLIME: return false; case MonsterCode.DEER: return true; case MonsterCode.PIG: return true; default: return false; } case TerrainCode.GRASS: switch (monster.monsterCode) { case MonsterCode.HUMAN: return true; case MonsterCode.SPONGE: return true; case MonsterCode.GHOST: return true; case MonsterCode.SLIME: return true; case MonsterCode.SMALL_SLIME: return true; case MonsterCode.TINY_SLIME: return true; case MonsterCode.DEER: return true; case MonsterCode.PIG: return true; default: return false; } case TerrainCode.STONE_WALL: switch (monster.monsterCode) { case MonsterCode.HUMAN: return false; case MonsterCode.SPONGE: return false; case MonsterCode.GHOST: return true; case MonsterCode.SLIME: return false; case MonsterCode.SMALL_SLIME: return false; case MonsterCode.TINY_SLIME: return false; case MonsterCode.DEER: return false; case MonsterCode.PIG: return false; default: return false; } case TerrainCode.STONE_FLOOR: switch (monster.monsterCode) { case MonsterCode.HUMAN: return true; case MonsterCode.SPONGE: return true; case MonsterCode.GHOST: return true; case MonsterCode.SLIME: return true; case MonsterCode.SMALL_SLIME: return true; case MonsterCode.TINY_SLIME: return true; case MonsterCode.DEER: return true; case MonsterCode.PIG: return true; default: return false; } case TerrainCode.FERTILE_LAND: switch (monster.monsterCode) { case MonsterCode.HUMAN: return true; case MonsterCode.SPONGE: return true; case MonsterCode.GHOST: return true; case MonsterCode.SLIME: return true; case MonsterCode.SMALL_SLIME: return true; case MonsterCode.TINY_SLIME: return true; case MonsterCode.DEER: return true; case MonsterCode.PIG: return true; default: return false; } } return false; }