コード例 #1
0
 public void Init()
 {
     GameLog.Debug("---------------------------LuaManager:Init--------------------------------------------");
     _lua          = new LuaState();
     initLuaBinder = new Thread(StartLuaBinder);
     initLuaBinder.Start();
 }
コード例 #2
0
    public static void Execute(object obj, ElapsedEventArgs args)
    {
        GameLog.Debug("Job starting");
        try
        {
            // FIXME: make this more efficient / don't break our own conventions
            foreach (var connection in GlobalConnectionManifest.WorldClients)
            {
                var client       = connection.Value;
                var connectionId = connection.Key;

                if (client.IsIdle())
                {
                    User user;
                    if (Game.World.WorldData.TryGetValueByIndex(connectionId, out user))
                    {
                        user.Motion(16, 120); // send snore effect
                    }
                    else
                    {
                        GameLog.WarningFormat(
                            "Connection id {0} marked as idle but no corresponding user found...?",
                            connectionId);
                    }
                }
            }

            GameLog.Debug("Job complete");
        }
        catch (Exception e)
        {
            Game.ReportException(e);
            GameLog.Error("Exception occured in job:", e);
        }
    }
コード例 #3
0
ファイル: HeartbeatReaperJob.cs プロジェクト: moseleyc/server
 public static void Execute(object obj, ElapsedEventArgs args)
 {
     GameLog.Debug("Job starting");
     try
     {
         foreach (var connection in GlobalConnectionManifest.WorldClients)
         {
             var  client       = connection.Value;
             var  connectionId = connection.Key;
             User user;
             if (Game.World.WorldData.TryGetValueByIndex(connectionId, out user))
             {
                 if (client.IsHeartbeatExpired())
                 {
                     GameLog.InfoFormat("{0} (connection id {1}: heartbeat expired, disconnecting",
                                        user.Name, connectionId);
                     GlobalConnectionManifest.DeregisterClient(client);
                     World.ControlMessageQueue.Add(new HybrasylControlMessage(ControlOpcodes.CleanupUser,
                                                                              CleanupType.ByConnectionId, connectionId));
                 }
             }
         }
     }
     catch (Exception e)
     {
         Game.ReportException(e);
         GameLog.ErrorFormat("Exception occurred in job:", e);
     }
 }
コード例 #4
0
        private void AppendExtensionComponents()
        {
            var stage = new Stage(this, ConfigurationStore);

            _stage = stage;

            Components.Add(stage);

            var pluginManager = (ArcaeaSimPluginManager)PluginManager;

            var instantiatedIDList = new List <string>();

            foreach (var factoryID in pluginManager.InstancingFactoryIDs)
            {
                var factory   = pluginManager.GetPluginByID <IBaseGameComponentFactory>(factoryID);
                var component = factory?.CreateComponent(this, stage);

                if (component != null)
                {
                    stage.Components.Add(component);
                    instantiatedIDList.Add(factoryID);
                }
            }

            if (instantiatedIDList.Count > 0)
            {
                GameLog.Debug("Instantiated component factories: {0}", string.Join(", ", instantiatedIDList));
            }
            else
            {
                GameLog.Debug("No component factory instantiated.");
            }
        }
コード例 #5
0
ファイル: AppSession.cs プロジェクト: joyhooei/GameDemos
 public virtual void OnAppPause()
 {
     GameLog.Debug("OnAppPause");
     UserPrefs.SetDateTime("AppSession.StartTime", this.StartTime);
     this.PauseTime = DateTime.UtcNow;
     UserPrefs.SetDateTime("AppSession.PauseTime", this.PauseTime);
 }
