public void BasicCanalTest2() { CanalManager canalManager = new CanalManager(); Canal canal = new Canal(); canal.CanelEdges.Add(new CanalEdge() { Id = "SourceCanal", WaterLevel = 2.9 }); canal.CanelEdges.Add(new CanalEdge() { Id = "EndCanal" }); CanalStretch canalStretch = new CanalStretch("stretch1", 602, 20.32, new RectangularSection(5, 0.028, 0)); canalStretch.FromNode = canal.CanelEdges.First(); canalStretch.ToNode = canal.CanelEdges.Last(); canal.CanalStretches.Add(canalStretch); canalManager.SetCanal(canal); var result = canalManager.ExecuteCanalSimulation(); Assert.IsTrue(result != null); }
protected virtual void LoadServiceAndServiceAgents() { // add here necessary stuff to the container var unityContainer = Container.Resolve <IUnityContainer>(); var canalDirectServiceAgent = new CanalDirectServiceAgent(); var configurationDirectServiceAgent = new ConfigurationDirectServiceAgent(); var canalFlowService = new CanalFlowService(); var configurationService = new ConfigurationService(); var canalManager = new CanalManager(); var configurationLoader = new CanalConfigurationLoader(); var sequenceTaskScheduler = new SequenceTaskScheduler(); unityContainer.RegisterInstance <ICanalServiceAgent>(canalDirectServiceAgent); unityContainer.RegisterInstance <IConfigurationServiceAgent>(configurationDirectServiceAgent); unityContainer.RegisterInstance <ICanalFlowService>(canalFlowService); unityContainer.RegisterInstance <IConfigurationService>(configurationService); unityContainer.RegisterInstance <ICanalManager>(canalManager); unityContainer.RegisterInstance <ICanalConfigurationLoader>(configurationLoader); unityContainer.RegisterInstance(sequenceTaskScheduler); // build up everything unityContainer.BuildUp(canalDirectServiceAgent); unityContainer.BuildUp(configurationDirectServiceAgent); unityContainer.BuildUp(canalFlowService); unityContainer.BuildUp(configurationService); unityContainer.BuildUp(configurationLoader); // register for start/connect/etc }
public void SaveAndLoadConfiguration() { // Arrange CanalManager canalManager = new CanalManager(); ConfigurationManager.AppSettings[ServerConfigConsts.RelativeModelsLocation] = "ScienceAndMaths"; CanalConfigurationLoader loader = new CanalConfigurationLoader(); loader.CanalManager = canalManager; Canal canal = new Canal { Id = "TestConfig" }; canal.CanelEdges.Add(new CanalEdge() { Id = "SourceCanal", WaterLevel = 2.9 }); canal.CanelEdges.Add(new CanalEdge() { Id = "EndCanal" }); CanalStretch canalStretch = new CanalStretch("stretch1", 602, 20.32, new RectangularSection(5, 0.028, 0)); canalStretch.FromNode = canal.CanelEdges.First(); canalStretch.ToNode = canal.CanelEdges.Last(); canal.CanalStretches.Add(canalStretch); CanalConfiguration canalConfiguration = new CanalConfiguration(); canalConfiguration.ConfigId = "TestConfig"; loader.SaveCanalConfiguration(canal); loader.LoadCanalConfiguration(); Assert.IsNotNull(canalManager.Canal); Assert.AreEqual(2, canalManager.Canal.CanelEdges.Count); Assert.AreEqual(1, canalManager.Canal.CanalStretches.Count); }
public void ExecuteCanalSimulationAsync(string correlationId) { // Make sure here we control how many request and threads can execute (SequenceTokenDispatcher) SequenceTaskScheduler.EnqueueWork(() => CanalManager.ExecuteCanalSimulation(), ExecuteCanalSimulationCompleted, correlationId, "CanalSimulation"); }
private void initWorldData() { TextAsset file = Resources.Load("TiledMap/map.json", typeof(TextAsset)) as TextAsset; Debug.Assert(file != null); JSONNode node = JSON.Parse(file.text); numTilesX = (uint)node ["width"].AsInt; numTilesY = (uint)node ["height"].AsInt; Debug.Log("MapW: " + numTilesX); Debug.Log("MapH: " + numTilesY); Debug.Log("Map Sice: " + numTilesX + " W, " + numTilesY + " H"); worldTerrainType = new TileTerrainType[numTilesY, numTilesX]; worldTerrainID = new TileTerrainIDs[numTilesY, numTilesX]; worldTerrainRepresentation = new GameObject[numTilesY, numTilesX]; riceTerrains = new RiceTerrainTile[numTilesY, numTilesX]; chunkTilesPos = new Dictionary <int, List <Pair <uint, uint> > >(); vegetation = new Dictionary <uintPair, Vegetation> (); canalManager = new CanalManager(numTilesX, numTilesY); _weedFactory = new WeedFactory(this, RICE_CHUNK_W * RICE_CHUNK_H); chunkNextID = 0; // TERRAIN for (uint k = 0; k < numTilesX * numTilesY; ++k) { uint i = k / numTilesX; uint j = k % numTilesX; //Debug.Log("Data["+i+","+j+"]="+node ["layers"] [0] ["data"] [k]); TileTerrainIDs v = (TileTerrainIDs)node ["layers"] [0] ["data"] [(int)k].AsInt; worldTerrainID [i, j] = v; worldTerrainType [i, j] = (v == TileTerrainIDs.HERBS) ? TileTerrainType.FREE : TileTerrainType.DECORATION; } // VEGETATION for (uint k = 0; k < numTilesX * numTilesY; ++k) { uint i = k / numTilesX; uint j = k % numTilesX; //Debug.Log("Data["+i+","+j+"]="+node ["layers"] [0] ["data"] [k]); int v = node ["layers"] [1] ["data"] [(int)k].AsInt; if (v != 0) { uintPair matrixPos = new uintPair(i, j); vegetation [matrixPos] = new Vegetation(i, j, (VegID)v); } } // CANALS for (uint k = 0; k < numTilesX * numTilesY; ++k) { uint i = k / numTilesX; uint j = k % numTilesX; //Debug.Log("Data["+i+","+j+"]="+node ["layers"] [0] ["data"] [k]); int v = node ["layers"] [2] ["data"] [(int)k].AsInt; if ((TileOthersIDs)v == TileOthersIDs.CANAL) { addCanal(i, j); } else if ((TileOthersIDs)v == TileOthersIDs.WATER_SOURCE) { addCanal(i, j); canalManager.addWaterSource(3, 6); } } canalManager.updateCanals(); //RICE CHUNKS for (uint k = 0; k < numTilesX * numTilesY; ++k) { uint i = k / numTilesX; uint j = k % numTilesX; //Debug.Log("Data["+i+","+j+"]="+node ["layers"] [0] ["data"] [k]); int v = node ["layers"] [2] ["data"] [(int)k].AsInt; if ((TileOthersIDs)v == TileOthersIDs.RICE_CHUNK) { createRiceChunk(i, j, true); } } canalManager.updateCanals(); }
public void load(WorldTerrainData worldTerrainData) { RiceTerrainTile.initResources(); // gestiona los recursos de forma eficiente initResources(); // gestiona los recursos de forma eficiente //initWorldData(); numTilesX = worldTerrainData.NumTilesX; numTilesY = worldTerrainData.NumTilesY; worldTerrainType = worldTerrainData.WorldTerrainType; worldTerrainID = worldTerrainData.WorldTerrainID; worldTerrainRepresentation = new GameObject[numTilesY, numTilesX]; riceTerrains = new RiceTerrainTile[numTilesY, numTilesX]; //construir for (uint i = 0; i < numTilesY; ++i) { for (uint j = 0; j < numTilesX; ++j) { if (worldTerrainData.RiceTerrains[i, j] != null) { riceTerrains[i, j] = new RiceTerrainTile(); riceTerrains[i, j].setActionsDone(worldTerrainData.RiceTerrains[i, j].ActionsDoneInTheYear); riceTerrains[i, j].setChunkNumber(worldTerrainData.RiceTerrains[i, j].ChunkID); riceTerrains[i, j].setCol(worldTerrainData.RiceTerrains[i, j].Col); riceTerrains[i, j].DaysBurning = worldTerrainData.RiceTerrains[i, j].DaysBurning; riceTerrains[i, j].DaysPlanted = worldTerrainData.RiceTerrains[i, j].DaysPlanted; riceTerrains[i, j].HasAlreadyBeenWorked = worldTerrainData.RiceTerrains[i, j].HasAlreadyBeenWorked; riceTerrains[i, j].HasAppliedFangueig = worldTerrainData.RiceTerrains[i, j].HasAppliedFangueig; riceTerrains[i, j].HasAppliedHerbicide = worldTerrainData.RiceTerrains[i, j].HasAppliedHerbicide; riceTerrains[i, j].IsBurningRostoll = worldTerrainData.RiceTerrains[i, j].IsBurningRostoll; riceTerrains[i, j].LocalTileID = worldTerrainData.RiceTerrains[i, j].LocalTileID; if (worldTerrainData.RiceTerrains[i, j].PlagueData.Active) { riceTerrains[i, j].changePlagueState(worldTerrainData.RiceTerrains[i, j].PlagueData.Type); } riceTerrains[i, j].RiceState = worldTerrainData.RiceTerrains[i, j].RiceState; riceTerrains[i, j].setRow(worldTerrainData.RiceTerrains[i, j].Row); riceTerrains[i, j].TerrainState = worldTerrainData.RiceTerrains[i, j].TerrainState; if (worldTerrainData.RiceTerrains[i, j].WeedData.Type != TypeWeed.NONE) { riceTerrains[i, j].changeWeedState(worldTerrainData.RiceTerrains[i, j].WeedData.Type, worldTerrainData.RiceTerrains[i, j].WeedData.Day, worldTerrainData.RiceTerrains[i, j].WeedData.PenalizationDay); } riceTerrains[i, j].updateTerrainRepresentation(); riceTerrains [i, j].InstantiateImages(); } else { worldTerrainData.RiceTerrains[i, j] = null; } } } chunkTilesPos = worldTerrainData.ChunkTilesPos; vegetation = new Dictionary <uintPair, Vegetation>(); //construir foreach (KeyValuePair <uintPair, VegID> veggie in worldTerrainData.Vegetation) { vegetation.Add(veggie.Key, new Vegetation(veggie.Key.First, veggie.Key.Second, veggie.Value)); } canalManager = new CanalManager(); _weedFactory = new WeedFactory(this, RICE_CHUNK_W * RICE_CHUNK_H); chunkNextID = worldTerrainData.ChunkNextID; initWorldRepresentation(); }