public void ResetUnit()
 {
     this.flp_Units.Controls.Clear();
     _selectedUnit.Clear();
     foreach (var u in _area.Units)
     {
         var uCtrl = new UnitImageControl { Unit = u, CanSelect = true };
         if (u.Acted)
             uCtrl.Text = "Finish";
         uCtrl.Click += this.UnitClick;
         this.flp_Units.Controls.Add(uCtrl);
     }
 }
        public void SetAreas(Area left, Area right)
        {
            _left = left; _right = right;

            // ユニット配置
            foreach (var u in left.Units)
            {
                var ctrl = new UnitImageControl { Unit = u };
                if (u.Acted)
                    ctrl.Text = ACTED;
                else
                    ctrl.Click += this.MoveLtR;
                flp_Left.Controls.Add(ctrl);
            }
            foreach (var u in right.Units)
            {
                var ctrl = new UnitImageControl { Unit = u };
                if (u.Acted)
                    ctrl.Text = ACTED;
                else
                    ctrl.Click += this.MoveRtL;
                flp_Right.Controls.Add(ctrl);
            }
        }
 private void PrepareWarWindow_Load(object sender, EventArgs e)
 {
     // ページの作成
     _tabControl.TabPages.Clear();
     foreach (var area in AdjArea)
     {
         var tab = new TabPage(area.Name) {
             Margin = new Padding(0),
             Padding = new Padding(0),
         };
         var flp = new FlowLayoutPanel {
             Tag = area,
             Dock = DockStyle.Fill,
             BackColor = Color.Navy,
             Margin = new Padding(0),
             Padding = new Padding(0),
         };
         foreach (var unit in area.Units) {
             var uCtrl = new UnitImageControl(unit);
             uCtrl.Click += this.UnitClick;
             flp.Controls.Add(uCtrl);
         }
         _flps.Add(flp);
         tab.Controls.Add(flp);
         _tabControl.TabPages.Add(tab);
     }
 }
        private void UnitMove(UnitImageControl uCtrl, bool l2r)
        {
            if (uCtrl.Text == ACTED) return;
            var clicks = new EventHandler[] { this.MoveLtR, this.MoveRtL };
            var flows = new[] { flp_Left.Controls, flp_Right.Controls };
            int src = l2r ? 0 : 1;
            int dst = src ^ 1;

            if (flows[dst].Count == 20) return;
            Debug.Assert(flows[dst].Count < 20);

            uCtrl.Click -= clicks[src];
            uCtrl.Click += clicks[dst];
            flows[src].Remove(uCtrl);
            flows[dst].Add(uCtrl);

            if (uCtrl.Text == MOVED)
                uCtrl.Text = "";
            else
                uCtrl.Text = MOVED;
        }