public UpgradeSystem(IGameContext context, MonsterFactory monsterFactory, Grid grid) : base(context)
 {
     _context = context;
     _grid    = grid;
     upgrade  = new Dictionary <CreatureType, Action <Vector3Int> >()
     {
         // white
         { CreatureType.Statue, monsterFactory.CreateHuman },
         { CreatureType.Human, (pos) =>
           {
               if (UnityEngine.Random.Range(0, 2) < 0.5)
               {
                   monsterFactory.CreateWarrior(pos);
               }
               else
               {
                   monsterFactory.CreateWorker(pos);
               }
           } },
         { CreatureType.Worker, monsterFactory.CreatePrist },
         { CreatureType.Warrior, monsterFactory.CreateHealer },
         // black
         { CreatureType.BlackStatue, monsterFactory.CreateSkeleton },
         { CreatureType.Skeleton, (pos) =>
           {
               if (UnityEngine.Random.Range(0, 2) < 0.5)
               {
                   monsterFactory.CreateBlackWorker(pos);
               }
               else
               {
                   monsterFactory.CreateZombie(pos);
               }
           } },
         { CreatureType.BlackWorker, monsterFactory.CreateLich },
     };
 }