Exemplo n.º 1
0
    /// <summary>
    /// 播放登场动画
    /// </summary>
    private void PlayDebutAnimation()
    {
        if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel())
        {
            return;
        }



        for (int i = 0; i < mActors.Count; i++)
        {
            if (i == mSelectIndex)
            {
                // 没有出场动画,先直接播放待机
                //mActors[i].CrossFade(DEBUT_NEXT_ANIMATION);

                // 播放登场动画
                var animation_ctrl = mActors[i].AnimationCtrl;
                if (animation_ctrl != null)
                {
                    animation_ctrl.CullMode = AnimatorCullingMode.AlwaysAnimate;
                }

                mIsPlayingDebut  = true;
                mIsPlayDebutIdle = false;
                mActors[i].Play(DEBUT_ANIMATION);
            }
        }
    }
Exemplo n.º 2
0
    /// <summary>
    /// 初始化
    /// </summary>
    private void Init()
    {
        SetData();

        ActorPos = transform;

        // 查找主光源
        Vector3 light_dir         = new Vector3(0, -1, -1);
        var     shadow_light_info = GetComponent <ShadowLightInfo>();

        if (shadow_light_info != null)
        {
            light_dir = shadow_light_info.LightDir;
        }
        ShadowManager.Instance.SetRealShadow(ActorPos, light_dir, 1 << LayerMask.NameToLayer("UIPreview"));

        ModelHelper.ClearChildren(ActorPos);

        mLoadedNum = 0;
        LoadFinish = false;

        if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel())
        {
            LoadFinish = true;
            return;
        }

        for (int i = 0; i < mActorNum; i++)
        {
            CreateActor(i);
        }

        PreloadTimelines();
    }
Exemplo n.º 3
0
        private void ShowNoticePanel(LoginNoticeData data, bool isFromServer = false)
        {
            if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel())
            {
                return;
            }

            GameDebug.Log("弹出游戏公告窗口");
            UIManager.Instance.ShowWindow("UILoginNoticeWindow", data, isFromServer);

            //if (string.IsNullOrEmpty(data.content) == false)
            //{

            //}
        }
Exemplo n.º 4
0
            protected override void ResetUI()
            {
                base.ResetUI();

                if (xc.Const.Region == xc.RegionType.SEASIA)
                {
                    if (xc.Const.Language == xc.LanguageType.VIETNAMESE)
                    {
                        mHealthTips.SetActive(true);
                    }
                }

                ui.ugui.UIManager.GetInstance().ShowLoadingBK(true);
                ui.ugui.UIManager.GetInstance().SetLoadingTip(xc.TextHelper.GetConstText("CODE_TEXT_LOCALIZATION_89"));

                // 删除加载的角色
                for (int i = 0; i < mActorGameObjects.Count; ++i)
                {
                    ClientModel actor = mActorGameObjects [i];
                    if (actor != null)
                    {
                        actor.mVisibleCtrl.SetActorVisible(true, VisiblePriority.EXCEPT);
                        ActorManager.Instance.DestroyActor(actor.UID);
                        mActorGameObjects [i] = null;
                    }
                }

                // 设置角色列表的数据
                SetData(Game.GetInstance().CharacterList);

                UpdateServerName();

                if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel())
                {
                    MainGame.HeartBehavior.StartCoroutine(DelayShowWindow());
                }
                else
                {
                    MainGame.HeartBehavior.StartCoroutine(WaitForSelectAcotor());
                }

                // 进入选角场景
                ControlServerLogHelper.Instance.PostPlayerFollowRecord(PlayerFollowRecordSceneId.EnterSelectActorScene);
            }
Exemplo n.º 5
0
        private static void OnGetLoginNoticeInfo(string url, string error, string reply, object userData)
        {
            bool fromServerList = (bool)userData;

            if (string.IsNullOrEmpty(error) == false)
            {
                UIManager.Instance.ShowWaitScreen(false);

                GameDebug.LogError("获取游戏公告失败: " + error);
                string err = DBConstText.GetText("GET_LOGIN_NOTICE_INFO_FAIL");
#if UNITY_EDITOR
                err += error;
#endif
                UIWidgetHelp.GetInstance().ShowNoticeDlg(err);

                return;
            }

            LoginNoticeData data;
            if (!CheckData(reply, out data))
            {
                UIManager.Instance.ShowWaitScreen(false);

                GameDebug.LogError("获取游戏公告失败: " + error);
                string err = DBConstText.GetText("GET_LOGIN_NOTICE_INFO_FAIL");

                UIWidgetHelp.GetInstance().ShowNoticeDlg(err);

                return;
            }

            if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel())
            {
                return;
            }

            //获取成功解析成功

            UIManager.Instance.ShowWindow("UILoginNoticeWindow", data, false);

            //if (string.IsNullOrEmpty(data.content) == false)
            //{
            //}
        }
