Ejemplo n.º 1
0
 private static void StartTest()
 {
     CreateTestWorld();
     State = GameState.Play;
 }
Ejemplo n.º 2
0
        /// <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;
        }
Ejemplo n.º 3
0
        /// <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;
        }