public void OnSoilMessage(SoilMessage message) { if (message.id != soilId) return; SoilMessageLogic(message); }
private void SoilMessageLogic(SoilMessage message) { Unspawn(); if(message.soilObject != null) { SoilObject = (GenerationObject)Instantiate(message.soilObject, transform.position, Quaternion.identity); if(message.action == Action.INCREMENT_GENERATION && SoilObject.SetGenerationIndex(message.soilObject.generationIndex+message.numberOfGenerationIncrement)) { AddGo(SoilObject.gameObject); } else if(message.action == Action.SET && SoilObject.SetGenerationIndex(message.soilObject.generationIndex)) { message.soilObject.gameObject.transform.position = transform.position; AddGo(message.soilObject.gameObject); } } }
public void ChangeSoilObject(int soilId, GenerationObject seedObject) { GenerationObject parentSoil = seedObject; SoilMessage m = new SoilMessage(); m.id = soilId; m.soilObject = parentSoil; m.Broadcast(genList[MAX_GENERATIONS - 1].gameObject); for (int i = MAX_GENERATIONS - 2; i >= 0; --i) { m = new SoilMessage(); m.id = soilId; m.soilObject = parentSoil; m.action = Action.INCREMENT_GENERATION; m.numberOfGenerationIncrement = MAX_GENERATIONS - i - 1; m.Broadcast(genList[i].gameObject); } }
public void UnPlantSeed(int soilId) { for (int i = MAX_GENERATIONS - 1; i >= 0; --i) { SoilMessage m = new SoilMessage(); m.id = soilId; m.soilObject = null; m.Broadcast(genList[i].gameObject); } }
public void PushGeneration(Generation gen) { if(genList.Count == 0) { gen.genCamera.IsPlayableCamera = true; gen.IsPlayable = true; } else { SoilScript[] soils = genList[0].GetComponentsInChildren<SoilScript>(); foreach(SoilScript soil in soils) { SoilMessage m = new SoilMessage(); m.id = soil.soilId; m.soilObject = soil.SoilObject; m.action = Action.INCREMENT_GENERATION; m.Broadcast(gen.gameObject); } } if(genList.Count < MAX_GENERATIONS) { gen.genCamera.SkipTransition(); } genList.Insert(0, gen); if(genList.Count > MAX_GENERATIONS) { genList[genList.Count - 1].genCamera.FlaggedForDeath = true; IsTransitioning = true; } while (messages.Count != 0) { messages.Dequeue().Broadcast(gen.gameObject); } dirty = true; }