public AirplanesManager(Level pLevel, EnemiesSoundManager pEnemiesSoundManager) : base(false) { _level = pLevel; _enemiesSoundManager = pEnemiesSoundManager; _map = _level.Map; _airplanesPool = new Airplane[20]; for (int i = 0; i < _airplanesPool.Length; i++) { var airplane = new Airplane(); airplane.OnUpdateListeners = airplane.OnUpdateListeners.Concat(new IOnUpdateListener[] { _enemiesSoundManager }).ToArray(); _level.AddChild(airplane); _firstAirplaneIndex = airplane.Index; airplane.SetActive(false); _airplanesPool[i] = airplane; } _airplanesMap = new Dictionary <Airplane, TiledObject>(); }
public void SpawnHunters() { //Load Hunters var huntersObjects = _level.Map.ObjectGroup.Objects.Where(o => o.Name.StartsWith("hunter")).ToArray(); for (int i = 0; i < huntersObjects.Length; i++) { var hunterData = huntersObjects[i]; float sightSpeed = hunterData.GetFloatProperty("sight_speed", 200); var hunter = new HunterGameObject(hunterData.X, hunterData.Y, hunterData.Width, hunterData.Height, sightSpeed); hunter.HunterBehaviorListeners = hunter.HunterBehaviorListeners.Concat(new IHunterBehaviorListener[] { this }).ToArray(); _hunters.Add(hunter); _level.AddChild(hunter); } for (int i = _hunters.Count() - 1; i > -1; i--) { if (_hunters[i].Destroyed) { _hunters.RemoveAt(i); } } }
public void SpawnDrones() { //Load Drones var droneObjects = _level.Map.ObjectGroup.Objects.Where(o => o.Name.StartsWith("drone")).ToArray(); for (int i = 0; i < droneObjects.Length; i++) { var droneData = droneObjects[i]; float droneSpeed = droneData.GetFloatProperty("speed", 100); var drone = new DroneGameObject(droneData.X, droneData.Y, droneData.Width, droneData.Height, droneSpeed, droneData.rotation); drone.DroneBehaviorListener = this; drone.OnUpdateListeners = drone.OnUpdateListeners.Concat(new IOnUpdateListener[] { _enemiesSoundManager }).ToArray(); _drones.Add(drone); _level.AddChild(drone); } for (int i = _drones.Count() - 1; i > -1; i--) { if (_drones[i].Destroyed) { _drones.RemoveAt(i); } } Console.WriteLine($"{this}: drone count: {droneObjects.Length}"); }
public Player(Level level, float SpawnX, float SpawnY) : base("Sprites/PlayerSheet.png", 5, 9, -1) { _position = Vec2.zero; _velocity = Vec2.zero; _gravity = Vec2.zero; this.SetOrigin(width / 2, height); currentShape = Shape.Human; shapeEvent(Shape.Human); _level = level; _hitbox = new Hitbox(this, SpawnX, SpawnY); _level.AddChild(_hitbox); }
public HunterBulletManager(Level pLevel) : base(false) { _level = pLevel; _bulletsPool = new HunterBullet[10]; for (int i = 0; i < _bulletsPool.Length; i++) { var bullet = new HunterBullet(); _level.AddChild(bullet); bullet.SetActive(false); _bulletsPool[i] = bullet; } CoroutineManager.StartCoroutine(WaitForPlayerData(), this); }
private IEnumerator WaitToStartTimeCounter() { SoundManager.Instance.PlayMusic(2, 0.014f); yield return(new WaitForMilliSeconds(2000)); _levelTimeToDelivery = _level.CurrentDeliveryPoint.Timer; _timerToDeliveryStarts = true; var playerInput = new PlayerInput(); _level.AddChild(playerInput); _level.Stork.StorkInput = playerInput; HUD.Instance.ArrowToObjective.Target = _level.CurrentDeliveryPoint; HUD.Instance.ArrowToObjective.TargetOrigin = _level.Stork; HUD.Instance.ArrowToObjective.Cam = MyGame.ThisInstance.Camera; HUD.Instance.ArrowToObjective.Enabled = true; }
public void SpawnTornado(TiledObject tornadoData) { int throwAngleMin = tornadoData.GetIntProperty("throw_angle_min", 0); int throwAngleMax = tornadoData.GetIntProperty("throw_angle_max", 359); float throwDistance = tornadoData.GetFloatProperty("throw_distance", 512); var tornado = new TornadoGameObject(tornadoData.X, tornadoData.Y, tornadoData.Width, tornadoData.Height, throwAngleMin, throwAngleMax, throwDistance); tornado.OnUpdateListeners = tornado.OnUpdateListeners.Concat(new IOnUpdateListener[] { _enemiesSoundManager }) .ToArray(); CoroutineManager.StartCoroutine(WaitForTargetBeenSetInLevel(tornado), this); string idString = tornadoData.Name.Replace("tornado ", ""); if (int.TryParse(idString, NumberStyles.Integer, CultureInfo.InvariantCulture, out var id)) { //Check if has path var pathObj = _level.Map.ObjectGroup.Objects.FirstOrDefault(ob => ob.Name == $"path tornado {id}"); if (pathObj != null && pathObj.polygons?.Length == 1) { var pathPos = new Vector2(pathObj.X, pathObj.Y); //Get points var pts = pathObj.polygons[0].points.Select(pt => pt + pathPos).ToArray(); if (pts.Length > 0) { tornado.Path = pts; } } } _level.AddChild(tornado); _tornadosList.Add(tornado); }
void Update() { PlayerPosX = this.x; _timer = _timer - 1; _crouchTimer = _crouchTimer - 1; if (_timer <= 0) { _timer = 0; } if (_crouchTimer <= 0) { _crouchTimer = 0; scaleY = 0.2f; } if (Input.GetKey(Key.D)) { speedX = speedX + 2; state = 1; Mirror(true, false); } if (Input.GetKeyDown(Key.S) && _crouchTimer == 0) { scaleY = scaleY * (0.5f); _crouchTimer = 50; } if (Input.GetKey(Key.A)) { speedX = speedX - 2; state = 2; Mirror(false, false); } if (Input.GetKeyDown(Key.SPACE) && _canJump == true) { speedY = speedY - 70; _canJump = false; _timer = 20; } if (Input.GetKeyDown(Key.LEFT_SHIFT)) { Bullet bullet = new Bullet(x, y - height * 0.6f, state); _level.AddChild(bullet); } if (Input.GetKeyDown(Key.F)) { Dynamite dynamite = new Dynamite(x, y - height * 0.2f); _level.AddChild(dynamite); } //if (Input.GetKey(Key.SPACE) && _timer >= 0) //{ //speedY = speedY * 1.1f; //speedY += 1f; //} speedX = speedX * 0.8f; speedY = speedY * 0.9f; _LastY = y; y = y + speedY; x = x + speedX; y = y * _gravity; }
private void handleInputHuman() { if (!Input.GetKey(Key.LEFT_SHIFT)) { if ((Input.GetKeyDown(Key.W)) && _landed == true) { _velocity.y -= _jump; _landed = false; } if (Input.GetKey(Key.A)) { _velocity.x = Utils.Clamp(_velocity.x - _speed, -5 - _topSpeed, 5 + _topSpeed); this.Mirror(true, false); left = true; walkAnimationHuman(); } if (Input.GetKey(Key.D)) { _velocity.x = Utils.Clamp(_velocity.x + _speed, -5 - _topSpeed, 5 + _topSpeed); this.Mirror(false, false); left = false; walkAnimationHuman(); } if ((!Input.GetKey(Key.A)) && (!Input.GetKey(Key.D)) && (!Input.GetKey(Key.W)) && (!Input.GetKey(Key.SPACE)) && _attackAnimation == false) { idleTimer++; if (idleTimer > 10) { idleHuman(); } } else { idleTimer = 0; } if ((Input.GetKeyDown(Key.SPACE)) && _cooldown == 0) { Projectile fireball = new Projectile(this); _backgroundChanel = _backgroundMusic.Play(); _backgroundChanel.Volume = 0.5f; _level.AddChild(fireball); _cooldown = 120; if ((!Input.GetKey(Key.A)) && (!Input.GetKey(Key.D))) { _attackAnimation = true; } } else { if (_cooldown != 0) { _cooldown--; } } if (_attackAnimation == true) { if ((!Input.GetKey(Key.A)) && (!Input.GetKey(Key.D))) { HumanAttack(); } } } }
public void SpawnClouds() { var cloudsTileArray = _map.GetCloudsTileArray(); var cloudsLayerFirstGid = _map.MapData.TileSets.FirstOrDefault(ts => ts.Name == "Clouds Tileset").FirstGId; for (int col = 0; col < cloudsTileArray.GetLength(0); col++) { for (int row = 0; row < cloudsTileArray.GetLength(1); row++) { CloudGameObject cloud; var tile = cloudsTileArray[col, row] - cloudsLayerFirstGid; if (tile == 20 || tile == 50) { //Instantiate a horizontal cloud cloud = new CloudGameObject(MRandom.Range(-1, 1)); _level.AddChild(cloud); float px = (col) * _map.MapData.TileWidth; float py = (row) * _map.MapData.TileHeight; cloud.SetXY(px, py); if (tile == 50) { cloud.SetXY(px + _map.MapData.TileWidth, py); cloud.Turn(90); } _clouds.Add(cloud); } //Check if a cloud is incorrectly drew in Tiled and than "ERASE" the tile, //a cloud need the "pivot" tile (20 for horizontal clouds, 50 for vertical clouds) //Ugly solution, hard coded int tileCheck; if (tile >= 21 && tile <= 24) { int gap = tile - 20; if (gap > -1) { tileCheck = cloudsTileArray[col - gap, row] - cloudsLayerFirstGid; if (tileCheck != 20) { _map.SetCloudsTileArray(col, row, 0); Console.WriteLine($"{this}: {col}|{row} cloud tile erased for 21"); } } } else if (tile >= 36 && tile <= 40) { int gapX = tile - 36; int gapY = 1; if (gapX > -1 && gapY > -1) { tileCheck = cloudsTileArray[col - gapX, row - gapY] - cloudsLayerFirstGid; if (tileCheck != 20) { _map.SetCloudsTileArray(col, row, 0); Console.WriteLine($"{this}: {col}|{row} cloud tile erased for 37"); } } } else if (tile == 49) { int gapX = 50 - tile; if (gapX < _map.MapData.Height) { tileCheck = cloudsTileArray[col + gapX, row] - cloudsLayerFirstGid; if (tileCheck != 50) { _map.SetCloudsTileArray(col, row, 0); Console.WriteLine($"{this}: {col}|{row} cloud tile erased for 50"); } } } else if (tile >= 65 && tile <= 66) { int gapX = 66 - tile; int gapY = 1; if (gapX < _map.MapData.Height && gapY > -1) { tileCheck = cloudsTileArray[col + gapX, row - gapY] - cloudsLayerFirstGid; if (tileCheck != 50) { _map.SetCloudsTileArray(col, row, 0); Console.WriteLine($"{this}: {col}|{row} cloud tile erased for 50, 65"); } } } else if (tile >= 81 && tile <= 82) { int gapX = 82 - tile; int gapY = 2; if (gapX < _map.MapData.Height && gapY > -1) { tileCheck = cloudsTileArray[col + gapX, row - gapY] - cloudsLayerFirstGid; if (tileCheck != 50) { _map.SetCloudsTileArray(col, row, 0); Console.WriteLine($"{this}: {col}|{row} cloud tile erased for 50, 81"); } } } else if (tile >= 97 && tile <= 98) { int gapX = 98 - tile; int gapY = 3; if (gapX < _map.MapData.Height && gapY > -1) { tileCheck = cloudsTileArray[col + gapX, row - gapY] - cloudsLayerFirstGid; if (tileCheck != 50) { _map.SetCloudsTileArray(col, row, 0); Console.WriteLine($"{this}: {col}|{row} cloud tile erased for 50, 97"); } } } else if (tile >= 113 && tile <= 114) { int gapX = 114 - tile; int gapY = 4; if (gapX < _map.MapData.Height && gapY > -1) { tileCheck = cloudsTileArray[col + gapX, row - gapY] - cloudsLayerFirstGid; if (tileCheck != 49) { _map.SetCloudsTileArray(col, row, 0); Console.WriteLine($"{this}: {col}|{row} cloud tile erased for 50, 113"); } } } } } }