예제 #1
0
        private void CombineMove(KimbokoCombine combien, MoveAbilityEventInfo movInfo)
        {
            IMoveCommand moveCommand = new IMoveCommand(movInfo, game);

            Invoker.AddNewCommand(moveCommand);
            Invoker.ExecuteCommands();

            Vector3 startPosition = movInfo.fromTile.GetRealWorldLocation();
            Vector3 endPosition   = movInfo.endPosition.GetRealWorldLocation();

            GameObject[] goToMove = new GameObject[combien.kimbokos.Count];

            for (int i = 0; i < goToMove.Length; i++)
            {
                goToMove[i] = combien.kimbokos[i].goAnimContainer.GetGameObject();
            }

            //Motion combineMoveMotion = moveManagerUI.CombineMoveMotion(startPosition, endPosition, goToMove);
            //InvokerMotion.AddNewMotion(combineMoveMotion);
            //InvokerMotion.StartExecution(game);

            Animotion combineMoveMotion = moveManagerUI.CombineMoveAnimotion(startPosition, endPosition, goToMove);

            InvokerAnimotion.AddNewMotion(combineMoveMotion);
            InvokerAnimotion.StartExecution(game);
        }
예제 #2
0
        private void Move(MoveAbilityEventInfo movInfo)
        {
            Kimboko kimb = (Kimboko)movInfo.moveOccupy;

            if (kimb != null && kimb.UnitType == UNITTYPE.COMBINE)
            {
                KimbokoCombine combien = (KimbokoCombine)kimb;
                if (combien != null)
                {
                    CombineMove(combien, movInfo);
                    return;
                }
            }
            NormalMove(movInfo);
        }
        public void ExecuteNormalCombine(CombineAbility combineAbility, CombineAbilityEventInfo cmbInfo)
        {
            combineAbility.SetRequireGameData(cmbInfo);
            StartPerform(combineAbility);
            if (combineAbility.CanIExecute() == false)
            {
                if (debugOn)
                {
                    Debug.Log("COMBINE ABILITY NO SE PUEDE EJECUTAR");
                }
                return;
            }

            ICombineCommand combineCommand = new ICombineCommand(cmbInfo, game);

            Invoker.AddNewCommand(combineCommand);
            Invoker.ExecuteCommands();

            Vector3 spawnPosition = game.board2DManager.GetUnitPosition(cmbInfo.combiner).GetRealWorldLocation();

            List <GameObject> combinersGO = new List <GameObject>();

            if (cmbInfo.combiner.UnitType == UNITTYPE.COMBINE)
            {
                KimbokoCombine kimbComb = (KimbokoCombine)cmbInfo.combiner;
                for (int i = 0; i < kimbComb.kimbokos.Count; i++)
                {
                    combinersGO.Add(kimbComb.kimbokos[i].goAnimContainer.GetGameObject());
                }
            }
            else
            {
                combinersGO.Add(cmbInfo.combiner.goAnimContainer.GetGameObject());
            }

            //Motion combineMoveMotion = combineManagerUI.NormalCombineMotion(spawnPosition, cmbInfo.kimbokoToCombine.goAnimContainer.GetGameObject(), combinersGO, game);
            //InvokerMotion.AddNewMotion(combineMoveMotion);
            //InvokerMotion.StartExecution(combineManagerUI);

            Animotion combineMoveMotion = combineManagerUI.NormalCombineAnimotion(spawnPosition, cmbInfo.kimbokoToCombine.goAnimContainer.GetGameObject(), combinersGO, game);

            InvokerAnimotion.AddNewMotion(combineMoveMotion);
            InvokerAnimotion.StartExecution(combineManagerUI);

            Perform(combineAbility);
            EndPerform(combineAbility);
        }
        public static List <Kimboko> GetCombineKimbokoOrder(List <Kimboko> combineKimbokos)
        {
            // CON ESTA FUNCION, ORDENAMOS A LOS KIMBOKOS SEGUN SU RANGO DE UNIDAD Y SU VIDA
            List <Kimboko> characterX = new List <Kimboko>();
            List <Kimboko> characterY = new List <Kimboko>();
            List <Kimboko> characterZ = new List <Kimboko>();

            for (int i = 0; i < combineKimbokos.Count; i++)
            {
                switch (combineKimbokos[i].UnitType)
                {
                case UNITTYPE.X:
                    characterX.Add(combineKimbokos[i]);
                    break;

                case UNITTYPE.Y:
                    characterY.Add(combineKimbokos[i]);
                    break;

                case UNITTYPE.Z:
                    characterZ.Add(combineKimbokos[i]);
                    break;

                case UNITTYPE.COMBINE:
                    KimbokoCombine combAux = (KimbokoCombine)combineKimbokos[i];
                    if (combAux != null)
                    {
                        for (int x = 0; x < combAux.kimbokos.Count; x++)
                        {
                            switch (combAux.kimbokos[x].UnitType)
                            {
                            case UNITTYPE.X:
                                characterX.Add(combAux.kimbokos[x]);
                                break;

                            case UNITTYPE.Y:
                                characterY.Add(combAux.kimbokos[x]);
                                break;

                            case UNITTYPE.Z:
                                characterZ.Add(combAux.kimbokos[x]);
                                break;
                            }
                        }
                    }
                    break;

                default:
                    break;
                }
            }
            List <Kimboko> finalList = new List <Kimboko>();

            characterZ.OrderBy(o => o.Stats[STATTYPE.HEALTH].ActualStatValue);
            finalList.AddRange(characterZ);
            characterY.OrderBy(o => o.Stats[STATTYPE.HEALTH].ActualStatValue);
            finalList.AddRange(characterY);
            characterX.OrderBy(o => o.Stats[STATTYPE.HEALTH].ActualStatValue);
            finalList.AddRange(characterX);
            return(finalList);
        }
