Beispiel #1
0
        public static void UpdateWorld()
        {
            ParticleSystem.Update();
            //ParticleSystem.Update();
            Weather.Update();

            if (TMBAW_Game.CurrentGameMode == GameMode.Edit)
            {
                foreach (Player player in GetPlayers())
                {
                    player.ComplexAnimation.RemoveAllFromQueue();
                    player.AddAnimationToQueue("editMode");
                }
                LevelEditor.Update();
            }
            else
            {
                if (IsTestingLevel)
                {
                    if (GetPlayers()[0].IsTestLevelPressed())
                    {
                        LevelEditor.GoBackToEditing();
                    }
                }
                UpdateVisual();
            }

            TimesUpdated++;

            ProjectileSystem.Update();

            for (var i = Entities.Count - 1; i >= 0; i--)
            {
                var entity = Entities[i];
                if (entity.ToDelete)
                {
                    entity.Destroy();
                }
            }
            foreach (Player player in GetPlayers())
            {
                player.Update();
            }

            if (TMBAW_Game.CurrentGameMode == GameMode.Play)
            {
                foreach (Player player in GameWorld.GetPlayers())
                {
                    PlayerTrail.Add(player);
                }
            }

            foreach (var c in _clouds)
            {
                c.CheckOutOfRange();
                c.Update();
            }
            for (var i = 0; i < Entities.Count; i++)
            {
                var entity = Entities[i];
                if (entity.IsDead)
                {
                    continue;
                }
                entity.Update();

                //// Check enemy collision with other enemies.
                //for (int j = i + 1; j < Entities.Count; j++)
                //{
                //    if (Entities[i].IsTouchingEntity(Entities[j]))
                //    {
                //        if (Entities[i].Position.X > Entities[j].Position.X)
                //        {
                //            Entities[i].SetX(Entities[j].Position.X + Entities[j].CollRectangle.Width / 2);
                //        }
                //        else
                //        {
                //            Entities[i].SetX(Entities[j].Position.X - Entities[i].CollRectangle.Width / 2);
                //        }
                //        Entities[i].ForceUpdateCollisionRectangle();
                //    }
                //}
            }


            foreach (var tileNumber in ChunkManager.GetVisibleIndexes())
            {
                if (tileNumber >= 0 && tileNumber < TileArray.Length)
                {
                    TileArray[tileNumber]?.Update();
                }
            }

            if (Session.IsHost)
            {
                Session.SendEntityUpdates();
            }
        }