Example #1
0
        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);
        }
Example #2
0
        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");
 }
Example #5
0
    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();
    }
Example #6
0
    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();
    }