Beispiel #1
0
    private void Refill()
    {
        float refillAmount = MaxFoodLevel - FoodLevel;
        float inputFood    = shipResources.ChangeFood(-refillAmount);

        foodLevel -= inputFood;
        foodLevel  = Mathf.Clamp(FoodLevel, 0, FoodLevel);
    }
    void FinishMoving()
    {
        robotPath       = null;
        currentDestTile = null;
        State           = RobotState.Idle;

        if (InventoryState == RobotInventoryState.Empty)
        {
            if (RobotTile.Type == Tile.TileType.BeaconPart)
            {
                InventoryState = RobotInventoryState.Part;
                RobotTile.SetTileType(Tile.TileType.Blank);
                mapManager.TileChanged(RobotTile);
            }
            else if (RobotTile.Type == Tile.TileType.FoodStore)
            {
                InventoryState = RobotInventoryState.Food;
                RobotTile.SetTileType(Tile.TileType.Blank);
                mapManager.TileChanged(RobotTile);
            }
        }
        else
        {
            if (RobotTile.Type == Tile.TileType.Entrance)
            {
                if (InventoryState == RobotInventoryState.Food)
                {
                    if (OnRobotFoodReturn != null)
                    {
                        OnRobotFoodReturn(FoodPerStore);
                    }

                    shipResources.ChangeFood(FoodPerStore);
                }
                else if (InventoryState == RobotInventoryState.Part)
                {
                    if (OnRobotPartReturn != null)
                    {
                        OnRobotPartReturn();
                    }
                }
                InventoryState = RobotInventoryState.Empty;
            }
        }
    }