Exemple #1
0
    private void processShot(ShotMessage sm, Connection connection)
    {
        int id     = server.connections[connection];
        int target = sm.targetId;

        server.players[target].Health -= 20;
    }
Exemple #2
0
        protected Message ProcessIncomingEnvelope(Envelope env)
        {
            this.IncomingEnvelopes.Enqueue(env);
            Identifier messageNumber = new Identifier(SubSystem.ProcessID, SubSystem.GetNextSeqNumber());

            appState = SubSystem.appState as GMAppState;
            if (env.Message.GetType() == typeof(ShotMessage))
            {
                Logger.Info("Received a shot message in RespondShot convo");
                ShotMessage shotMessage = (ShotMessage)env.Message;
                GameId = shotMessage.getGameId();
                appState.isAHit(shotMessage.getXcord(), shotMessage.getYcord(), shotMessage.getPlayerId());
                appState.isAWin(shotMessage.getPlayerId());
                appState.P1turn = !appState.P1turn;
                appState.LastX  = shotMessage.getXcord();
                appState.LastY  = shotMessage.getYcord();

                ResultMessage resultMessage = new ResultMessage(appState.lastShotResult, GameId, appState.end, appState.end, false, appState.LastX, appState.LastY, messageNumber, this.ConversationId);
                return(resultMessage);
            }
            else
            {
                Logger.Error("Did not receive a shot message in RespondShot convo");
                return(new ErrorMessage(1, messageNumber, ConversationId));
            }
        }
Exemple #3
0
    public async void sendShot(float force, float angle)
    {
        angle = 0;
        if (!uiblocker.BlockedByUI)
        {
            ShotMessage sm = new ShotMessage();

            sm.force = force;
            await client.room.Send("shoot", sm);
        }
    }
        static void Main()
        {
            _messageClient = new MessagesFilterClient("BasicHttpBinding_IMessagesFilter");

            Console.WriteLine("Please enter your name: ");
            Console.WriteLine("If you want to quit press Q");
            Console.WriteLine("");
            _username = Console.ReadLine();

            if (_username == null || _username.ToUpper() == "Q")
            {
                return;
            }

            bool authentificationSuccess = _messageClient.LogIn(_username);

            if (authentificationSuccess)
            {
                while (true)
                {
                    Console.WriteLine("Q to quit");
                    Console.WriteLine("U to update");
                    Console.WriteLine("S to shot");
                    Console.WriteLine("W to warn");
                    var input = Console.ReadLine();
                    if (input != null && input.ToUpper() == "Q")
                    {
                        break;
                    }

                    Message message = new UpdateMessage();

                    if (input != null && input.ToUpper() == "U")
                    {
                        message = new UpdateMessage();
                    }

                    if (input != null && input.ToUpper() == "S")
                    {
                        message = new ShotMessage();
                    }

                    if (input != null && input.ToUpper() == "W")
                    {
                        message = new WarningMessage();
                    }
                    message.Username = _username;
                    message.X        = GetRandomLocation(-90, 90);
                    message.Y        = GetRandomLocation(-180, 180);
                    _messageClient.ReceiveData(message);
                }
            }
        }
Exemple #5
0
        public void Handle(ShotMessage message)
        {
            IDistanceFindStrategy strategy = new EuclidesStrategy();
            var closestPoliceman           = GetClosetPoliceman(message.X, message.Y, strategy);

            closestPoliceman.RemoveAll(policeman => policeman.Name == message.Username);
            if (closestPoliceman.Count > 2)
            {
                closestPoliceman.RemoveAt(2);
            }

            AddWarningToDispatcher(closestPoliceman, message);
        }
Exemple #6
0
        private static bool ServerProcessShotPatch(NetworkConnection conn, ShotMessage msg)
        {
            try
            {
                var player = conn.GetPlayer();

                if (!player.VanillaInventory.UserInventory.Items.TryGetValue(msg.ShooterWeaponSerial, out var itembase))
                {
                    return(false);
                }

                var item = itembase.GetSynapseItem();

                Vector3 targetPos = Vector3.zero;

                Physics.Raycast(player.CameraReference.transform.position, player.CameraReference.transform.forward, out var raycastthit, 1000f);
                if (raycastthit.collider == null)
                {
                    return(true);
                }

                targetPos = raycastthit.point;
                raycastthit.transform.gameObject.TryGetComponent(out Player target);


                Server.Get.Events.Player.InvokePlayerShootEvent(player, target, targetPos, item, out var allow);
                Server.Get.Events.Player.InvokePlayerItemUseEvent(player, item, Api.Events.SynapseEventArguments.ItemInteractState.Finalizing, ref allow);

                if (allow)
                {
                    if (!ReferenceHub.TryGetHub(conn.identity.gameObject, out ReferenceHub referenceHub))
                    {
                        return(false);
                    }
                    if (msg.ShooterWeaponSerial != referenceHub.inventory.CurItem.SerialNumber)
                    {
                        return(false);
                    }
                    if (referenceHub.inventory.CurInstance is Firearm firearm && firearm.ActionModule.ServerAuthorizeShot())
                    {
                        firearm.HitregModule.ServerProcessShot(msg);
                    }
                    else
                    {
                        return(false);
                    }
                }

                return(false);
            }
Exemple #7
0
        public void ProcessShotMessage(ShotMessage shotMessage)
        {
            ShotEventArgs e = new ShotEventArgs
            {
                PrimaryScore   = shotMessage.PrimaryScore,
                SecondaryScore = shotMessage.SecondaryScore,
                ProgramNumber  = shotMessage.ProgramNumber,
                LaneNumber     = shotMessage.LaneNumber,
                LaneId         = shotMessage.LaneId,
                Ordinal        = shotMessage.ShotNbr,
            };

            OnShot(e);
        }
Exemple #8
0
    public void Shoot()
    {
        Ray        ray = new Ray(transform.position, transform.forward);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit, 500))
        {
            if (hit.collider.tag == "serverplayer")
            {
                ServerPlayer player = hit.collider.gameObject.GetComponent <ServerPlayer>();
                ShotMessage  shot   = new ShotMessage(player.id, time, true);
                toSend.Add(shot);
            }
        }
    }
