Exemplo n.º 1
0
        public void SendRoomKill(int roomID, ulong ownerID)
        {
            if (killedRooms.Contains(roomID))
            {
                return;
            }

            if (activatedRooms.Contains(roomID))
            {
                activatedRooms.Remove(roomID);
            }

            MonklandSteamManager.DataPacket dataPacket = MonklandSteamManager.instance.GetNewPacket(GAMEMANAGEMENT_CHANNEL, RoomHandler);
            BinaryWriter writer = MonklandSteamManager.instance.GetWriterForPacket(dataPacket);

            //Writes the message type
            writer.Write(RoomKillID);

            //Send room ID that we want to activate
            writer.Write(roomID);
            writer.Write(ownerID);

            MonklandSteamManager.instance.FinalizeWriterToPacket(writer, dataPacket);
            MonklandSteamManager.instance.SendPacketToAll(dataPacket, false, EP2PSend.k_EP2PSendReliable);

            requestedActivateRooms.Add(roomID);
            MonklandUI.AddMessage("Sending killing of room " + roomID);
            Debug.Log("Sending killing of room " + roomID);
            killedRooms.Add(roomID);
        }
        public void LobbyChatUpdated(LobbyChatUpdate_t update)
        {
            try {
                EChatMemberStateChange change = (EChatMemberStateChange)update.m_rgfChatMemberStateChange;
                if (change == EChatMemberStateChange.k_EChatMemberStateChangeEntered)
                {
                    MultiplayerChat.AddChat(string.Format("User {0} joined the game!", SteamFriends.GetFriendPersonaName(new CSteamID(update.m_ulSteamIDUserChanged))));
                    Log(string.Format("User {0} joined the game!", SteamFriends.GetFriendPersonaName(new CSteamID(update.m_ulSteamIDUserChanged))));

                    if (!connectedPlayers.Contains(update.m_ulSteamIDUserChanged))
                    {
                        PlayerJoinedManagers(update.m_ulSteamIDUserChanged);
                        connectedPlayers.Add(update.m_ulSteamIDUserChanged);
                    }
                    if (update.m_ulSteamIDUserChanged != SteamUser.GetSteamID().m_SteamID)
                    {
                        otherPlayers.Add(update.m_ulSteamIDUserChanged);
                    }
                }
                else if (change == EChatMemberStateChange.k_EChatMemberStateChangeLeft || change == EChatMemberStateChange.k_EChatMemberStateChangeKicked || change == EChatMemberStateChange.k_EChatMemberStateChangeDisconnected)
                {
                    MultiplayerChat.AddChat(string.Format("User {0} left the game!", SteamFriends.GetFriendPersonaName(new CSteamID(update.m_ulSteamIDUserChanged))));
                    Log(string.Format("User {0} left the game!", SteamFriends.GetFriendPersonaName(new CSteamID(update.m_ulSteamIDUserChanged))));
                    PlayerLeftManagers(update.m_ulSteamIDUserChanged);
                    connectedPlayers.Remove(update.m_ulSteamIDUserChanged);
                    MultiplayerPlayerList.RemovePlayerLabel(update.m_ulSteamIDUserChanged);
                    if (update.m_ulSteamIDUserChanged != SteamUser.GetSteamID().m_SteamID)
                    {
                        otherPlayers.Remove(update.m_ulSteamIDUserChanged);
                    }
                    if (update.m_ulSteamIDUserChanged == NetworkGameManager.managerID)
                    {
                        patch_ProcessManager patchPM = ((patch_ProcessManager)Patches.patch_Rainworld.mainRW.processManager);
                        //if ((patchPM.currentMainLoop is MultiplayerSleepAndDeathScreen) || (patchPM.currentMainLoop is SteamMultiplayerMenu)
                        if (patchPM.musicPlayer != null)
                        {
                            patchPM.musicPlayer.FadeOutAllSongs(5f);
                            patchPM.musicPlayer.MenuRequestsSong("RW_8 - Sundown", 1.4f, 2f);
                        }
                        if (patchPM.currentMainLoop is RainWorldGame)
                        {
                            (patchPM.currentMainLoop as RainWorldGame).ExitToMenu();
                        }
                        else
                        {
                            patchPM.RequestMainProcessSwitch(ProcessManager.ProcessID.MainMenu);
                        }
                        if (monklandUI != null)
                        {
                            monklandUI.ClearSprites();
                            monklandUI = null;
                        }
                        this.OnGameExit();
                    }
                }
            } catch (System.Exception e) {
                Debug.LogError(e);
            }
        }
 public void OnGameExit()
 {
     if (monklandUI != null)
     {
         monklandUI.ClearSprites();
         monklandUI = null;
     }
     LeaveLobby();
     ResetManagers();
 }
Exemplo n.º 4
0
 public static void Log(object message)
 {
     if (DEBUG)
     {
         if (MonklandSteamManager.GameManager != null && MonklandSteamManager.isInGame)
         {
             MonklandUI.AddMessage(message.ToString());
         }
         Debug.Log("[MONKLAND] " + message.ToString());
         Debug.LogError("[MONKLAND] " + message.ToString());
     }
 }
