示例#1
0
    internal void SpawnPrepareUnit(TileUnitData tileUnitData)
    {
        GameTile validTile = board.GetPrepareTile();

        if (validTile != null)
        {
            SpawnMonster(validTile, 0, tileUnitData);
        }
    }
示例#2
0
    public ActionUnit SpawnMonster(GameTile tile, int group, TileUnitData typeUnit)
    {
        ActionUnit monster = actionUnitFactory.Get();

        monster.tileUnitData = typeUnit;
        monster.SpawnOn(tile);
        monster.UnitID = ++ActionUnit.TotalUnit;
        monster.Group  = group;
        monster.SpawnCharacter();
        monster.transform.localRotation = Quaternion.Euler(0, group == 1 ? 180f : 0, 0);
        ActionUnitManger.Add(monster);
        if (!tile.PrepareTile)
        {
            FormationManager.Instance.ApplyFormation();
        }
        return(monster);
    }
示例#3
0
    private void SpawnEnemyMirror(Round r)
    {
        GameTile          spawnTile      = null;
        int               group          = 1;
        List <ActionUnit> units          = ActionUnitManger.Instance.GetAll().Where(x => !x.TilePos.PrepareTile).ToList();
        int               maxLevel       = -1;
        int               existsMaxLevel = 1;

        maxLevel = 1 + (Game.Instance.RoundManager.Round.Level <= 10 ? 0 : +Mathf.CeilToInt((Game.Instance.RoundManager.Round.Level - 10f) / 10f));
        TileUnitData dataSpawn  = null;
        int          spawnCount = Game.Instance.Profile.GameModeCtrl.GetMaxSpawn();

        foreach (ActionUnit unit in units)
        {
            spawnTile = Game.Instance.board.GetRandomEmptyTileGroup(group);
            if (spawnTile != null)
            {
                dataSpawn = unit.tileUnitData;
                int level = ((ActionUnitData)unit.tileUnitData).Level;
                if (maxLevel != -1 &&
                    level > maxLevel)
                {
                    existsMaxLevel = units.Select(x => x.tileUnitData).Where(x => ((ActionUnitData)x).Level <= maxLevel).OrderByDescending(x => ((ActionUnitData)x).Level).Select(x => ((ActionUnitData)x).Level).FirstOrDefault();
                    dataSpawn      = Game.Instance.RandomFromList(units.Select(x => x.tileUnitData).Cast <ActionUnitData>().ToList(), existsMaxLevel);
                }
                Game.Instance.SpawnMonster(spawnTile, group, dataSpawn);
                spawnCount--;
            }
        }
        if (spawnCount > 0)
        {
            for (int i = spawnCount; i > 0; i--)
            {
                spawnTile = Game.Instance.board.GetRandomEmptyTileGroup(group);
                if (spawnTile != null)
                {
                    dataSpawn = Game.Instance.RandomFromList(units.Select(x => x.tileUnitData).Cast <ActionUnitData>().ToList());
                    Game.Instance.SpawnMonster(spawnTile, group, dataSpawn);
                }
            }
        }
        MainMenuControl.Instance.ScanAndShow(true);
    }
示例#4
0
 private void UpdatePickupUnit()
 {
     if (PickupUnit != null &&
         (InputUtils.LeftMousePress() ||
          (InputUtils.Mouse1Press() && !InputUtils.LeftShiftPress())
         )
         )
     {
         PickupUnit = null;
         if (PickupModel != null)
         {
             Destroy(PickupModel);
         }
     }
     if (PickupUnit != null)
     {
         ShowUnitPickup();
     }
 }