Esempio n. 1
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            GameEngine.Engine engine = new GameEngine.Engine();
            engine.Initialize();

            GridGameObject grid = engine.CreateGameObject <GridGameObject>(newGrid =>
            {
                newGrid.GridSize = new Vector2(3, 3);

                Transform localTransform = Transform.Origin;
                Vector2 offset           = new Vector2(50, 50);
                localTransform.Position  = Vector2.Zero + offset;
                localTransform.Size      = engine.GetViewport().Size - offset * 2;
                newGrid.LocalTransform   = localTransform;

                newGrid.LineWidth = 0.005f;
            });

            engine.Root.AddChild(grid);

            List <Vector2> positions = new List <Vector2>()
            {
                new Vector2(0, 0),
                new Vector2(1, 1),
                new Vector2(2, 2),
            };

            for (int i = 0; i < positions.Count; ++i)
            {
                UnitGameObject unit = engine.CreateGameObject <UnitGameObject>(newUnit =>
                {
                    if (i % 2 == 0)
                    {
                        newUnit.SpritePath = "Assets/character.png";
                    }
                    else
                    {
                        newUnit.SpritePath              = "Assets/topdown.png";
                        newUnit.AnimatedSpritePattern   = "Assets/Units/Knife/unit_knife_{0}.png";
                        newUnit.AnimatedSpriteCount     = 20;
                        newUnit.AnimatedSpriteTotalTime = TimeSpan.FromSeconds(0.5);
                    }
                });
                grid.AddUnit(unit, positions[i]);
            }

            engine.StartSubSystem <CombatInteractionHandler>(newCombatInteractionHandler =>
            {
                newCombatInteractionHandler.Grid = grid;
            });

            engine.Run();
        }
        /// <summary>
        /// Constructor.
        /// </summary>
        public GameplayScreen(NetworkSession networkSession)
        {
            this.networkSession = networkSession;

            TransitionOnTime = TimeSpan.FromSeconds(1.5);
            TransitionOffTime = TimeSpan.FromSeconds(0.5);

            // setup keyboard configs:
            List<KeyConfig> keyConfigs = new List<KeyConfig>();
            keyConfigs.Add(new KeyConfig(Keys.W, Keys.S, Keys.A, Keys.D, Keys.C, Keys.Space));
            keyConfigs.Add(new KeyConfig(Keys.Up, Keys.Down, Keys.Left, Keys.Right, Keys.RightControl, Keys.End));
            //keyConfigs.Add(new KeyConfig(Keys.Q, Keys.E, Keys.R, Keys.T, Keys.Y, Keys.U));

            gameEngine = (networkSession == null) ?
                Engine.CreateLocalEngine(NetworkStateManagementGame.MainGame, keyConfigs) :
                Engine.CreateNetworkedEngine(NetworkStateManagementGame.MainGame, keyConfigs, networkSession);

            gameEngine.Initialize();
        }