示例#1
0
        private static void ApplyAllHooks()
        {
            Debug.Log("Applying monkland");

            #region Entities
            AbstractPhysicalObjectHK.ApplyHook();
            CreatureHK.ApplyHook();
            PlayerGraphicsHK.ApplyHook();
            PlayerHK.ApplyHook();
            RockHK.ApplyHook();
            RoomHK.ApplyHook();
            SpearHK.ApplyHook();
            WeaponHK.ApplyHook();
            #endregion Entities

            #region Menus
            MainMenuHK.ApplyHook();
            HUDHK.ApplyHook();
            //RainMeterHK.ApplyHook();
            #endregion Menus

            #region OverWorld
            AbstractRoomHK.ApplyHook();
            OverWorldHK.ApplyHook();
            ShortcutHandlerHK.ApplyHook();
            #endregion OverWorld

            #region Others
            ProcessManagerHK.ApplyHook();
            RainWorldGameHK.ApplyHook();
            RainWorldHK.ApplyHook();
            #endregion Others
        }
示例#2
0
 public override void Singal(MenuObject sender, string message)
 {
     if (message == "EXIT")
     {
         if (manager.musicPlayer != null)
         {
             manager.musicPlayer.FadeOutAllSongs(5f);
             this.manager.musicPlayer.MenuRequestsSong("RW_8 - Sundown", 1.4f, 2f);
         }
         manager.RequestMainProcessSwitch(ProcessManager.ProcessID.MainMenu);
         //MonklandSteamManager.instance.OnGameExit();
         //Steamworks.SteamMatchmaking.LeaveLobby( SteamManagement.MonklandSteamManager.lobbyID );
     }
     else if (message == "STARTLOBBY")
     {
         base.PlaySound(SoundID.MENU_Switch_Page_In);
         ProcessManagerHK.ImmediateSwitchCustom(this.manager, new SteamMultiplayerMenu(this.manager, true)); //opens lobby finder menu menu
     }
     else if (message.Contains("JOIN"))
     {
         int lobby = int.Parse(message.Substring(4));
         if (lobby < MonklandSteamManager.lobbies.Count && !MonklandSteamManager.joining && !MonklandSteamManager.searching && MonklandSteamManager.lobbies[lobby].version == Monkland.VERSION)
         {
             MonklandSteamManager.instance.JoinLobby(MonklandSteamManager.lobbies[lobby].ID);
         }
     }
     else if (message.Contains("REFRESH"))
     {
         if (!MonklandSteamManager.searching && !MonklandSteamManager.joining)
         {
             MonklandSteamManager.instance.FindLobbies();
         }
     }
 }
示例#3
0
        public void LobbyEntered(LobbyEnter_t enterLobby)
        {
            connectedPlayers.Clear();
            otherPlayers.Clear();
            ResetManagers();
            {
                if (!(RainWorldHK.mainRW.processManager.currentMainLoop is SteamMultiplayerMenu))
                {
                    ProcessManagerHK.ImmediateSwitchCustom(RainWorldHK.mainRW.processManager, new SteamMultiplayerMenu(RainWorldHK.mainRW.processManager));
                }
            }

            joining = false;
            lobbyID = (CSteamID)enterLobby.m_ulSteamIDLobby;
            int playerCount = SteamMatchmaking.GetNumLobbyMembers((CSteamID)enterLobby.m_ulSteamIDLobby);

            MultiplayerChat.AddChat("Entered Lobby!");

            //Send packets to all players, to establish P2P connections with them
            if (playerCount > 1)
            {
                for (int i = 0; i < playerCount; i++)
                {
                    CSteamID lobbyMember = SteamMatchmaking.GetLobbyMemberByIndex(lobbyID, i);
                    SteamNetworking.SendP2PPacket(lobbyMember, new byte[] { 255 }, 1, EP2PSend.k_EP2PSendReliable, 0);
                    SteamNetworking.SendP2PPacket(lobbyMember, new byte[] { 255 }, 1, EP2PSend.k_EP2PSendReliable, 1);
                    SteamNetworking.SendP2PPacket(lobbyMember, new byte[] { 255 }, 1, EP2PSend.k_EP2PSendReliable, 2);
                    if (!connectedPlayers.Contains(lobbyMember.m_SteamID))
                    {
                        connectedPlayers.Add(lobbyMember.m_SteamID);
                        PlayerJoinedManagers(lobbyMember.m_SteamID);
                    }
                    if (lobbyMember != SteamUser.GetSteamID())
                    {
                        otherPlayers.Add(lobbyMember.m_SteamID);
                    }
                }
            }

            //Set up network data
            NetworkGameManager.managerID = ulong.Parse(SteamMatchmaking.GetLobbyData(lobbyID, MANAGER_ID));
            NetworkGameManager.playerID  = SteamUser.GetSteamID().m_SteamID;
            if (NetworkGameManager.managerID != NetworkGameManager.playerID)
            {
                lobbyInfo = new LobbyInfo((CSteamID)enterLobby.m_ulSteamIDLobby);
                lobbyInfo.UpdateLobbyInfo((CSteamID)enterLobby.m_ulSteamIDLobby);
                lobbyInfo.owner = new CSteamID(NetworkGameManager.managerID);
            }

            if (!connectedPlayers.Contains(SteamUser.GetSteamID().m_SteamID))
            {
                connectedPlayers.Add(SteamUser.GetSteamID().m_SteamID);
                PlayerJoinedManagers(SteamUser.GetSteamID().m_SteamID);
            }

            MultiplayerChat.AddChat("This game's manager is " + SteamFriends.GetFriendPersonaName((CSteamID)NetworkGameManager.managerID));
            isInGame = true;
            Log("Entered Lobby! \nThis game's manager is " + SteamFriends.GetFriendPersonaName((CSteamID)NetworkGameManager.managerID));
        }
