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); } } }
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); }
public void InitializeMap(MapModel mapModel, MapSerializationModel serializationModel) { CreateMapTileModels(mapModel, serializationModel); ConfigureMapTiles(mapModel, serializationModel); ConfigurePaths(mapModel, serializationModel); InitializeEmitScript(mapModel, serializationModel); }
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); } }
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)); }
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); } } }
private void CreateMapTileModels(MapModel mapModel, MapSerializationModel serializationModel) { mapModel.Initialize(serializationModel.Rows, serializationModel.Columns); mapModel.Populate((hc, v) => new MapTileModel(hc, _config, _indicatorProvider)); }