public CoordinateActionData CallCheckCoordinateModeModification() { CoordinateActionData coordinateActionData = new CoordinateActionData(this); OnCheckCoordinateModeModification?.Invoke(ref coordinateActionData); return(coordinateActionData); }
public override void ActionTake() { CoordinateActionData = HostShip.CallCheckCoordinateModeModification(); if (CoordinateActionData.MaxTargets == 1) { CoordinateTargetSubPhase subphase = Phases.StartTemporarySubPhaseNew <CoordinateTargetSubPhase>( "Select target for Coordinate", Phases.CurrentSubPhase.CallBack ); subphase.HostAction = this; subphase.Start(); } else { CoordinateMultiTargetSubPhase subphase = Phases.StartTemporarySubPhaseNew <CoordinateMultiTargetSubPhase>( "Select targets for Coordinate", Phases.CurrentSubPhase.CallBack ); subphase.HostAction = this; subphase.RequiredPlayer = HostShip.Owner.PlayerNo; subphase.Filter = FilterCoordinateTargets; subphase.MaxToSelect = CoordinateActionData.MaxTargets; subphase.WhenDone = CoordinateTargets; subphase.CoordinateActionData = CoordinateActionData; subphase.DescriptionShort = "Coordinate Action"; subphase.DescriptionLong = "Select one or more other ships.\nThey will each perform an action."; subphase.Start(); } }
private void SetCustomCoordinateMode(ref CoordinateActionData coordinateActionData) { coordinateActionData.MaxTargets = 2; coordinateActionData.SameShipTypeLimit = true; coordinateActionData.SameActionLimit = true; HostShip.OnCheckCoordinateModeModification -= SetCustomCoordinateMode; }