Esempio n. 1
0
    public override void Initialize()
    {
        m_RaycastProxy = Facade.RetrieveProxy(ProxyName.RaycastProxy) as RaycastProxy;
        m_TaskTracking = Facade.RetrieveProxy(ProxyName.TaskTrackingProxy) as TaskTrackingProxy;

        m_Root             = FindComponent <RectTransform>("Content");
        m_Camera           = m_Root.GetComponentInParent <Canvas>().worldCamera;
        m_ScaleBox         = FindComponent <RectTransform>("Content/ScaleBox");
        m_Crosshair        = FindComponent <RectTransform>("Content/Crosshair");
        m_JumpCrosshair    = FindComponent <RectTransform>("Content/Crosshair/JumpPoint");
        m_MineralCrosshair = FindComponent <RectTransform>("Content/Crosshair/MineralPoint");

        m_PointBox      = FindComponent <RectTransform>("Content/Points");
        m_PointTemplate = FindComponent <RectTransform>("PointTemp");
        m_ArrowBox      = FindComponent <RectTransform>("Content/Arrows");
        m_ArrowTemplate = FindComponent <RectTransform>("ArrowTemp");

        m_ReadyBox       = FindComponent <RectTransform>("Content/JumpText");
        m_ReadyHotkeyBox = FindComponent <RectTransform>("Content/JumpText/HotKeyBox");

        m_MissionIdleBox  = FindComponent <RectTransform>("MissionIdleBox");
        m_MissionTemplate = FindComponent <RectTransform>("IconMissionElement");

        m_HotKeyBox = FindComponent <RectTransform>("HotKeyRole");
        m_HotKeyBox.gameObject.SetActive(false);
    }
Esempio n. 2
0
 private TaskTrackingProxy GetTaskTrackingProxy()
 {
     if (m_TaskTrackingProxy == null)
     {
         m_TaskTrackingProxy = GameFacade.Instance.RetrieveProxy(ProxyName.TaskTrackingProxy) as TaskTrackingProxy;
     }
     return(m_TaskTrackingProxy);
 }
    public override void OnShow(object msg)
    {
        base.OnShow(msg);

        m_GamePlayProxy = Facade.RetrieveProxy(ProxyName.GameplayProxy) as GameplayProxy;
        m_EternityProxy = Facade.RetrieveProxy(ProxyName.CfgEternityProxy) as CfgEternityProxy;
        m_TrakingProxy  = Facade.RetrieveProxy(ProxyName.TaskTrackingProxy) as TaskTrackingProxy;

        StartUpdate();
    }
 public override void HandleNotification(INotification notification)
 {
     switch (notification.Name)
     {
     case NotificationName.MSG_LEAP_COMPLETED:
     {
         TaskTrackingProxy taskTrackingProxy = Facade.RetrieveProxy(ProxyName.TaskTrackingProxy) as TaskTrackingProxy;
         taskTrackingProxy.RebuildTracking();
     }
     break;
     }
 }
Esempio n. 5
0
 public override void OnShow(object msg)
 {
     base.OnShow(msg);
     m_CfgEternityProxy  = GameFacade.Instance.RetrieveProxy(ProxyName.CfgEternityProxy) as CfgEternityProxy;
     m_TaskTrackingProxy = GameFacade.Instance.RetrieveProxy(ProxyName.TaskTrackingProxy) as TaskTrackingProxy;
     m_TeamProxy         = GameFacade.Instance.RetrieveProxy(ProxyName.TeamProxy) as TeamProxy;
     if (msg is MsgStarmapPanelState)
     {
         m_Data     = (msg as MsgStarmapPanelState).Data as EditorFixedStar;
         m_BeforeID = (uint)(msg as MsgStarmapPanelState).BeforeID;
     }
     LoadViewPart(ASSET_ADDRESS, OwnerView.OtherBox);
 }
Esempio n. 6
0
 public override void OnShow(object msg)
 {
     base.OnShow(msg);
     LoadViewPart(ASSET_ADDRESS, OwnerView.ListBox);
     if (m_TaskTrackingProxy == null)
     {
         m_TaskTrackingProxy = GameFacade.Instance.RetrieveProxy(ProxyName.TaskTrackingProxy) as TaskTrackingProxy;
     }
     reliveInfo                 = (ShowRelviePanelNotify)msg;
     m_CountdownEndTime         = reliveInfo.Countdown / 1000.0f + Time.time;
     m_SelectionSended          = false;
     m_Parent.m_KillerName.text = string.Format(TableUtil.GetLanguageString("revive_text_id_1002"), reliveInfo.KillerName);
     State.GetAction(UIAction.Common_Select).Callback += OnHotkeyCallback;
     OwnerView.PageBox.gameObject.SetActive(false);
     OwnerView.HotkeyBox.gameObject.SetActive(false);
     OwnerView.ListBox.gameObject.SetActive(false);
     State.GetAction(UIAction.Common_Select).Enabled = false;
     UIManager.Instance.OnUpdate += Update;
 }