Exemplo n.º 6
0
 public void ShowActorPic(uint roleId)
 {
     if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel())
     {
         for (int i = 0; i < mActorPic.Count; i++)
         {
             if (mActorPic[i] != null)
             {
                 // 需要判断image.texture是否已加载成功;
                 // gameObject.SetActive(false)会把已启动的协程停止,导致图片不会加载
                 RawImage image = mActorPic[i].GetComponent <RawImage>();
                 if (image != null && image.texture != null)
                 {
                     mActorPic[i].gameObject.SetActive(i == roleId);
                 }
             }
         }
     }
 }
Exemplo n.º 7
0
        /// <summary>
        /// 窗口资源加载完毕后调用
        /// </summary>
        public virtual void InitData()
        {
            IsLoadDone = true;
            WinState   = WinowState.ResLoadDone;

            canvas = mUIObject.GetComponent <Canvas>();

            if (firstShow)
            {
                ///第一次显示在这里计算层级
                CaculateLayer();
            }

            InitUI();

            var all_shield_widget = DBWidgetShield.Instance.GetAllWidget(this.mWndName);

            if (all_shield_widget != null)
            {
                foreach (var info in all_shield_widget)
                {
                    var widget = mUIObject.transform.Find(info.path);
                    if (widget != null)
                    {
                        if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel())
                        {
                            if ((info.is_audit && AuditManager.Instance.ContainShieldWId((uint)info.id)) ||
                                !info.is_audit)
                            {
                                widget.gameObject.SetActive(false);
                            }
                        }
                        else
                        {
                            if (!info.is_audit)
                            {
                                widget.gameObject.SetActive(false);
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 8
0
            // 所有的角色都加载完毕
            public void OnAllActorLoaded()
            {
                if (SelectActorScene.Instance != null)
                {
                    ResetPos();
                }

                UIManager.GetInstance().ShowLoadingBK(false);

                if (!IsShow)
                {
                    return;
                }

                int index = mSelectIndex;

                mSelectIndex = -1;
                OnClickActor(index);

                //test
                //Game.Instance.GameObjectControl.scene.SetActive(false);
                //Game.Instance.GameObjectControl.uiPanel.SetActive(true);

                if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel())
                {
                    GameObjectControl control = Game.Instance.GameObjectControl;
                    if (control != null)
                    {
                        if (control.scene != null && control.uiPanel != null)
                        {
                            control.scene.SetActive(!AuditManager.Instance.Open);
                            control.uiPanel.SetActive(AuditManager.Instance.Open);
                        }
                    }
                }
            }
Exemplo n.º 9
0
            // 创建对应的角色
            public void CreateActor(int index)
            {
                if (index >= 0 && index < mData.Count)
                {
                    //if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetRoleList() != null)
                    //{
                    //    List<uint> npc_id = SDKHelper.GetRoleList();
                    //    int rid = (int)mData[index].rid - 1;
                    //    UnitID actor_uid = ClientModel.CreateClientModelByActorIdForLua(ActorHelper.RoleIdToCreateTypeId(npc_id[rid]), OnResLoaded);
                    //    var client_model = ActorManager.Instance.GetActor(actor_uid) as ClientModel;
                    //    client_model.AttackSpeed = 1.0f;
                    //    mActorGameObjects.Add(client_model);
                    //    return;
                    //}



                    uint type_idx = ActorHelper.RoleIdToTypeId(mData [index].rid);

                    List <uint> model_list   = new List <uint>();
                    List <uint> fashion_list = new List <uint>();
                    ActorHelper.GetModelFashionList(mData[index].shows, model_list, fashion_list);

                    if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel() && SDKHelper.GetFashion() != 0)
                    {
                        fashion_list.Add(SDKHelper.GetFashion());
                    }

                    var         model_id_list = ActorManager.ReplaceModelList(model_list, (Actor.EVocationType)mData [index].rid, true);
                    ClientModel actor         = ClientModel.CreateClientModel(type_idx, mData[index].uuid, model_id_list, fashion_list, mData[index].effects, OnResLoaded, false, true);
                    // 攻速必须为1,不然出场特效与动作匹配不上
                    actor.AttackSpeed = 1.0f;
                    mActorGameObjects.Add(actor);
                    actor.Freeze(DBActor.UF_ANIMATION);
                }
            }
Exemplo n.º 10
0
            protected override void InitUI()
            {
                base.InitUI();

                GameObject childObj = FindChild("StartButton");

                mStartButton       = childObj.GetComponent <Button>();
                mRemoveButton      = FindChild("RemoveButton").GetComponent <Button>();
                mExitButton        = FindChild("ExitButton").GetComponent <Button>();
                m_VocationDescRoot = FindChild("VocationDesc");
                mPowerText         = FindChild("PowerText").GetComponent <Text>();
                mHealthTips        = FindChild("HealthTips");
                mHealthTips.SetActive(false);

                for (int i = 0; i < ACTOR_MAX_NUM; ++i)
                {
                    string btnName = string.Format("Actor{0}Button", i + 1);
                    childObj = FindChild(btnName);
                    Button btn = childObj.GetComponent <Button>();
                    mActorButton.Add(btn);
                    //mActorGameObjects.Add(null);
                }

                mServerText = FindChild("ServerText").GetComponent <Text>();

                if (mUIObject.GetComponent <AutoScale>() == null)
                {
                    mUIObject.AddComponent <AutoScale>();
                }

                for (int i = 0; i < mActorButton.Count; ++i)
                {
                    int actor_index = i;
                    mActorButton[i].onClick.AddListener(() => { OnClickActor(actor_index); });
                }

                mStartButton.onClick.AddListener(OnClickStart);
                mRemoveButton.onClick.AddListener(OnClickRemove);
                mExitButton.onClick.AddListener(OnClickExit);


                if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel())
                {
                    for (int i = 0; i < 3; i++)
                    {
                        GameObject go = FindChild("ActorPic" + (i + 1).ToString());
                        if (go != null)
                        {
                            LoadMaJiaImage majia   = go.AddComponent <LoadMaJiaImage>();
                            var            picName = string.Format("ActorPic{0}.png", (i + 1));
                            majia.mPath = ResNameMapping.Instance.GetMappingName(picName);
                            majia.SetFailCallBack(() =>
                            {
                                RawImage image = majia.GetComponent <RawImage>();
                                if (image != null)
                                {
                                    image.color = new Color(0, 0, 0, 0);
                                }
                            });
                            mActorPic.Add(go);
                        }
                    }
                }



                Game.GetInstance().SubscribeNetNotify(NetMsg.MSG_DELETE_ROLE, HandleDeleteRole);
            }
Exemplo n.º 11
0
            /// <summary>
            /// 点击角色职业的按钮
            /// </summary>
            /// <param name="vocation"></param>
            void OnClickActorBtn(uint vocation)
            {
                // 设置当前的CheckMask
                var cur_select_btn = mActorButtons[vocation].transform;

                cur_select_btn.Find("CheckMask").gameObject.SetActive(true);
                cur_select_btn.Find("Background").gameObject.SetActive(false);
                if (mVocationId == vocation)
                {
                    return;
                }

                // 设置之前的CheckMask
                if (mVocationId != 0)
                {
                    var last_select_btn = mActorButtons[mVocationId].transform;
                    last_select_btn.Find("CheckMask").gameObject.SetActive(false);
                    last_select_btn.Find("Background").gameObject.SetActive(true);
                }

                if (CreateActorScene.Instance && CreateActorScene.Instance.SelectActorByVocation(vocation, () =>
                {
                    if (IsShow == true)
                    {
                        mRightButtom.SetActive(true);
                        mRight.SetActive(true);
                    }
                }))
                {
                    if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel())
                    {
                        for (int i = 0; i < mActorPic.Count; i++)
                        {
                            if (mActorPic[i] != null)
                            {
                                RawImage image = mActorPic[i].GetComponent <RawImage>();
                                if (image != null && image.texture != null)
                                {
                                    mActorPic[i].gameObject.SetActive(i + 1 == vocation);
                                }
                            }
                        }
                    }

                    mVocationId = vocation;
                    RequestRoleName();

                    PreviewLight.SelectLight(1, mVocationId);
                    RefreshDescription();

                    if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel())
                    {
                        return;
                    }

                    mRightButtom.SetActive(false);
                    mRight.SetActive(false);

                    if (AuditManager.Instance.AuditAndIOS() == false)
                    {
                        mRightButtom.SetActive(true);
                        mRight.SetActive(true);
                    }
                }
            }
