public List <MenuAction> getRiceTerrainActions(RiceTerrainTile riceTerrain) { //Debug.Log ("Actions for Terrain=" + riceTerrain.getChunkNumber ()); List <MenuAction> actionsAvailable = new List <MenuAction>(); if (!isActionInProgress(riceTerrain.getChunkNumber())) { List <int> actionsCurrentPhase = GameObject.FindGameObjectWithTag("Logic").GetComponent <PhaseManager>().getActionsInCurrentPhase(); for (uint i = 0; i < actionsCurrentPhase.Count; ++i) { int currentAction = actionsCurrentPhase[(int)i]; bool areDependenciesOk = riceTerrain.checkDependencies(_action[currentAction]); bool hasBeenInvestigated = InvestigationManager.GetInstance().areInvestigated(_action[currentAction].getInvestigationRequired()); bool hasWater = WorldTerrain.GetInstance().riceChunkHasWater(riceTerrain.getChunkNumber()) || !_action[currentAction].needCanal; bool hasActionDone = riceTerrain.isActionDone(currentAction); if (!hasActionDone && hasBeenInvestigated && areDependenciesOk && hasWater) { ChunkAction newAction = _action[currentAction]; PerformChunkAction callback = this.addActionInProgress; ChunkAction t = newAction.copyWithCallback(callback, riceTerrain.getChunkNumber()); actionsAvailable.Add((MenuAction)t); } //Debug.Log(" Action "+currentAction+" Dep="+areDependenciesOk+" Inv="+hasBeenInvestigated+" Water="+hasWater+" !Done="+!hasActionDone); } } actionsAvailable.Sort((x, y) => x.priority.CompareTo(y.priority)); return(actionsAvailable); }
public void initWorld() { RiceTerrainTile.initResources(); // gestiona los recursos de forma eficiente initResources(); // gestiona los recursos de forma eficiente initWorldData(); initWorldRepresentation(); }
public PlagueInstance(RiceTerrainTile t) { _parent = t; instance = null; active = false; type = TypePlague.NONE; PenalizationDays = 0; }
public void unselectChunk(int chunk) { for (int i = 0; i < chunkTilesPos [chunk].Count; ++i) { RiceTerrainTile tile = getRiceTerrain(chunkTilesPos[chunk][i].First, chunkTilesPos[chunk][i].Second); tile.unselect(); } }
public Weed(RiceTerrainTile theParent) { type = TypeWeed.NONE; instance = null; day = 1; PenalizationDay = 0; _parent = theParent; }
public void setRiceTerrain(RiceTerrainTile riceTerrain) { m_currentAction = 0; m_riceTerrain = riceTerrain; GameObject.Find("Logic").GetComponent <TimeManager>().addListerToDayChange(happyNewDay); updateActions(); }
// prepara el terreno y crea un tile donde plantar arroz public void createRiceChunk(uint row, uint col, bool flooded) { int chunkID = chunkNextID++; Debug.Log("Building Chunk #" + chunkID); chunkTilesPos[chunkID] = new List <Pair <uint, uint> > (); for (uint i = row - RICE_CHUNK_SEPARATION; i < row + RICE_CHUNK_H + RICE_CHUNK_SEPARATION; ++i) { for (uint j = col - RICE_CHUNK_SEPARATION; j < col + RICE_CHUNK_W + RICE_CHUNK_SEPARATION; ++j) { if (i < row || i >= row + RICE_CHUNK_H || j < col || j >= col + RICE_CHUNK_W) { if (worldTerrainType [i, j] != TileTerrainType.CANAL) { worldTerrainType [i, j] = TileTerrainType.SEPARATOR; } } else { chunkTilesPos[chunkID].Add(new Pair <uint, uint>(i, j)); worldTerrainType [i, j] = TileTerrainType.RICE_TERRAIN; riceTerrains [i, j] = new RiceTerrainTile(i, j, flooded); riceTerrains [i, j].setChunkNumber(chunkID); riceTerrains[i, j].setLocalID(chunkTilesPos[chunkID].Count - 1); Vegetation veg = getTileVegetation(i, j); if (veg != null) { veg.delete(); } if (canalManager.tileHasCanal(i, j)) { canalManager.deleteCanal(i, j); } } updateTileRepresentation(i, j); } } canalManager.addRiceChunk(chunkID, row, col, RICE_CHUNK_W, RICE_CHUNK_H); canalManager.updateCanals(); m_chunkChangedListener(); m_chunkAddedListener(chunkID); _weedFactory.addChunkID(chunkID); PenalizationManager.GetInstance().checkActionsTillCurrentPhase(); TypeFase phase = GameObject.FindGameObjectWithTag("Logic").GetComponent <PhaseManager> ().getCurrentPhase(); if (phase != TypeFase.PREWORK_I && phase != TypeFase.NONE) { disableChunk(chunkID); } }
public void unselectTile(uint i, uint j) { TileTerrainType tileType = getTypeTerrainOfTile(i, j); if (tileType == TileTerrainType.RICE_TERRAIN) { RiceTerrainTile tile = getRiceTerrain(i, j); unselectChunk(tile.getChunkNumber()); //tile.unselect (); } else if (tileType == TileTerrainType.BUILDING) { BuildingsManager.GetInstance().unselectBuildingAt(i, j); } }
// +++ ACTIONS +++ private void createActionPanel() { if (_actionPanel != null) { Destroy(_actionPanel); } WorldTerrain terrain = WorldTerrain.GetInstance(); TileTerrainType typeOfTileSelected = terrain.getTypeTerrainOfTile(_tileSelectedPosition[0], _tileSelectedPosition[1]); if (typeOfTileSelected == TileTerrainType.BUILDING && BuildingsManager.GetInstance().getTypeOfBuildingInPosition(_tileSelectedPosition[0], _tileSelectedPosition[1]) == BUILDINGS.PLANTER) { _tutMan.eventDone(TutorialManager.EVENTS.PLANTELL_ACTIONS_OPENED); } if (typeOfTileSelected == TileTerrainType.RICE_TERRAIN) { RiceTerrainTile riceTerrain = terrain.getRiceTerrain(_tileSelectedPosition [0], _tileSelectedPosition [1]); //int chunk = terrain.getRiceTerrain(_tileSelectedPosition[0], _tileSelectedPosition[1]).getChunkNumber(); //if (!PenalizationManager.GetInstance().isChunkDisabled(chunk)) { if (!riceTerrain.isDisabled()) { GameObject actionPanelTemplate = Resources.Load("Prefabs/ActionPanelLostFocusLayer") as GameObject; _actionPanel = Instantiate(actionPanelTemplate); _actionPanel.SendMessage("setRiceTerrain", riceTerrain); _tutMan.eventDone(TutorialManager.EVENTS.RICE_CHUNK_ACTIONS_OPENED); } else { GameObject disabledPanel = Resources.Load("Prefabs/DisabledChunkPanelLostFocusLayer") as GameObject; Instantiate(disabledPanel); return; } } else if (typeOfTileSelected == TileTerrainType.BUILDING) { GameObject actionPanelTemplate = Resources.Load("Prefabs/ActionBuildingPanelLostFocusLayer") as GameObject; // OR Planta _actionPanel = Instantiate(actionPanelTemplate); BUILDINGS b = BuildingsManager.GetInstance().getTypeOfBuildingInPosition(_tileSelectedPosition[0], _tileSelectedPosition[1]); _actionPanel.BroadcastMessage("setActionsForBuilding", b); } }
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(); }