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; }
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)); }