Пример #1
0
    private void OnLevelWasLoaded_(Scene scene, LoadSceneMode mode)
    {
        try
        {
            float x, y, z;
            if (WorldSystem.Instance.GetLookAt(out x, out y, out z))
            {
                m_Target           = null;
                m_IsFollow         = false;
                m_TargetPos        = new UnityEngine.Vector3(x, y, z);
                m_FixedYaw         = 0;
                m_AngularSmoothLag = 0.001f;
                m_SnapSmoothLag    = 0.001f;
                Cut();
            }
            if (null != UnityEngine.Camera.main)
            {
                int layer      = LayerMask.NameToLayer("Detail");
                int detailMask = (1 << layer);
                if (GlobalVariables.Instance.IsHD)
                {
                    UnityEngine.Camera.main.cullingMask |= detailMask;
                }
                else
                {
                    UnityEngine.Camera.main.cullingMask &= (~detailMask);

                    UnityEngine.GameObject go = UnityEngine.GameObject.Find("ResourceHolder");
                    if (go != null)
                    {
                        XOCp_ResourceHolder xocp = go.GetComponent <XOCp_ResourceHolder>();
                        if (xocp != null && xocp.m_ParticleArray.Length > 0)
                        {
                            UnityEngine.GameObject temp = null;
                            for (int i = 0; i < xocp.m_ParticleArray.Length; i++)
                            {
                                temp = xocp.m_ParticleArray[i];
                                if (temp != null)
                                {
                                    if (temp.layer == layer)
                                    {
                                        if (temp.GetComponent <UnityEngine.ParticleSystem>() != null)
                                        {
                                            temp.GetComponent <UnityEngine.ParticleSystem>().Stop();
                                        }
                                        temp.SetActive(false);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        catch (System.Exception ex)
        {
            LogicSystem.LogFromGfx("MainCamera.OnLevelWasLoaded throw exception {0}\n{1}", ex.Message, ex.StackTrace);
        }
    }
Пример #2
0
        public static UnityEngine.Vector3 ConvertVector3D(string vec)
        {
            UnityEngine.Vector3 vector = UnityEngine.Vector3.zero;
            try
            {
                string   strPos = vec;
                string[] resut  = strPos.Split(s_ListSplitString, StringSplitOptions.None);
                vector = new UnityEngine.Vector3(Convert.ToSingle(resut[0]), Convert.ToSingle(resut[1]), Convert.ToSingle(resut[2]));
            }
            catch (System.Exception ex)
            {
                LogicSystem.LogFromGfx("ImpactUtility.ConvertVector3D failed. ex:{0} st:{1}", ex.Message, ex.StackTrace);
            }

            return(vector);
        }
Пример #3
0
 public void UnSubscribe()
 {
     try
     {
         for (int i = 0; i < m_EventList.Count; i++)
         {
             if (m_EventList[i] != null)
             {
                 LogicSystem.EventChannelForGfx.Unsubscribe(m_EventList[i]);
             }
         }
         m_EventList.Clear();
     }
     catch (Exception ex)
     {
         LogicSystem.LogFromGfx("[Error]:Exception:{0}\n{1}", ex.Message, ex.StackTrace);
     }
 }
Пример #4
0
    public void SetCurrentServer(int serverId)
    {
        try
        {
            m_ServerId = serverId;

            // find server list from table
            ServerConfig serverConfig = ServerConfigProvider.Instance.GetDataById(serverId);
            if (serverConfig == null)
            {
                MyDictionary <int, object> serverDict = ServerConfigProvider.Instance.GetData();
                foreach (ServerConfig cfg in serverDict.Values)
                {
                    if (cfg != null)
                    {
                        serverConfig = cfg;
                        m_ServerId   = cfg.GetId();
                        break;
                    }
                }
            }

            // update server configuration
            if (serverConfig != null)
            {
                StrDictionary strDic = StrDictionaryProvider.Instance.GetDataById(201);
                if (strDic != null)
                {
                    lblServerName.text = "" + m_ServerId + strDic.m_String + serverConfig.ServerName;
                }
                else
                {
                    lblServerName.text = "" + m_ServerId + serverConfig.ServerName;
                }
                NormLog.Instance.ServerName = serverConfig.ServerName;
            }
        }
        catch (Exception ex)
        {
            LogicSystem.LogFromGfx("[Error]:Exception:{0}\n{1}", ex.Message, ex.StackTrace);
        }
    }
Пример #5
0
    public void InitSceneIntroduce(int sceneId, int grade, SubSceneType subType)
    {
        try
        {
            NGUITools.SetActive(wipePanel, false);
            NGUITools.SetActive(wipeBtn0.gameObject, false);
            NGUITools.SetActive(wipeBtn1.gameObject, false);
            if (subType == SubSceneType.Common)
            {
                m_SubSceneType = SubSceneType.Common;
                for (int i = 0; i < starArr.Length; ++i)
                {
                    if (starArr[i] != null)
                    {
                        NGUITools.SetActive(starArr[i].gameObject, false);
                    }
                }
                RoleInfo role = LobbyClient.Instance.CurrentRole;
                if (role.SceneInfo.ContainsKey(sceneId))
                {
                    NGUITools.SetActive(wipePanel, true);
                    NGUITools.SetActive(wipeBtn0.gameObject, true);
                    NGUITools.SetActive(wipeBtn1.gameObject, true);
                }
            }
            else
            {
                m_SubSceneType = SubSceneType.Master;
                for (int i = 0; i < starArr.Length; ++i)
                {
                    if (starArr[i] != null)
                    {
                        NGUITools.SetActive(starArr[i].gameObject, true);
                    }
                    if (i < grade)
                    {
                        if (starArr[i] != null)
                        {
                            starArr[i].spriteName = c_BrightStar;
                        }
                    }
                    else
                    {
                        if (starArr[i] != null)
                        {
                            starArr[i].spriteName = c_AshStar;
                        }
                    }
                }
                if (grade >= maxStarNum)
                {
                    NGUITools.SetActive(wipePanel, true);
                    NGUITools.SetActive(wipeBtn0.gameObject, true);
                    NGUITools.SetActive(wipeBtn1.gameObject, true);
                }
            }
            if (uiSceneAward != null)
            {
                uiSceneAward.ShowAwardInfo(sceneId, subType, grade);
            }
            m_SceneId = sceneId;
            Data_SceneConfig sceneCfg  = SceneConfigProvider.Instance.GetSceneConfigById(m_SceneId);
            RoleInfo         role_info = LobbyClient.Instance.CurrentRole;
            if (sceneCfg != null)
            {
                SetName(sceneCfg.m_SceneName);
                SetRecommendFight(sceneCfg.m_RecommendFighting);
                SetCostStatima(sceneCfg.m_CostStamina);
                if (lblSceneIndex != null)
                {
                    lblSceneIndex.text = (1 + sceneCfg.m_Order).ToString();
                }
                string des = sceneCfg.m_SceneDescription.Replace("[\\n]", "\n");
                if (lblIntroduce1 != null)
                {
                    lblIntroduce1.text = des;
                }
                if (role_info != null)
                {
                    SetFightingScore((int)role_info.FightingScore);
                }
                if (lblCurStamina != null)
                {
                    lblCurStamina.text = role_info.CurStamina.ToString();
                }
                //设置掉落数据
                Data_SceneDropOut dropCfg = SceneConfigProvider.Instance.GetSceneDropOutById(sceneCfg.m_DropId);
                if (dropCfg != null)
                {
                    DFMItemIconUtils.Instance.SetItemInfo(ItemIconType.Scene_Award, lblAwardExp, DFMItemIconUtils.Instance.m_Exp, dropCfg.m_Exp);
                    DFMItemIconUtils.Instance.SetItemInfo(ItemIconType.Scene_Award, lblAwardCoin, DFMItemIconUtils.Instance.m_Money, dropCfg.m_GoldSum);

                    SetAwardItem(dropCfg.GetRewardItemByHeroId(role_info.HeroId), dropCfg.m_ItemCountList);
                }
            }
            InitWipeNum();
            InitBtnName();
        }
        catch (Exception ex)
        {
            LogicSystem.LogFromGfx("[Error]:Exception:{0}\n{1}", ex.Message, ex.StackTrace);
        }
    }
Пример #6
0
    // Use this for initialization
    internal void Start()
    {
        UnityEngine.Application.targetFrameRate = 30;
#if (UNITY_IOS || UNITY_ANDROID) && !(UNITY_EDITOR)
        QualitySettings.vSyncCount = 2;
#endif
        try
        {
            if (!GameControler.IsInited)
            {
                // register to game thread
                ArkProfiler.RegisterOutput(LogicSystem.LogFromGfx);
                // register to gfx thread, output to game console
                ArkProfiler.RegisterOutput2(UnityEngine.Debug.Log);

                // register file read handler
                FileReaderProxy.RegisterReadFileHandler(EngineReadFileProxy, EngineFileExistsProxy);

                /// Unity Editor: <path_to_project_folder>/Assets
                /// iOS player: <path_to_player_app_bundle>/<AppName.app>/Data (this folder is read only, use Application.persistentDataPath to save data).
                /// Android: Normally it would point directly to the APK. The exception is if you are running a split binary build in which case it points to the the OBB instead.
                string dataPath = UnityEngine.Application.dataPath;
                /// Point to data path which have write permission
                string persistentDataPath = Application.persistentDataPath;
                /// Point to readonly data, note some platofrm like android points to compressed apk, witch cant be directory accesssed, use www. etc instead
                string streamingAssetsPath = UnityEngine.Application.streamingAssetsPath;
                /// Point to temp data path, may clean by system
                string tempPath = UnityEngine.Application.temporaryCachePath;
                LogicSystem.LogFromGfx("dataPath:{0} persistentDataPath:{1} streamingAssetsPath:{2} tempPath:{3}", dataPath, persistentDataPath, streamingAssetsPath, tempPath);
                Debug.Log(string.Format("dataPath:{0} persistentDataPath:{1} streamingAssetsPath:{2} tempPath:{3}", dataPath, persistentDataPath, streamingAssetsPath, tempPath));

                // store log in tempPath, others to persistentDataPath
#if !UNITY_EDITOR
                GlobalVariables.Instance.IsDevice = true;
#else
                // if in editor, use streamingAssetsPath instead
                GlobalVariables.Instance.IsDevice = false;
#endif

#if UNITY_ANDROID || UNITY_WEBGL
                if (!UnityEngine.Application.isEditor)
                {
                    streamingAssetsPath = persistentDataPath + "/Tables";
                }
#endif

#if UNITY_WEBGL
                // init web socket before gamelogic initialize
                m_WebSocket = new WebGLSocket();
                ArkCrossEngine.Network.WebSocketWrapper.Instance.SetInstance(m_WebSocket);
#endif

                LogSystem.OnOutput2 = (Log_Type type, string msg) =>
                {
#if DEBUG
                    if (Log_Type.LT_Error == type)
                    {
                        UnityEngine.Debug.LogError(msg);
                    }
                    else if (Log_Type.LT_Info != type)
                    {
                        UnityEngine.Debug.LogWarning(msg);
                    }
#endif
                };

                GameControler.Init(tempPath, streamingAssetsPath);

                NormLog.Instance.Init();
                NormLog.Instance.Record(GameEventCode.GameStart);

                LogicSystem.LogFromGfx("game log saved to: {0}", tempPath);
            }

            // try preload all skills used by npc in spec scene, also character
            LogicSystem.OnAfterLoadScene += AfterLoadScene;
        }
        catch (Exception ex)
        {
            LogicSystem.LogErrorFromGfx("GameLogic.Start throw exception:{0}\n{1}", ex.Message, ex.StackTrace);
            Debug.Log(string.Format("GameLogic.Start throw exception:{0}\n{1}", ex.Message, ex.StackTrace));
        }
    }
Пример #7
0
    internal void LateUpdate()
    {
        try
        {
            if (null == UnityEngine.Camera.main || !UnityEngine.Camera.main.enabled)
            {
                m_CameraTransform = null;
                return;
            }
            if (!m_IsShaking && ArkCrossEngine.LobbyClient.Instance.CurrentRole != null)
            {
                if (!m_CameraSlipping && !UICamera.isOverUI)
                {
                    TraceFingers();
                }
                // Auto rotation

                // In free camera mode, check if camera need to slip in or out.
                if (!m_CameraSlipping)
                {
                    // Begin slip camera in.
                    if (m_CurDistance < m_SlipInDistance && !m_InWatchMode)
                    {
                        // Init slipping in.
                        m_CameraSlipping   = true;
                        m_CameraSlippingIn = true;

                        UnityEngine.Vector3    playerBackDir = -m_Target.forward;
                        UnityEngine.Quaternion destRotation  = UnityEngine.Quaternion.LookRotation(playerBackDir);

                        m_SlipDestYawAngle = destRotation.eulerAngles.y;
                        float slipDeltaYawAngle = 0.0f;
                        if (m_SlipDestYawAngle > m_CameraTransform.eulerAngles.y)
                        {
                            if (m_SlipDestYawAngle - m_CameraTransform.eulerAngles.y < 180.0f)
                            {
                                slipDeltaYawAngle = m_SlipDestYawAngle - m_CameraTransform.eulerAngles.y;
                            }
                            else
                            {
                                slipDeltaYawAngle = 360.0f - (m_SlipDestYawAngle - m_CameraTransform.eulerAngles.y);
                            }
                        }
                        else
                        {
                            if (m_CameraTransform.eulerAngles.y - m_SlipDestYawAngle < 180.0f)
                            {
                                slipDeltaYawAngle = m_CameraTransform.eulerAngles.y - m_SlipDestYawAngle;
                            }
                            else
                            {
                                slipDeltaYawAngle = 360.0f - (m_CameraTransform.eulerAngles.y - m_SlipDestYawAngle);
                            }
                        }
                        m_SlipYawSpeed = slipDeltaYawAngle / m_SlipTime;
                        if (m_SlipYawSpeed < 1.0f)
                        {
                            m_SlipYawSpeed = 1.0f;
                        }
                        //
                        m_SlipDestRollAngle = destRotation.eulerAngles.x < m_MinCameraAngle ? m_MinCameraAngle : destRotation.eulerAngles.x;
                        float slipDeltaRollAngle = UnityEngine.Mathf.Abs(m_SlipDestRollAngle - m_CameraTransform.eulerAngles.x);
                        m_SlipRollSpeed = slipDeltaRollAngle / m_SlipTime;
                        //
                        m_SlipDestDistance = m_MinDistance;
                        float slipDeltaDistance = m_CurDistance - m_SlipDestDistance;
                        m_SlipZoomSpeed = slipDeltaDistance / m_SlipTime;

                        //
                        m_SlipOriginalYaw      = m_CameraTransform.eulerAngles.y;
                        m_SlipOriginalRoll     = m_CameraTransform.eulerAngles.x;
                        m_SlipOriginalDistance = m_SlipInDistance + 0.5f;
                    }
                    else if (m_CurDistance >= m_SlipOutDistance && m_InWatchMode)
                    {
                        // Init slipping out.
                        m_CameraSlipping = true;

                        m_SlipDestYawAngle = m_SlipOriginalYaw;
                        float slipDeltaYawAngle = 0.0f;
                        if (m_SlipDestYawAngle > m_CameraTransform.eulerAngles.y)
                        {
                            if (m_SlipDestYawAngle - m_CameraTransform.eulerAngles.y < 180.0f)
                            {
                                slipDeltaYawAngle = m_SlipDestYawAngle - m_CameraTransform.eulerAngles.y;
                            }
                            else
                            {
                                slipDeltaYawAngle = 360.0f - (m_SlipDestYawAngle - m_CameraTransform.eulerAngles.y);
                            }
                        }
                        else
                        {
                            if (m_CameraTransform.eulerAngles.y - m_SlipDestYawAngle < 180.0f)
                            {
                                slipDeltaYawAngle = m_CameraTransform.eulerAngles.y - m_SlipDestYawAngle;
                            }
                            else
                            {
                                slipDeltaYawAngle = 360.0f - (m_CameraTransform.eulerAngles.y - m_SlipDestYawAngle);
                            }
                        }
                        m_SlipYawSpeed = slipDeltaYawAngle / m_SlipTime;
                        if (m_SlipYawSpeed < 1.0f)
                        {
                            m_SlipYawSpeed = 1.0f;
                        }

                        m_SlipDestRollAngle = m_SlipOriginalRoll;
                        float slipDeltaRollAngle = UnityEngine.Mathf.Abs(m_SlipDestRollAngle - m_CameraTransform.eulerAngles.x);
                        m_SlipRollSpeed = slipDeltaRollAngle / m_SlipTime;

                        m_SlipDestDistance = m_SlipOriginalDistance;
                        float slipDeltaDistance = m_SlipDestDistance - m_CurDistance;
                        m_SlipZoomSpeed = slipDeltaDistance / m_SlipTime;
                    }
                }

                // Unlock watch mode in battle scene.
                if (WorldSystem.Instance.IsPvpScene() ||
                    WorldSystem.Instance.IsPveScene() ||
                    WorldSystem.Instance.IsPvapScene() ||
                    WorldSystem.Instance.IsMultiPveScene())
                {
                    m_CameraSlipping   = false;
                    m_CameraSlippingIn = false;
                    m_InWatchMode      = false;

                    if (!m_IsInBattleScene)
                    {
                        m_IsInBattleScene = true;
                        m_CurDistance     = m_MaxDistance;
                    }
                }
                else
                {
                    m_IsInBattleScene = false;
                }

                if (m_CameraSlipping)
                {
                    TouchManager.Instance.joystickEnable = false;

                    bool yawFinished = false;
                    if (m_SlipDestYawAngle > m_CameraTransform.eulerAngles.y)
                    {
                        if (m_SlipDestYawAngle - m_CameraTransform.eulerAngles.y < 180.0f)
                        {
                            m_FixedYaw = m_CameraTransform.eulerAngles.y + m_SlipYawSpeed * Time.deltaTime;
                            if (m_FixedYaw > m_SlipDestYawAngle)
                            {
                                m_FixedYaw  = m_SlipDestYawAngle;
                                yawFinished = true;
                            }
                        }
                        else
                        {
                            m_FixedYaw = m_CameraTransform.eulerAngles.y - m_SlipYawSpeed * Time.deltaTime;
                            if (m_FixedYaw + 360.0f < m_SlipDestYawAngle)
                            {
                                m_FixedYaw  = m_SlipDestYawAngle - 360.0f;
                                yawFinished = true;
                            }
                        }
                    }
                    else
                    {
                        if (m_CameraTransform.eulerAngles.y - m_SlipDestYawAngle < 180.0f)
                        {
                            m_FixedYaw = m_CameraTransform.eulerAngles.y - m_SlipYawSpeed * Time.deltaTime;
                            if (m_FixedYaw < m_SlipDestYawAngle)
                            {
                                m_FixedYaw  = m_SlipDestYawAngle;
                                yawFinished = true;
                            }
                        }
                        else
                        {
                            m_FixedYaw = m_CameraTransform.eulerAngles.y + m_SlipYawSpeed * Time.deltaTime;
                            if (m_FixedYaw > 360.0f + m_SlipDestYawAngle)
                            {
                                m_FixedYaw  = 360.0f + m_SlipDestYawAngle;
                                yawFinished = true;
                            }
                        }
                    }


                    bool rollFinished = false;
                    if (UnityEngine.Mathf.Abs(m_SlipDestRollAngle - m_CameraTransform.eulerAngles.x) > 1.0f)
                    {
                        if (m_SlipDestRollAngle > m_CameraTransform.eulerAngles.x)
                        {
                            m_FixedRoll = m_CameraTransform.eulerAngles.x + m_SlipRollSpeed * Time.deltaTime;
                        }
                        else
                        {
                            m_FixedRoll = m_CameraTransform.eulerAngles.x - m_SlipRollSpeed * Time.deltaTime;
                        }
                    }
                    else
                    {
                        rollFinished = true;
                    }

                    bool zoomFinished = false;
                    if (m_CameraSlippingIn)
                    {
                        m_CurDistance -= m_SlipZoomSpeed * Time.deltaTime;
                        if (m_CurDistance <= m_SlipDestDistance)
                        {
                            m_CurDistance = m_SlipDestDistance;
                            zoomFinished  = true;
                        }
                    }
                    else
                    {
                        m_CurDistance += m_SlipZoomSpeed * Time.deltaTime;
                        if (m_CurDistance >= m_SlipDestDistance)
                        {
                            m_CurDistance = m_SlipDestDistance;
                            zoomFinished  = true;
                        }
                    }

                    if (yawFinished && rollFinished && zoomFinished)
                    {
                        m_CameraSlipping = false;
                        if (m_CameraSlippingIn)
                        {
                            m_CameraSlippingIn = false;
                            m_InWatchMode      = true;
                        }
                        else
                        {
                            m_InWatchMode = false;
                            TouchManager.Instance.joystickEnable = true;
                        }
                    }
                }

                // End Auto rotation
                Apply();
            }
        }
        catch (System.Exception ex)
        {
            LogicSystem.LogFromGfx("MainCamera.LateUpdate throw exception {0}\n{1}", ex.Message, ex.StackTrace);
        }
    }