コード例 #6
0
 public static void Execute(object obj, ElapsedEventArgs args)
 {
     GameLog.Debug("Status tick job starting");
     foreach (var connectionId in GlobalConnectionManifest.WorldClients.Keys)
     {
         User user;
         if (Game.World.WorldData.TryGetValueByIndex(connectionId, out user))
         {
             if (user.ActiveStatusCount > 0 && user.Condition.Alive)
             {
                 World.ControlMessageQueue.Add(new HybrasylControlMessage(ControlOpcodes.StatusTick, user.Id));
             }
         }
     }
     foreach (var wobj in Game.World.ActiveStatuses)
     {
         if (wobj is Creature creature)
         {
             if (creature.Condition.Alive)
             {
                 World.ControlMessageQueue.Add(new HybrasylControlMessage(ControlOpcodes.StatusTick, wobj.Id));
             }
             else
             {
                 Game.World.ActiveStatuses.Remove(wobj);
             }
         }
     }
     GameLog.Debug("Status tick job ending");
 }
コード例 #7
0
ファイル: GameManager.cs プロジェクト: a99677137/FXCXProject
        public void OnTestAsyncEvent(object[] param)
        {
            string test = param[0].ToString();

            GameLog.Debug("<color=#00ff11>---------------------------OnTestAsyncEvent:{0}------------------------------</color>", test);
            EventManager.UnRegisterEvent(DataEvent.TestAsyncEvent, OnTestAsyncEvent);
        }
コード例 #8
0
ファイル: GameManager.cs プロジェクト: a99677137/FXCXProject
 void Tick(uint uDeltaTimeMS)
 {
     a += 1;
     GameLog.Debug("<color=#9900ff>----------------------CurFrame = {0}---------------</color>", a);
     //GameLog.Debug("***************uDeltaTimeMS = {0}", uDeltaTimeMS);
     EventManager.Tick(uDeltaTimeMS);
     MainProcedure.Instance.Tick(uDeltaTimeMS);
 }
コード例 #9
0
ファイル: BaseSceneState.cs プロジェクト: joyhooei/GameDemos
 public override void OnEnter(BaseState <SceneAction> previousState, object data)
 {
     GameLog.Debug(Tag + " OnEnter");
     if (this.BaseSceneController != null)
     {
         this.BaseSceneController.OnEnter();
     }
 }
コード例 #10
0
ファイル: BaseSceneState.cs プロジェクト: joyhooei/GameDemos
 public override void OnExit(BaseState <SceneAction> nextState, object data)
 {
     GameLog.Debug(Tag + " OnExit");
     if (this.BaseSceneController != null)
     {
         this.BaseSceneController.OnExit(nextState == null);
     }
 }
コード例 #11
0
ファイル: Dialogs.cs プロジェクト: Jinori/server
            public override void ShowTo(User invoker, VisibleObject invokee)
            {
                var dialogPacket = base.GenerateBasePacket(invoker, invokee);

                invoker.Enqueue(dialogPacket);
                GameLog.Debug("Sending packet to {Invoker}", invoker.Name);
                RunCallback(invoker, invokee);
            }
コード例 #12
0
ファイル: GameManager.cs プロジェクト: a99677137/FXCXProject
 // Use this for initialization
 void Start()
 {
     GameLog.Debug("***************GameManager:Start**************************************");
     //Test---------------------------
     EventManager.RegisterEvent(DataEvent.TestEvent, OnTestEvent);
     EventManager.RegisterEvent(DataEvent.TestAsyncEvent, OnTestAsyncEvent);
     //Test---------------------------
 }
コード例 #13
0
 void Awake()
 {
     GameLog.Debug(Tag + " Awake");
     if (Main.Instance != null)
     {
         Main.Instance.SceneStateManager.TestState.BaseSceneController = this;
     }
 }
コード例 #14
0
 public void LoadGameInitConfig()
 {
     if (_gameInitConfig_Finish)
     {
         return;
     }
     GameLog.Debug("------------GameConfigManager:LoadGameInitConfig----------");
     ResourceManager.Instance.LoadGameInitConfig();
     _gameInitConfig_Finish = true;
 }