예제 #5
0
        private void ExecuteSpawnCombine(Kimboko actualCombiner, SpawnAbility spawnAbility, SpawnAbilityEventInfo spwInf)
        {
            CombineAbility combineAbility = (CombineAbility)actualCombiner.Abilities[ABILITYTYPE.COMBINE];

            if (combineAbility == null)
            {
                if (debugOn)
                {
                    Debug.Log("ERROR HABILIDAD COMBINE NULL");
                }
                return;
            }
            Kimboko spawnedKimboko = GetNewKimboko(spwInf);

            CombineAbilityEventInfo cmbInfo = new CombineAbilityEventInfo(actualCombiner, spawnedKimboko, spwInf.spawnerPlayer, spwInf.spawnIndexID);

            spawnAbility.SetRequireGameData(spwInf);
            combineAbility.SetRequireGameData(cmbInfo);

            StartPerform(spawnAbility);
            if (spawnAbility.CanIExecute() == false)
            {
                if (debugOn)
                {
                    Debug.Log("SPAWN ABILITY NO SE PUEDE EJECUTAR");
                }
                return;
            }

            game.combineManager.StartPerform(combineAbility);
            // NO VOY A GENERAR ESTE CHEQUEO, YA QUE EL SPAWN GENERA AUTOMATICAMENTE LA COMBINACION
            //if (combineAbility.CanIExecute() == false)
            //{
            //    if (debugOn) Debug.Log("COMBINE ABILITY NO SE PUEDE EJECUTAR");
            //    return;
            //}

            // C - CombineSpawn(Kimboko actualCombiner, SpawnAbilityEventInfo spwInf)
            GameObject goKimboko = spawnManagerUI.GetKimbokoPrefab();

            spawnedKimboko.SetGoAnimContainer(new GameObjectAnimatorContainer(goKimboko, goKimboko.GetComponent <Animator>()));
            ISpawnCombineCommand spawnCombineCmd = new ISpawnCombineCommand(spawnedKimboko, spwInf, actualCombiner, game);

            Invoker.AddNewCommand(spawnCombineCmd);
            Invoker.ExecuteCommands();
            Vector3           spawnPosition = spwInf.spawnTile.GetRealWorldLocation();
            List <GameObject> combinersGO   = new List <GameObject>();

            if (actualCombiner.UnitType == UNITTYPE.COMBINE)
            {
                KimbokoCombine kimbComb = (KimbokoCombine)actualCombiner;
                for (int i = 0; i < kimbComb.kimbokos.Count; i++)
                {
                    combinersGO.Add(kimbComb.kimbokos[i].goAnimContainer.GetGameObject());
                }
            }
            else
            {
                combinersGO.Add(actualCombiner.goAnimContainer.GetGameObject());
            }

            //Motion combineSpawnMotion = spawnManagerUI.CombineSpawn(spawnPosition, goKimboko, combinersGO, game);
            //InvokerMotion.AddNewMotion(combineSpawnMotion);
            //InvokerMotion.StartExecution(spawnManagerUI);


            Animotion combineSpawnMotion = spawnManagerUI.CombineSpawnAnimotion(spawnPosition, goKimboko, combinersGO, game);

            InvokerAnimotion.AddNewMotion(combineSpawnMotion);
            InvokerAnimotion.StartExecution(spawnManagerUI);

            // D - Perform(spawnAbility);
            //     Perform(combineAbility);
            Perform(spawnAbility);
            game.combineManager.Perform(combineAbility);
            // E - EndPerform(spawnAbility);
            //     EndPerform(combineAbility);
            EndPerform(spawnAbility);
            game.combineManager.EndPerform(combineAbility);
            // F - spawnIndexID++;
            spawnIndexID++;
        }