Esempio n. 1
0
    public Building(BuildingSdo sdo)
    {
        if (sdo == null)
        {
            return;
        }

        Height = sdo.Height;
        Width  = sdo.Width;

        FloorTiles     = new GameObject[Height, Width];
        WallTiles      = new GameObject[Height, Width];
        WallTypeIndex  = sdo.WallTypeIndex;
        FloorTypeIndex = sdo.FloorTypeIndex;

        _wallTilePrefabs  = BuildingPrefabStore.GetWallTileTypeAt(WallTypeIndex);
        _floorTilePrefabs = BuildingPrefabStore.GetFloorTileTypeAt(FloorTypeIndex);

        Blueprint = BuildingSdo.ConvertBlueprintForLoading(Height, Width, sdo.Blueprint);

        Props = BuildingSdo.ConvertPropsForPlaying(Height, Width, sdo.PropSdos);

        AddedDoorLocations = BuildingSdo.ConvertBlueprintForLoading(Height, Width, sdo.AddedDoorLocations);

        //todo need room sdo -- maybe

        Build();
    }
Esempio n. 2
0
    public static void AssignBuildingToStartingArea(SettlementPrefab prefab)
    {
        var lot = prefab.Lots[Random.Range(0, prefab.Lots.Count)];

        var building = BuildingPrefabStore.GetBuildingPrefab("starting_building_1");

        lot.AssignedBuilding = new Building(building, true);
    }
Esempio n. 3
0
 public static void AssignBuildingToLots(SettlementPrefab prefab)
 {
     foreach (var lot in prefab.Lots)
     {
         var buildingPrefab = BuildingPrefabStore.GetBuildingPrefabForLot(lot);
         lot.AssignedBuilding = new Building(buildingPrefab);
     }
 }
Esempio n. 4
0
    private void PickTilePrefabs()
    {
        WallTypeIndex    = BuildingPrefabStore.GetRandomWallTypeIndex();
        _wallTilePrefabs = BuildingPrefabStore.GetWallTileTypeAt(WallTypeIndex);

        FloorTypeIndex    = BuildingPrefabStore.GetRandomFloorTypeIndex();
        _floorTilePrefabs = BuildingPrefabStore.GetFloorTileTypeAt(FloorTypeIndex);
    }
Esempio n. 5
0
    public Chest(ChestSdo sdo) : base("0", BuildingPrefabStore.GetChestPrefab(), true)
    {
        _contents = new Dictionary <Guid, Item>();

        foreach (var itemId in sdo.ContentIds)
        {
            var item = WorldData.Instance.Items[itemId];
            _contents.Add(item.Id, item);
        }
    }
Esempio n. 6
0
    private void Furnish(bool isStartingBuilding = false)
    {
        var maxFurniture = Height * Width / 20;

        var minFurniture = Height * Width / 40;

        if (minFurniture < 4)
        {
            minFurniture = 4;
        }

        var numFurnitureToPlace = Random.Range(minFurniture, maxFurniture);

        var tilesAdjacentToWall = FindAllTilesAdjacentToWall();

        for (var i = 0; i < numFurnitureToPlace; i++)
        {
            for (var numTries = 0; numTries < MaxTriesToPlaceObject; numTries++)
            {
                var row    = Random.Range(0, Height);
                var column = Random.Range(0, Width);

                if (isStartingBuilding)
                {
                    if ((row == 2 || row == 1) && (column == 1 || column == 2))
                    {
                        continue;
                    }
                }

                if (tilesAdjacentToWall[row, column] && Props[row, column] == null)
                {
                    //todo pick furniture based on room type

                    var roll = Random.Range(0, 100);

                    if (roll < 58)
                    {
                        var furniturePrefab = BuildingPrefabStore.GetRandomBasicFurniturePrefab();
                        Props[row, column] = new Furniture(furniturePrefab.Key, furniturePrefab.Value);
                    }
                    else
                    {
                        var chestPrefab = BuildingPrefabStore.GetChestPrefab();
                        Props[row, column] = new Chest("0", chestPrefab);
                    }

                    break;
                }
            }
        }
    }
Esempio n. 7
0
 public Furniture(FurnitureSdo sdo)
 {
     PrefabKey = sdo.PrefabKey;
     Prefab    = BuildingPrefabStore.GetPrefabByName(PrefabKey);
 }