/// <summary> /// Checks player at start of turn (early) to see if invisibility is one or less and Erasure team present /// </summary> private void CheckStartTurnCapture() { //get correct player status depending on who is in charge of Resistance ActorStatus status = ActorStatus.Active; if (GameManager.i.sideScript.resistanceOverall == SideState.Human) { status = GameManager.i.playerScript.status; } else { status = GameManager.i.aiRebelScript.status; } //only check if player active if (status == ActorStatus.Active) { CaptureDetails details = CheckCaptured(GameManager.i.nodeScript.GetPlayerNodeID()); if (details != null) { //Player captured details.effects = string.Format("{0}They kicked in the door before you could get out of bed{1}", colourNeutral, colourEnd); CapturePlayer(details, true); } } }
/// <summary> /// event handler /// </summary> /// <param name="eventType"></param> /// <param name="Sender"></param> /// <param name="Param"></param> public void OnEvent(EventType eventType, Component Sender, object Param = null) { //detect event type switch (eventType) { case EventType.ChangeColour: SetColours(); break; case EventType.Capture: CaptureDetails details = Param as CaptureDetails; CaptureSomebody(details); break; /*case EventType.ReleasePlayer: * ReleasePlayer(); * break;*/ case EventType.ReleaseActor: Actor actor = Param as Actor; ReleaseActor(actor); break; case EventType.StartTurnEarly: CheckStartTurnCapture(); break; default: Debug.LogError(string.Format("Invalid eventType {0}{1}", eventType, "\n")); break; } }
// // - - - Capture and Release // public void CaptureSomebody(CaptureDetails details) { if (details != null) { if (details.actor == null) { CapturePlayer(details); } else { CaptureActor(details); } } else { Debug.LogError("Invalid CaptureDetails (Null)"); } }
public CaptureDetails GetCaptureDetails(AmazonPayClient client, string captureId, out AmazonPayApiData data) { data = new AmazonPayApiData(); CaptureDetails details = null; var request = new GetCaptureDetailsRequest(); request.SellerId = client.Settings.SellerId; request.AmazonCaptureId = captureId; var response = client.Service.GetCaptureDetails(request); if (response != null && response.IsSetGetCaptureDetailsResult()) { var result = response.GetCaptureDetailsResult; if (result != null && result.IsSetCaptureDetails()) { details = result.CaptureDetails; } } try { data.MessageType = "GetCaptureDetails"; if (response.IsSetResponseMetadata() && response.ResponseMetadata.IsSetRequestId()) { data.MessageId = response.ResponseMetadata.RequestId; } if (details != null) { if (details.IsSetAmazonCaptureId()) { data.CaptureId = details.AmazonCaptureId; } if (details.IsSetCaptureReferenceId()) { data.ReferenceId = details.CaptureReferenceId; } if (details.IsSetCaptureFee()) { data.Fee = new AmazonPayApiPrice(details.CaptureFee.Amount, details.CaptureFee.CurrencyCode); } if (details.IsSetCaptureAmount()) { data.CapturedAmount = new AmazonPayApiPrice(details.CaptureAmount.Amount, details.CaptureAmount.CurrencyCode); } if (details.IsSetRefundedAmount()) { data.RefundedAmount = new AmazonPayApiPrice(details.RefundedAmount.Amount, details.RefundedAmount.CurrencyCode); } if (details.IsSetCreationTimestamp()) { data.Creation = details.CreationTimestamp; } if (details.IsSetCaptureStatus()) { data.ReasonCode = details.CaptureStatus.ReasonCode; data.ReasonDescription = details.CaptureStatus.ReasonDescription; data.State = details.CaptureStatus.State.ToString(); data.StateLastUpdate = details.CaptureStatus.LastUpdateTimestamp; } } } catch (Exception exc) { exc.Dump(); } return(details); }
public static CaptureResponse InvokeCapture(IOffAmazonPaymentsService service, CaptureRequest request) { CaptureResponse response = null; try { response = service.Capture(request); Console.WriteLine("Service Response"); Console.WriteLine("============================================================================="); Console.WriteLine(); Console.WriteLine(" CaptureResponse"); if (response.IsSetCaptureResult()) { Console.WriteLine(" CaptureResult"); CaptureResult captureResult = response.CaptureResult; if (captureResult.IsSetCaptureDetails()) { Console.WriteLine(" CaptureDetails"); CaptureDetails captureDetails = captureResult.CaptureDetails; if (captureDetails.IsSetAmazonCaptureId()) { Console.WriteLine(" AmazonCaptureId"); Console.WriteLine(" {0}", captureDetails.AmazonCaptureId); } if (captureDetails.IsSetCaptureReferenceId()) { Console.WriteLine(" CaptureReferenceId"); Console.WriteLine(" {0}", captureDetails.CaptureReferenceId); } if (captureDetails.IsSetSellerCaptureNote()) { Console.WriteLine(" SellerCaptureNote"); Console.WriteLine(" {0}", captureDetails.SellerCaptureNote); } if (captureDetails.IsSetCaptureAmount()) { Console.WriteLine(" CaptureAmount"); Price captureAmount = captureDetails.CaptureAmount; if (captureAmount.IsSetAmount()) { Console.WriteLine(" Amount"); Console.WriteLine(" {0}", captureAmount.Amount); } if (captureAmount.IsSetCurrencyCode()) { Console.WriteLine(" CurrencyCode"); Console.WriteLine(" {0}", captureAmount.CurrencyCode); } } if (captureDetails.IsSetRefundedAmount()) { Console.WriteLine(" RefundedAmount"); Price refundedAmount = captureDetails.RefundedAmount; if (refundedAmount.IsSetAmount()) { Console.WriteLine(" Amount"); Console.WriteLine(" {0}", refundedAmount.Amount); } if (refundedAmount.IsSetCurrencyCode()) { Console.WriteLine(" CurrencyCode"); Console.WriteLine(" {0}", refundedAmount.CurrencyCode); } } if (captureDetails.IsSetCaptureFee()) { Console.WriteLine(" CaptureFee"); Price captureFee = captureDetails.CaptureFee; if (captureFee.IsSetAmount()) { Console.WriteLine(" Amount"); Console.WriteLine(" {0}", captureFee.Amount); } if (captureFee.IsSetCurrencyCode()) { Console.WriteLine(" CurrencyCode"); Console.WriteLine(" {0}", captureFee.CurrencyCode); } } if (captureDetails.IsSetCreationTimestamp()) { Console.WriteLine(" CreationTimestamp"); Console.WriteLine(" {0}", captureDetails.CreationTimestamp); } if (captureDetails.IsSetProviderCreditSummaryList()) { Console.WriteLine(" ProviderCreditSummaryList"); foreach (ProviderCreditSummary providerCreditSummary in captureDetails.ProviderCreditSummaryList.member) { if (providerCreditSummary.IsSetProviderCreditId()) { Console.WriteLine(" ProviderCreditId"); Console.WriteLine(" {0}", providerCreditSummary.ProviderCreditId); } if (providerCreditSummary.IsSetProviderId()) { Console.WriteLine(" ProviderId"); Console.WriteLine(" {0}", providerCreditSummary.ProviderId); } } } if (captureDetails.IsSetCaptureStatus()) { Console.WriteLine(" CaptureStatus"); Status captureStatus = captureDetails.CaptureStatus; if (captureStatus.IsSetState()) { Console.WriteLine(" State"); Console.WriteLine(" {0}", captureStatus.State); } if (captureStatus.IsSetLastUpdateTimestamp()) { Console.WriteLine(" LastUpdateTimestamp"); Console.WriteLine(" {0}", captureStatus.LastUpdateTimestamp); } if (captureStatus.IsSetReasonCode()) { Console.WriteLine(" ReasonCode"); Console.WriteLine(" {0}", captureStatus.ReasonCode); } if (captureStatus.IsSetReasonDescription()) { Console.WriteLine(" ReasonDescription"); Console.WriteLine(" {0}", captureStatus.ReasonDescription); } } } } if (response.IsSetResponseMetadata()) { Console.WriteLine(" ResponseMetadata"); ResponseMetadata responseMetadata = response.ResponseMetadata; if (responseMetadata.IsSetRequestId()) { Console.WriteLine(" RequestId"); Console.WriteLine(" {0}", responseMetadata.RequestId); } } Console.WriteLine(); } catch (OffAmazonPaymentsServiceException ex) { PrintException(ex); } return(response); }
/// <summary> /// Checks if AI/Human Resistance player/actor captured by an Erasure team at the node (must have invisibility 1 or less). Returns null if not. /// parameters vary if an 'APB' or a 'SecurityAlert' in play /// ActorID is default '999' for player /// </summary> /// <param name="node"></param> /// <returns></returns> public CaptureDetails CheckCaptured(int nodeID, int actorID = 999) { CaptureDetails details = null; Node node = GameManager.i.dataScript.GetNode(nodeID); Team team = null; if (node != null) { //get correct player status depending on who is in charge of Resistance ActorStatus status = ActorStatus.Active; if (GameManager.i.sideScript.resistanceOverall == SideState.Human) { status = GameManager.i.playerScript.status; } else { status = GameManager.i.aiRebelScript.status; } //correct state if (status == ActorStatus.Active) { //Player if (actorID == GameManager.i.playerScript.actorID) { //check player at node if (nodeID == GameManager.i.nodeScript.GetPlayerNodeID()) { //Erasure team picks up player/actor immediately if invisibility low enough if (CheckCaptureVisibility(GameManager.i.playerScript.Invisibility) == true) { int teamID = node.CheckTeamPresent(teamErasureID); if (teamID > -1) { team = GameManager.i.dataScript.GetTeam(teamID); if (team != null) { //Player Captured details = new CaptureDetails { node = node, team = team, actor = null }; Debug.LogFormat("[Ply] CaptureManager.cs -> CheckCaptured: Resistance Player is captured by an Erasure team at {0}, {1}, id {2}{3}", node.nodeName, node.Arc.name, node.nodeID, "\n"); //history GameManager.i.dataScript.AddHistoryPlayer(new HistoryActor() { text = "CAPTURED by an Erasure Team", district = node.nodeName }); } else { Debug.LogError(string.Format("Invalid team (Null) for teamID {0}", teamID)); } } //Security Alert -> check if an Erasure team is in a neighbouring node if (GameManager.i.turnScript.authoritySecurityState == AuthoritySecurityState.SecurityAlert) { team = CheckCaptureAlert(node); if (team != null) { //Player Captured details = new CaptureDetails { node = node, team = team, actor = null }; Debug.LogFormat("[Ply] CaptureManager.cs -> CheckCaptured: Resistance Player is captured by an Erasure team at {0}, {1}, id {2}{3}", node.nodeName, node.Arc.name, node.nodeID, "\n"); //history GameManager.i.dataScript.AddHistoryPlayer(new HistoryActor() { text = "CAPTURED by an Erasure Team", district = node.nodeName }); } } } } else { Debug.LogError(string.Format("Player not at the nodeID {0}", nodeID)); } } else { //Actor Actor actor = GameManager.i.dataScript.GetActor(actorID); if (actor != null) { //Erasure team picks up player/actor immediately if invisibility 0 if (CheckCaptureVisibility(actor.GetDatapoint(ActorDatapoint.Invisibility2)) == true) { int teamID = node.CheckTeamPresent(teamErasureID); if (teamID > -1) { team = GameManager.i.dataScript.GetTeam(teamID); if (team != null) { //Actor Captured details = new CaptureDetails { node = node, team = team, actor = actor }; Debug.LogFormat("[Ply] CaptureManager.cs -> CheckCaptured: {0}, {1}, is captured by an Erasure team at {2}, {3}, id {4}{5}", actor.actorName, actor.arc.name, node.nodeName, node.Arc.name, node.nodeID, "\n"); } else { Debug.LogError(string.Format("Invalid team (Null) for teamID {0}", teamID)); } } //Security Alert -> Check if an Erasure team is in a neighbouring node if (GameManager.i.turnScript.authoritySecurityState == AuthoritySecurityState.SecurityAlert) { team = CheckCaptureAlert(node); if (team != null) { //Actor Captured details = new CaptureDetails { node = node, team = team, actor = actor }; Debug.LogFormat("[Ply] CaptureManager.cs -> CheckCaptured: {0}, {1}, is captured by an Erasure team at {2}, {3}, id {4}{5}", actor.actorName, actor.arc.name, node.nodeName, node.Arc.name, node.nodeID, "\n"); } } } } else { Debug.LogError(string.Format("Invalid actor (Null) for actorID {0}", actorID)); } } } } else { Debug.LogError(string.Format("Invalid node (Null) for nodeID {0}", nodeID)); } //return CaptureDetails return(details); }
/// <summary> /// Resistance Actor (Human/AI) captured /// NOTE: node, team and actor checked for null by parent method /// </summary> /// <param name="node"></param> /// <param name="team"></param> /// <param name="actor"></param> private void CaptureActor(CaptureDetails details) { string text = string.Format("{0}, {1}, Captured at \"{2}\", {3}", details.actor.actorName, details.actor.arc.name, details.node.nodeName, details.node.Arc.name); //message GameManager.i.messageScript.ActorCapture(text, details.node, details.team, details.actor.actorID); //AutoRun (both sides) if (GameManager.i.turnScript.CheckIsAutoRun() == true) { string textAutoRun = string.Format("{0}{1}{2}, {3}Captured{4}", colourAlert, details.actor.arc.name, colourEnd, colourBad, colourEnd); GameManager.i.dataScript.AddHistoryAutoRun(textAutoRun); } //detention period details.actor.captureTimer = captureTimerValue; //raise city loyalty int cause = GameManager.i.cityScript.CityLoyalty; cause += actorCaptured; cause = Mathf.Min(GameManager.i.cityScript.maxCityLoyalty, cause); GameManager.i.cityScript.CityLoyalty = cause; //invisibility set to zero (most likely already is) details.actor.SetDatapoint(ActorDatapoint.Invisibility2, 0); //history details.actor.AddHistory(new HistoryActor() { text = string.Format("Captured at {0}", details.node.nodeName) }); //update map GameManager.i.nodeScript.NodeRedraw = true; //update contacts GameManager.i.contactScript.UpdateNodeContacts(); //admin GameManager.i.actorScript.numOfActiveActors--; details.actor.Status = ActorStatus.Captured; details.actor.inactiveStatus = ActorInactive.None; details.actor.tooltipStatus = ActorTooltip.Captured; details.actor.nodeCaptured = details.node.nodeID; details.actor.numOfTimesCaptured++; if (GameManager.i.sideScript.resistanceOverall == SideState.Human) { //effects builder StringBuilder builder = new StringBuilder(); //any carry over text? if (string.IsNullOrEmpty(details.effects) == false) { builder.Append(string.Format("{0}{1}{2}", details.effects, "\n", "\n")); } builder.Append(string.Format("{0}{1} has been Captured{2}{3}{4}", colourBad, details.actor.arc.name, colourEnd, "\n", "\n")); builder.AppendFormat("{0}City Loyalty +{1}{2}{3}{4}", colourBad, actorCaptured, colourEnd, "\n", "\n"); //reduce actor alpha to show inactive (sprite and text) GameManager.i.actorPanelScript.UpdateActorAlpha(details.actor.slotID, GameManager.i.guiScript.alphaInactive); //popUpFixed -> don't wait for an outcome Msg, display straight away GameManager.i.popUpFixedScript.SetData(details.actor.slotID, "CAPTURED!"); //actor captured outcome window ModalOutcomeDetails outcomeDetails = new ModalOutcomeDetails { textTop = text, textBottom = builder.ToString(), sprite = GameManager.i.spriteScript.errorSprite, isAction = false, side = GameManager.i.globalScript.sideResistance }; //edge case of Inactive player and Authority AI capture an actor which may (?) generate a message that'll upset the info pipeline. If player active, display at time of action, otherwise put in pipeline if (GameManager.i.playerScript.status != ActorStatus.Active) { outcomeDetails.type = MsgPipelineType.CaptureActor; } EventManager.i.PostNotification(EventType.OutcomeOpen, this, outcomeDetails, "CaptureManager.cs -> CaptureActor"); } }
/// <summary> /// Player captured. /// Note: Node and Team already checked for null by parent method /// </summary> /// <param name="node"></param> /// <param name="team"></param> private void CapturePlayer(CaptureDetails details, bool isStartOfTurn = false) { //PLAYER CAPTURED string text = string.Format("Player Captured at {0}{1}{2}, {3}{4}{5} district by {6}{7} {8}{9}", colourAlert, details.node.nodeName, colourEnd, colourAlert, details.node.Arc.name, colourEnd, colourBad, details.team.arc.name, details.team.teamName, colourEnd); //AutoRun (both sides) if (GameManager.i.turnScript.CheckIsAutoRun() == true) { string textAutoRun = string.Format("{0} {1}Captured{2}", GameManager.i.playerScript.GetPlayerNameResistance(), colourBad, colourEnd); GameManager.i.dataScript.AddHistoryAutoRun(textAutoRun); } //detention period -> Note: Player only ever incarcerated for one turn (needs to be '2' for sequencing issues) GameManager.i.actorScript.captureTimerPlayer = 2; //effects builder StringBuilder builder = new StringBuilder(); //any carry over text? if (string.IsNullOrEmpty(details.effects) == false) { builder.Append(string.Format("{0}{1}{2}", details.effects, "\n", "\n")); } builder.Append(string.Format("{0}Player has been Captured{1}{2}{3}", colourBad, colourEnd, "\n", "\n")); //message GameManager.i.messageScript.ActorCapture(text, details.node, details.team); //update node trackers GameManager.i.nodeScript.nodePlayer = -1; GameManager.i.nodeScript.nodeCaptured = details.node.nodeID; //Raise city loyalty int cause = GameManager.i.cityScript.CityLoyalty; cause += actorCaptured; cause = Mathf.Min(GameManager.i.cityScript.maxCityLoyalty, cause); GameManager.i.cityScript.CityLoyalty = cause; //invisibility set to zero (most likely already is) GameManager.i.playerScript.Invisibility = 0; //statistics GameManager.i.dataScript.StatisticIncrement(StatType.PlayerCaptured); //update map GameManager.i.nodeScript.NodeRedraw = true; //set security state back to normal GameManager.i.authorityScript.SetAuthoritySecurityState("Security measures have been cancelled", string.Format("{0}, Player, has been CAPTURED", GameManager.i.playerScript.PlayerName)); //change player state if (GameManager.i.sideScript.resistanceOverall == SideState.Human) { //Human resistance player GameManager.i.playerScript.status = ActorStatus.Captured; GameManager.i.playerScript.tooltipStatus = ActorTooltip.Captured; GameManager.i.playerScript.inactiveStatus = ActorInactive.None; //AI side tab GameManager.i.aiScript.UpdateSideTabData(); //add power to authority actor who owns the team (only if they are still OnMap if (GameManager.i.sideScript.authorityOverall == SideState.Human) { if (GameManager.i.dataScript.CheckActorSlotStatus(details.team.actorSlotID, GameManager.i.globalScript.sideAuthority) == true) { Actor actor = GameManager.i.dataScript.GetCurrentActor(details.team.actorSlotID, GameManager.i.globalScript.sideAuthority); if (actor != null) { actor.Power++; } else { Debug.LogError(string.Format("Invalid actor (null) from team.ActorSlotID {0}", details.team.actorSlotID)); } } } builder.AppendFormat("{0}City Loyalty +{1}{2}{3}{4}", colourBad, actorCaptured, colourEnd, "\n", "\n"); //Gear confiscated int numOfGear = GameManager.i.playerScript.CheckNumOfGear(); if (numOfGear > 0) { List <string> listOfGear = GameManager.i.playerScript.GetListOfGear(); if (listOfGear != null) { //reverse loop through list of gear and remove all for (int i = listOfGear.Count - 1; i >= 0; i--) { GameManager.i.playerScript.RemoveGear(listOfGear[i], true); } builder.Append(string.Format("{0}Gear confiscated ({1} item{2}){3}", colourBad, numOfGear, numOfGear != 1 ? "s" : "", colourEnd)); } else { Debug.LogError("Invalid listOfGear (Null)"); } } //switch off flashing red indicator on top widget UI EventManager.i.PostNotification(EventType.StopSecurityFlash, this, null, "CaptureManager.cs -> CapturePlayer"); //reduce player alpha to show inactive (sprite and text) GameManager.i.actorPanelScript.UpdatePlayerAlpha(GameManager.i.guiScript.alphaInactive); //player captured outcome window ModalOutcomeDetails outcomeDetails = new ModalOutcomeDetails { textTop = text, textBottom = builder.ToString(), sprite = GameManager.i.spriteScript.capturedSprite, isAction = false, side = GameManager.i.globalScript.sideResistance, type = MsgPipelineType.CapturePlayer, help0 = "capture_0", help1 = "capture_1", help2 = "capture_2", help3 = "capture_3" }; if (GameManager.i.guiScript.InfoPipelineAdd(outcomeDetails) == false) { Debug.LogWarningFormat("Player Captured infoPipeline message FAILED to be added to dictOfPipeline"); } /*EventManager.instance.PostNotification(EventType.OpenOutcomeWindow, this, outcomeDetails, "CaptureManager.cs -> CapturePlayer"); NO NEED AS IN INFOPIPELINE ALREADY */ } else { //AI Resistance Player GameManager.i.aiRebelScript.status = ActorStatus.Captured; //Remove Gear GameManager.i.aiRebelScript.GearPoolEmpty("being CAPTURED"); } //invisible node if (GameManager.i.missionScript.mission.npc != null) { GameManager.i.missionScript.mission.npc.AddInvisibleNode(details.node.nodeID); } //popUpFixed -> don't wait for an outcome Msg, display straight away GameManager.i.popUpFixedScript.SetData(PopUpPosition.Player, "CAPTURED!"); GameManager.i.popUpFixedScript.SetData(PopUpPosition.Player, "Gear Lost"); GameManager.i.popUpFixedScript.SetData(PopUpPosition.TopCentre, $"City Loyalty +{actorCaptured}"); GameManager.i.popUpFixedScript.ExecuteFixed(); //Human player captured and not autorun if (GameManager.i.sideScript.resistanceOverall == SideState.Human && GameManager.i.turnScript.CheckIsAutoRun() == false) { //end turn GameManager.i.turnScript.SetActionsToZero(); } }