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);
            }
        }
Пример #2
0
 private void SpawnNpc(Vector3 position, NpcStrategy strategy)
 {
     Instantiate(npcPrefab, position, Quaternion.identity)
     .GetComponentInChildren <NpcController>()
     .Configure(strategy);
 }