예제 #1
0
        private void DrawBattlePaths(Graphics g, Battle battle)
        {
            using (Pen attackerLine = new Pen(Color.Black, 3))
            using (Pen defenderLine = new Pen(Color.Black, 3))
            using (AdjustableArrowCap victorCap = new AdjustableArrowCap(4, 6))
            using (AdjustableArrowCap loserCap = new AdjustableArrowCap(5, 6))
            {
                attackerLine.DashStyle = DashStyle.Dot;
                defenderLine.DashStyle = DashStyle.Dot;

                loserCap.Filled = false;

                Site attackerSite = GetClosestSite(battle.Attacker, battle.Coordinates);
                Site defenderSite = GetClosestSite(battle.Defender, battle.Coordinates);

                attackerLine.Color = battle.Attacker.LineColor;
                defenderLine.Color = battle.Defender.LineColor;
                if (battle.Victor == battle.Attacker)
                {
                    attackerLine.CustomEndCap = victorCap;
                    defenderLine.CustomEndCap = loserCap;
                }
                else if (battle.Victor == battle.Defender)
                {
                    attackerLine.CustomEndCap = loserCap;
                    defenderLine.CustomEndCap = victorCap;
                }

                g.DrawLine(attackerLine, SiteToScreen(attackerSite.Coordinates), SiteToScreen(battle.Coordinates));
                if (defenderSite != null && defenderSite.Coordinates != battle.Coordinates)
                    g.DrawLine(defenderLine, SiteToScreen(defenderSite.Coordinates), SiteToScreen(battle.Coordinates));
            }
        }
예제 #2
0
 public BattlePrinter(Battle battle, World world)
 {
     Battle = battle;
     World = world;
 }