Exemple #1
0
    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);
    }
Exemple #2
0
    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);
        }
    }
Exemple #3
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);
    }
Exemple #4
0
    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;
    }
Exemple #5
0
    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);
    }
Exemple #6
0
    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);
        }
    }
Exemple #7
0
    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);
    }
Exemple #8
0
 void OnReleaseCharacter()
 {
     selected_character = null;
 }