Exemplo n.º 1
0
        public SpriteStarField()
        {
            RandomManager rm = RandomManager.Instance;

            _key       = Guid.NewGuid().ToString();
            _transform = new Transform();
            _stars     = new List <Star>();
            for (int i = 0; i < 100; ++i)
            {
                int  r    = rm.Next(1, 3);
                Star star = new Star
                {
                    id     = i,
                    raidus = r,
                    clr    = Color.FromArgb(rm.Next(80, 120), rm.Next(120, 180), rm.Next(100, 160), rm.Next(120, 255)),
                    pos    = new Vector2D
                    {
                        X = rm.Next(1, (int)World.Instance.WorldSize.X),
                        Y = rm.Next(1, (int)World.Instance.WorldSize.Y)
                    },
                    speed = (float)(rm.Next(50, 4200) / 1000.0f)
                };
                _stars.Add(star);
            }

            _node = ThreadManager.CreateThread(UpdateLoop);
            _node.Start();
        }
Exemplo n.º 2
0
        public virtual void InitializeGame()
        {
            // Setup world global object


            // Initialize GTraphics Manager
            _gm = new GraphicsManager(this);
            _sm = SceneManager.Instance;
            Scene top = new Scene();

            _sm.Add(top);

            // Start the game loop thread
            _gameLoop = ThreadManager.CreateThread(GameLoop);
            _gameLoop.Start();


            AssetsPath = Application.ExecutablePath + "\\Content";
            if (!Directory.Exists(AssetsPath))
            {
                // Break directory into it parts
                List <String> path = new List <String>(Application.ExecutablePath.Split('\\'));
                path.Remove(path.Last());
                // Go back a directory until we find content
                do
                {
                    path.Remove(path.Last());
                    AssetsPath = String.Format("{0}\\Content", String.Join("\\", path));
                } while (!Directory.Exists(AssetsPath) && path.Count > 0);
            }

            _physicsWorld   = new PhysicsWorld(World.WorldSize);
            _physicsFactory = new PhysicsFactory(_physicsWorld);
            if (!SingleThread)
            {
                // Start the Physics loop now that the world is created
                _physicsLoop = ThreadManager.CreateThread(PhysicsLoop);
                _physicsLoop.Start();
            }
        }
Exemplo n.º 3
0
        public GameMain()
        {
            InitializeComponent();
            _backColor           = Color.FromArgb(255, 0, 0, 0);
            this.FormBorderStyle = FormBorderStyle.Fixed3D;


            // Create backbuffer render frame
            World.Instance.WorldSize.X   = this.ClientSize.Width;
            World.Instance.WorldSize.Y   = this.ClientSize.Height;
            World.Instance.WorldBoundary = new Rectangle
            {
                X      = 0,
                Y      = 0,
                Width  = this.ClientSize.Width,
                Height = this.ClientSize.Height
            };

            // Create locking object for threading
            _lock    = new Object();
            _gfxLock = new Object();

            _gm = new GraphicsManager(this);


            // Load scene
            SetupScene();

            // Setup game threads
            _updateNode  = ThreadManager.CreateThread(GameLoop);
            _physicsNode = ThreadManager.CreateThread(PhysicsLoop);

            // Start the running process
            _isRunning = true;

            _updateNode.Start();
            _physicsNode.Start();
        }
Exemplo n.º 4
0
        public virtual void SetupScene()
        {
            lock (_lock)
            {
                lock (_gfxLock)
                {
                    SceneManager.Clear();
                    // Create a test scene
                    Scene gameScene = new Scene();
                    SceneManager.Add(gameScene);
                    // Create path to sprite sheet
                    String         fileName  = Application.ExecutablePath;
                    Stack <String> pathParts = new Stack <String>(fileName.Split('\\').ToList());
                    // Remove the development paths for now
                    pathParts.Pop();
                    pathParts.Pop();
                    pathParts.Pop();

                    pathName = String.Join("\\", pathParts.Reverse().ToArray());

                    // Put path back together as a string
                    String heroName = String.Format("{0}\\Content\\Hero\\fighter.png", pathName);
                    backName     = String.Format("{0}\\Content\\Backgrounds\\nebula01.jpg", pathName);
                    asteroidName = String.Format("{0}\\Content\\Spritesheets\\asteroid_01.png", pathName);

                    float scale = 0.15f;

                    Sprite hero = new Sprite(heroName);
                    hero.Frames.Add(new Rectangle
                    {
                        X      = 0,
                        Y      = 0,
                        Width  = 405,
                        Height = 488
                    });

                    player = new SpriteShip(hero);

                    player.Position.X = (World.Instance.WorldSize.X / 2) - 12;
                    player.Position.Y = World.Instance.WorldSize.Y - 200f;
                    player.Scale.X    = scale;
                    player.Scale.Y    = scale;
                    player.Velocity.X = 8.0f;
                    player.Velocity.Y = 8.0f;
                    player.Controller = KeyboardController.Instance;
                    player.Type       = ObjectType.PLAYER;

                    PlayerUI plUI = new PlayerUI(ref player.PlayerStats);


                    //*
                    // Create game scene backdrop
                    Sprite back = new Sprite(_gm.LoadImage(backName));
                    SharpDX.Direct2D1.Bitmap backBitmap = (SharpDX.Direct2D1.Bitmap)back.SpriteSheet;
                    back.Frames.Add(new Rectangle {
                        X = 0, Y = 0, Width = (int)backBitmap.Size.Width, Height = (int)backBitmap.Size.Height
                    });
                    SpriteBackdrop bdrop = new SpriteBackdrop(back);

                    SpriteStarField sfield = new SpriteStarField();

                    GameMessage            = new SimpleText("Hello, World!");
                    GameMessage.Position.X = World.Instance.WorldSize.X - 250f;
                    GameMessage.Position.Y = 10;
                    //*/

                    SceneManager.Add(player, 6);
                    SceneManager.Add(GameMessage, 8);
                    SceneManager.Add(plUI, 8);
                    SceneManager.Add(sfield, 2);
                    SceneManager.Add(bdrop, 1);
                }

                if (_spawner == null)
                {
                    _spawner = ThreadManager.CreateThread(Spawn);
                    _spawner.Start();
                }
            }
        }