示例#4
0
 private static void SingalHK(On.Menu.MainMenu.orig_Singal orig, MainMenu self, MenuObject sender, string message)
 {
     if (message == "COOP")
     {
         self.PlaySound(SoundID.MENU_Switch_Page_In);
         ProcessManagerHK.ImmediateSwitchCustom(self.manager, new LobbyFinderMenu(self.manager)); //opens lobby finder menu menu
         return;
     }
     orig(self, sender, message);
 }
示例#5
0
 public void LobbyJoinRequested(GameLobbyJoinRequested_t request)
 {//Shift-Tab Menu
     {
         if (RainWorldHK.mainRW.processManager.currentMainLoop is SteamMultiplayerMenu)
         {
             if (lobbyID.m_SteamID != 0)
             {
                 LeaveLobby();
             }
         }
         ProcessManagerHK.ImmediateSwitchCustom(RainWorldHK.mainRW.processManager, new SteamMultiplayerMenu(RainWorldHK.mainRW.processManager));
     }
     joining = true;
     SteamMatchmaking.JoinLobby(request.m_steamIDLobby);
 }
示例#6
0
 public override void Singal(MenuObject sender, string message)
 {
     if (message == "EXIT")
     {
         //if (manager.musicPlayer != null) {
         //    manager.musicPlayer.FadeOutAllSongs(5f);
         //    this.manager.musicPlayer.MenuRequestsSong("RW_8 - Sundown", 1.4f, 2f);
         //}
         //manager.RequestMainProcessSwitch( ProcessManager.ProcessID.MainMenu );
         MonklandSteamManager.instance.OnGameExit();
         Steamworks.SteamMatchmaking.LeaveLobby(SteamManagement.MonklandSteamManager.lobbyID);
         ProcessManagerHK.ImmediateSwitchCustom(this.manager, new LobbyFinderMenu(this.manager)); //opens lobby finder menu menu
     }
     else if (message == "READYUP")
     {
         MonklandSteamManager.GameManager.SendColor(NetworkGameManager.UtilMessageType.BodyColorR);
         MonklandSteamManager.GameManager.SendColor(NetworkGameManager.UtilMessageType.BodyColorG);
         MonklandSteamManager.GameManager.SendColor(NetworkGameManager.UtilMessageType.BodyColorB);
         MonklandSteamManager.GameManager.SendColor(NetworkGameManager.UtilMessageType.EyeColorR);
         MonklandSteamManager.GameManager.SendColor(NetworkGameManager.UtilMessageType.EyeColorG);
         MonklandSteamManager.GameManager.SendColor(NetworkGameManager.UtilMessageType.EyeColorB);
         MonklandSteamManager.GameManager.ToggleReady();
     }
     else if (message == "STARTGAME")
     {
         if (manager.musicPlayer != null)
         {
             manager.musicPlayer.FadeOutAllSongs(5f);
         }
         if (NetworkGameManager.isManager)
         {
             settingsLabel.text = "";
             bodyLabel.text     = "";
             eyesLabel.text     = "";
             base.PlaySound(SoundID.MENU_Switch_Page_In);
             gameStarting = true;
             MonklandSteamManager.GameManager.QueueStart();
         }
     }
 }