private void CreateDoor(MapBlock _mapBlock, ETerrains _floor, IEnumerable <Point> _borderPoints) { var doorCoords = Room.RoomRectangle.Center; var prevPoint = doorCoords; var direction = World.Rnd.GetRandomDirection(); var delta = direction.GetDelta(); while (!_borderPoints.Contains(doorCoords)) { prevPoint = doorCoords; doorCoords += delta; } var nextPoint = doorCoords + delta; var borders = direction.GetBorders().ToArray(); DoorWorldCoords = _mapBlock.ToWorldCoords(doorCoords); OutDoorWorldCoords = new[] { nextPoint + borders[0].Key, nextPoint, nextPoint + borders[1].Key }.Select(_mapBlock.ToWorldCoords).ToArray(); InDoorWorldCoords = new[] { prevPoint + borders[0].Key, prevPoint, prevPoint + borders[1].Key }.Select(_mapBlock.ToWorldCoords).ToArray(); _mapBlock.Map[doorCoords.X, doorCoords.Y] = _floor; var doors = EssenceHelper.GetAllThings <ClosedDoor>().ToArray(); _mapBlock.AddEssence(doors[0], doorCoords); }
public static EMapBlockTypes GetMapBlockType(ETerrains _terrains) { switch (_terrains) { case ETerrains.GRASS: case ETerrains.GROUND: case ETerrains.ROAD: case ETerrains.RED_BRICK_WALL: case ETerrains.YELLOW_BRICK_WALL: case ETerrains.GRAY_BRICK_WALL: case ETerrains.STATUE: case ETerrains.WOOD_FLOOR_OAK: case ETerrains.WOOD_FLOOR_MAPPLE: case ETerrains.STONE_FLOOR: case ETerrains.RED_BRICK_WINDOW: case ETerrains.GRAY_BRICK_WINDOW: case ETerrains.YELLOW_BRICK_WINDOW: case ETerrains.STONE_WALL: return(EMapBlockTypes.GROUND); case ETerrains.FRESH_WATER: return(EMapBlockTypes.FRESH_WATER); case ETerrains.DEEP_FRESH_WATER: return(EMapBlockTypes.DEEP_FRESH_WATER); case ETerrains.SWAMP: return(EMapBlockTypes.SWAMP); case ETerrains.LAKE_COAST: return(EMapBlockTypes.LAKE_COAST); case ETerrains.COAST: return(EMapBlockTypes.COAST); case ETerrains.DEEP_SEA: return(EMapBlockTypes.DEEP_SEA); case ETerrains.ETERNAL_SNOW: return(EMapBlockTypes.ETERNAL_SNOW); case ETerrains.FOREST: return(EMapBlockTypes.FOREST); case ETerrains.MOUNT: return(EMapBlockTypes.MOUNT); case ETerrains.SEA: return(EMapBlockTypes.SEA); case ETerrains.SHRUBS: return(EMapBlockTypes.SHRUBS); case ETerrains.NONE: return(EMapBlockTypes.NONE); default: throw new ArgumentOutOfRangeException("_terrains"); } }
public static TerrainAttribute GetAttribute(ETerrains _enum) { if (m_attrs == null) { m_attrs = Util.Fill <ETerrains, TerrainAttribute>(); } return(m_attrs[_enum]); }
public static TerrainAttribute GetAttribute(ETerrains _enum) { if (m_attrs == null) { m_attrs = Util.Fill<ETerrains, TerrainAttribute>(); } return m_attrs[_enum]; }
public BaseMapBlock(Point _blockId) { Rooms = new List<Room>(); WorldCoords = _blockId*Constants.MAP_BLOCK_SIZE; BlockId = _blockId; Map = new ETerrains[Constants.MAP_BLOCK_SIZE,Constants.MAP_BLOCK_SIZE]; RandomSeed = World.Rnd.Next(); Objects = new List<Tuple<Essence, Point>>(); }
public BaseMapBlock(Point _blockId) { Rooms = new List <Room>(); WorldCoords = _blockId * Constants.MAP_BLOCK_SIZE; BlockId = _blockId; Map = new ETerrains[Constants.MAP_BLOCK_SIZE, Constants.MAP_BLOCK_SIZE]; RandomSeed = World.Rnd.Next(); Objects = new List <Tuple <Essence, Point> >(); }
public static ATile GetTile(this ETerrains _terrains, int _index) { if (_terrains == ETerrains.NONE) { return(ETileset.NONE.GetTile(0)); } var ts = AllTerrainTilesets[_terrains]; return(ts[_index]); }
public static EMapBlockTypes GetMapBlockType(ETerrains _terrains) { switch (_terrains) { case ETerrains.GRASS: case ETerrains.GROUND: case ETerrains.ROAD: case ETerrains.RED_BRICK_WALL: case ETerrains.YELLOW_BRICK_WALL: case ETerrains.GRAY_BRICK_WALL: case ETerrains.STATUE: case ETerrains.WOOD_FLOOR_OAK: case ETerrains.WOOD_FLOOR_MAPPLE: case ETerrains.STONE_FLOOR: case ETerrains.RED_BRICK_WINDOW: case ETerrains.GRAY_BRICK_WINDOW: case ETerrains.YELLOW_BRICK_WINDOW: case ETerrains.STONE_WALL: return EMapBlockTypes.GROUND; case ETerrains.FRESH_WATER: return EMapBlockTypes.FRESH_WATER; case ETerrains.DEEP_FRESH_WATER: return EMapBlockTypes.DEEP_FRESH_WATER; case ETerrains.SWAMP: return EMapBlockTypes.SWAMP; case ETerrains.LAKE_COAST: return EMapBlockTypes.LAKE_COAST; case ETerrains.COAST: return EMapBlockTypes.COAST; case ETerrains.DEEP_SEA: return EMapBlockTypes.DEEP_SEA; case ETerrains.ETERNAL_SNOW: return EMapBlockTypes.ETERNAL_SNOW; case ETerrains.FOREST: return EMapBlockTypes.FOREST; case ETerrains.MOUNT: return EMapBlockTypes.MOUNT; case ETerrains.SEA: return EMapBlockTypes.SEA; case ETerrains.SHRUBS: return EMapBlockTypes.SHRUBS; case ETerrains.NONE: return EMapBlockTypes.NONE; default: throw new ArgumentOutOfRangeException("_terrains"); } }
public static Noun AsNoun(this ETerrains _terrain) { return(World.AL.AsNoun(_terrain)); }
public Noun AsNoun(ETerrains _e) { switch (_e) { case ETerrains.NONE: return("ничто".AsNoun(ESex.IT, false)); case ETerrains.GROUND: return("почва".AsNoun(ESex.FEMALE, false)); case ETerrains.FRESH_WATER: return("вода".AsNoun(ESex.FEMALE, false)); case ETerrains.GRASS: return("трава".AsNoun(ESex.FEMALE, false)); case ETerrains.SWAMP: return("болото".AsNoun(ESex.IT, false)); case ETerrains.LAVA: return("лава".AsNoun(ESex.FEMALE, false)); case ETerrains.ROAD: return("дорога".AsNoun(ESex.FEMALE, false)); case ETerrains.RED_BRICK_WALL: return("стена".AsNoun(ESex.FEMALE, false) + "из красного кирпича".AsIm()); case ETerrains.YELLOW_BRICK_WALL: return("стена".AsNoun(ESex.FEMALE, false) + "из желтого кирпича".AsIm()); case ETerrains.GRAY_BRICK_WALL: return("стена".AsNoun(ESex.FEMALE, false) + "из серого кирпича".AsIm()); case ETerrains.STATUE: return("статуя".AsNoun(ESex.FEMALE, false)); case ETerrains.WOOD_FLOOR_OAK: return("пол".AsNoun(ESex.MALE, false) + "дубовый".AsAdj()); case ETerrains.WOOD_FLOOR_MAPPLE: return("пол".AsNoun(ESex.MALE, false) + "кленовый".AsAdj()); case ETerrains.STONE_FLOOR: return("пол".AsNoun(ESex.MALE, false) + "каменный".AsAdj()); case ETerrains.STONE_WALL: return("стена".AsNoun(ESex.FEMALE, false) + "каменный".AsAdj()); case ETerrains.FOREST: return("лес".AsNoun(ESex.MALE, false)); case ETerrains.SEA: return("море".AsNoun(ESex.IT, false)); case ETerrains.DEEP_SEA: return("море".AsNoun(ESex.IT, false) + "глубокий".AsAdj()); case ETerrains.DEEP_FRESH_WATER: return("вода".AsNoun(ESex.FEMALE, false) + "глубокий".AsAdj()); case ETerrains.COAST: return("песок".AsNoun(ESex.MALE, false)); case ETerrains.LAKE_COAST: return("песок".AsNoun(ESex.MALE, false) + "речной".AsAdj()); case ETerrains.MOUNT: return("скалы".AsNoun(ESex.PLURAL_FEMALE, false)); case ETerrains.ETERNAL_SNOW: return("ледник".AsNoun(ESex.MALE, false)); case ETerrains.SHRUBS: return("кустарник".AsNoun(ESex.MALE, false)); case ETerrains.UP: return("верх".AsNoun(ESex.MALE, false)); case ETerrains.DOWN: return("низ".AsNoun(ESex.MALE, false)); case ETerrains.LEFT: return("лево".AsNoun(ESex.IT, false)); case ETerrains.RIGHT: return("право".AsNoun(ESex.IT, false)); case ETerrains.RED_BRICK_WINDOW: return("окно".AsNoun(ESex.IT, false)); case ETerrains.GRAY_BRICK_WINDOW: return("окно".AsNoun(ESex.IT, false)); case ETerrains.YELLOW_BRICK_WINDOW: return("окно".AsNoun(ESex.IT, false)); default: throw new ArgumentOutOfRangeException("_e"); } }
public Noun AsNoun(ETerrains _e) { switch (_e) { case ETerrains.NONE: return "ничто".AsNoun(ESex.IT, false); case ETerrains.GROUND: return "почва".AsNoun(ESex.FEMALE, false); case ETerrains.FRESH_WATER: return "вода".AsNoun(ESex.FEMALE, false); case ETerrains.GRASS: return "трава".AsNoun(ESex.FEMALE, false); case ETerrains.SWAMP: return "болото".AsNoun(ESex.IT, false); case ETerrains.LAVA: return "лава".AsNoun(ESex.FEMALE, false); case ETerrains.ROAD: return "дорога".AsNoun(ESex.FEMALE, false); case ETerrains.RED_BRICK_WALL: return "стена".AsNoun(ESex.FEMALE, false) + "из красного кирпича".AsIm(); case ETerrains.YELLOW_BRICK_WALL: return "стена".AsNoun(ESex.FEMALE, false) + "из желтого кирпича".AsIm(); case ETerrains.GRAY_BRICK_WALL: return "стена".AsNoun(ESex.FEMALE, false) + "из серого кирпича".AsIm(); case ETerrains.STATUE: return "статуя".AsNoun(ESex.FEMALE, false); case ETerrains.WOOD_FLOOR_OAK: return "пол".AsNoun(ESex.MALE, false) + "дубовый".AsAdj(); case ETerrains.WOOD_FLOOR_MAPPLE: return "пол".AsNoun(ESex.MALE, false) + "кленовый".AsAdj(); case ETerrains.STONE_FLOOR: return "пол".AsNoun(ESex.MALE, false) + "каменный".AsAdj(); case ETerrains.STONE_WALL: return "стена".AsNoun(ESex.FEMALE, false) + "каменный".AsAdj(); case ETerrains.FOREST: return "лес".AsNoun(ESex.MALE, false); case ETerrains.SEA: return "море".AsNoun(ESex.IT, false); case ETerrains.DEEP_SEA: return "море".AsNoun(ESex.IT, false) + "глубокий".AsAdj(); case ETerrains.DEEP_FRESH_WATER: return "вода".AsNoun(ESex.FEMALE, false) + "глубокий".AsAdj(); case ETerrains.COAST: return "песок".AsNoun(ESex.MALE, false); case ETerrains.LAKE_COAST: return "песок".AsNoun(ESex.MALE, false) + "речной".AsAdj(); case ETerrains.MOUNT: return "скалы".AsNoun(ESex.PLURAL_FEMALE, false); case ETerrains.ETERNAL_SNOW: return "ледник".AsNoun(ESex.MALE, false); case ETerrains.SHRUBS: return "кустарник".AsNoun(ESex.MALE, false); case ETerrains.UP: return "верх".AsNoun(ESex.MALE, false); case ETerrains.DOWN: return "низ".AsNoun(ESex.MALE, false); case ETerrains.LEFT: return "лево".AsNoun(ESex.IT, false); case ETerrains.RIGHT: return "право".AsNoun(ESex.IT, false); case ETerrains.RED_BRICK_WINDOW: return "окно".AsNoun(ESex.IT, false); case ETerrains.GRAY_BRICK_WINDOW: return "окно".AsNoun(ESex.IT, false); case ETerrains.YELLOW_BRICK_WINDOW: return "окно".AsNoun(ESex.IT, false); default: throw new ArgumentOutOfRangeException("_e"); } }
private void CreateDoor(MapBlock _mapBlock, ETerrains _floor, IEnumerable<Point> _borderPoints) { var doorCoords = Room.RoomRectangle.Center; var prevPoint = doorCoords; var direction = World.Rnd.GetRandomDirection(); var delta = direction.GetDelta(); while (!_borderPoints.Contains(doorCoords)) { prevPoint = doorCoords; doorCoords += delta; } var nextPoint = doorCoords + delta; var borders = direction.GetBorders().ToArray(); DoorWorldCoords = _mapBlock.ToWorldCoords(doorCoords); OutDoorWorldCoords = new[] {nextPoint + borders[0].Key, nextPoint, nextPoint + borders[1].Key}.Select(_mapBlock.ToWorldCoords).ToArray(); InDoorWorldCoords = new[] {prevPoint + borders[0].Key, prevPoint, prevPoint + borders[1].Key}.Select(_mapBlock.ToWorldCoords).ToArray(); _mapBlock.Map[doorCoords.X, doorCoords.Y] = _floor; var doors = EssenceHelper.GetAllThings<ClosedDoor>().ToArray(); _mapBlock.AddEssence(doors[0], doorCoords); }