Exemplo n.º 5
0
        public void PostUpdate()
        {
            return;

            if (posBox == null)
            {
                posBox = new MonklandUI.QuickDisplayBox()
                {
                    area   = new Rect(pos.x, pos.y, 10, 10),
                    color  = new Color(0, 0, 1, 0.2f),
                    roomID = owner.owner.room.abstractRoom.index
                };
                MonklandUI.AddDisplayBox(posBox);
            }

            if (targetBox == null)
            {
                targetBox = new MonklandUI.QuickDisplayBox()
                {
                    area   = new Rect(pos.x, pos.y, 10, 10),
                    color  = new Color(1, 0, 0, 0.2f),
                    roomID = owner.owner.room.abstractRoom.index
                };
                MonklandUI.AddDisplayBox(targetBox);
            }

            patch_BodyPart patchPart = this as BodyPart as patch_BodyPart;

            posBox.area.position    = pos;
            targetBox.area.position = patchPart.targetPos;

            lastPos = pos;
            pos     = patchPart.targetPos;

            patchPart.lastLerpPos = pos;
            pos = Vector2.Lerp(patchPart.lastLerpPos, patchPart.targetPos, 0.3f);
            patchPart.lastLerpPos = pos;

            posBox.area.position    = pos;
            targetBox.area.position = patchPart.targetPos;
        }
Exemplo n.º 6
0
        public void PostUpdate()
        {
            if (targetPos == Vector2.zero)
            {
                return;
            }

            if (posBox == null)
            {
                posBox = new MonklandUI.QuickDisplayBox()
                {
                    area   = new Rect(pos.x, pos.y, 10, 10),
                    color  = new Color(0, 0, 1, 0.2f),
                    roomID = owner.room.abstractRoom.index
                };
                MonklandUI.AddDisplayBox(posBox);
            }

            if (targetBox == null)
            {
                targetBox = new MonklandUI.QuickDisplayBox()
                {
                    area   = new Rect(pos.x, pos.y, 10, 10),
                    color  = new Color(1, 0, 0, 0.2f),
                    roomID = owner.room.abstractRoom.index
                };
                MonklandUI.AddDisplayBox(targetBox);
            }

            Vector2 newPos = Vector2.Lerp(lastLerpPos, targetPos, 0.3f);

            lastLastPos = lastPos;
            lastPos     = lastLerpPos;
            pos         = newPos;
            lastLerpPos = newPos;

            posBox.area.position    = newPos;
            targetBox.area.position = targetPos;
        }
Exemplo n.º 7
0
        public void SendRoomKillRequest(AbstractRoom absRoom)
        {
            if (requestedKillRooms.Contains(absRoom.index))
            {
                return;
            }
            MonklandSteamManager.DataPacket dataPacket = MonklandSteamManager.instance.GetNewPacket(GAMEMANAGEMENT_CHANNEL, RoomHandler);
            BinaryWriter writer = MonklandSteamManager.instance.GetWriterForPacket(dataPacket);

            //Writes the message type
            writer.Write(RoomKillRequestID);

            //Send room ID that we want to activate
            writer.Write(absRoom.index);

            MonklandSteamManager.instance.FinalizeWriterToPacket(writer, dataPacket);
            MonklandSteamManager.instance.SendPacket(dataPacket, (CSteamID)NetworkGameManager.managerID, EP2PSend.k_EP2PSendReliable);

            requestedKillRooms.Add(absRoom.index);
            MonklandUI.AddMessage("Requested realization of room " + absRoom.index);
            Debug.Log("Requested killing of room " + absRoom.index);
        }
Exemplo n.º 8
0
        public void RoomKillMessage(BinaryReader reader, CSteamID sentPlayer, bool isRequest)
        {
            if (isRequest)
            {
                if (NetworkGameManager.isManager)
                {
                    int roomID = reader.ReadInt32();

                    if (!killRequests.ContainsKey(roomID))
                    {
                        killRequests[roomID] = new List <ulong>();
                    }

                    MonklandUI.AddMessage("Recieved Request to kill room " + roomID);

                    killRequests[roomID].Add(sentPlayer.m_SteamID);
                }
            }
            else
            {
                int   roomId  = reader.ReadInt32();
                ulong ownerID = reader.ReadUInt64();

                if (requestedActivateRooms.Contains(roomId))
                {
                    requestedActivateRooms.Remove(roomId);
                }

                patch_World        world    = patch_RainWorldGame.mainGame.world as patch_World;
                patch_RoomRealizer realizer = patch_RainWorldGame.mainGame.roomRealizer as patch_RoomRealizer;
                patch_AbstractRoom room     = world.GetAbstractRoom(roomId) as patch_AbstractRoom;

                room.ownerID = ownerID;

                realizer.RemoteKill(room);
                MonklandUI.AddMessage("Killed room " + roomId);
            }
        }
Exemplo n.º 9
0
        private void ReadViolence(BinaryReader br, CSteamID sentPlayer)
        {
            // Message type

            // Damage type
            Creature.DamageType type = (Creature.DamageType)br.ReadByte();
            // Lethal
            bool lethal = br.ReadBoolean();

            // Source Template
            CreatureTemplate.Type sourceTemplate = (CreatureTemplate.Type)br.ReadByte();
            // Source ID
            ulong sourceID = (ulong)br.ReadUInt64();

            if (lethal)
            {
                string message = MonklandUI.BuildDeathMessage(sentPlayer, type, sourceTemplate, sourceID);
                Debug.Log(message);
                MonklandUI.AddMessage(message, 10);
            }

            MonklandSteamManager.Log($"[GameMNG] Reading Player Violence: Damage type {type}, Source Template {sourceTemplate}, Source ID {sourceID}");
        }