예제 #1
0
        public TargetingData(GameFormationActor source, FormationDistance distance, string priority, int diceAssigned, string fireType)
        {
            this.FireDiceAssigned = diceAssigned;
            this.FirePriority     = priority;
            this.FireType         = fireType;

            this.Source = new TargetingProfile(source);

            this.Target = new TargetingProfile(distance.TargetFormationId, distance.TargetFormationName);

            this.FormationRange = distance.Value;
        }
예제 #2
0
        public AttackEvent(FireOrder fo, GameFormationActor source, FormationDistanceGraph distanceGraph, int percentileRoll = PercentileNotRolled, int exchange = 0, int volley = 0)
            : base("Attack Event", exchange, volley)
        {
            var distance = distanceGraph.GetOrEstablishDistance(source.GetFormationId(), fo.TargetID);

            this.Description              = "Attack Event";
            this.TargetingData            = new TargetingData(source, distance, fo.Priority, fo.DiceAssigned, fo.FireType);
            this.UnitAssignmentPercentile = percentileRoll;

            // Just to avoid any confusion
            this.TargetingData.TargetUnitPercentileRoll = percentileRoll;
        }
예제 #3
0
        public AttackEvent(FireOrder fo, GameFormationActor source, GameFormationActor target, FormationDistanceGraph distanceGraph, int exchange = 0, int volley = 0, int percentileRoll = PercentileNotRolled)
            : base("Attack Event", exchange, volley)
        {
            var distance = distanceGraph.GetOrEstablishDistance(source.GetFormationId(), target.GetFormationId());

            if (target.GetFormationId() != fo.TargetID)
            {
                throw new InvalidOperationException(
                          $"FireOrder specified target formation [{fo.TargetID}]{fo.TargetFormationName} " +
                          $"but target Formation argument in AttackEvent is [{target.GetFormationId()}]{target.GetFormationName()}");
            }

            this.TargetingData            = new TargetingData(source, target, distance, fo.Priority, fo.DiceAssigned, fo.FireType);
            this.UnitAssignmentPercentile = percentileRoll;
        }
예제 #4
0
 public TargetingData(GameFormationActor source, GameFormationActor target, FormationDistance distance, string priority, int diceAssigned, string fireType)
     : this(source, distance, priority, diceAssigned, fireType)
 {
     this.Target.FormationActor = target;
 }
예제 #5
0
 public TargetingProfile(GameFormationActor actor, GameUnitFormationActor unitActor)
     : this(actor.GetFormationId(), actor.GetFormationName(), unitActor.UnitId, unitActor.UnitName)
 {
     this.FormationActor = actor;
     this.UnitActor      = unitActor;
 }
예제 #6
0
 public TargetingProfile(GameFormationActor actor, int unitId = 0, string unitName = "")
     : this(actor.GetFormationId(), actor.GetFormationName(), unitId, unitName)
 {
     this.FormationActor = actor;
 }