public void AfterInvoke(InvocationInfo info, ref object returnValue) { switch (info.TargetMethod ()) { case "Start": { if (playing) { battleModeUI = (BattleModeUI)info.Target (); endGameButton = ((GameObject)typeof(BattleModeUI).GetField ("endTurnButton", BindingFlags.NonPublic | BindingFlags.Instance).GetValue (info.Target())); endGameButton.renderer.material.mainTexture = pauseButton; battleModeUI.StartCoroutine ("FadeInEndTurn"); } } break; case "Init": { if (playing) { typeof(BattleModeUI).GetField("callback", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(info.Target(), this); App.ChatUI.SetEnabled (true); App.ChatUI.SetLocked (false); App.ChatUI.Show (false); App.ChatUI.SetCanOpenContextMenu (false); //activate chat on replays but disable profile or trading menus (wired bugs) } } break; case "Raycast": { if (playing && endGameButton.renderer.material.mainTexture != pauseButton && endGameButton.renderer.material.mainTexture != playButton) { //Console.WriteLine(endGameButton.renderer.material.mainTexture.height+" "+endGameButton.renderer.material.mainTexture.width); if (paused) { endGameButton.renderer.material.mainTexture = playButton; } else { endGameButton.renderer.material.mainTexture = pauseButton; } } } break; } }
public override bool BeforeInvoke(InvocationInfo info, out object returnValue) { if (info.TargetMethod ().Equals ("getButtonRect")) { foreach (StackFrame frame in info.StackTrace().GetFrames()) { if (frame.GetMethod ().Name.Contains ("BeforeInvoke")) break; if (frame.GetMethod ().Name.Contains ("drawEditButton")) { returnValue = typeof(ProfileMenu).GetMethod ("getButtonRect", BindingFlags.NonPublic | BindingFlags.Instance).Invoke (info.Target(), new object[] { 2 }); return true; } } returnValue = null; return false; } if (info.Target () is ProfileMenu && info.TargetMethod().Equals("Start") && App.SceneValues.profilePage.isMe()) { //list them recordList.Clear (); foreach (String file in Directory.GetFiles(this.OwnFolder()+Path.DirectorySeparatorChar+"Records")) { if (file.EndsWith("sgr")) { JsonMessageSplitter jsonms = new JsonMessageSplitter (); String log = File.ReadAllText (file); jsonms.feed(log); jsonms.runParsing(); String line = jsonms.getNextMessage (); bool searching = true; String enemyName = null; //String enemyId = null; String deckName = null; ResourceType type = ResourceType.NONE; while (line != null && searching) { try { Message msg = Message.createMessage (Message.getMessageName(line), line); if (msg is GameInfoMessage) { if ((msg as GameInfoMessage).white.Equals(App.Communicator.getUserScreenName())) { enemyName = (msg as GameInfoMessage).black; //enemyId = (msg as GameInfoMessage).getPlayerProfileId(TileColor.black); } else { enemyName = (msg as GameInfoMessage).white; //enemyId = (msg as GameInfoMessage).getPlayerProfileId(TileColor.white); } deckName = (msg as GameInfoMessage).deck; } if (msg is ActiveResourcesMessage) { type = (msg as ActiveResourcesMessage).types[0]; } if (enemyName != null && type != ResourceType.NONE) searching = false; } catch {} jsonms.runParsing(); line = jsonms.getNextMessage (); } recordList.Add (new Record(File.GetCreationTime(file).ToLongDateString()+" - "+File.GetCreationTime(file).ToLongTimeString(), "VS "+enemyName+" - "+deckName, /*enemyId,*/ file, type)); } } recordListPopup = new GameObject ("Record List").AddComponent<UIListPopup> (); recordListPopup.transform.parent = ((ProfileMenu)info.Target()).transform; Rect frame = (Rect)typeof(ProfileMenu).GetField ("frameRect", BindingFlags.Instance | BindingFlags.NonPublic).GetValue (info.Target()); recordListPopup.Init (new Rect(frame.center.x-frame.width/2.0f, frame.center.y-frame.height/2.0f+32.0f, frame.width, frame.height-(float)Screen.height*0.055f*3.0f), false, true, recordList, this, null, null, false, true, false, true, null, true, false); recordListPopup.enabled = true; recordListPopup.SetOpacity(1f); } if (info.TargetMethod().Equals("drawEditButton")) { Rect rect = (Rect)typeof(ProfileMenu).GetField ("frameRect", BindingFlags.Instance | BindingFlags.NonPublic).GetValue (info.Target()); //LobbyMenu.drawShadowText (new Rect(rect.center.x-(float)Screen.width/8.0f/2.0f, rect.center.y-rect.height/2.0f-(float)Screen.height*0.055f*3.0f-40.0f, (float)Screen.width/8.0f, 35.0f), "Match History", Color.white); if ((bool)typeof(ProfileMenu).GetField ("showEdit", BindingFlags.Instance | BindingFlags.NonPublic).GetValue (info.Target())) { recordListPopup.enabled = false; recordListPopup.SetOpacity(0f); } else { new ScrollsFrame (new Rect(rect.center.x-rect.width/2.0f-20.0f, rect.center.y-rect.height/2.0f, rect.width+40.0f, rect.height-(float)Screen.height*0.055f-20.0f)).AddNinePatch (ScrollsFrame.Border.DARK_CURVED, NinePatch.Patches.CENTER).Draw (); recordListPopup.enabled = true; recordListPopup.SetOpacity(1f); GUIStyle labelSkin = (GUIStyle)typeof(ProfileMenu).GetField ("usernameStyle", BindingFlags.Instance | BindingFlags.NonPublic).GetValue (info.Target()); labelSkin.fontSize = 32; GUI.Label (new Rect(rect.center.x-(float)Screen.width/6.0f/2.0f, rect.center.y-rect.height/2.0f-40.0f, (float)Screen.width/6.0f, 35.0f), "Match History", labelSkin); if (LobbyMenu.drawButton((Rect)typeof(ProfileMenu).GetMethod ("getButtonRect", BindingFlags.NonPublic | BindingFlags.Instance).Invoke (info.Target(), new object[] { 0 }), "Load Replay", (GUISkin)typeof(ProfileMenu).GetField ("guiSkin", BindingFlags.Instance | BindingFlags.NonPublic).GetValue (info.Target()))) { LoadReplay (); } } } return player.BeforeInvoke (info, out returnValue); }
public bool BeforeInvoke(InvocationInfo info, out object returnValue) { switch ((String)info.TargetMethod ()) { case "OnGUI": { if (playing) { typeof(BattleMode).GetMethod ("deselectAllTiles", BindingFlags.Instance | BindingFlags.NonPublic).Invoke (info.Target(), null); } returnValue = null; return false; } case "readNextMessage": { if (playing) { if (paused) { returnValue = true; return true; } if (readNextMsg == false) { returnValue = true; return true; } else { readNextMsg = false; } } } break; case "toggleMenu": { if (playing) { //quit on Esc/Back Arrow playing = false; App.Communicator.setData (""); //App.SceneValues.battleMode = new SceneValues.SV_BattleMode (false); //App.Communicator.isActive = true; SceneLoader.loadScene("_Lobby"); returnValue = null; return true; } } break; case "ShowEndTurn": //case "ShowReconnectPopup": { if (playing) { returnValue = null; return true; } } break; } returnValue = null; return false; }