Exemple #9
0
 public void HandleShot(ShotMessage message)
 {
     _shotHandler.Handle(message);
 }
Exemple #10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ShootingEventArgs"/> class.
 /// </summary>
 /// <param name="shooter"><inheritdoc cref="Shooter"/></param>
 /// <param name="msg"><inheritdoc cref="ShotMessage"/></param>
 public ShootingEventArgs(Player shooter, ShotMessage msg)
 {
     Shooter     = shooter;
     ShotMessage = msg;
 }
Exemple #11
0
 private void AddWarningToDispatcher(List <Policeman> policemen, ShotMessage message)
 {
     HTMLTableGenerator.AddRow(message, policemen);
 }
        public void TestEncodeDecode()
        {
            short      Xcord          = 2;
            short      Ycord          = 2;
            short      gameId         = 12;
            short      playerId       = 1;
            Identifier messageNum     = new Identifier(2, 3);
            Identifier conversationId = new Identifier(44, 449);

            var outGoing1 = new ShotMessage(Xcord, Ycord, gameId, playerId, messageNum, conversationId);
            var outGoing2 = new ShotMessage();

            byte[] bytes1 = outGoing1.encode();
            byte[] bytes2 = outGoing2.encode(Xcord, Ycord, gameId, playerId, messageNum, conversationId);

            var MT1 = Message.decodeMessageType(bytes1);
            var MT2 = Message.decodeMessageType(bytes2);

            Assert.AreEqual((short)9, MT1);
            Assert.AreEqual((short)9, MT2);

            var shot1 = (ShotMessage)Message.decoder(bytes1);
            var shot2 = (ShotMessage)Message.decoder(bytes2);

            Assert.AreEqual(Xcord, shot1.getXcord());
            Assert.AreEqual(Xcord, shot2.getXcord());
            Assert.AreEqual(Ycord, shot1.getYcord());
            Assert.AreEqual(Ycord, shot2.getYcord());
            Assert.AreEqual(gameId, shot1.getGameId());
            Assert.AreEqual(gameId, shot2.getGameId());
            Assert.AreEqual(playerId, shot1.getPlayerId());
            Assert.AreEqual(playerId, shot2.getPlayerId());

            var testIdentifier1 = shot1.getMessageNumber();

            Assert.IsInstanceOfType(testIdentifier1, typeof(Identifier));
            Assert.AreEqual(messageNum.getPid(), testIdentifier1.getPid());
            Assert.AreEqual(messageNum.getSeq(), testIdentifier1.getSeq());
            var testIdentifier2 = shot2.getMessageNumber();

            Assert.IsInstanceOfType(testIdentifier2, typeof(Identifier));
            Assert.AreEqual(messageNum.getPid(), testIdentifier2.getPid());
            Assert.AreEqual(messageNum.getSeq(), testIdentifier2.getSeq());

            testIdentifier1 = shot1.getConversationId();
            Assert.IsInstanceOfType(testIdentifier1, typeof(Identifier));
            Assert.AreEqual(conversationId.getPid(), testIdentifier1.getPid());
            Assert.AreEqual(conversationId.getSeq(), testIdentifier1.getSeq());
            testIdentifier2 = shot2.getConversationId();
            Assert.IsInstanceOfType(testIdentifier2, typeof(Identifier));
            Assert.AreEqual(conversationId.getPid(), testIdentifier2.getPid());
            Assert.AreEqual(conversationId.getSeq(), testIdentifier2.getSeq());

            byte[] badBytes = new byte[2];
            badBytes[0] = 1;
            badBytes[1] = 1;
            badBytes    = bytes1.Concat(badBytes).ToArray();
            try
            {
                Message.decoder(badBytes);
                Assert.Fail();
            }
            catch (Exception e)
            {
                Logger.Debug($"Test passed: {e}");
            }
        }