Пример #1
0
        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;
            }
        }
Пример #2
0
        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;
        }
Пример #3
0
        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;
            }
        }
Пример #4
0
        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;
        }