Пример #1
0
 public void addAirplane(iAirplane airplane)
 {
     if (!existIdInMap(airplane.getId()))
     {
         airplanes.Add(airplane);
     }
 }
Пример #2
0
 public void checkAltitudeDanger(iAirplane airplane)
 {
     airplane.setAltitudeDanger(false);
     if (airplane.getAltitude() <= this.altitudeDanger)
     {
         airplane.setAltitudeDanger(true);
     }
 }
Пример #3
0
 public void addAirplaneToMap(iAirplane airplane)
 {
     if (map.getAirplanes().Count >= this.maxAirplanes)
     {
         notificationsManager.addNotification($"Max airplanes reached {map.getAirplanes().Count}/{this.maxAirplanes}");
     }
     else
     {
         notificationsManager.addNotification($"Adding airplane {airplane.getId()} to the map. {airplane.getPos().ToString()}");
         this.map.addAirplane(airplane);
     }
 }
Пример #4
0
        public bool checkCrash(iAirplane airplane1)
        {
            //CRASH with floor/ground(altitude)
            if (airplane1.getAltitude() <= this.altitudeCrash)
            {
                if (airplane1.getDeployedLandingGear())
                {
                    //Landing gear is deployed
                    if (airplane1.getSpeed() <= this.landingMaxSpeed)
                    {
                        //Airplane can land and be removed
                        this.game.addNotification($"Airplane {airplane1.getId()} has landed succesfully.", 6000);
                    }
                    else
                    {
                        Random random     = new Random();
                        int    deadPeople = random.Next((int)(airplane1.getCapacity() * 0.2), (int)(airplane1.getCapacity() * 0.8));
                        this.game.addNotification($"Airplane {airplane1.getId()} has landed with some difficulties killing {deadPeople} people.", 6000);
                        this.stats.addDeadPeople($"{airplane1.getId()} - {airplane1.getVendor()} {airplane1.getModel()} Landed with some difficulties killing {deadPeople} people.", deadPeople);
                    }
                }
                else
                {
                    //Landing gear is not deployed
                    this.game.addNotification($"Airplane {airplane1.getId()} has crashed with the ground. {airplane1.getCapacity()} people have died. Congratulations.", 6000);
                    this.stats.addDeadPeople($"{airplane1.getId()} - {airplane1.getVendor()} {airplane1.getModel()} has crashed with the ground. {airplane1.getCapacity()} people have died.", airplane1.getCapacity());
                }

                return(true);
            }

            //CRASH with airplanes
            foreach (iAirplane airplane2 in this.airplanes)
            {
                //Same airplane, stop
                if (airplane1.getId() == airplane2.getId())
                {
                    continue;
                }

                //Calculate distance between 2 airplanes
                double radius = Vector3.Distance(airplane1.get3DPos(), airplane2.get3DPos());
                if (radius <= this.distanceCrashRadius)
                {
                    this.game.addNotification($"Airplane {airplane1.getId()} has crashed with another airplane. {airplane1.getCapacity()} people have died. Congratulations.", 6000);
                    this.stats.addDeadPeople($"{airplane1.getId()} - {airplane1.getVendor()} {airplane1.getModel()} has crashed with another airplane. {airplane1.getCapacity()} people have died.", airplane1.getCapacity());
                    return(true);
                }
            }
            return(false);
        }
Пример #5
0
        private void comboBox_airplanePresets_SelectedValueChanged(object sender, EventArgs e)
        {
            //Load preset into form
            DataRowView selectedValueRow = (DataRowView)comboBox_availableAirplanes.SelectedItem;

            if (selectedValueRow == null)
            {
                return;
            }
            iAirplane airplane = (iAirplane)selectedValueRow[1];

            this.selectedAirplane = airplane;
            this.loadSelectedAirplaneInfo();
        }
Пример #6
0
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.White);
            base.Draw(gameTime);
            spriteBatch.Begin();
            this.closestAirplaneToMouse = this.getClosestAirplaneToMouse();
            if (closestAirplaneToMouse != null && Vector2.Distance(currentMouseState.Position.ToVector2(), closestAirplaneToMouse.getDrawPos()) < 50)
            {
                closestAirplaneToMouse.hover(true);
                Primitives2D.DrawLine(spriteBatch, currentMouseState.Position.ToVector2(), closestAirplaneToMouse.getDrawPos(), Color.Black);
            }
            map.Draw(spriteBatch);
            notificationsManager.Draw(spriteBatch);

            //FPS
            spriteBatch.DrawString(defaultFont, Math.Ceiling(frameCounter.CurrentFramesPerSecond).ToString(), Vector2.Zero, Color.Green);

            spriteBatch.End();
        }
Пример #7
0
        public void checkCollisionDanger(iAirplane airplane1)
        {
            //Reset collision danger list
            airplane1.removeAllCollisionDangerWith();
            foreach (iAirplane airplane2 in airplanes)
            {
                //Same airplane, stop
                if (airplane1.getId() == airplane2.getId())
                {
                    continue;
                }

                //Calculate distance between 2 airplanes
                double radius = Vector3.Distance(airplane1.get3DPos(), airplane2.get3DPos());
                if (radius <= this.distanceCollisionDangerRadius)
                {
                    //this.game.addNotification($"Airplane {airplane1.getId()} and airplane {airplane2.getId()} are really close!!({(int)Math.Round(distance)})", 6000);
                    airplane1.addCollisionDangerWith(airplane2);
                    airplane2.addCollisionDangerWith(airplane1);
                }
            }
        }
Пример #8
0
        private iAirplane getClosestAirplaneToMouse()
        {
            List <iAirplane> airplanes = this.map.getAirplanes();

            if (airplanes.Count == 0)
            {
                return(null);
            }
            iAirplane closestAirplane = airplanes[0];

            foreach (iAirplane airplane in airplanes)
            {
                if (Vector2.Distance(currentMouseState.Position.ToVector2(), airplane.getDrawPos()) < Vector2.Distance(currentMouseState.Position.ToVector2(), closestAirplane.getDrawPos()))
                {
                    closestAirplane = airplane;
                }
            }
            if (Vector2.Distance(currentMouseState.Position.ToVector2(), closestAirplane.getDrawPos()) > 50)
            {
                return(null);
            }
            return(closestAirplane);
        }
Пример #9
0
 public void removeCollisionDangerWith(iAirplane airplane)
 {
     this.collisionDangerWith.Remove(airplane);
 }
Пример #10
0
 public void addCollisionDangerWith(iAirplane airplane)
 {
     this.collisionDangerWith.Add(airplane);
 }
Пример #11
0
 public void removeAirplane(iAirplane airplane)
 {
     this.map.removeAirplane(airplane);
     this.addNotification($"Airplane {airplane.getId()} has been removed from the map.");
 }
Пример #12
0
        private bool isValidAirplanePos(iAirplane airplane)
        {
            Vector2 airplanePos = airplane.getPos();

            return((airplanePos.X < this.size.X && airplanePos.X >= 0) && (airplanePos.Y < this.size.Y && airplanePos.Y >= 0));
        }
Пример #13
0
 internal void removeAirplane(iAirplane airplane)
 {
     this.airplanes.Remove(airplane);
 }