Example #1
0
        public static void GenerateFromCsv(string csv, SpriteMapping spriteMapping, GameLayer layer)
        {
            var spriteNames = CsvHelper.ReadCsv(csv);
            var tiles       = TransformNamesToVectors(spriteNames, spriteMapping.Width, spriteMapping.Height);

            foreach (var tile in tiles)
            {
                var tileNames  = tile.Value;
                var tileArray  = tileNames.Split(';');
                var tileName   = string.Format("Tile_{0}_{1}_{2}", tileNames, tile.Key.X, tile.Key.Y);
                var gameObject = new GameObject(tileName, tile.Key);

                var spriteName = tileArray[0];
                var sprite     = new SpriteMappingComponent(spriteMapping, spriteName);

                if (tileArray.Count() > 1)
                {
                    var blockingProperty = tileArray[1];
                    if (blockingProperty.ToUpperInvariant() == "B")
                    {
                        var boundary = new BoundaryComponent(spriteMapping.Width, spriteMapping.Height);
                        gameObject.AddComponent(boundary);
                    }
                }
                gameObject.AddComponent(sprite);
                layer.AddGameObject(gameObject);
            }
        }
Example #2
0
        public void Update(GameTime gameTime)
        {
            if (gameTime.TotalGameTime > _lastTimeSpan.Add(new TimeSpan(0, 0, 0, 1)))
            {
                _lastTimeSpan = gameTime.TotalGameTime;

                // TODO: Use perpendicular
                var y = _random.Next(0, GameConstants.ScreenBoundary.Bottom);


                var isLeftDirection = _random.Next(0, 2) == 1;
                if (isLeftDirection)
                {
                    var x = GameConstants.ScreenBoundary.Right;

                    var asteroid            = new GameObject("Asteroid", new Vector2(x, y));
                    var asteroidInstance    = new InstanceComponent();
                    var asteroidGraphics    = new SpriteComponent(GetRandomTexture());
                    var asteroidMovement    = new MovementComponent(1, FaceDirection.Left, new Vector2(-1, 0));
                    var asteroidBoundary    = new BoundaryComponent(SpaceGraphics.BoundaryAsset.First(), asteroidGraphics.Width, asteroidGraphics.Height);
                    var asteroidOutOfBounds = new OutOfBoundsComponent(ObjectEvent.RemoveEntity, -50, 0, -50, 0);
                    asteroid.AddComponent(asteroidInstance);
                    asteroid.AddComponent(asteroidGraphics);
                    asteroid.AddComponent(asteroidMovement);
                    asteroid.AddComponent(asteroidBoundary);
                    asteroid.AddComponent(asteroidOutOfBounds);
                    _gameLayer.AddGameObject(asteroid);
                }
                else
                {
                    var x                   = GameConstants.ScreenBoundary.Left;
                    var asteroid            = new GameObject("Asteroid", new Vector2(x, y));
                    var asteroidInstance    = new InstanceComponent();
                    var asteroidGraphics    = new SpriteComponent(GetRandomTexture());
                    var asteroidMovement    = new MovementComponent(1, FaceDirection.Right, new Vector2(1, 0));
                    var asteroidBoundary    = new BoundaryComponent(SpaceGraphics.BoundaryAsset.First(), asteroidGraphics.Width, asteroidGraphics.Height);
                    var asteroidOutOfBounds = new OutOfBoundsComponent(ObjectEvent.RemoveEntity, -50, 0, -50, 0);
                    asteroid.AddComponent(asteroidInstance);
                    asteroid.AddComponent(asteroidGraphics);
                    asteroid.AddComponent(asteroidMovement);
                    asteroid.AddComponent(asteroidBoundary);
                    asteroid.AddComponent(asteroidOutOfBounds);

                    _gameLayer.AddGameObject(asteroid);
                }
            }
        }
        private void AddBackgroundItem(int x, int y)
        {
            var isMajorItem = _random.Next(0, _minMaxChance) == 1;

            if (isMajorItem)
            {
                var star = new GameObject("BackgroundMajor", new Vector2(x, y));
                var movementComponent = new MovementComponent(1, FaceDirection.Down, _maxDirection);
                var spriteComponent   = new SpriteComponent(GetRandomTexture(_majorTextures));
                star.AddComponent(movementComponent);
                star.AddComponent(spriteComponent);
                _gameLayer.AddGameObject(star);
            }
            else
            {
                var star = new GameObject("BackgroundMinor", new Vector2(x, y));
                var movementComponent = new MovementComponent(1, FaceDirection.Down, _minDirection);
                var spriteComponent   = new SpriteComponent(GetRandomTexture(_minorTextures));
                star.AddComponent(movementComponent);
                star.AddComponent(spriteComponent);
                _gameLayer.AddGameObject(star);
            }
        }
