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); }
// 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; }
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); }