コード例 #15
0
 private static void InitLua()
 {
     if (_gameLua_Finish)
     {
         return;
     }
     GameLog.Debug("------------GameConfigManager:InitLua----------");
     LuaManager.Instance.Start();
     _gameLua_Finish = true;
     EventManager.SendEvent(DataEvent.FinishLoadGameConfig);
 }
コード例 #16
0
        public void InitLoginScene()
        {
            if (IsStartLoadLoginScene)
            {
                return;
            }
            GameLog.Debug("--------------------ScenesManager:InitLoginScene-----------------LoginSceneId = {0}", LoginSceneId);
            IsStartLoadLoginScene = true;

            LoadLoginSceneFinish();//临时测试流程
        }
コード例 #17
0
        public void Tick(uint uDeltaTimeMS)
        {
            switch (_CurLogicType)
            {
            case LogicType.Init:
                GameLog.Debug("--------------------MainProcedure:Tick----------Init----");
                SwitchProcedure(LogicType.Config);
                break;

            case LogicType.Config:
                GameLog.Debug("--------------------MainProcedure:Tick----------Config----");
                GameConfigManager.Instance.LoadGameInitConfig();
                LuaManager.Instance.Init();
                SwitchProcedure(LogicType.DownLoad);
                break;

            case LogicType.DownLoad:
                GameLog.Debug("--------------------MainProcedure:Tick----------DownLoad----");
                //TODO

                SwitchProcedure(LogicType.GameInit);
                break;

            case LogicType.GameInit:
                GameLog.Debug("--------------------MainProcedure:Tick----------GameInit----");
                GameConfigManager.Tick(uDeltaTimeMS);
                ScenesManager.Instance.InitLoginScene();
                GameConfigManager.Instance.GameConfigInit();
                if (_finishLoadGameConfig && _finishLoadLoginScenes)
                {
                    SwitchProcedure(LogicType.Login);
                }
                break;

            case LogicType.Login:
                GameLog.Debug("--------------------MainProcedure:Tick----------Login----");
                //Test----------------------------
                EventManager.SendEvent(DataEvent.TestEvent, "Hello Event!");
                EventManager.SendEventAsync(DataEvent.TestAsyncEvent, "Hello AsyncEvent!");
                //Test----------------------------
                SwitchProcedure(LogicType.Game);
                break;

            case LogicType.Game:
                GameLog.Debug("--------------------MainProcedure:Tick----------Game----");
                //Test----------------------------
                EventManager.SendEvent(DataEvent.TestEvent, "Hello Event2!");    //不会再执行~已被UnRegister了
                EventManager.SendEvent(DataEvent.TestAsyncEvent, "Hello AsyncEvent2!");
                //Test----------------------------
                break;
            }
        }
コード例 #18
0
ファイル: Jobs.cs プロジェクト: Jinori/server
 public static void Execute(object obj, ElapsedEventArgs args)
 {
     GameLog.Debug("Status tick job starting");
     foreach (var connectionId in GlobalConnectionManifest.WorldClients.Keys)
     {
         User user;
         if (World.ActiveUsers.TryGetValue(connectionId, out user))
         {
             World.ControlMessageQueue.Add(new HybrasylControlMessage(ControlOpcodes.StatusTick, user.Name));
         }
     }
     GameLog.Debug("Status tick job ending");
 }
コード例 #19
0
        public void Init()
        {
            GameLog.Debug("---------------------------------------MainProcedure:Init---------------------------------------");
            _CurLogicType = LogicType.Init;

            GameLog.Debug("------------MainProcedure:Init----------Application.dataPath = {0}", Application.dataPath);
            GameLog.Debug("------------MainProcedure:Init----------Application.streamingAssetsPath = {0}", Application.streamingAssetsPath);
            GameLog.Debug("------------MainProcedure:Init----------Application.persistentDataPath = {0}", Application.persistentDataPath);
            GameLog.Debug("------------MainProcedure:Init----------Application.temporaryCachePath = {0}", Application.temporaryCachePath);

            EventManager.RegisterEvent(DataEvent.FinishLoadGameConfig, OnFinishLoadGameConfig);
            EventManager.RegisterEvent(DataEvent.FinishLoadLoginScenes, OnFinishLoadLoginScenes);
        }
