private static void StartTest() { CreateTestWorld(); State = GameState.Play; }
/// <summary> /// Push a new game state onto the state stack /// </summary> /// <param name="state"> /// A <see cref="IGameState"/> /// </param> /// <returns> /// Previous <see cref="IGameState"/> /// </returns> public GameState PushState(GameState state) { if (state != null) { gameStates.Add(state); //state.Initialize(this); } else { throw new NullReferenceException("PushState: state was null."); } gameStates[gameStates.Count-1].IssueActivateEvent(); if (gameStates.Count > 1) { return gameStates[gameStates.Count-2]; } return null; }
/// <summary> /// Начальная загрузочная инициализация /// </summary> /// <param name="clientSize">Размеры графического окна вывода</param> /// <param name="grControl">Контрол для отрисовки</param> /// <param name="path">Путь загрузки ресурсов</param> public static void Init(Size clientSize, Control grControl, string path = "gamedata") { State = GameState.None; Config.LoadConfig(); if (path.IsEmpty()) path = "gamedata"; res.LoadData(path); // Загружаем данные из gamedata InterfaceResolver.AddInterface<IImageResourceKeeper>(false, () => res.ImageResourceResolver.Instance); // Инверт зависимости Graphic.SetRenderControl(grControl); Graphic.InitBuffGraphics(clientSize); View[0].IsActive = false; View[0].IsNeedClear = true; View[0].ColorClear = Color.Ivory; ////var hull = new ModuleConstructor(View[100], new PointF(-100, 0), new PointF(0, View.Top + 30), new PointF(100, 0), new PointF(150, 0), new PointF(300, View.Bottom - 30), //// new PointF(-100, View.Bottom - 30)); //var hull = new ModuleConstructor(View[100], new PointF(-100, View.Bottom - 30), new PointF(0, View.Top + 30), new PointF(100, View.Bottom - 30)); //hull.FillerConstraint.Add("AngleLarger15", polygon => polygon.Angles.All(s => s > Math.PI / 12)); // каждый угол больше 15 градусов //hull.FillerConstraint.Add("EdgesLonger50", polygon => polygon.Edges.All(s => s.LengthPow2() > 2500));// длина каждого ребра больше 50 //var att = new ReactiveShape<Polygon>(new Polygon( // new PointF(-View.OffsetX + 20, View.OffsetY - 20), // new PointF(-View.OffsetX + 30, View.OffsetY - 38), // new PointF(-View.OffsetX + 40, View.OffsetY - 20)) { IsFulled = true, Pen = Pens.OrangeRed, Brush = Brushes.Red }); //att.CreateActionOnDragHelper(100, true, (shape, pnt) => // { // var cn = new ModuleConstructor(View[101], att.Shape.Values.ToArray()) { Brush = Brushes.Red }; // cn.FillerConstraint.Add("AngleLarger15", polygon => polygon.Angles.All(s => s > Math.PI / 12)); // cn.FillerConstraint.Add("EdgesLonger10", polygon => polygon.Edges.All(s => s.LengthPow2() > 100)); // View.Capturer = cn.Filler; // } // ); //View.AddShape(102, att); //var cir = new ReactiveShape<Circle>(new Circle(200) { Brush = Brushes.Red, Pen = Pens.Black, IsFulled = true }) { IsSenseMouse = true, InternalDistanceSense = 20, ExternalDistanceSense = 20 }; //cir.ToCenterPoint(-View.OffsetX, 0); //cir.CreateDragMoveIterationHelper(); //bme.AddMenuToShape(cir); //View[101].AddShape(cir); //View[1].AddShape(new Box { X1 = -View.OffsetX + 100, Y1 = -View.OffsetY + 20, X2 = View.OffsetX - 100, Y2 = View.OffsetY - 20, IsFulled = true, Brush = Brushes.Snow, Pen = Pens.Gainsboro }); State = GameState.Init; }