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