private void AssignPlayerData(Player player) { // see if it's cached var inputDevice = player.InputDevice; if (PlayerWeaponLevelManager.PlayerWeaponLevels.ContainsKey(inputDevice)) { player.PlayerData = PlayerWeaponLevelManager.PlayerWeaponLevels[inputDevice]; } else { // try to load or create: player.PlayerData = PlayerWeaponLevelManager.LoadForInputDevice(inputDevice); if (player.PlayerData == null) { player.PlayerData = new Models.PlayerData(); player.PlayerData.InitializeAllWeapons(); } PlayerWeaponLevelManager.PlayerWeaponLevels[player.InputDevice] = player.PlayerData; } player.OnPlayerDeath += (deadPlayer) => { deadPlayerInputDevices.Add(deadPlayer.InputDevice); foreach (var enemy in EnemyList) { enemy.ReactToPlayerDeath(deadPlayer); } }; }
void CustomDestroy() { PlayerWeaponLevelManager.SaveAll(); Camera.Main.Detach(); LoopedBackgroundMusic?.Stop(); LoopedBackgroundMusic?.Dispose(); }
private Player JoinWith(IInputDevice inputDevice) { var player = new Player(); PlayerWeaponLevelManager.AddUniqueInputDevice(inputDevice); player.CurrentColorCategoryState = PlayerList.Count.ToPlayerColorCategory(); PlayerList.Add(player); player.InitializeTopDownInput(inputDevice); player.SwappedWeapon += () => HandlePlayerSwappedWeapon(player); AssignPlayerData(player); SetInitialPlayerPosition(player); return(player); }
private void InitializeUi() { var gameScreenGumRuntime = ((GameScreenGumRuntime)GameScreenGum); gameScreenGumRuntime.SetNumberOfPlayers(PlayerList.Count); gameScreenGumRuntime.QuitClicked += (not, used) => FlatRedBallServices.Game.Exit(); gameScreenGumRuntime.ResumeClicked += (not, used) => DoUnpause(); gameScreenGumRuntime.ClearDataClicked += (not, used) => { PlayerWeaponLevelManager.ClearAll(); this.MoveToScreen(nameof(Level1)); }; gameScreenGumRuntime.StartLevel += () => DoStartLevel(); gameScreenGumRuntime.ShowLevelStart($"{LevelName}"); foreach (var player in PlayerList) { ((GameScreenGumRuntime)GameScreenGum) .RefreshExperienceBar(player, UpdateType.Instant, false); } }