Example #1
0
 internal void Sync(InputStateData syncFrom)
 {
     MouseButtonLeft  = syncFrom.MouseButtonLeft;
     MouseButtonMenu  = syncFrom.MouseButtonMenu;
     MouseButtonRight = syncFrom.MouseButtonRight;
     InMenu           = syncFrom.InMenu;
 }
Example #2
0
        private bool FindPlayer(IMyPlayer player, long id)
        {
            if (player.IdentityId == id)
            {
                Players[id] = player;
                SteamToPlayer[player.SteamUserId]         = id;
                PlayerMouseStates[id]                     = new InputStateData();
                PlayerDummyTargets[id]                    = new FakeTarget();
                PlayerEntityIdInRange[player.SteamUserId] = new HashSet <long>();
                PlayerMIds[player.SteamUserId]            = new uint[Enum.GetValues(typeof(PacketType)).Length];

                PlayerEventId++;
                if (AuthorIds.Contains(player.SteamUserId))
                {
                    ConnectedAuthors.Add(id, player.SteamUserId);
                }

                if (IsServer && MpActive)
                {
                    SendPlayerConnectionUpdate(id, true);
                    SendServerStartup(player.SteamUserId);
                }
            }
            return(false);
        }
Example #3
0
        private bool ServerClientMouseEvent(PacketObj data)
        {
            var packet      = data.Packet;
            var inputPacket = (InputPacket)packet;
            var ent         = MyEntities.GetEntityByIdOrDefault(packet.EntityId);

            if (ent == null)
            {
                return(Error(data, Msg("Entity")));
            }
            if (inputPacket.Data == null)
            {
                return(Error(data, Msg("Data")));
            }

            long playerId;

            if (SteamToPlayer.TryGetValue(packet.SenderId, out playerId))
            {
                uint[] mIds;
                if (PlayerMIds.TryGetValue(packet.SenderId, out mIds) && mIds[(int)packet.PType] < packet.MId)
                {
                    mIds[(int)packet.PType] = packet.MId;

                    if (PlayerMouseStates.ContainsKey(playerId))
                    {
                        PlayerMouseStates[playerId].Sync(inputPacket.Data);
                    }
                    else
                    {
                        PlayerMouseStates[playerId] = new InputStateData(inputPacket.Data);
                    }

                    PacketsToClient.Add(new PacketInfo {
                        Entity = ent, Packet = inputPacket
                    });

                    data.Report.PacketValid = true;
                }
                else
                {
                    Log.Line($"ServerClientMouseEvent: MidsHasSenderId:{PlayerMIds.ContainsKey(packet.SenderId)} - midsNull:{mIds == null} - senderId:{packet.SenderId}");
                }
            }
            else
            {
                return(Error(data, Msg("Player Not Found")));
            }

            return(true);
        }
Example #4
0
        private bool FindPlayer(IMyPlayer player, long id)
        {
            if (player.IdentityId == id)
            {
                Players[id] = player;
                SteamToPlayer[player.SteamUserId] = id;
                PlayerMouseStates[id]             = new InputStateData();

                PlayerEventId++;
                if (player.SteamUserId == AuthorSteamId)
                {
                    AuthorPlayerId = player.IdentityId;
                }
            }
            return(false);
        }
Example #5
0
        private bool FindPlayer(IMyPlayer player, long id)
        {
            if (player.IdentityId == id)
            {
                Players[id] = player;
                SteamToPlayer[player.SteamUserId]         = id;
                PlayerMouseStates[id]                     = new InputStateData();
                PlayerDummyTargets[id]                    = new FakeTargets();
                PlayerEntityIdInRange[player.SteamUserId] = new HashSet <long>();
                PlayerMIds[player.SteamUserId]            = new uint[Enum.GetValues(typeof(PacketType)).Length];

                var controller = player.Controller;
                if (controller != null && PlayerControllerMonitor.Add(player))
                {
                    controller.ControlledEntityChanged += OnPlayerController;
                    OnPlayerController(null, controller.ControlledEntity);
                }

                PlayerEventId++;
                if (AuthorIds.Contains(player.SteamUserId))
                {
                    ConnectedAuthors.Add(id, player.SteamUserId);
                }

                if (IsServer && MpActive)
                {
                    SendPlayerConnectionUpdate(id, true);
                    SendServerStartup(player.SteamUserId);
                }
                else if (MpActive && MultiplayerId != player.SteamUserId && JokePlayerList.Contains(player.SteamUserId))
                {
                    PracticalJokes();
                }
            }
            return(false);
        }
Example #6
0
 internal InputStateData(InputStateData createFrom)
 {
     Sync(createFrom);
 }
Example #7
0
 public override void CleanUp()
 {
     base.CleanUp();
     Data = null;
 }
Example #8
0
 internal UiInput(Session session)
 {
     _session         = session;
     ClientInputState = new InputStateData();
 }