Beispiel #1
0
	public IEnumerator ProcessTradeOffer (TradeOffer offer) {
		// wait for 2 frames, incase this was a counter offer
		yield return new WaitForEndOfFrame();
		yield return new WaitForEndOfFrame();
		Debug.Log (playerName+": Trade Offer Recieved");
		// process trade offer
		isProcessingTradeOffer = true;
		Debug.Log (playerName+": Processing Trade Offer...");
		OnTradeOfferRecieved(offer);
		while(isProcessingTradeOffer == true){
			yield return new WaitForEndOfFrame();
		}
		Debug.Log (playerName+": Done processing trade offer...");
		// did we accept?
		if(didAcceptTrade == true){
			// make the swap
			Debug.Log ("YAY TRADE ACCEPTED");
			
			// get all the data from the trade
			GamePlayer senderPlayer = offer.GetSender();
			GamePlayer recieverPlayer = offer.GetReciever();
			BoardTile senderProperty = offer.GetSenderProperty();
			BoardTile recieverProperty = offer.GetRecieverProperty();
			// swap the funds
			senderPlayer.money += offer.recieverFunds;
			senderPlayer.money -= offer.senderFunds;
			recieverPlayer.money += offer.senderFunds;
			recieverPlayer.money -= offer.recieverFunds;
			
			// swap the properties
			senderPlayer.RemoveProperty(senderProperty);
			recieverPlayer.RemoveProperty(recieverProperty);
			senderPlayer.AddProperty(recieverProperty);
			recieverPlayer.AddProperty(senderProperty);
			
			// notify the sender that the trade was accepted
			senderPlayer.TradeOfferAccepted();
			UpdateOwnedProperties();
			Debug.Log ("Trade Complete!");
		}
		else{
			// nothing happens, trade failed
			offer.GetSender().TradeOfferDeclined();
			Debug.Log ("TRADE REJECTED");
		}
	}
Beispiel #2
0
	public void ProposeNewTradeOffer(TradeOffer offer){
		pendingTradeOffer = true;
		if(isProcessingTradeOffer == true){
			Debug.Log (playerName+": Already proposing a trade offer, aborting current trade...");
			// decline this offer
			ResolveTradeOffer(false);
		}
		// check if the offer has a recipient
		if(offer.recieverPlayerId == -1){
			// we don't have a trade offer any more
			pendingTradeOffer = false;
			// end the function
			return;
		}
		GamePlayer target = offer.GetReciever();
		// check for a valid offer. otherwise, we just can't make this trade
		// do both players have the required funds
		if(offer.recieverFunds > target.money || offer.senderFunds > money){
			if(offer.senderFunds < 0 || offer.recieverFunds < 0){
			// no more trade offer
			Debug.Log (playerName+": Cannot Propose trade offer as the required funds cannot be transferred");
			pendingTradeOffer = false;
			}
		}
		else{
		Debug.Log (playerName+": New Trade Offer Proposed to "+target.playerName);
		target.StartCoroutine(target.ProcessTradeOffer(offer));
		}
	}