Example #4
0
        private void GenerateFoam(int xPosition, int width)
        {
            var _gameHeight          = GameHelper.GetRelativeScaleY(1f);
            var bottomPadding        = _gameHeight - (_yPosition + _waveHeight + 20);
            var gameObject           = new GameObject("FOAM", new Vector2(xPosition, _yPosition));
            var movementComponent    = new MovementComponent(1, FaceDirection.Down, new Vector2(_waveSpeed, 1));
            var spriteComponent      = new SpriteComponent(GetRandomTexture(_majorTextures), drawScale: new Vector2(width, 1), color: new Color(Color.Gray, 20));
            var outOfBoundsComponent = new OutOfBoundsComponent(ObjectEvent.RemoveEntity, leftPadding: -50, bottomPadding: bottomPadding);

            gameObject.AddComponent(movementComponent);
            gameObject.AddComponent(spriteComponent);
            gameObject.AddComponent(outOfBoundsComponent);
            _topLayer.AddGameObject(gameObject);
        }
Example #5
0
        public void Update(GameTime gameTime)
        {
            var enemyCount = _gameLayer.GameObjects.Count(gameObject => gameObject.GameType == _enemyName);

            _elapsedTimeMilliseconds += gameTime.ElapsedGameTime.TotalMilliseconds;

            if (_elapsedTimeMilliseconds > _spawnDelayMilliseconds &&
                enemyCount < _currentMaximumEnemies &&
                enemyCount < _totalMaximumEnemies)
            {
                _elapsedTimeMilliseconds = 0;
                var xLocation = _random.Next(0, GameConstants.ScreenBoundary.Right - _shipTexture.Width);

                var gameObject = new GameObject(_enemyName, new Vector2(xLocation, 0));
                var sprite     = new SpriteComponent(_shipTexture);
                var movement   = new MovementComponent(1, FaceDirection.Down, new Vector2(0, _speed));
                gameObject.AddComponent(sprite);
                gameObject.AddComponent(movement);

                var bullet      = new BulletComponent(_bulletName, SpaceGraphics.BulletAsset[0], movement, ignoreCollisionTypes: _enemyName);
                var timedAction = new TimedActionComponent(ObjectEvent.Fire, _bulletDelayMilliseconds);
                gameObject.AddComponent(bullet);
                gameObject.AddComponent(timedAction);

                var boundary    = new BoundaryComponent(SpaceGraphics.BoundaryAsset.First(), _shipTexture.Width, _shipTexture.Height, true, false, _enemyName);
                var instance    = new InstanceComponent();
                var outOfBounds = new OutOfBoundsComponent(ObjectEvent.RemoveEntity);
                gameObject.AddComponent(boundary);
                gameObject.AddComponent(instance);
                gameObject.AddComponent(outOfBounds);

                var score           = new ObjectEventComponent(ObjectEvent.CollisionEnter, IncreaseScore);
                var deathSound      = new EventSoundComponent(_deathSound, ObjectEvent.CollisionEnter);
                var collisionAction = new ObjectEventComponent(ObjectEvent.CollisionEnter, CollisionAction);
                gameObject.AddComponent(score);
                gameObject.AddComponent(deathSound);
                gameObject.AddComponent(collisionAction);

                foreach (var objectEventAction in _eventActions)
                {
                    var objectEvent = new ObjectEventComponent(objectEventAction.Item1, objectEventAction.Item2);
                    gameObject.AddComponent(objectEvent);
                }

                _gameLayer.AddGameObject(gameObject);
            }
        }
Example #6
0
        public WaveManager(Texture2D[] majorTextures, GameLayer backgroundLayer, GameLayer topLayer, int waveHeight, int yPosition, float waveSpeed)
        {
            _majorTextures = majorTextures;
            _topLayer      = topLayer;
            _lastTimeSpan  = new TimeSpan();
            _random        = new Random();
            _waveHeight    = waveHeight;
            _yPosition     = yPosition;
            _waveSpeed     = waveSpeed;

            var surfBackground = new GameObject("WAVE", new Vector2(0, 0));
            var waveTexture    = SurfingGraphics.WaveBackgroundAsset;

            var scaleVector     = new Vector2(x: GameHelper.GetRelativeScaleX(1f) / waveTexture.Width, y: 1);
            var spriteComponent = new SpriteComponent(waveTexture, Vector2.Zero, scaleVector, Vector2.Zero);

            surfBackground.AddComponent(spriteComponent);
            backgroundLayer.AddGameObject(surfBackground);
        }