コード例 #20
0
        /// <summary>
        /// Remove all statuses from a user.
        /// </summary>
        public void RemoveAllStatuses()
        {
            lock (_currentStatuses)
            {
                foreach (var status in _currentStatuses.Values)
                {
                    _removeStatus(status, false);
                }

                _currentStatuses.Clear();
                GameLog.Debug($"Current status count is {_currentStatuses.Count}");
            }
        }
コード例 #21
0
 public static void OnFxcxPostProcessBuild(BuildTarget target, string pathToBuiltProject)
 {
     if (BuildTarget.Android == target)
     {
         GameLog.Debug("<color=#aa0099>--------------FXCX_PostProcess:OnFxcxPostProcessBuild----Target = Android---------</color>");
         GameLog.Debug("<color=#aa0099>--------------FXCX_PostProcess:OnFxcxPostProcessBuild----pathToBuiltProject = " + pathToBuiltProject + "---------</color>");
         //PostProcessAndroidBuild(pathToBuiltProject);
     }
     else if (BuildTarget.iOS == target)
     {
         GameLog.Debug("<color=#aa0099>--------------FXCX_PostProcess:OnFxcxPostProcessBuild----Target = iOS---------</color>");
         GameLog.Debug("<color=#aa0099>--------------FXCX_PostProcess:OnFxcxPostProcessBuild----pathToBuiltProject = " + pathToBuiltProject + "---------</color>");
     }
 }
コード例 #22
0
        private void StartLuaBinder()
        {
            GameLog.Debug("==============================StartLuaBinder");
            //var startBinderTime = Time.realtimeSinceStartup;//get_realtimeSinceStartup can only be called from the main thread.
            DateTime startBinderTime = System.DateTime.Now;

            LuaBinder.Bind(_lua);
            //var endtBinderTime = Time.realtimeSinceStartup;
            DateTime endtBinderTime = System.DateTime.Now;
            TimeSpan delta          = endtBinderTime - startBinderTime;

            GameLog.Debug("==============================LuaBinderTimeCost = {0}", delta.TotalMilliseconds.ToString());
            _binderFinish = true;
        }
コード例 #23
0
ファイル: AppSession.cs プロジェクト: joyhooei/GameDemos
        public virtual void OnAppResume()
        {
            GameLog.Debug("OnAppResume");
            DateTime utcNow = DateTime.UtcNow;

            if (this.PauseTime > utcNow)
            {
                return;
            }
            if (utcNow > this.PauseTime + AppSession.SessionResetPauseDuration)
            {
                this.CreateNewSession(this.PauseTime);
                this.FireNewSessionEvent();
            }
        }
コード例 #24
0
 public static void Execute(object obj, ElapsedEventArgs args)
 {
     GameLog.Debug("MerchantInventoryRefresh Job starting");
     try
     {
         foreach (Merchant merchant in Game.World.Objects.Values.Where(x => x is Merchant))
         {
             merchant.RestockInventory();
         }
     }
     catch (Exception e)
     {
         Game.ReportException(e);
         GameLog.Error("Exception occured in MerchantInventoryRefresh job:", e);
     }
 }
コード例 #25
0
        public byte[] LoadDataBytesByPath(string path)
        {
            path = HandleFilePath(path);
            byte[] byteArr = null;
#if UNITY_EDITOR
            GameLog.Debug("ResourceBase:LoadDataBytesByPath----fullpath = {0}", path);
            byteArr = System.IO.File.ReadAllBytes(path);
            if (byteArr == null)
            {
                GameLog.Error("ERROR!!!----ResourceBase:LoadDataBytesByPath----path = {0}", path);
                return(byteArr);
            }
#elif UNITY_ANDROID
#elif UNITY_IPHONE
#endif
            return(byteArr);
        }
