public Situation(WarMap warMap, IList<WarSide> troops, WarUnitCollection units) { _map = warMap; Sides = troops; _units = units; _phaseManager = new PhaseManager(); _turnManager = new TurnManager(); }
public DeploymentWindow(List<List<WarUnit>> deployingUnitsList, WarPresentationModel model, WarMap warMap, Action finishDelegate) { InitializeComponent(); _deployingUnitsList = deployingUnitsList; _index = 0; _model = model; _warMap = warMap; _finishDelegate = finishDelegate; _model.SelectMapChipEvent += Deploy; _model.CancelMapChipEvent += Undeploy; initializeDeployment(); }
/// <summary> /// 指定したマップを描画する /// </summary> /// <param name="e">Paint イベントのデータ</param> /// <param name="map">描画するマップ</param> public void DrawMap(PaintEventArgs e, WarMap map) { // 描画範囲の計算 var g = e.Graphics; var rect = e.ClipRectangle; int y = rect.Top / _chipPixelSize.Height; int endy = (rect.Bottom - 1) / _chipPixelSize.Height; for (; y <= endy; y++) { int gap = _offsetX * (y + 1); int x = (rect.Left - gap) / _chipPixelSize.Width; int endx = (rect.Right - 1 - gap) / _chipPixelSize.Width; for (; x <= endx; x++) { var mapchip = map[x, y]; var p = ChipPoint2PixelPoint(new Point2(x, y)); // 地形描画 g.DrawSurface(mapchip.Image, p); // 枠描画 //g.DrawRectangle(Pens.Red, new Rectangle(p, _chipPixelSize)); // ユニット描画 var unit = mapchip.Unit; if (unit != null && unit.Visible) { g.DrawSurface(unit.ChipImage, p); var r1 = new Rectangle(p + new Vector2(2, 2), new Size(6, 6)); var r2 = new Rectangle(p + new Vector2(2, 2), new Size(6, 6)); if (unit.Side.IsPlayer) g.FillEllipse(Brushes.Blue, r1); else g.FillEllipse(Brushes.Red, r1); g.DrawEllipse(Pens.White, r2); } } } // 現在行動しているユニットがわかるように表示 if (_model.Situation.ActiveUnit != null) { var alpha = Global.MainLoop.FrameCount * Global.MainLoop.Fps / 5 % 256; if (alpha > 128) alpha = 256 - alpha; g.FillRectangle(new SolidBrush(Color.FromArgb(alpha, 255, 255, 0)), new Rectangle(ChipPoint2PixelPoint(_model.Situation.ActiveUnit.Location), _chipPixelSize)); } }
private void updateAreaWithCityRoadWall(WarMap map) { int city = 0, road = 0, wall = 0; for (int widht = 0; widht < map.Width; widht++) { for (int height = 0; height < map.Height; height++) { var land = map[widht, height]; if (land.Construct == null) continue; switch (land.Construct.Info.Name) { case "街": city++; break; case "道": road++; break; case "壁": wall++; break; } } } _battleArea.NumCity100 = city * 100; _battleArea.NumRoad100 = road * 100; _battleArea.NumWall100 = wall * 100; }