Exemplo n.º 1
0
        public void Logic(object sender, EventArgs e)
        {
            if (!Game.instance.lblLevelDisplay.Text.Equals("Level 3"))
            {
                Virus.SpawnVirus();
            }

            if (UiComponents.Viruses.Count == 0 && GameState.BossFight == false)
            {
                Virus.BossFight();
            }


            // regelt Bewegung der Viren
            foreach (var virus in UiComponents.Viruses)
            {
                MoveVirusToTargetPosition(virus);
                if (virus.IsTargetPositionReached())
                {
                    virus.RecalculateTargetPosition();
                }
            }

            // regelt dass Teleporter und Divider zeitbasiertes Event ausführen
            for (int i = UiComponents.Viruses.Count - 1; i >= 0; i--)
            {
                var virus = UiComponents.Viruses[i];

                if (virus is DividerVirus)
                {
                    if (DateTime.Now >= virus.timerEnd && virus.Size.Width > 70)
                    {
                        virus.DivideAction(virus);
                    }
                }
                if (virus is TeleporterVirus)
                {
                    if (DateTime.Now >= virus.timerEnd)
                    {
                        virus.TeleportVirus(virus, CharacterLogic.chaLocX, CharacterLogic.chaLocY);
                    }
                }
                if (virus is BossVirus)
                {
                    if (DateTime.Now >= virus.timerEnd)
                    {
                        BossVirus.BossAttackMove(virus);
                    }
                }
            }


            // regelt Schaden bekommen wenn Spieler von Viren berührt wird
            for (int i = UiComponents.Viruses.Count - 1; i >= 0; i--)
            {
                if (UiComponents.Viruses[i].Bounds.IntersectsWith(Game.instance.pbCharacterBounds.Bounds))
                {
                    if (UiComponents.Viruses[i] is MutatedVirus)
                    {
                        GameState.PlayerHealth -= 3;
                    }
                    else
                    {
                        GameState.PlayerHealth -= 1;
                    }

                    Game.instance.Controls.Remove(UiComponents.Viruses[i]);
                    UiComponents.Viruses[i].Dispose();
                    UiComponents.Viruses.Remove(UiComponents.Viruses[i]);

                    Game.instance.DisplayHealth();
                }
            }
        }