public PlantRule(IDictionary <string, object> settings) { _settings = settings; AllowedTerrainTypes = _settings.GetOrDefault(k.allowedTerrainTypes, new int[0]).Select(t => (GroundType)t).OrderBy(t => t).ToArray(); var i = 0; GrowingStates = new Dictionary <byte, PlantPhase>(); while (settings.ContainsKey($"state_{i}")) { var states = (int[])settings[$"state_{i}"]; var actions = (int[])settings[$"action_{i}"]; var plantPhase = new PlantPhase { state = states.Select(s => (byte)s).ToArray(), action = actions.Select(a => (PlantType)a).ToArray() }; GrowingStates.Add((byte)i, plantPhase); i++; } CheckConsistency(); }
public void SetPhase(PlantPhase phase) { time = 0; if (currentPhaseObject != null) { Destroy(currentPhaseObject); } this.phase = phase; switch (phase) { case PlantPhase.fallingSeed: currentPhaseObject = Instantiate(prototypeSeed); currentPhaseObject.transform.parent = transform; currentPhaseObject.transform.localPosition = new Vector3(0, 0.1f, 0); health = 10; break; case PlantPhase.seed: currentPhaseObject = Instantiate(prototypeSeed); currentPhaseObject.transform.parent = transform; currentPhaseObject.transform.localPosition = new Vector3(0, 0.1f, 0); health += 10; break; case PlantPhase.sapling: currentPhaseObject = Instantiate(prototypeSapling); currentPhaseObject.transform.parent = transform; currentPhaseObject.transform.localPosition = new Vector3(0, 0.5f, 0); transform.position = new Vector3(transform.position.x, 0, transform.position.z); health += 20; break; case PlantPhase.yearling: currentPhaseObject = Instantiate(prototypeYearling); currentPhaseObject.transform.parent = transform; currentPhaseObject.transform.localPosition = new Vector3(0, 1f, 0); health += 30; break; case PlantPhase.tree: if (currentPhase != PlantPhase.tree) { health += 70; } currentPhaseObject = Instantiate(prototypeTree); currentPhaseObject.transform.parent = transform; currentPhaseObject.transform.localPosition = new Vector3(0, 1.5f, 0); SpawnWave(); break; default: return; } currentPhase = phase; }
// Use this for initialization void Start() { phase = PlantPhase.fallingSeed; currentPhase = PlantPhase.tree; }