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(); }
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(); } }
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(); }
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(); } } }