Beispiel #1
0
    public void BuidFarm(FarmType farmType)
    {
        Farm    farm      = new Farm(farmType, currentGameState.GetFarmCount(farmType));
        Command buildFarm = new Command(Command.CommandType.BuildFarm, farm);

        buildFarm.ApplyCommand(currentGameState, Time.deltaTime);
        processedCommand.Add(buildFarm);
        gameStateChanged.Invoke(currentGameState);
        Sender.SendOnServer(server, buildFarm);
    }
Beispiel #2
0
 protected override void Awake()
 {
     if (singleton)
     {
         Debug.LogError("Multiple of this type");
     }
     singleton       = this;
     resourceTypeIn  = new ResourceTypes[] { };
     resourceTypeOut = new ResourceTypes[] { ResourceTypes.Food };
     name            = "Farm";
     base.Awake();
 }
Beispiel #3
0
    public Farm(FarmType type, int farmCount)
    {
        this.type = type;
        for (int workerNum = 0; workerNum < workersCount; workerNum++)
        {
            Worker worker = new Worker();
            workers.Add(worker);
        }

        price           = type.GetPrice(farmCount);
        cookiePerSecond = type.GetCookiePerSecond();
    }
Beispiel #4
0
    public int GetFarmCount(FarmType farmType)
    {
        int typeFarmsCount = 0;

        foreach (Farm f in farms)
        {
            if (f.type == farmType)
            {
                typeFarmsCount++;
            }
        }
        return(typeFarmsCount);
    }
Beispiel #5
0
    /// <summary>
    /// Builds the farm.
    /// </summary>
    /// <returns>创建成功返回true,否则返回false</returns>
    /// <param name="farmType">Farm type.</param>
    public bool BuildFarm(FarmType farmType)
    {
        switch (farmType)
        {
        case FarmType.CattleFarm:
            Debug.Log("生成一个养牛场");
            BuildingInfo cattleInfo = BuildingConfig.Instance.Container.farmList["CattleFarm"];

            if (DBHandler.Instance.Coins < cattleInfo.Cost)
            {
                return(false);
            }
            CattleFarm cattleFarmPrefab = Resources.Load <CattleFarm>("Prefabs/CattleFarm");
            CattleFarm cattleFarm       = Instantiate(cattleFarmPrefab);
            cattleFarm.farmType = FarmType.CattleFarm;
            InitFarmContent(cattleFarm, cattleInfo);
            break;

        case FarmType.Hennery:
            Debug.Log("生成一个养鸡场");
            BuildingInfo henneryInfo = BuildingConfig.Instance.Container.farmList["Hennery"];

            if (DBHandler.Instance.Coins < henneryInfo.Cost)
            {
                return(false);
            }
            HenneryFarm henneryPrefab = Resources.Load <HenneryFarm>("Prefabs/Hennery");
            HenneryFarm henneryFarm   = Instantiate(henneryPrefab);
            henneryFarm.farmType = FarmType.Hennery;
            InitFarmContent(henneryFarm, henneryInfo);
            break;

        case FarmType.SheepFarm:
            Debug.Log("生成一个养羊场");
            BuildingInfo sheepInfo = BuildingConfig.Instance.Container.farmList["SheepFarm"];

            if (DBHandler.Instance.Coins < sheepInfo.Cost)
            {
                return(false);
            }
            SheepFarm sheepFarmPrefab = Resources.Load <SheepFarm>("Prefabs/SheepFarm");
            SheepFarm sheepFarm       = Instantiate(sheepFarmPrefab);
            sheepFarm.farmType = FarmType.SheepFarm;
            InitFarmContent(sheepFarm, sheepInfo);
            break;

        default:
            return(false);
        }
        return(true);
    }
        /****
        ** Methods
        ****/
        /// <summary>Apply the map overrides.</summary>
        private void ApplyMapOverrides()
        {
            // get farm data
            Farm     farm     = Game1.getFarm();
            FarmType farmType = (FarmType)Game1.whichFarm;

            // get layouts
            if (!this.LayoutConfig.Layouts.ContainsKey(farmType))
            {
                this.Monitor.Log($"The {farmType} farm isn't supported by the mod.", LogLevel.Warn);
                return;
            }
            LayoutConfig[] layouts = this.LayoutConfig
                                     .Layouts[farmType]
                                     .Where(p => p.ConfigFlag == null || this.GetConfigFlag(p.ConfigFlag))
                                     .ToArray();

            // resize tilesheet
            TileSheet tileSheet = farm.map.GetTileSheet(FarmTilesheet.Outdoors);

            tileSheet.SheetSize = new Size(tileSheet.SheetSize.Width, tileSheet.SheetSize.Height + 44);

            // apply layouts
            foreach (LayoutConfig layout in layouts)
            {
                // override tiles
                if (layout.Tiles != null)
                {
                    this.Apply(farm, layout.Tiles.SelectMany(p => p.GetOverrides(this.LayoutConfig.Tilesheets, this.DefaultTilesheet)));
                }

                // tile properties
                if (layout.TileProperties != null)
                {
                    foreach (TileProperty property in layout.TileProperties.SelectMany(p => p.GetProperties(this.LayoutConfig.Tilesheets, this.DefaultTilesheet)))
                    {
                        farm.setTileProperty(property.X, property.Y, property.Layer.ToString(), property.Key, property.Value);
                    }
                }

                // tilesheet properties
                if (layout.TileIndexProperties != null)
                {
                    foreach (TileIndexProperty property in layout.TileIndexProperties.SelectMany(p => p.GetProperties(this.LayoutConfig.Tilesheets, this.DefaultTilesheet)))
                    {
                        farm.map.GetTileSheet(property.Tilesheet).Properties.Add(property.Key, new PropertyValue(property.Value));
                    }
                }
            }
        }
        public async Task <int> CreateAsync(FarmTypeModifyRequest farmType)
        {
            var newFarmType = new FarmType()
            {
                Name        = farmType.Name,
                Description = farmType.Description,
                CreatedById = farmType.CreatedById,
                UpdatedById = farmType.UpdatedById,
                StatusId    = FarmTypeStatus.Actived.GetCode()
            };

            newFarmType.UpdatedDate = DateTimeOffset.UtcNow;
            newFarmType.CreatedDate = DateTimeOffset.UtcNow;

            var id = await _farmTypeRepository.AddWithInt32EntityAsync(newFarmType);

            return(id);
        }