public void RejectKnowledgeExchangeReceived() { 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); defaultGameMaster.exchangeRequestList.Add(new ExchengeRequestContainer(1, 9)); defaultGameMaster.exchangeRequestList[0].SenderData = new DataMessage(9); var msg = new RejectKnowledgeExchangeMessage(1, 9, false); // action var result = defaultGameMaster.HandleRejectKnowledgeExchange(msg); // assert Assert.AreEqual(typeof(RejectKnowledgeExchangeMessage), result.GetType()); Assert.AreEqual(sender.ID, result.PlayerId); // sender otrzymuje odmowe Assert.AreEqual(addressee.ID, result.SenderPlayerId); // addressee wysyla odmowe Assert.IsTrue(defaultGameMaster.exchangeRequestList.Count == 0); }
protected override Transition HandleResponseMessage(IResponseMessage responseMessage) { if (responseMessage is KnowledgeExchangeRequestMessage knowledgeExchangeRequest) { var initiatorId = knowledgeExchangeRequest.SenderPlayerId; //Console.WriteLine($"Player #{initiatorId} requested communication in state {this}"); IMessage knowledgeExchangeResponse = new RejectKnowledgeExchangeMessage(PlayerStrategyInfo.PlayerId, initiatorId, PlayerStrategyInfo.PlayerGuid); if (IsExchangeWantedWithPlayer(initiatorId)) { knowledgeExchangeResponse = DataMessage.FromBoardData( PlayerStrategyInfo.Board.ToBoardData(PlayerStrategyInfo.PlayerId, initiatorId), false, PlayerStrategyInfo.PlayerGuid); } return(new LoopbackTransition(this, new List <IMessage> { knowledgeExchangeResponse })); } if (responseMessage is DataMessage dataMessage && dataMessage.GoalFields.Length > 1) { HandleSuccessfulKnowledgeExchange(); return(new LoopbackTransition(this, new List <IMessage>())); } return(base.HandleResponseMessage(responseMessage)); }
// 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 RejectKnowledgeExchangeMessage HandleRejectKnowledgeExchange(RejectKnowledgeExchangeMessage msg) { // gracz odbierajacy taki reject message musi sobie zapisac, jezeli to bylo permanentne ? Monitor.Enter(lockObject); try { var request = exchangeRequestList.Where(r => r.SenderID == msg.PlayerId).Where(r => r.AddresseeID == msg.SenderPlayerId).FirstOrDefault(); if (request != null) { exchangeRequestList.Remove(request); } ConsoleWriter.Show("Player with ID: " + msg.SenderPlayerId + " rejected knowledge exchange with Player ID: " + msg.PlayerId); } finally { Monitor.Exit(lockObject); } // bez opoznien return new RejectKnowledgeExchangeMessage(msg.PlayerId, msg.SenderPlayerId, msg.Permanent, msg.PlayerGUID); }
public virtual void HandleRejectKnowledgeExchange(RejectKnowledgeExchangeMessage messageObject) { // poki co - Player olewa }
public override void HandleRejectKnowledgeExchange(RejectKnowledgeExchangeMessage messageObject) { // nic nie robi }