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); }
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); }
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++; }