public void Configure(NpcStrategy strategyToAssign) { strategyName = Enum.GetName(typeof(NpcStrategy), strategyToAssign); switch (strategyToAssign) { case NpcStrategy.Cowboy: body.GetComponent <SpriteRenderer>().color = colors[2]; sight.GetComponent <SpriteRenderer>().color = colors[2]; typeSign.GetComponent <SpriteRenderer>().sprite = cowboySprite; this.strategy = new CowboyBehavior(mover, handController, health, npcSensorSight, npcSensorSound); break; case NpcStrategy.Careful: body.GetComponent <SpriteRenderer>().color = colors[0]; sight.GetComponent <SpriteRenderer>().color = colors[0]; typeSign.GetComponent <SpriteRenderer>().sprite = carefulSprite; this.strategy = new CarefulBehavior(mover, handController, health, npcSensorSight, npcSensorSound); break; case NpcStrategy.Camper: body.GetComponent <SpriteRenderer>().color = colors[1]; sight.GetComponent <SpriteRenderer>().color = colors[1]; typeSign.GetComponent <SpriteRenderer>().sprite = camperSprite; this.strategy = new CamperBehavior(mover, handController, health, npcSensorSight, npcSensorSound); break; case NpcStrategy.Normal: body.GetComponent <SpriteRenderer>().color = colors[3]; sight.GetComponent <SpriteRenderer>().color = colors[3]; typeSign.GetComponent <SpriteRenderer>().sprite = normalSprite; this.strategy = new NormalBehavior(mover, handController, health, npcSensorSight, npcSensorSound); break; case NpcStrategy.Op: body.GetComponent <SpriteRenderer>().color = colors[4]; sight.GetComponent <SpriteRenderer>().color = colors[4]; typeSign.GetComponent <SpriteRenderer>().sprite = normalSprite; this.strategy = new OpStrategy(mover, handController, health, npcSensorSight, npcSensorSound); break; default: throw new ArgumentOutOfRangeException(nameof(strategyToAssign), strategyToAssign, null); } }
private void SpawnNpc(Vector3 position, NpcStrategy strategy) { Instantiate(npcPrefab, position, Quaternion.identity) .GetComponentInChildren <NpcController>() .Configure(strategy); }