コード例 #1
0
    private void DemolishTrack(IBuildableData demolishData, out BuildingResult result)
    {
        Tile <TileData> tile = demolishData.Tile;

        RemoveTracksFromTile(tile);

        gameManager.transitSystem.UpdateAllStationConnections();


        result = BuildingResult.Success;
    }
コード例 #2
0
    public void Demolish(IBuildableData demolishData)
    {
        BuildingResult result = BuildingResult.Init;

        if (moneyManager.CanSpend(demolishData.Price))
        {
            switch (demolishData.Buildable)
            {
            case Buildable.Station:
                DemolishStation(demolishData as StationData, out result);
                break;

            case Buildable.Track:
                DemolishTrack(demolishData as TrackData, out result);
                break;

            case Buildable.All:
                DemolishAll(demolishData, out result);
                break;

            default:
                throw new ArgumentOutOfRangeException();
                break;
            }
        }
        else
        {
            result = BuildingResult.InsufficientFunds;
        }

        switch (result)
        {
        case BuildingResult.Success:
            moneyManager.Spend(demolishData.Price);
            break;

        case BuildingResult.InsufficientFunds:
        case BuildingResult.SpaceBlocked:
        case BuildingResult.IllegalPlacement:
        case BuildingResult.NothingThere:
            Debug.LogWarning("Demolish Failed - " + demolishData.Buildable + " - " + result);
            break;

        default:
            throw new ArgumentOutOfRangeException();
            break;
        }
    }
コード例 #3
0
    public void Build(IBuildableData buildableData)
    {
        BuildingResult result = BuildingResult.Init;

        if (moneyManager.CanSpend(buildableData.Price))
        {
            switch (buildableData.Buildable)
            {
            case Buildable.Station:
                BuildStation(buildableData as StationData, out result);
                break;

            case Buildable.Track:
                BuildTrack(buildableData as TrackData, out result);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
        else
        {
            result = BuildingResult.InsufficientFunds;
        }


        switch (result)
        {
        case BuildingResult.Success:
            moneyManager.Spend(buildableData.Price);
            break;

        case BuildingResult.InsufficientFunds:
        case BuildingResult.SpaceBlocked:
        case BuildingResult.IllegalPlacement:
            Debug.LogWarning("Build Failed - " + buildableData.Buildable + " - " + result);
            break;

        default:
            Debug.LogError("BuildResult was not properly set");
            break;
        }
    }
コード例 #4
0
 private void DemolishAll(IBuildableData demolishData, out BuildingResult result)
 {
     throw new NotImplementedException();
 }
コード例 #5
0
 public DemolishCommand(Builder builder, T buildableData)
 {
     this.builder       = builder;
     this.buildableData = buildableData;
 }
コード例 #6
0
 public BuildCommand(Builder builder, T buildableData)
 {
     this.builder       = builder;
     this.buildableData = buildableData;
 }