void OnCharacterRelease(bool is_forced) { //m_HeroActive.gameObject.SetActive(false); if (m_MainLayout.DragContainer != null) { //m_ToggleNormal.value = true; UICharacterContainer container = m_MainLayout.DragContainer; m_MainLayout.DragContainer = null; // if (m_MainLayout.IsDragOut == true) // { // Vector3 pos = CoreUtility.WorldPositionToUIPosition(UICamera.lastWorldPosition); // // if (IsRectContainsPoint(CoreUtility.WorldPositionToUIPosition(m_HeroDetailRange.transform.position), m_HeroDetailRange.size, pos) == true) // { // OnMainCharacter(container.Character.Creature as Creature, false); // return; // } // // DungeonHero hero = m_Heroes.Find(h => h.Creature.Idx == container.CharacterAsset.Asset.Creature.Idx); // if (hero != null && is_forced == false) // { // hero.OnBtnCreatureClick(); // return; // } // } m_MainLayout.Rebatch(); SaveTeamData(); } UpdateCharacterInfo(true); }
void UpdateCharacters() //更新角色的状态 和 动作 { if (m_NextUpdateCharacters == null || m_NextUpdateCharacters.Count == 0) { m_NextUpdateCharacters = m_MainLayout.m_Characters.Where(c => c.IsInit == true).OrderBy(c => MNS.Random.Instance.NextFloat()).ToList(); } if (m_NextUpdateCharacters == null || m_NextUpdateCharacters.Count == 0) { return; } //随机时间动一次 float time = Time.time; if (m_NextUpdateCharacterTime < time) { m_NextUpdateCharacterTime = time + MNS.Random.Instance.NextRange(1f, 8f); UICharacterContainer container = m_NextUpdateCharacters[0]; if (container.Character == null) { return; } container.PlaySocialAction(); m_NextUpdateCharacters.RemoveAt(0); } }
bool OnToggleCharacter(DungeonHero hero, bool bSelected) { if (m_MainLayout.DragContainer != null) { OnCharacterRelease(true); } if (bSelected == true) { if (m_CurrentTeam.ContainsIDN(hero.Creature.Info.IDN) == true) { Tooltip.Instance.ShowMessageKey("CreatureNotUseSame"); return(false); } for (int i = 0; i < m_MainLayout.m_Characters.Length; ++i) { UICharacterContainer container = m_MainLayout.m_Characters[i]; if (container.Character == null) { for (int j = 0; j < i; ++j) { if (m_MainLayout.m_Characters[j].Character.Creature.Info.Position > hero.CreatureInfo.Position) { m_MainLayout.Reposition(i, j); m_MainLayout.Batch(j); break; } } container.Init(AssetManager.GetCharacterAsset(hero.Creature.Info.ID, hero.Creature.SkinName), UICharacterContainer.Mode.UI_Normal, "social"); if (container.Character != null) { container.Character.Creature = hero.Creature; } m_MainLayout.UpdateBatch(); SaveTeamData(); UpdateCharacterInfo(true); return(true); } } return(false); } else { UICharacterContainer container = Array.Find(m_MainLayout.m_Characters, c => c.IsInit == true && c.Character.Creature.Idx == hero.Creature.Idx); container.Uninit(); m_MainLayout.Rebatch(); if (m_CurrentTeam.LeaderCreatureIdx == hero.Creature.Idx) { OnChangedLeaderSkillChanged(null); } SaveTeamData(); UpdateCharacterInfo(true); } return(true); }
public void Reposition(int target_index, int insert_index) { UICharacterContainer target = m_Characters[target_index]; List <UICharacterContainer> list = m_Characters.ToList(); list.Remove(target); list.Insert(insert_index, target); m_Characters = list.ToArray(); IsBatching = true; }
void OnCharacterRelease(bool is_forced) { if (m_MainLayout.DragContainer != null) { UICharacterContainer container = m_MainLayout.DragContainer; m_MainLayout.DragContainer = null; m_MainLayout.Rebatch(); SaveTeamData(); UpdateCharacterInfo(true); } m_HeroActive.gameObject.SetActive(false); }
void OnPressCharacter() { Ray main_ray = UICamera.currentRay; int mask = Camera.main.cullingMask; float dist = Camera.main.farClipPlane - Camera.main.nearClipPlane; RaycastHit hitInfo; if (Physics.Raycast(main_ray, out hitInfo, dist, mask)) { selected_character = CoreUtility.GetParentComponent <UICharacterContainer>(hitInfo.collider.transform); } }
public bool CheckDragIndex() { if (DragContainer == null) { return(false); } bool drag_out = true; int active_count = m_Characters.Count(c => c.IsInit == true); int drag_index = active_count - 1; Vector3 local_pos = DragContainer.transform.localPosition; if (local_pos.y < 8f) { drag_index = Mathf.Clamp(2 - Mathf.RoundToInt(local_pos.x / horizontal), 0, active_count - 1); drag_out = false; } if (m_Characters[drag_index] != DragContainer) { List <UICharacterContainer> list = m_Characters.Where(c => c.IsInit == true && c != DragContainer).ToList(); list.Insert(drag_index, DragContainer); list.AddRange(m_Characters.Where(c => c.IsInit == false && c != DragContainer)); if (drag_out == false) { UICharacterContainer container = m_Characters[drag_index]; if (container != list[drag_index] && container.IsInit == true && container != DragContainer) { container.Character.PlayAction("damage"); } } m_Characters = list.ToArray(); } return(drag_out); }
void OnReleaseCharacter() { selected_character = null; }