コード例 #1
0
        private void ConfigureMapTiles(MapModel mapModel, MapSerializationModel serializationModel)
        {
            foreach (var tileModel in serializationModel.TileList)
            {
                var mapTile = mapModel.GetTileModel(tileModel.Coords);

                foreach (var indicatorName in tileModel.IndicatorNames)
                {
                    var indicator = _indicatorProvider.GetIndicator(indicatorName, mapTile);
                    indicator.Position = mapTile.Position;
                    mapTile.Indicators.Add(indicator);
                }

                if (!string.IsNullOrWhiteSpace(tileModel.TowerName))
                {
                    var agentArgs = new CreateAgentArgs()
                    {
                        Tile = mapTile,
                        Team = tileModel.Team
                    };

                    var agent = _simulationManager.CreateAgent(tileModel.TowerName, agentArgs);
                    _simulationManager.Register(agent);
                    _simulationManager.Site(agent);
                }
            }
        }
コード例 #2
0
ファイル: LevelController.cs プロジェクト: kabourneeak/Catch
        public LevelController(IConfig config, MapSerializationModel mapSerializationModel)
        {
            /*
             * Bootstrap simulation
             */
            var levelContainer = LevelBootstrapper.CreateContainer(config);

            _graphicsResourceManager = levelContainer.Resolve <GraphicsResourceManager>();

            _uiState = levelContainer.Resolve <UiStateModel>();

            _updateController  = levelContainer.Resolve <UpdateController>();
            _overlayController = levelContainer.Resolve <OverlayController>();
            _fieldController   = levelContainer.Resolve <FieldController>();

            var map       = levelContainer.Resolve <MapModel>();
            var mapLoader = levelContainer.Resolve <MapLoader>();

            mapLoader.InitializeMap(map, mapSerializationModel);

            /*
             * Other initialization
             */

            var simulationManager    = levelContainer.Resolve <ISimulationManager>();
            var simulationStateModel = levelContainer.Resolve <SimulationStateModel>();

            _updateEventArgs = new UpdateEventArgs(simulationManager, simulationStateModel);
        }
コード例 #3
0
        public void InitializeMap(MapModel mapModel, MapSerializationModel serializationModel)
        {
            CreateMapTileModels(mapModel, serializationModel);

            ConfigureMapTiles(mapModel, serializationModel);

            ConfigurePaths(mapModel, serializationModel);

            InitializeEmitScript(mapModel, serializationModel);
        }
コード例 #4
0
        private void ConfigurePaths(MapModel mapModel, MapSerializationModel serializationModel)
        {
            foreach (var pathModel in serializationModel.Paths)
            {
                var mapPath = new MapPathModel();
                mapPath.Name = pathModel.PathName;

                foreach (var pathStep in pathModel.PathSteps)
                {
                    var mapTileModel = mapModel.GetTileModel(pathStep.Coords);
                    mapPath.Add(mapTileModel);
                }

                mapModel.AddPath(mapPath);
            }
        }
コード例 #5
0
        private static void SaveMap(MapSerializationModel map)
        {
            var filename = map.GetType().Name + ".json";

            using (var fs = File.Open(filename, FileMode.Create))
                using (var sw = new StreamWriter(fs))
                    using (var jw = new JsonTextWriter(sw))
                    {
                        jw.Formatting = Formatting.Indented;

                        var serializer = new JsonSerializer();

                        serializer.Serialize(jw, map);
                    }

            // test deserialization
            var mapModel = JsonConvert.DeserializeObject <MapSerializationModel>(File.ReadAllText(filename));
        }
コード例 #6
0
        private void InitializeEmitScript(MapModel mapModel, MapSerializationModel serializationModel)
        {
            foreach (var emitScriptEntry in serializationModel.EmitScript)
            {
                for (var i = 0; i < emitScriptEntry.Count; ++i)
                {
                    var agentArgs = new CreateAgentArgs()
                    {
                        Path = mapModel.GetPath(emitScriptEntry.PathName),
                        Tile = mapModel.OffMapTileModel,
                        Team = emitScriptEntry.Team
                    };

                    var offset = emitScriptEntry.BeginTime + (i * emitScriptEntry.DelayTime);
                    var task   = new SpawnAgentTask(offset, emitScriptEntry.AgentTypeName, agentArgs);

                    _simulationManager.Register(task);
                }
            }
        }
コード例 #7
0
 private void CreateMapTileModels(MapModel mapModel, MapSerializationModel serializationModel)
 {
     mapModel.Initialize(serializationModel.Rows, serializationModel.Columns);
     mapModel.Populate((hc, v) => new MapTileModel(hc, _config, _indicatorProvider));
 }