Esempio n. 7
0
    public override void OnShow(object msg)
    {
        base.OnShow(msg);
        m_CfgEternityProxy  = GameFacade.Instance.RetrieveProxy(ProxyName.CfgEternityProxy) as CfgEternityProxy;
        m_CfgStarmapProxy   = GameFacade.Instance.RetrieveProxy(ProxyName.CfgStarmapProxy) as CfgStarmapProxy;
        m_TaskTrackingProxy = GameFacade.Instance.RetrieveProxy(ProxyName.TaskTrackingProxy) as TaskTrackingProxy;
        m_TeamProxy         = GameFacade.Instance.RetrieveProxy(ProxyName.TeamProxy) as TeamProxy;
        m_MissionProxy      = GameFacade.Instance.RetrieveProxy(ProxyName.MissionProxy) as MissionProxy;
        if (msg is MsgStarmapPanelState)
        {
            m_Data = (msg as MsgStarmapPanelState).Data as EditorPlanet;
        }
        else
        {
            Eternity.FlatBuffer.Map mapData = m_CfgEternityProxy.GetCurrentMapData();
            m_Data = m_CfgStarmapProxy.GetPlanet(mapData.BelongFixedStar, mapData.GamingmapId);
        }
        m_PointDic = new Dictionary <ulong, StarAreaElement>();
        m_Lines    = new List <GameObject>();

        LoadViewPart(ASSET_ADDRESS, OwnerView.OtherBox);
    }