Exemplo n.º 12
0
            //--------------------------------------------------------
            //  内部调用
            //--------------------------------------------------------
            IEnumerator WaitActorLoad()
            {
                while (CreateActorScene.Instance == null || CreateActorScene.Instance.LoadFinish == false || CreateActorScene.Instance.TimelinesIsLoadFinished == false)
                {
                    yield return(null);
                }

                var isAuditAndIos = AuditManager.Instance.AuditAndIOS();

                if (!isAuditAndIos || (isAuditAndIos && !SDKHelper.GetSwitchModel()))
                {
                    var preload_infos = DBPreloadInfo.Instance.PreloadInfos;
                    if (preload_infos.Count > 0)
                    {
                        mPreloadAssetResource.Clear();
                        foreach (var info in preload_infos)
                        {
                            var object_asset = new AssetResource();
                            mPreloadAssetResource.Add(object_asset);
                            MainGame.HeartBehavior.StartCoroutine(SGameEngine.ResourceLoader.Instance.load_asset("Assets/" + info.asset_path, typeof(UnityEngine.Object), object_asset));
                        }

                        float star_wait_time = Time.unscaledTime;

                        // 等待所有资源加载完毕
                        while (true)
                        {
                            // 最多等待20s
                            if (Time.unscaledTime - star_wait_time > 20.0f)
                            {
                                Debug.LogError("WaitActorLoad: wait preload asset for long time");
                                break;
                            }

                            bool all_loaded = true;
                            foreach (var info in mPreloadAssetResource)
                            {
                                if (info.asset_ == null)
                                {
                                    all_loaded = false;
                                    break;
                                }
                            }

                            if (all_loaded)
                            {
                                break;
                            }
                            else
                            {
                                yield return(null);
                            }
                        }
                    }
                }

                if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel())
                {
                    GameObjectControl control = Game.Instance.GameObjectControl;
                    if (control != null)
                    {
                        if (control.scene != null && control.uiPanel != null)
                        {
                            control.scene.SetActive(!AuditManager.Instance.Open);
                            control.uiPanel.SetActive(AuditManager.Instance.Open);
                        }
                    }
                }

                //int[] actorList = new int[] { 2, 1, 3 };
                if (AuditManager.Instance.AuditAndIOS())
                {
                    List <uint> actorList = SDKHelper.GetRoleList();
                    if (actorList != null && actorList.Count >= 1)
                    {
                        mDefaultSelectIndex = (int)actorList[0];
                    }
                }

                OnClickActorBtn((uint)mDefaultSelectIndex);

                // 等待一帧才隐藏loading界面,避免播放剧情前穿帮
                mHideLoadingBKCoroutine = MainGame.HeartBehavior.StartCoroutine(EndFrameHideLoadingBK());
            }
