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()); }
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); }
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(); }); }
/// <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(); }