Beispiel #1
0
        /// <summary>
        ///     Compile and run <paramref name="buildingTask"/> to completion
        /// </summary>
        /// <param name="buildingTask">description of building operation</param>
        private async Task RunToCompletion(IServiceScope scope, BuildingTask buildingTask)
        {
            var compiler         = scope.ServiceProvider.GetRequiredService <ICompiler>();
            var runner           = scope.ServiceProvider.GetRequiredService <IRunner>();
            var editorHubContext = scope.ServiceProvider.GetRequiredService <IHubContext <LiveEditorHub> >();

            var projectName    = buildingTask.ProjectName;
            var buildingResult = default(BuildingResult);

            using var sw = new StringWriter();
            try {
                Console.SetOut(sw);
                Console.SetError(sw);

                var assemblyBytes = await compiler.CompileAsync(buildingTask);

                buildingResult = await runner.ExecuteAsync(assemblyBytes, Array.Empty <string>());

                buildingResult.ResultMessage = sw.ToString();
            } catch (Exception ex) when(ex is InvalidOperationException || ex is ArgumentNullException)
            {
                buildingResult = new BuildingResult {
                    ResultMessage = ex.Message
                };
            } finally {
                await editorHubContext
                .Clients
                .Group(projectName)
                .SendAsync(nameof(LiveEditorHub.ProjectCompiled), projectName, buildingResult);
            }
        }
    public void BuildStation(StationData stationData, out BuildingResult result)
    {
        Tile <TileData> tile = stationData.Tile;

        GameObject newStationObject = Instantiate(stationPrefab, tile.CartesianPosition, Quaternion.identity,
                                                  builtObjectParent.transform);

        Station newStation = newStationObject.GetComponent <Station>();

        newStation.UpdateData(stationData);


        tile.Data.HasStation = true;
        tile.Data.Station    = newStation;
        newStationObject.GetComponent <Station>().SetTile(tile);

        AddTracksToTile(tile);

        worldMap.AddBuiltObject(tile.Position, newStationObject);
        List <Station> transitSystemStations = gameManager.transitSystem.Stations;

        transitSystemStations.Add(newStation);

        gameManager.transitSystem.UpdateAllStationConnections();

        result = BuildingResult.Success;
    }
    public void BuildTrack(TrackData trackData, out BuildingResult result)
    {
        Tile <TileData> tile = trackData.Tile;

        AddTracksToTile(tile);

        gameManager.transitSystem.UpdateAllStationConnections();

        result = BuildingResult.Success;
    }
    private void DemolishTrack(IBuildableData demolishData, out BuildingResult result)
    {
        Tile <TileData> tile = demolishData.Tile;

        RemoveTracksFromTile(tile);

        gameManager.transitSystem.UpdateAllStationConnections();


        result = BuildingResult.Success;
    }
Beispiel #5
0
        //获取楼栋接口
        public ActionResult GetBuilding(string data)
        {
            BuildingResult r = new BuildingResult();

            if (string.IsNullOrEmpty(data))
            {
                r.info    = "参数data不能为空!";
                r.success = false;
            }
            else
            {
                r = us.PushBuildingInfo(data);
            }
            return(Content(r.ToJson()));
        }
    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;
        }
    }
    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;
        }
    }
Beispiel #8
0
        private static void writeBuldingData(BuildingResult buildingResultData)
        {
            string sqlCommandText = $@"  
					INSERT INTO building  
						(
							building_id,  
							building_name,  
							campus_id
						)  
					VALUES  
						(  
							'{buildingResultData.msg.building_id}',
							'{buildingResultData.msg.building_name}',
							'{buildingResultData.msg.campus_id}'
						);"                        ;

            writeSqlData(sqlCommandText);
            Console.WriteLine("Added buildingResultData");
        }
        //获取楼栋信息接口(参数:楼盘ID)
        public BuildingResult PushBuildingInfo(string data)
        {
            BuildingResult r = new BuildingResult();

            try
            {
                List <BuildingModel> list = new List <BuildingModel>();
                string sql = string.Format(@"select * from TB_BUILDING(nolock) where STATUS=1 and ESTATE_GUID='{0}' order by BUILDING_NUMBER;", data);

                using (SqlDataReader rd = db.ExecuteReader(sql))
                {
                    while (rd.Read())
                    {
                        BuildingModel mode = new BuildingModel();
                        mode.BUILDING_GUID    = getRdString(rd, "BUILDING_GUID");
                        mode.BUILDING_NUMBER  = getRdString(rd, "BUILDING_NUMBER");
                        mode.ESTATE_GUID      = getRdString(rd, "ESTATE_GUID");
                        mode.BUILDING_ADDRESS = getRdString(rd, "BUILDING_ADDRESS");
                        mode.FLOOR_TOTAL      = getRdString(rd, "FLOOR_TOTAL");
                        mode.ROOM_TOTAL       = getRdString(rd, "ROOM_TOTAL");
                        list.Add(mode);
                    }
                    rd.Close();
                    rd.Dispose();
                }
                r.success = true;
                r.info    = "成功";
                r.data    = list;
            }
            catch (Exception ex)
            {
                r.success = false;
                r.info    = ex.Message;
            }
            return(r);
        }
 private void DemolishAll(IBuildableData demolishData, out BuildingResult result)
 {
     throw new NotImplementedException();
 }
 private void DemolishStation(StationData stationData, out BuildingResult result)
 {
     throw new NotImplementedException();
 }
Beispiel #12
0
 public async Task ProjectCompiled(string projectName, BuildingResult buildResult) =>
 await Clients.Group(projectName).SendAsync(nameof(ProjectCompiled), projectName, buildResult);