Example #7
0
        public override void OnCreate()
        {
            GameApplication.SetLogger("Logs", "log");
            GameApplication.Log(LogEntryType.Debug, "GameWindow Created!", true);
            this.SetTextureInterpolationMode(System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor);
            testGameObj.Transform.Place(30, 30);
            testGameObj.Transform.SetSize(32, 32);
            Texture bg = new Texture(Image.FromFile(@"G:\Родион\Images\_PNG\12.png"), TextureLayout.Default);

            scene1.BackgroundTexture = bg;
            scene1.LightValue        = 0.8f;
            Audio        audio        = Audio.FromFile(@"D:\Родион\Desktop\testAssets\aud.wav");
            AudioChannel audioChannel = new AudioChannel("test", audio);
            Texture      texture      = new Texture(Image.FromFile(@"D:\Родион\VS\MyGame2\resources\raw\maps\textures\overworld_base_river.png"), TextureLayout.Default);
            Texture      texturetiled = new Texture(Image.FromFile(@"D:\Родион\VS\MyGame2\resources\raw\maps\textures\overworld_base_river.png"), TextureLayout.Tile);

            testGameObj.SetTexture(texture);
            testGameObj.CollisionBox.SetCollisionBox(0, 0, 32, 32);
            Objs.AddGameObject(testGameObj);
            testGameObj1.Transform.Place(80, 30);
            testGameObj1.Transform.SetSize(32, 32);
            testGameObj1.CollisionBox.SetCollisionBox(0, 0, 32, 32);
            testGameObj1.SetTexture(texture);
            Animation animation = new Animation(new Texture(Image.FromFile(@"D:\Родион\Desktop\testAssets\anim.png"), TextureLayout.Stretch), 6, 10, 32);

            testGameObj.Animation = animation;
            testGameObj.Animate();
            cameraBinded.Transform.Place((scene1.Width / 2) - (cameraBinded.Width / 2), (scene1.Height / 2) - (cameraBinded.Height / 2));
            cameraBinded.Transform.SetSize(48, 48);
            cameraBinded.SetTexture(texturetiled);
            cameraBinded.CollisionBox.SetCollisionBox(2, 2, 28, 28);
            Objs.AddGameObject(testGameObj);
            Objs.AddGameObject(testGameObj1);
            Objs.AddGameObject(cameraBinded);
            Texture grass = Texture.FromFile(@"D:\Родион\VS\MyGame2\resources\raw\maps\textures\overworld_map_base_grass.png", TextureLayout.Default);

            for (int x = 0; x < 20; x++)
            {
                for (int y = 0; y < 20; y++)
                {
                    Terrain.AddGameObject(new GrassObject(grass, x * 16, y * 16));
                }
            }
            TestObj tobj = new TestObj(cameraBinded);

            Objs.AddGameObject(tobj);
            TestUIControl control   = new TestUIControl();
            Texture       buttonTex = new Texture(Image.FromFile(@"D:\Родион\fankit\TestButtonTexture.png"), TextureLayout.Stretch);
            UIButton      button    = new UIButton(100, 32, buttonTex, 32);

            scene1.AddUIControl(control);
            button.Transform.Place(100, 100);
            scene1.AddUIControl(button);
            scene1.AddGameLayer(0, Terrain);
            scene1.AddGameLayer(1, Objs);
            //cameraBinded.IsCameraSticked = true;
            Coroutine coroutine = new Coroutine(new CoroutineMethod(() =>
            {
                this.Invoke(new Action(() =>
                {
                    Title = "GameWindow | Second: {tick}";
                    Title = Title.Replace("{tick}", DateTime.Now.Second.ToString());
                }));
            }), "Test Coroutine");

            audioChannel.ChannelVolume = 0.1f;
            audioChannel.Play();
            double[,] perlinData = new double[16, 16];
            int xArr = 0, yArr = 0;

            for (double x = 0; x < 1.0d; x += 0.0625d)
            {
                for (double y = 0; y < 1.0d; y += 0.0625d)
                {
                    perlinData[xArr, yArr] = new PerlinNoise().GetNoiseData(x, y, 0);
                    yArr++;
                }
                xArr++;
                yArr = 0;
            }
            for (int x = 0; x < 16; x++)
            {
                string arrCtor = "";
                for (int y = 0; y < 16; y++)
                {
                    arrCtor += Math.Round(perlinData[x, y], 2) + " ";
                }
                GameApplication.Log(LogEntryType.Info, arrCtor);
            }
            coroutine.StartCoroutine();
        }