Esempio n. 8
0
    /// <summary>
    /// 更新目标
    /// </summary>
    /// <param name="main">主角</param>
    /// <param name="target">目标</param>
    /// <param name="view">UI</param>
    /// <param name="anchoredPosition">坐标</param>
    /// <param name="distance">距离</param>
    private void OnTargetUpdate(SpacecraftEntity main, SpacecraftEntity target, RectTransform view, Vector3 anchoredPosition, float distance, float visibleDistance, bool mouseMoved, bool IsNew)
    {
        TaskTrackingProxy taskTrackingProxy = Facade.RetrieveProxy(ProxyName.TaskTrackingProxy) as TaskTrackingProxy;

        float hp    = (float)target.GetAttribute(AttributeName.kHP);
        float hpMax = (float)target.GetAttribute(AttributeName.kHPMax);
        float mp    = (float)target.GetAttribute(AttributeName.kShieldValue);
        float mpMax = (float)target.GetAttribute(AttributeName.kShieldMax);

        float hpProgress = hpMax <= 0 ? 0.0f : hp / hpMax;
        float mpProgress = mpMax <= 0 ? 0.0f : mp / mpMax;

        //坐标
        view.anchoredPosition = anchoredPosition;

        if (target.GetHeroType() == KHeroType.htMine)
        {
            m_BloodImage            = FindComponent <Image>(view, "Slider/Image_Bar");
            m_BloodImage.fillAmount = hpProgress;
            TMP_Text hpText = FindComponent <TMP_Text>(view, "Name/Name/Label_Value");//血值比率
            if (hpText)
            {
                int textID = 1025;
                if (hpProgress <= 0.0f)
                {
                    textID = 1021;
                }
                else if (hpProgress <= 0.2f)
                {
                    textID = 1022;
                }
                else if (hpProgress <= 0.4f)
                {
                    textID = 1023;
                }
                else if (hpProgress <= 0.6f)
                {
                    textID = 1024;
                }

                hpText.text = GetLocalization("hud_text_id_" + textID);
            }

            //动画
            Animator animator = view.GetComponent <Animator>();
            if (animator)
            {
                SpacecraftEntity currentTarget = m_RaycastProxy.Raycast();

                animator.SetBool("isBattle", IsBattling());
                animator.SetBool("isTarget", currentTarget == target);
                if (mouseMoved)
                {
                    animator.SetTrigger("mouseMoved");
                }
            }
        }
        else
        {
            //血值
            Slider mpSlider = FindComponent <Slider>(view, "Slider/Slider_MP");
            if (mpSlider)
            {
                mpSlider.value = mpProgress;
            }

            //护甲
            Slider hpSlider = FindComponent <Slider>(view, "Slider/Slider_Hp");
            if (hpSlider)
            {
                hpSlider.value = hpProgress;
            }

            //距离
            TMP_Text distanceField = FindComponent <TMP_Text>(view, "Name/Distance");
            if (distanceField)
            {
                distanceField.text = FormatMetre(distance);
            }

            //任务
            RectTransform missionBox = FindComponent <RectTransform>(view, "MissionIconBox");
            if (missionBox)
            {
                bool needShowMissionFlag = distance < visibleDistance;
                if (needShowMissionFlag && !taskTrackingProxy.GetAreadyAddMissionInfo(target.GetUId(), target.GetTemplateID()))
                {
                    TaskTrackingProxy.TrackingInfo tracking = taskTrackingProxy.GetNpcMission(target.GetUId(), target.GetTemplateID());
                    MissionType missionType = tracking != null ? tracking.MissionType : MissionType.None;

                    missionBox.gameObject.SetActive(missionType != MissionType.None);
                    if (missionBox.gameObject.activeSelf)
                    {
                        Animator missionAniamtor = FindComponent <Animator>(missionBox, "IconMissionElement");
                        Image    missionIcon     = FindComponent <Image>(missionAniamtor, "Icon");

                        UIUtil.SetIconImage(missionIcon, GameConstant.FUNCTION_ICON_ATLAS_ASSETADDRESS, GetMissionIcon(missionType));

                        missionAniamtor.SetBool("Finished", tracking != null && tracking.MissionState == MissionState.Finished);
                    }
                }
                else
                {
                    missionBox.gameObject.SetActive(false);
                }
            }

            //逃跑
            Transform escapeTransform = FindComponent <Transform>(view, "RunIconBox ");
            if (escapeTransform != null && escapeTransform.gameObject.activeSelf != m_RunIconBoxActive)
            {
                escapeTransform.gameObject.SetActive(m_RunIconBoxActive);
            }

            //动画
            Animator      animator        = view.GetComponent <Animator>();
            Transform     buffIconBoxTras = view.Find("BuffIconBox");
            RectTransform bufferIconBox   = null;
            if (buffIconBoxTras)
            {
                bufferIconBox = buffIconBoxTras.GetComponent <RectTransform>();
            }
            if (animator)
            {
                if (distance < GameConstant.DEFAULT_VISIBILITY_METRE_FOR_SHIP / 2)
                {
                    if (main.GetTarget() == target)
                    {
                        if (bufferIconBox)
                        {
                            bufferIconBox.localPosition = m_NormalBufferPos;
                        }
                        animator.SetInteger("State", 2);
                    }
                    else
                    {
                        if (bufferIconBox)
                        {
                            bufferIconBox.localPosition = m_NormalBufferPos;
                        }
                        animator.SetInteger("State", 1);
                    }
                }
                else
                {
                    if (bufferIconBox)
                    {
                        bufferIconBox.localPosition = m_AwayFromBufferPos;
                    }
                    animator.SetInteger("State", 0);
                }

                if (target == main)
                {
                    if (bufferIconBox)
                    {
                        bufferIconBox.localPosition = m_SelfBufferPos;
                    }
                    animator.SetInteger("State", 0);
                    view.Find("Icon").gameObject.SetActive(false);
                }
            }

            if (IsNew)
            {
                OnAddBufferIcon(target);
            }
        }
    }