Exemplo n.º 13
0
            protected override void InitUI()
            {
                base.InitUI();

                mEnterGameButton    = FindChild("EnterGameButton").GetComponent <Button>();
                mExitButton         = FindChild("ExitButton").GetComponent <Button>();
                mGenerateNameButton = FindChild("GenerateNameButton").GetComponent <Button>();
                mNameInputField     = FindChild("NameInputField").GetComponent <InputField>();
                mVocationDesc       = FindChild("VocationDesc").transform;
                mRightButtom        = FindChild("RightButtom");
                mRight      = FindChild("Right");
                mHealthTips = FindChild("HealthTips");
                mHealthTips.SetActive(false);
                mCreateNewRoleButton = FindChild("CreateNewRoleButton").GetComponent <Button>();
                mCreateNewRoleButton.gameObject.SetActive(false);

                // 获取最大可创建角色数量
                var role_ids = GameConstHelper.GetUintList("GAME_AVAILABLE_ROLE_ID");

                mActorNum = role_ids.Count;
                // 获取创角按钮
                mActorButtons.Clear();



                if (AuditManager.Instance.AuditAndIOS())
                {
                    for (int i = 0; i < mActorNum; ++i)
                    {
                        var btn_game_object = FindChild(string.Format("VocationButton{0}", i + 1));
                        if (btn_game_object != null)
                        {
                            btn_game_object.gameObject.SetActive(false);
                        }
                    }
                    //int[] actorList = new int[] { 2, 1 ,3 };
                    List <uint> actorList = SDKHelper.GetRoleList();
                    if (actorList != null)
                    {
                        bool isShowActorBtn = actorList.Count > 1;

                        for (int i = 0; i < actorList.Count; i++)
                        {
                            int career          = (int)actorList[i];
                            var btn_game_object = FindChild(string.Format("VocationButton{0}", career));
                            if (btn_game_object != null)
                            {
                                btn_game_object.gameObject.SetActive(isShowActorBtn);
                                btn_game_object.transform.Find("CheckMask").gameObject.SetActive(false);
                                btn_game_object.transform.Find("Background").gameObject.SetActive(true);
                                mActorButtons.Add((uint)career, btn_game_object.GetComponent <Button>());
                            }
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < mActorNum; ++i)
                    {
                        var btn_game_object = FindChild(string.Format("VocationButton{0}", i + 1));
                        if (btn_game_object != null)
                        {
                            mActorButtons.Add((uint)(i + 1), btn_game_object.GetComponent <Button>());
                        }
                    }
                }
                mEnterGameButton.onClick.AddListener(OnClickEnterGameBtn);
                mExitButton.onClick.AddListener(OnClickExitBtn);
                mGenerateNameButton.onClick.AddListener(OnClickNameBtn);
                foreach (var kv in mActorButtons)
                {
                    var btn = kv.Value;
                    if (btn != null)
                    {
                        btn.onClick.AddListener(() => { OnClickActorBtn(kv.Key); });
                    }
                }
                mCreateNewRoleButton.onClick.AddListener(OnClickCreateNewRoleButton);


                if (AuditManager.Instance.AuditAndIOS() && SDKHelper.GetSwitchModel())
                {
                    for (int i = 0; i < 3; i++)
                    {
                        GameObject go = FindChild("ActorPic" + (i + 1).ToString());
                        if (go != null)
                        {
                            LoadMaJiaImage majia   = go.AddComponent <LoadMaJiaImage>();
                            var            picName = string.Format("ActorPic{0}.png", (i + 1));
                            majia.mPath = ResNameMapping.Instance.GetMappingName(picName);
                            majia.SetFailCallBack(() =>
                            {
                                RawImage image = majia.GetComponent <RawImage>();
                                if (image != null)
                                {
                                    image.color = new Color(0, 0, 0, 0);
                                }
                            });
                            mActorPic.Add(go);
                        }
                    }
                }



                Game.GetInstance().SubscribeNetNotify(NetMsg.MSG_CREATE_ROLE, HandleCreateRole);
                ClientEventMgr.GetInstance().SubscribeClientEvent((int)ClientEvent.CE_RANDNAME_UPDATE, OnRandNameUpdate);
            }
Exemplo n.º 14
0
    /// <summary>
    /// 选中指定职业的角色
    /// </summary>
    /// <param name="rid"></param>
    /// <returns></returns>
    public bool SelectActorByVocation(uint rid, Action finishCallback)
    {
        int index = -1;

        for (int i = 0; i < mRoleData.Count; i++)
        {
            if (mRoleData[i] != null)
            {
                if (mRoleData[i].rid == rid)
                {
                    index = i;
                    break;
                }
            }
        }

        if (index >= 0)
        {
            var bSkipLogAni = false; // 跳过登场动作

            var isAuditAndIos = AuditManager.Instance.AuditAndIOS();
            if (isAuditAndIos)
            {
                if (SDKHelper.GetSwitchModel())
                {
                    bSkipLogAni = true;
                }
                else
                {
                    // SDKHelper.GetFashion() 有配置时,会改变创角初始模型,但该初始模型没有 "登场动作"
                    if (SDKHelper.GetFashion() != 0)
                    {
                        bSkipLogAni = true;
                    }
                }
            }

            if (bSkipLogAni)
            {
                if (finishCallback != null)
                {
                    finishCallback();
                }
                return(SelectActor(index));
            }

            // 播放剧情动画
            // 停止正在播放的
            TimelineManager.Instance.Stop();
            // 保存摄像机的位置和朝向
            Vector3     cameraPositionBeforePlay = mCamera.transform.position;
            Quaternion  cameraRotationBeforePlay = mCamera.transform.rotation;
            List <uint> timelineIds = xc.GameConstHelper.GetUintList("GAME_CREATE_ROLE_TIMELINE_IDS");
            if (timelineIds.Count >= rid)
            {
                TimelineManager.Instance.Play(timelineIds[(int)rid - 1], () =>
                {
                    // 恢复摄像机的位置和朝向
                    mCamera.transform.position = cameraPositionBeforePlay;
                    mCamera.transform.rotation = cameraRotationBeforePlay;

                    if (finishCallback != null)
                    {
                        finishCallback();
                    }
                });
            }

            return(SelectActor(index));
        }
        else
        {
            GameDebug.LogError("CreateActorScene.MoveToActorByVocation 找不到Rid 对应的 Index,Rid:" + rid.ToString());
        }

        return(false);
    }