Ejemplo n.º 1
0
 private void OnSessionLaunched(CampaignGameStarter campaignGameStarter)
 {
     GameObjects.AddRange(Campaign.Current.Kingdoms.Where(k => !k.IsEliminated).ToGameObjects());
     GameObjects.AddRange(Campaign.Current.Clans.Where(c => !c.IsEliminated).ToGameObjects());
     GameObjects.AddRange(Campaign.Current.Heroes.Where(h => h.IsActive && h.IsAlive).ToGameObjects());
     GameObjects.AddRange(Campaign.Current.Characters.Where(c => !c.IsTemplate && !c.IsChildTemplate).ToGameObjects());
 }
Ejemplo n.º 2
0
        public void Load()
        {
            if (Index > NovelInfo.Count - 1)
            {
                return;
            }
            GameObjects.RemoveAll(gameObject => gameObject.Tags.Contains("initObject"));
            var objects = NovelInfo[Index].Init(this);

            foreach (var obj in objects)
            {
                obj.Tags.Add("initObject");
            }

            GameObjects.AddRange(objects);
        }
Ejemplo n.º 3
0
 internal void UsualGameMode()
 {
     if (Score > 500 * Lvl)
     {
         Lvl++;
         Score = 0;
     }
     GlobalScore = Score + 500 * (Lvl - 1);
     Creator.UpdateMap();
     GameObjects.AddRange(NewObjects);
     NewObjects.Clear();
     MoveAllObjects(Move);
     Player.Move(this);
     HandlePlayerIntersection();
     UpdateListOfObjects();
 }
        public GameObjectListViewModel(IGameManager gameManager,
                                       IRegionManager regionManager,
                                       IEventAggregator eventAggregator,
                                       IContainerExtension containerExtension,
                                       IApplicationCommands applicationCommands
                                       )
        {
            _gameManager        = gameManager;
            _regionManager      = regionManager;
            _eventAggregator    = eventAggregator;
            _containerExtension = containerExtension;

            //TODO : 두 번쨰 로딩에서 오브젝트 클릭하면 터지는 거 해결하기
            ObjectSelectedCommand = new DelegateCommand(OnObjectSelected);
            AddNewObjectCommand   = new DelegateCommand(AddNewObject);

            applicationCommands.AddNewGameObjectCommand.RegisterCommand(AddNewObjectCommand);
            applicationCommands.GetCurrentGameObject = () =>
            {
                return(SelectedObject);
            };

            eventAggregator.GetEvent <SavefileLoadedEvent>().Subscribe(() =>
            {
                SelectedObjectIndex = -1;

                //Refresh region content
                GameObjects.Clear();
                GameObjects.AddRange(_gameManager.GameObjects);
            });

            eventAggregator.GetEvent <GameObjectModifiedEvent>().Subscribe((obj) =>
            {
                RefreshList?.Invoke();
            });
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            // update inputs
            foreach (var controller in controllers)
            {
                controller.UpdateInput();
            }

            if (!IsGameOver)
            {
                LevelScroller.layers[2].Enabled = true;
                LevelScroller.layers[3].Enabled = true;
                LevelScroller.layers[4].Enabled = false;
                LevelScroller.layers[5].Enabled = false;

                if (Paused)
                {
                    MediaPlayer.Pause();
                }
                else
                {
                    MediaPlayer.Resume();
                }

                GameHUD.Update(gameTime);

                // add to-spawn items to the gameobjects list
                GameObjects.AddRange(Level.ToSpawn);
                Level.ToSpawn.Clear();

                if (Mario.IsDead)
                {
                    if (Mario.TimeDied.TotalMilliseconds == 0)
                    {
                        Mario.TimeDied = gameTime.TotalGameTime;
                    }
                    else if (gameTime.TotalGameTime > Mario.TimeDied + new TimeSpan(0, 0, 0, 3))
                    {
                        if (HUDMap["Lives"] <= 0)
                        {
                            GameOver();
                        }
                        else
                        {
                            HUDMap["Lives"]--;
                            LoadGameLevel("mini_game");
                            MediaPlayer.Play(backGroundMusic);
                            Mario.Respawn();
                        }
                    }
                }

                if (Mario.ReachedGate)
                {
                    Mario.ReachedGate = false;
                    LoadGameLevel("hospital");
                    Mario.Respawn();
                }

                if (Mario.OnFlagpole)
                {
                    if (Mario.TimeWon.TotalMilliseconds == 0)
                    {
                        Mario.TimeWon = gameTime.TotalGameTime;
                    }
                    else if (gameTime.TotalGameTime > Mario.TimeWon + new TimeSpan(0, 0, 0, 5))
                    {
                        GameWon();
                    }
                }

                // update all game objects (their sprites are updated inside)
                foreach (var obj in GameObjects)
                {
                    if (!Paused)
                    {
                        obj.Update(gameTime);
                    }
                }

                UpdateCollisions();    // update collisions

                CleanDeletedObjects(); // remove any deleted items from anywhere they might remain
            }

            base.Update(gameTime);

            LevelScroller.Update();
        }