Esempio n. 9
0
    /// <summary>
    /// 更新
    /// </summary>
    protected override void Update()
    {
        CfgEternityProxy  eternityProxy     = Facade.RetrieveProxy(ProxyName.CfgEternityProxy) as CfgEternityProxy;
        TaskTrackingProxy taskTrackingProxy = Facade.RetrieveProxy(ProxyName.TaskTrackingProxy) as TaskTrackingProxy;

        if (!IsWatchOrUIInputMode() && !IsDead() && !IsLeaping())
        {
            GameplayProxy gamePlayProxy = Facade.RetrieveProxy(ProxyName.GameplayProxy) as GameplayProxy;
            BaseEntity    main          = gamePlayProxy.GetEntityById <BaseEntity>(gamePlayProxy.GetMainPlayerUID());

            List <SpacecraftEntity> humanList = gamePlayProxy.GetEntities <SpacecraftEntity>(KHeroType.htNpc);
            foreach (SpacecraftEntity entity in humanList)
            {
                if (entity.GetHeroType() != KHeroType.htNpc)
                {
                    continue;
                }

                Npc entityVO = eternityProxy.GetNpcByKey(entity.GetTemplateID());
                if (entityVO.Display == 0)
                {
                    continue;
                }

                Vector3 titleOffset    = entityVO.HeroHeaderLength >= 3 ? new Vector3(entityVO.HeroHeader(0), entityVO.HeroHeader(1), entityVO.HeroHeader(2)) : Vector3.zero;
                Vector3 targetPosition = entity.transform.position + entity.transform.TransformDirection(titleOffset);

                //屏幕外忽略
                if (!IsInScreen(targetPosition, Camera.main))
                {
                    continue;
                }

                //太远忽略
                float targetDistance = Vector3.Distance(entity.transform.position, main.transform.position) * GameConstant.METRE_PER_UNIT;
                if (targetDistance >= entityVO.MissionTargetHiddenDistance * GameConstant.METRE_PER_UNIT)
                {
                    continue;
                }

                Vector2 iconPosition;
                Vector3 screenPosition = Camera.main.WorldToScreenPoint(targetPosition);
                if (RectTransformUtility.ScreenPointToLocalPointInRectangle(m_FlagBox, screenPosition, m_CanvasCamera, out iconPosition))
                {
                    bool isNew    = false;
                    uint entityID = entity.GetUId();

                    //创建标记
                    RectTransform flag = m_NpcID2FlagA.ContainsKey(entityID) ? m_NpcID2FlagA[entityID] : null;
                    if (flag == null)
                    {
                        if (m_IdleBox.childCount > 0)
                        {
                            flag = m_IdleBox.GetChild(0).GetComponent <RectTransform>();
                            flag.gameObject.SetActive(true);
                            flag.SetParent(m_FlagBox);
                        }
                        else
                        {
                            flag = Object.Instantiate(m_FlagTemplate, m_FlagBox);
                            flag.gameObject.SetActive(true);
                        }
                        isNew = true;
                    }
                    m_NpcID2FlagA.Remove(entityID);
                    m_NpcID2FlagB.Add(entityID, flag);

                    //标记坐标
                    flag.anchoredPosition = new Vector2(iconPosition.x, iconPosition.y);

                    //名称文本
                    if (isNew)
                    {
                        flag.Find("Name/Label_NPCName").GetComponent <TMP_Text>().text = TableUtil.GetNpcName(entity.GetTemplateID());

                        Image npcIcon = flag.Find("IconBox/IconScenceNameElement/Image_NpcIcon").GetComponent <Image>();
                        npcIcon.color = entityVO.NameBoardIcon == 0 ? Color.clear : Color.white;
                        if (entityVO.NameBoardIcon != 0)
                        {
                            UIUtil.SetIconImage(npcIcon, entityVO.NameBoardIcon);
                        }
                    }

                    //任务
                    TaskTrackingProxy.TrackingInfo tracking = taskTrackingProxy.GetNpcMission(entity.GetUId(), entity.GetTemplateID());
                    MissionType missionType = tracking != null ? tracking.MissionType : MissionType.None;

                    //任务状态
                    RectTransform flagIcon            = FindComponent <RectTransform>(flag, "IconBox");
                    RectTransform flagMission         = FindComponent <RectTransform>(flag, "MissionBox");
                    Animator      flagMissionAnimator = FindComponent <Animator>(flagMission, "IconMissionElement");
                    Image         flagMissionIcon     = FindComponent <Image>(flagMissionAnimator, "Icon").GetComponent <Image>();

                    UIUtil.SetIconImage(flagMissionIcon, GameConstant.FUNCTION_ICON_ATLAS_ASSETADDRESS, GetMissionIcon(missionType));

                    flagMission.gameObject.SetActive(missionType != MissionType.None);
                    flagIcon.gameObject.SetActive(!flagMission.gameObject.activeSelf);
                    taskTrackingProxy.SetAreadyAddMissionInfo(entity.GetUId(), entity.GetTemplateID());

                    flagMissionAnimator.SetBool("Finished", tracking != null && tracking.MissionState == MissionState.Finished);

                    /*
                     * //图标动画
                     * Animator flagIconAnimator = flag.Find("IconBox").GetComponent<Animator>();
                     * if (flagIconAnimator != null && flagIconAnimator.runtimeAnimatorController != null && flagIconAnimator.isActiveAndEnabled)
                     * {
                     *  flagIconAnimator.ResetTrigger("Open");
                     *  flagIconAnimator.ResetTrigger("Close");
                     *  flagIconAnimator.SetTrigger(targetDistance <= GameConstant.DEFAULT_HUMAN_TITLE_SHOW_RANGE * 2 ? "Open" : "Close");
                     * }
                     *
                     * //名称动画
                     * Animator flagTextAnimator = flag.Find("Name").GetComponent<Animator>();
                     * if (flagTextAnimator != null && flagTextAnimator.runtimeAnimatorController != null && flagTextAnimator.isActiveAndEnabled)
                     * {
                     *  flagTextAnimator.ResetTrigger("Open");
                     *  flagTextAnimator.ResetTrigger("Close");
                     *  flagTextAnimator.SetTrigger(targetDistance <= GameConstant.DEFAULT_HUMAN_TITLE_SHOW_RANGE ? "Open" : "Close");
                     * }
                     */
                }
            }
        }

        //回收标记
        foreach (var flag in m_NpcID2FlagA)
        {
            taskTrackingProxy.SetAreadyAddMissionInfo(flag.Key, 0, true);
            flag.Value.gameObject.SetActive(false);
            flag.Value.SetParent(m_IdleBox);
        }
        m_NpcID2FlagA.Clear();

        //交换缓存
        Dictionary <uint, RectTransform> tmp = m_NpcID2FlagA;

        m_NpcID2FlagA = m_NpcID2FlagB;
        m_NpcID2FlagB = tmp;
    }
