コード例 #1
0
        public void AuthorizeKnowledgeExchangeForExistingPlayerFromOtherTeamReceived()
        {
            InitGameMaster();
            var sender    = GetPlayer("testGUID-1111", 1, TeamColour.blue, ActionType.none);
            var addressee = GetPlayer("testGUID-9999", 9, TeamColour.red, ActionType.none);

            sender.SetLocation(1, 3);
            addressee.SetLocation(2, 6);

            defaultGameMaster.RegisterPlayer(sender, sender.GUID, findFreeLocationAndPlacePlayer: false);
            defaultGameMaster.RegisterPlayer(addressee, addressee.GUID, findFreeLocationAndPlacePlayer: false);

            var msg = new AuthorizeKnowledgeExchangeMessage("testGUID-1111", 1, 9);

            // action
            var result = defaultGameMaster.HandleAuthorizeKnowledgeExchange(msg);

            // assert
            Assert.AreEqual(typeof(KnowledgeExchangeRequestMessage), result.GetType());
            Assert.AreEqual(addressee.ID, result.PlayerId);
            Assert.AreEqual(sender.ID, result.SenderPlayerId);
            Assert.IsTrue(defaultGameMaster.exchangeRequestList.Count == 1);
            Assert.AreEqual(sender.ID, defaultGameMaster.exchangeRequestList[0].SenderID);
            Assert.AreEqual(addressee.ID, defaultGameMaster.exchangeRequestList[0].AddresseeID);
            Assert.IsNull(defaultGameMaster.exchangeRequestList[0].SenderData);
        }
コード例 #2
0
        // obsluga wymiany wiadomoci

        public BetweenPlayersAbstractMessage HandleAuthorizeKnowledgeExchange(AuthorizeKnowledgeExchangeMessage msg)
        {
            BetweenPlayersAbstractMessage returnMsg = null;

            Monitor.Enter(lockObject);
            try
            {
                var sender = Players.Where(p => p.GUID == msg.PlayerGUID).FirstOrDefault();
                var addressee = Players.Where(p => p.ID == msg.WithPlayerId).FirstOrDefault();
                var fromId = sender.ID;

                ConsoleWriter.Show("Received Authorize Knowledge Exchange from " + fromId + " to " + msg.WithPlayerId + " ...");

                if (addressee == null) // nie ma takiego gracza w rozgrywce
                {
                    ConsoleWriter.Show("Player with ID: " + msg.WithPlayerId + " does not exist!");

                    returnMsg = new RejectKnowledgeExchangeMessage(0, sender.ID, true);
                }
                else
                {
                    ConsoleWriter.Show("Message sent from PlayerID: " + sender.ID + " to PlayerID: " + addressee.ID);
                    exchangeRequestList.Add(new ExchengeRequestContainer(sender.ID, addressee.ID)); // przechowujemy probe komunikacji - po otrzymaniu DataMessege dopiszemy do struktury

                    returnMsg = new KnowledgeExchangeRequestMessage(msg.WithPlayerId, fromId);
                }
            }
            finally
            {
                Monitor.Exit(lockObject);
            }
            Thread.Sleep((int)GetCosts.KnowledgeExchangeDelay);

            return returnMsg;
        }
コード例 #3
0
        public void AuthorizeKnowledgeExchangeForNonExistingPlayerReceived()
        {
            InitGameMaster();
            var sender    = GetPlayer("testGUID-1111", 1, TeamColour.blue, ActionType.none);
            var addressee = GetPlayer("testGUID-9999", 9, TeamColour.blue, ActionType.none);

            sender.SetLocation(1, 3);
            addressee.SetLocation(2, 6);

            defaultGameMaster.RegisterPlayer(sender, sender.GUID, findFreeLocationAndPlacePlayer: false);
            defaultGameMaster.RegisterPlayer(addressee, addressee.GUID, findFreeLocationAndPlacePlayer: false);

            var msg = new AuthorizeKnowledgeExchangeMessage("testGUID-1111", 1, 10);

            // action
            var result = defaultGameMaster.HandleAuthorizeKnowledgeExchange(msg);

            // assert
            Assert.AreEqual(typeof(RejectKnowledgeExchangeMessage), result.GetType());
            Assert.AreEqual(0ul, result.PlayerId);
            Assert.AreEqual(sender.ID, result.SenderPlayerId);
            Assert.IsTrue((result as RejectKnowledgeExchangeMessage).Permanent);
        }