示例#1
0
        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);
        }
示例#2
0
        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");
            }
        }
示例#3
0
 public static TerrainAttribute GetAttribute(ETerrains _enum)
 {
     if (m_attrs == null)
     {
         m_attrs = Util.Fill <ETerrains, TerrainAttribute>();
     }
     return(m_attrs[_enum]);
 }
示例#4
0
		public static TerrainAttribute GetAttribute(ETerrains _enum)
		{
			if (m_attrs == null)
			{
				m_attrs = Util.Fill<ETerrains, TerrainAttribute>();
			}
			return m_attrs[_enum];
		}
示例#5
0
		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>>();
		}
示例#6
0
 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> >();
 }
示例#7
0
        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]);
        }
示例#8
0
		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");
			}
		}
示例#9
0
 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");
			}
		}
示例#12
0
		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);
		}