public Transform AllocateTarget(TroopActor ta) { foreach (FormationPosition fp in formationPositions) { if (fp.assignedUnit.rankState == RankState.dead) { fp.taken = false; } if (!fp.taken) { fp.assignedUnit = ta; fp.taken = true; return(fp.fromPos); } } FormationPosition newFP = new FormationPosition(); { GameObject newFormPos = new GameObject("dad"); GameObject trackedFormPos = Instantiate(moveTargetPrefab, NextFormPos() + positionOffset, transform.rotation); Destroy(newFormPos); trackedFormPos.name = "Formation Position " + formationPositions.Count + 1; if (!moveTarget) { CreateMoveTarget(); } trackedFormPos.transform.parent = moveTarget.transform; newFP.fromPos = trackedFormPos.transform; newFP.taken = true; newFP.assignedUnit = ta; formationPositions.Add(newFP); return(newFP.fromPos); } }
//死亡下阵 public void CheckDeadHeroAtFormation() { LuaTable formationModelLua = (LuaTable)LuaScriptMgr.Instance.CallLuaFunction("gamemanager.GetModel", "formation_model")[0]; LuaTable formationTeamInfoLua = (LuaTable)formationModelLua.GetLuaFunction("GetFormationTeam").Call((int)FormationTeamType.expeditionTeam)[0]; List <FormationPosition> posList = FormationsDictionary.GetKeys(); int count = posList.Count; bool hasDead = false; for (int i = 0; i < count; i++) { FormationPosition key = posList[i]; ExpeditionHeroInfo info = GetExpeditionHeroInfo(FormationsDictionary[key]); if (info.hpRate <= 0) { hasDead = true; FormationsDictionary.Remove(key); formationTeamInfoLua.GetLuaFunction("RemoveHeroByFormationPosition").Call(formationTeamInfoLua, (int)key); } } if (hasDead) { ExpeditionController.instance.CLIENT2LOBBY_Expedition_Formation_Change_REQ(); } }
public void AddHeroToFormaiton(FormationPosition formationPosition, uint heroInstanceID) { FormationPosition oldFormationPosition = GetHeroFormationPosition(heroInstanceID); //新英雄旧位置 teamPosDictionary.Remove(oldFormationPosition); if (!IsPositionEmpty(formationPosition)) //新位置有英雄 { uint newPositionOldCharacterInstanceID = teamPosDictionary.GetValue(formationPosition); if (oldFormationPosition != FormationPosition.Invalid_Position) //新英雄已在队伍中 { teamPosDictionary[oldFormationPosition] = newPositionOldCharacterInstanceID; teamPosDictionary[formationPosition] = heroInstanceID; } else { teamPosDictionary[formationPosition] = heroInstanceID; } } else if (teamPosDictionary.Count < 5) { teamPosDictionary.Add(formationPosition, heroInstanceID); } FormationTeamInfoLuaTable.GetLuaFunction("AddHeroToFormaiton").Call(FormationTeamInfoLuaTable, (int)formationPosition, (int)heroInstanceID); }
public uint GetCharacterInstanceIDAt(FormationPosition formationPosition) { uint characterInstanceID = 0; CurrentFormationDictionary.TryGetValue(formationPosition, out characterInstanceID); return(characterInstanceID); }
public bool IsPositionEmpty(FormationPosition formationPosition) { // bool isPositionEmpty = true; // isPositionEmpty = !FormationsDictionary.ContainsKey(formationPosition); // return isPositionEmpty; return(FormationTeamInfo.IsPositionEmpty(formationPosition)); }
private void RegenerateInTeamHeroModels() { DespawnCharacter(); for (int i = 0; i < 9; i++) { FormationPosition formationPosition = (FormationPosition)(i + 1); uint roleID = ManageHeroesProxy.instance.GetCharacterInstanceIDAt(formationPosition); //uint cachedRoleID = 0; //_cachedFormationDic.TryGetValue(formationPosition, out cachedRoleID); //if (roleID != cachedRoleID) //{ TransformUtil.ClearChildren(roleModelRoots[i], true); if (!ManageHeroesProxy.instance.IsPositionEmpty(formationPosition)) { if (GameProxy.instance.IsPlayer(roleID)) { PlayerInfo playerInfo = GameProxy.instance.PlayerInfo; CharacterEntity characterEntity = CharacterEntity.CreatePlayerEntityAsUIElement(playerInfo, roleModelRoots[i], false, false); _characters.Add(characterEntity); } else { HeroInfo heroInfo = HeroProxy.instance.GetHeroInfo(roleID); HeroEntity heroEntity = CharacterEntity.CreateHeroEntityAsUIElement(heroInfo, roleModelRoots[i], false, false); _characters.Add(heroEntity); } } _cachedFormationDic.AddOrReplace(formationPosition, roleID); //} formationBaseImages[i].SetSprite(roleID > 0 || ManageHeroesProxy.instance.CurrentFormationTeamInfo.formationInfo.formationData.GetPosEnalbe(formationPosition) ? _formationOccupiedSprite : _formationNormalSprite); roleShadows[i].gameObject.SetActive(roleID > 0); } }
public override void MoveTo(Vector2 destinationIndex) { if (m_geSquadLeader == null) { return; } /* * for (int i = 0; i < m_lstSquad.Count; i++) * { * if (m_fCurrFormation == null) * break; * // The first position in the formation must always be the leader. * m_lstSquad[i].MoveTo(m_fCurrFormation.GetFormationPosition(i + 1).GetPositionIndex()); * }*/ m_geSquadLeader.MoveTo(Map.MapHandler.GetInstance().GetTilePosition(destinationIndex)); Vector2 leaderIndex = destinationIndex; for (int i = 0; i < m_fCurrFormation.GetFormationSize() - 1 && i < m_lstSquad.Count; i++) { FormationPosition formation = m_fCurrFormation.GetFormationPosition(i + 1); Vector2 minionPos = Vector2.Add(leaderIndex, formation.GetPositionIndex()); m_lstSquad[i].MoveTo(minionPos); //m_lstSquad[i].SetPosition(Map.MapHandler.GetInstance().GetTilePosition(minionPos)); } }
private void RegenerateInTeamHeroModels() { DespawnCharacter(); for (int i = 0; i < 9; i++) { TransformUtil.ClearChildren(roleModelRoots[i], true); FormationPosition formationPosition = (FormationPosition)(i + 1); if (!ExpeditionFormationProxy.instance.IsPositionEmpty(formationPosition)) { uint roleID = ExpeditionFormationProxy.instance.GetCharacterInstanceIDAt(formationPosition); if (GameProxy.instance.IsPlayer(roleID)) { PlayerInfo playerInfo = GameProxy.instance.PlayerInfo; PlayerEntity playerEntity = CharacterEntity.CreatePlayerEntityAsUIElement(playerInfo, roleModelRoots[i], false, false); _characters.Add(playerEntity); } else { HeroInfo heroInfo = HeroProxy.instance.GetHeroInfo(roleID); HeroEntity heroEntity = CharacterEntity.CreateHeroEntityAsUIElement(heroInfo, roleModelRoots[i], false, false); _characters.Add(heroEntity); } roleShadows[i].gameObject.SetActive(true); formationBaseButtons[i].GetComponent <Image>().SetSprite(_formationOccupiedSprite); } else { roleShadows[i].gameObject.SetActive(false); formationBaseButtons[i].GetComponent <Image>().SetSprite(ExpeditionFormationProxy.instance.FormationTeamInfo.formationInfo.formationData.GetPosEnalbe(formationPosition) ? _formationOccupiedSprite : _formationNormalSprite); } } }
public void AddHeroToFormaiton(FormationPosition formationPosition, uint heroInstanceID) { CurrentFormationTeamInfo.AddHeroToFormaiton(formationPosition, heroInstanceID); if (onFormationUpdateHandler != null) { onFormationUpdateHandler(); } }
public static FormationPositionViewModel Get(FormationPosition formationPosition) { return(new FormationPositionViewModel { PlayerPosition = formationPosition.PlayerPosition.ToString(), FormationPositionType = formationPosition.FormationPositionType.ToString(), PlayerId = formationPosition.PlayerId }); }
public bool RemoveHeroFromFormationAt(FormationPosition formationPosition) { bool result = CurrentFormationTeamInfo.RemoveHeroFromFormation(formationPosition); if (onFormationUpdateHandler != null) { onFormationUpdateHandler(); } return(result); }
public HeroInfo GetHeroAt(FormationPosition formationPosition) { // uint heroInstanceID = uint.MinValue; // HeroInfo heroInfo = null; // if (FormationsDictionary.ContainsKey(formationPosition)) // { // heroInstanceID = FormationsDictionary.GetValue(formationPosition); // heroInfo = HeroProxy.instance.GetHeroInfo(heroInstanceID); // } // return heroInfo; return(FormationTeamInfo.GetHeroAt(formationPosition)); }
private void ShowFormationPositionIndicators() { int formationPositionIndicatorCount = formationPositionIndicators.Count; for (int i = 0; i < formationPositionIndicatorCount; i++) { FormationPosition formationPosition = (FormationPosition)(i + 1); bool isPositionEmpty = ManageHeroesProxy.instance.CanAddToFormationPosition(formationPosition, _selectedRoleInfo.instanceID); formationPositionIndicators[i].SetActive(isPositionEmpty); formationPositionIndicators[i].transform.SetAsLastSibling(); } }
public bool RemoveHeroFromFormation(FormationPosition formationPosition) { bool result = false; if (IsPositionEmpty(formationPosition)) { return(result); } result = teamPosDictionary.Remove(formationPosition); FormationTeamInfoLuaTable.GetLuaFunction("RemoveHeroByFormationPosition").Call(FormationTeamInfoLuaTable, (int)formationPosition); return(result); }
public HeroInfo GetHeroAt(FormationPosition formationPosition) { uint heroInstanceID = uint.MinValue; HeroInfo heroInfo = null; if (teamPosDictionary.ContainsKey(formationPosition)) { heroInstanceID = teamPosDictionary.GetValue(formationPosition); heroInfo = HeroProxy.instance.GetHeroInfo(heroInstanceID); } return(heroInfo); }
public override void SetFormation(Formation form) { m_fCurrFormation = form; Vector2 leaderIndex = Map.MapHandler.GetInstance().GetTileIndex(m_geSquadLeader.GetWorldPosition()); for (int i = 0; i < m_fCurrFormation.GetFormationSize() - 1 && i < m_lstSquad.Count; i++) { FormationPosition formation = m_fCurrFormation.GetFormationPosition(i + 1); Vector2 minionPos = Vector2.Add(leaderIndex, formation.GetPositionIndex()); //m_lstSquad[i].MoveTo(minionPos); m_lstSquad[i].SetPosition(Map.MapHandler.GetInstance().GetTilePosition(minionPos)); } }
public bool RemoveHeroFromFormationAt(FormationPosition formationPosition) { // bool result = false; // if (IsPositionEmpty(formationPosition)) // { // return result; // } // List<uint> tempList = FormationsDictionary.GetValues(); // result = FormationsDictionary.Remove(formationPosition); // List<uint> tempList2 = FormationsDictionary.GetValues(); // return result; return(FormationTeamInfo.RemoveHeroFromFormation(formationPosition)); }
public bool AssignFormationPosition() { for (int i = 0; i < formationSlots.Length; ++i) { if (!formationSlots[i].Assigned) { formationSlot = formationSlots[i].AssignObject(gameObject); if (formationSlot != null) { return true; } } } return false; }
public bool AssignFormationPosition() { for (int i = 0; i < formationSlots.Length; ++i) { if (!formationSlots[i].Assigned) { formationSlot = formationSlots[i].AssignObject(gameObject); if (formationSlot != null) { return(true); } } } return(false); }
public void AddHeroToFormaiton(FormationPosition formationPosition, uint heroInstanceID) { // FormationPosition oldFormationPosition = GetHeroCurrentFormationPosition(heroInstanceID); // // if (GameProxy.instance.IsPlayer(heroInstanceID)) // { // FormationsDictionary.Remove(oldFormationPosition); // } // else // { // RemoveHeroFromFormation(heroInstanceID); // } // // if (!IsPositionEmpty(formationPosition)) // { // uint newPositionOldCharacterInstanceID = GetCharacterInstanceIDAt(formationPosition); // if (oldFormationPosition != FormationPosition.Invalid_Position) // { // if (GameProxy.instance.IsPlayer(newPositionOldCharacterInstanceID)) // { // FormationsDictionary.Remove(formationPosition); // } // else // { // RemoveHeroFromFormationAt(formationPosition); // } // FormationsDictionary.Add(oldFormationPosition, newPositionOldCharacterInstanceID); // FormationsDictionary.Add(formationPosition, heroInstanceID); // } // else // { // if (!GameProxy.instance.IsPlayer(newPositionOldCharacterInstanceID)) // { // RemoveHeroFromFormationAt(formationPosition); // FormationsDictionary.Add(formationPosition, heroInstanceID); // } // } // } // else // { // if (FormationsDictionary.Count < 5) // { // FormationsDictionary.Add(formationPosition, heroInstanceID); // } // } FormationTeamInfo.AddHeroToFormaiton(formationPosition, heroInstanceID); }
private void SelectRole(RoleInfo roleInfo) { _selectedRoleInfo = roleInfo; if (_selectedRoleInfo != null) { ShowFormationPositionIndicators(); if (ManageHeroesProxy.instance.IsHeroInFormation(roleInfo.instanceID)) { FormationPosition formationPosition = ManageHeroesProxy.instance.GetHeroCurrentFormationPosition(roleInfo.instanceID); Vector3 formationBaseButtonPosition = formationBaseButtons[(int)formationPosition - 1].transform.position; bool isPlayer = GameProxy.instance.IsPlayer(roleInfo.instanceID); removeRoleButton.transform.position = new Vector3(formationBaseButtonPosition.x, formationBaseButtonPosition.y, removeRoleButton.transform.position.z); cantRemovePlayerTipsRoot.position = new Vector3(formationBaseButtonPosition.x, formationBaseButtonPosition.y, cantRemovePlayerTipsRoot.position.z); removeRoleButton.gameObject.SetActive(!isPlayer); cantRemovePlayerTipsRoot.gameObject.SetActive(isPlayer); UIUtil.CrossFadeAlpha(cantRemovePlayerTipsRoot.gameObject, 1, 0, 2.5f); Vector3 indicatorLocalPosition = selectedFormationPositionIndicatorImage.transform.parent.InverseTransformPoint(formationBaseButtons[(int)formationPosition - 1].transform.position); indicatorLocalPosition = new Vector3(indicatorLocalPosition.x, indicatorLocalPosition.y + 230, -800); selectedFormationPositionIndicatorImage.transform.localPosition = indicatorLocalPosition; selectedFormationPositionIndicatorImage.gameObject.SetActive(true); Vector3[] path = new Vector3[4]; path[0] = indicatorLocalPosition + new Vector3(0, 0, 0); path[1] = indicatorLocalPosition + new Vector3(0, 30, 0); path[2] = indicatorLocalPosition + new Vector3(0, 0, 0); path[3] = indicatorLocalPosition + new Vector3(0, 0, 0); LTDescr ltDescr = LeanTween.moveLocal(selectedFormationPositionIndicatorImage.gameObject, path, 0.6f); ltDescr.setRepeat(-1); } else { removeRoleButton.gameObject.SetActive(false); cantRemovePlayerTipsRoot.gameObject.SetActive(false); selectedFormationPositionIndicatorImage.gameObject.SetActive(false); } } else { HideAllFormationPositionIndicators(); removeRoleButton.gameObject.SetActive(false); cantRemovePlayerTipsRoot.gameObject.SetActive(false); selectedFormationPositionIndicatorImage.gameObject.SetActive(false); } heroListScrollContent.RefreshAllContentItems(); }
public FormationPosition GetHeroFormationPosition(uint heroInstanceID) { FormationPosition formationPosition = FormationPosition.Invalid_Position; if (teamPosDictionary.ContainsValue(heroInstanceID)) { foreach (var value in teamPosDictionary) { if (value.Value == heroInstanceID) { formationPosition = value.Key; break; } } } return(formationPosition); }
public MovementFormationOrder(BaseUnit mainUnit, string formationPositionId, string formationId, PositionOffset positionOffset) : this() { UnitToFollow = mainUnit; if (!string.IsNullOrEmpty(formationId) && !string.IsNullOrEmpty(formationPositionId)) { try { GameData gameData = GameManager.Instance.GameData; Formation formation = gameData.GetFormationById(formationId); if (formation != null) { FormationPosition offset = formation.FormationPositions.Find(p => p.Id == formationPositionId); PositionOffset = offset.PositionOffset; } else { PositionOffset = positionOffset; } } catch (Exception ex) { GameManager.Instance.Log.LogError( "MovementFormationOrder instantiated with invalid data. " + ex.ToString()); if (positionOffset != null) { PositionOffset = positionOffset; } else { PositionOffset = new PositionOffset(); } } } else { if (positionOffset != null) { PositionOffset = positionOffset; } } GetActiveWaypoint(); }
public void ClickFormationBaseButtonHandler(Button formationBaseButton) { int formationSlotIndex = formationBaseButtons.IndexOf(formationBaseButton); FormationPosition formationPosition = (FormationPosition)(formationSlotIndex + 1); bool isPositionEmpty = ExpeditionFormationProxy.instance.IsPositionEmpty(formationPosition); uint roleInstanceID = ExpeditionFormationProxy.instance.GetCharacterInstanceIDAt(formationPosition); RoleInfo roleInfo = null; if (GameProxy.instance.IsPlayer(roleInstanceID)) { roleInfo = GameProxy.instance.PlayerInfo; } else { roleInfo = HeroProxy.instance.GetHeroInfo(roleInstanceID); } if (_selectedRoleInfo != null) { if (!isPositionEmpty && _selectedRoleInfo.instanceID == roleInstanceID) { SelectRole(null); } else { if (ExpeditionFormationProxy.instance.CanAddToFormationPosition(formationPosition, _selectedRoleInfo.instanceID)) { ExpeditionFormationProxy.instance.AddHeroToFormaiton(formationPosition, _selectedRoleInfo.instanceID); ExpeditionController.instance.CLIENT2LOBBY_Expedition_Formation_Change_REQ(); Refresh(); } } } else { if (!isPositionEmpty) { SelectRole(roleInfo); } } Debugger.Log(formationBaseButton.name); }
public bool RemoveHeroFromFormationAt(FormationPosition formationPosition) { // bool result = false; // if (IsPositionEmpty(formationPosition)) // { // return result; // } // // if (!GameProxy.instance.IsPlayer(GetCharacterInstanceIDAt(formationPosition))) // { // result = FormationsDictionary.Remove(formationPosition); // } // // return result; if (!GameProxy.instance.IsPlayer(GetCharacterInstanceIDAt(formationPosition))) { return(FormationTeamInfo.RemoveHeroFromFormation(formationPosition)); } return(false); }
private void SelectRole(RoleInfo roleInfo) { _selectedRoleInfo = roleInfo; if (_selectedRoleInfo != null) { ShowFormationPositionIndicators(); if (PvpFormationProxy.instance.IsHeroInFormation(roleInfo.instanceID)) { FormationPosition formationPosition = PvpFormationProxy.instance.GetHeroCurrentFormationPosition(roleInfo.instanceID); Vector3 formationBaseButtonPosition = formationBaseButtons[(int)formationPosition - 1].transform.position; removeRoleButton.transform.position = new Vector3(formationBaseButtonPosition.x, formationBaseButtonPosition.y, removeRoleButton.transform.position.z); removeRoleButton.gameObject.SetActive(_selectedRoleInfo.instanceID != GameProxy.instance.PlayerInfo.instanceID); Vector3 indicatorLocalPosition = selectedFormationPositionIndicatorImage.transform.parent.InverseTransformPoint(formationBaseButtons[(int)formationPosition - 1].transform.position); indicatorLocalPosition = new Vector3(indicatorLocalPosition.x, indicatorLocalPosition.y + 230, -800); selectedFormationPositionIndicatorImage.transform.localPosition = indicatorLocalPosition; selectedFormationPositionIndicatorImage.gameObject.SetActive(true); Vector3[] path = new Vector3[4]; path[0] = indicatorLocalPosition + new Vector3(0, 0, 0); path[1] = indicatorLocalPosition + new Vector3(0, 30, 0); path[2] = indicatorLocalPosition + new Vector3(0, 0, 0); path[3] = indicatorLocalPosition + new Vector3(0, 0, 0); LTDescr ltDescr = LeanTween.moveLocal(selectedFormationPositionIndicatorImage.gameObject, path, 0.6f); ltDescr.setRepeat(-1); } else { removeRoleButton.gameObject.SetActive(false); selectedFormationPositionIndicatorImage.gameObject.SetActive(false); } } else { HideAllFormationPositionIndicators(); removeRoleButton.gameObject.SetActive(false); selectedFormationPositionIndicatorImage.gameObject.SetActive(false); _selectedCommonHeroIcon = null; } scrollContent.RefreshAllContentItems(); }
private static List <FormationPosition> GetFormationPositions(Formation formation) { var positions = FormationMapper.Items.First(i => i.Formation == formation).Positions; var formationPositions = new List <FormationPosition>(); for (var i = 0; i < positions.Count; i++) { var fposition = new FormationPosition { PlayerPosition = positions[i] }; fposition.FormationPositionType = i < 11 ? fposition.FormationPositionType = FormationPositionType.Start : fposition.FormationPositionType = FormationPositionType.Bench; formationPositions.Add(fposition); } return(formationPositions); }
private void MakeGeneralOnBattle(int slotIndex, FormationPosition formationPosition) { SlotGeneral slot = (SlotGeneral)playerBags[SlotType.SlotType_General][slotIndex]; slot.FormationPosition = formationPosition; slot.ExtraData = (int)formationPosition; }
private bool IsFormationPositionOccupied(FormationPosition formationPosition) { foreach (int i in playerBags[SlotType.SlotType_General].Keys) { if (playerBags[SlotType.SlotType_General][i].ExtraData != 0) return true; } return false; }
public bool GetPosEnalbe(FormationPosition position) { int index = (int)position - 1; return(GetPosEnable(index)); }
public void RemoveHeroFromFormationAt(FormationPosition formationPosition) { ManageHeroesProxy.instance.RemoveHeroFromFormationAt(formationPosition); }
public void AddHeroToFormaiton(FormationPosition formationPosition, uint heroInstanceID) { ManageHeroesProxy.instance.AddHeroToFormaiton(formationPosition, heroInstanceID); }
public bool CanAddToFormationPosition(FormationPosition formationPosition, uint addCharacterInstanceID) { return(CurrentFormationTeamInfo.CanAddToFormationPosition(formationPosition, addCharacterInstanceID)); }