コード例 #1
0
        public static void CheckCreatePlayerOwnerCallBack(AbstractGame game)
        {
            if (Catched)
            {
                return;
            }

            FieldInfo createPlayerOwnerInfo = LocalGameUtils.GetCreatePlayerOwnerFunc(game);

            if (createPlayerOwnerInfo == null)
            {
                return;
            }

            if (!(createPlayerOwnerInfo.GetValue(game) is Func <Player, HideoutPlayerOwner> createPlayerOwnerFunc))
            {
                return;
            }

            if (createPlayerOwnerFunc.Method.Name == "CreateOwner")
            {
                return;
            }

            _createOwnerFunc = createPlayerOwnerFunc;
            createPlayerOwnerInfo.SetValue(game, new Func <Player, HideoutPlayerOwner>(CreateOwner));
            Catched = true;
        }
コード例 #2
0
        public static void CheckFinishCallBack(AbstractGame game)
        {
            FieldInfo callBackField = LocalGameUtils.GetFinishCallBack(game);

            if (callBackField == null)
            {
                return;
            }

            if (!(callBackField.GetValue(game) is Callback <ExitStatus, TimeSpan, GClass_GameFinish> finishCallBack))
            {
                return;
            }

            if (finishCallBack.Method.Name == "OnGameFinish")
            {
                return;
            }

            _gameCallBack = finishCallBack;
            callBackField.SetValue(game, new Callback <ExitStatus, TimeSpan, GClass_GameFinish>(OnGameFinish));
        }