コード例 #26
0
ファイル: TickHeartbeatJob.cs プロジェクト: hybrasyl/server
    public static void Execute(object obj, ElapsedEventArgs args)
    {
        try
        {
            GameLog.Debug("Job starting");

            foreach (var client in GlobalConnectionManifest.WorldClients.Values)
            {
                client.SendTickHeartbeat();
            }
            GameLog.Debug("Job complete");
        }
        catch (Exception e)
        {
            Game.ReportException(e);
            GameLog.Error("Exception occured in job:", e);
        }
    }
コード例 #27
0
ファイル: Jobs.cs プロジェクト: Jinori/server
            public static void Execute(object obj, ElapsedEventArgs args)
            {
                try
                {
                    GameLog.Debug("Job starting");

                    var now = DateTime.Now.Ticks;
                    foreach (var client in GlobalConnectionManifest.WorldClients.Values)
                    {
                        client.CheckIdle();
                    }
                    GameLog.Debug("Job complete");
                }
                catch (Exception e)
                {
                    GameLog.Error("Exception occured in job:", e);
                }
            }
コード例 #28
0
        private void LoadGameTable()
        {
            if (_gameTable_Finish)
            {
                return;
            }
            GameLog.Debug("------------GameConfigManager:LoadGameTable----------");
            TableManager.Instance.Init();

            //Test
            Only4TestVO dataVO = (Only4TestVO)TableManager.Instance.GetTableData("Only4Test", 1);

            GameLog.Debug("-----------GameConfigManager:LoadGameTable-----Only4Test Value = {0}", dataVO.Name);
            //Test end

            //TODO-----
            _gameTable_Finish = true;
        }
コード例 #29
0
        public void Start()
        {
            if (!_binderFinish || _hasFinish)
            {
                GameLog.Error("ERROR!!!---------------LuaManager:Start-----------------------(!_binderFinish || _hasFinish)");
                return;
            }
            GameLog.Debug("-----------LuaManager:Start-----------------------LuaInit!!!!!");
            var startLuaStartTime = Time.realtimeSinceStartup;

            _lua.Start();
            var endLuaStartTime = Time.realtimeSinceStartup;

            GameLog.Debug("==============================LuaStartTimeCost = {0}", (endLuaStartTime - startLuaStartTime).ToString());

            var startLuaDoFileTime = Time.realtimeSinceStartup;

            try
            {
                _lua.DoFile(LuaRoot);
            }
            catch (Exception e)
            {
                GameLog.Error("ERROR!!!==============================Lua Init Fail!!!!");
                GameLog.Error(e.Message);
            }
            var endLuaDoFileTime = Time.realtimeSinceStartup;

            GameLog.Debug("==============================LuaDoFileTimeCost = {0}", (endLuaDoFileTime - startLuaDoFileTime).ToString());

            var startLuaProjectTime = Time.realtimeSinceStartup;
            var luaStartFunc        = _lua.GetFunction("Start");

            if (luaStartFunc != null)
            {
                luaStartFunc.Call();
            }
            var finishStartLuaProjectTime = Time.realtimeSinceStartup;

            GameLog.Debug("==============================LuaCallFuncTimeCost = {0}", (finishStartLuaProjectTime - startLuaProjectTime).ToString());
            //TODO  LuaEventManager

            Finish();
        }
コード例 #30
0
ファイル: BaseSceneState.cs プロジェクト: joyhooei/GameDemos
    //这里处理一些在各个场景都要用到的事件,如 弹出警告框,货币更新等
    public override void OnAction(SceneAction gameAction, object data)
    {
        //GameLog.Debug("current State : " + Tag + " OnAction " + gameAction);
        SceneStateManager mgr = this.SceneStateManager as SceneStateManager;

        switch (gameAction)
        {
        case SceneAction.Tips:
            break;

        case SceneAction.BackButton:
            this.ChangeState(mgr.InitialState);
            break;

        default:
            GameLog.Debug(Tag + ":" + gameAction + " No Match");
            break;
        }
    }