Esempio n. 10
0
    /// <summary>
    /// 更新任务状态
    /// </summary>
    private void UpdateMissionState()
    {
        TaskTrackingProxy trakingProxy = Facade.RetrieveProxy(ProxyName.TaskTrackingProxy) as TaskTrackingProxy;

        for (int i = 0; i < m_LeapCfgs.Count; i++)
        {
            LeapItem leapVO = m_LeapCfgs[i];
            uint     leapID = (uint)leapVO.LeapId;

            RectTransform point = m_PointBox.GetChild(i).GetComponent <RectTransform>();
            if (point.gameObject.activeSelf)
            {
                RectTransform box1 = point.Find("MissionBox").GetComponent <RectTransform>();
                RectTransform box2 = point.Find("JumpTips/MissionBox").GetComponent <RectTransform>();

                int index = 0;

                List <TaskTrackingProxy.TrackingInfo> trackingList = trakingProxy.GetLeapTrackings(leapID);
                if (trackingList != null)
                {
                    for (int j = 0; j < trackingList.Count; j++)
                    {
                        TaskTrackingProxy.TrackingInfo tracking = trackingList[j];
                        RectTransform icon1 = index < box1.childCount ? box1.GetChild(j).GetComponent <RectTransform>() : null;
                        if (icon1 == null)
                        {
                            if (m_MissionIdleBox.childCount > 0)
                            {
                                icon1 = m_MissionIdleBox.GetChild(0).GetComponent <RectTransform>();
                            }
                            else
                            {
                                icon1 = Object.Instantiate(m_MissionTemplate, box1);
                            }

                            icon1.SetParent(box1);
                            icon1.gameObject.SetActive(true);
                        }

                        RectTransform icon2 = index < box2.childCount ? box2.GetChild(j).GetComponent <RectTransform>() : null;
                        if (icon2 == null)
                        {
                            if (m_MissionIdleBox.childCount > 0)
                            {
                                icon2 = m_MissionIdleBox.GetChild(0).GetComponent <RectTransform>();
                            }
                            else
                            {
                                icon2 = Object.Instantiate(m_MissionTemplate, box2);
                            }

                            icon2.SetParent(box2);
                            icon2.gameObject.SetActive(true);
                        }

                        string missionIcon = GetMissionIcon(tracking.MissionType);
                        UIUtil.SetIconImage(icon1.Find("Icon").GetComponent <Image>(), GameConstant.FUNCTION_ICON_ATLAS_ASSETADDRESS, missionIcon);
                        UIUtil.SetIconImage(icon2.Find("Icon").GetComponent <Image>(), GameConstant.FUNCTION_ICON_ATLAS_ASSETADDRESS, missionIcon);

                        bool missionFinished = tracking.MissionState == MissionState.Finished;
                        icon1.GetComponent <Animator>().SetBool("Finished", missionFinished);
                        icon2.GetComponent <Animator>().SetBool("Finished", missionFinished);

                        index++;
                    }
                }

                while (index < box1.childCount)
                {
                    box1.GetChild(index).gameObject.SetActive(false);
                    box1.GetChild(index).SetParent(m_MissionIdleBox);
                }
                while (index < box2.childCount)
                {
                    box2.GetChild(index).gameObject.SetActive(false);
                    box2.GetChild(index).SetParent(m_MissionIdleBox);
                }
            }
        }
    }