/// <summary> /// Wybór jednej z zapisanych gier /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void gameStatesList_SelectedIndexChanged(object sender, EventArgs e) { this.Visible = false; //load game int index_in_xml = gameStatesList.SelectedIndex; // Create the data to save IAsyncResult result = StorageDevice.BeginShowSelector(PlayerIndex.One, null, null); //załadowanie pliku z wynikami dla odpowiedniego poziomu GameState.GameStateData saved_data = GameState.LoadGameState(result, ((MenuForm)Parent).player.Name); MenuForm form = (MenuForm)Parent; ((MenuForm)Parent).game_panel.Visible = true; this.Visible = false; //kliknięcie nowej gry w trakcie pauzy kończy dotychczasowa grę i uruchamia nową instancję if (((MenuForm)Parent).GamePause) { form.gameInstance.LoadSavedGame(saved_data, index_in_xml); } else { form.player = new Player(form.player.Name); form.gameInstance.SavedGame(form.player, saved_data, index_in_xml); // Thread thread = new Thread(new ThreadStart(form.gameInstance.Run)); // thread.Start(); } ((MenuForm)Parent).game_panel.GraphicsContainer.Focus(); }
/// <summary> /// Wypelnienie ListBox-a ze stanami gry do wyboru /// </summary> /// <param name="player_data">Dane pobrane z pliku XML z zapisanymi stanami gry</param> public void InitializeGameStatesList(GameState.GameStateData player_data) { for (int i = 0; i < player_data.Count; i++) { gameStatesList.Items.Add(player_data.Date[i]); } }
/// <summary> /// Zapis stanu gry do pliku zwi¹zanego z aktualnym graczem /// </summary> public void SaveGameState() { // Create the data to save IAsyncResult result = StorageDevice.BeginShowSelector(PlayerIndex.One, null, null); //za³adowanie pliku z wynikami dla odpowiedniego poziomu GameState.GameStateData saved_data = GameState.LoadGameState(result, player.Name); GameState.GameStateData new_saved_data = new GameState.GameStateData(saved_data.Count + 1, game_map.getWidth(), game_map.getHeight()); for (int i = 0; i < saved_data.Count; i++) { new_saved_data.Date[i] = saved_data.Date[i]; new_saved_data.Dynamites[i] = saved_data.Dynamites[i]; new_saved_data.Rackets[i] = saved_data.Rackets[i]; new_saved_data.Points[i] = saved_data.Points[i]; new_saved_data.Levels[i] = saved_data.Levels[i]; new_saved_data.TotalMinutes[i] = saved_data.TotalMinutes[i]; new_saved_data.TotalSeconds[i] = saved_data.TotalSeconds[i]; new_saved_data.GameMaps[i] = saved_data.GameMaps[i]; } new_saved_data.Date[new_saved_data.Count - 1] = System.DateTime.Now.ToString(); new_saved_data.Dynamites[new_saved_data.Count - 1] = player.Dynamite; new_saved_data.Rackets[new_saved_data.Count - 1] = player.Rackets; new_saved_data.Points[new_saved_data.Count - 1] = player.Points; new_saved_data.Levels[new_saved_data.Count - 1] = game_map.gameLevel; new_saved_data.TotalMinutes[new_saved_data.Count - 1] = totalMinutes; new_saved_data.TotalSeconds[new_saved_data.Count - 1] = totalSeconds; new_saved_data.GameMaps[new_saved_data.Count - 1] = game_map.getIntMap(); GameState.gameStateToSave = new_saved_data; GameState.SaveToDevice(result, player.Name); Form.load_game_panel.updateListItems(new_saved_data.Date[new_saved_data.Count - 1]); }
/// <summary> /// Podmiana gry na zapisan¹ instancjê /// </summary> /// <param name="game_state_data_to_load">Dane zapisanej gry</param> /// <param name="data_index">Indeks zapisanej gry</param> public void LoadSavedGame(GameState.GameStateData game_state_data_to_load, int data_index) { data_to_load = game_state_data_to_load; this.data_index = data_index; this.player.Dynamite = data_to_load.Dynamites[data_index]; this.player.Points = data_to_load.Points[data_index]; this.player.Rackets = data_to_load.Rackets[data_index]; totalMinutes = data_to_load.TotalMinutes[data_index]; totalSeconds = data_to_load.TotalSeconds[data_index]; game_map = new Map.Map(tile_size, map_width, map_height, data_to_load.GameMaps[data_index], this.Content, player); MediaPlayer.Resume(); if (!player.AudioSettings.IsMuted) { MediaPlayer.Volume = (float)player.AudioSettings.MusicVolume; } else { MediaPlayer.Volume = 0; } IsPaused = false; }
/***************** LOGIN PANEL **********************/ /// <summary> /// Obsługa kliknięcia przycisku logowania /// automatycznie player jest rejestrowany /// (co oznacza ze przy pierwszym logowaniu tworzone są pliki ustawień dla danego gracza) /// </summary> /// <param name="sender">przycisk wysyłający sygnał logowania</param> /// <param name="e"></param> private void loginButton_Click(object sender, EventArgs e) { player = new Game.Player(usernameTextBox.Text); activePanel.Visible = false; main_panel.Visible = true; //jesli gracz ma zapisane jakies stany gry to odblokuj przycisk ładowania na głownym menu IAsyncResult result = StorageDevice.BeginShowSelector(PlayerIndex.One, null, null); GameState.GameStateData saved_data = GameState.LoadGameState(result, player.Name); if (saved_data.Count == 0) { //Pierwsze uruchomienie gry ( brak listy najlepszych wynikow dla danego poziomu) main_panel.EnableLoadButton(false); } else { main_panel.EnableLoadButton(true); load_game_panel.InitializeGameStatesList(saved_data); } SaveOrLoadSettings(); }
/// <summary> /// Konstruktor ³aduj¹cy zapisan¹ grê /// </summary> /// <param name="player">Instancja gracza</param> /// <param name="game_state_data_to_load">Dane stany gry do ³adowania</param> /// <param name="data_index">Indeks danych w tablicy stanów gry</param> public void SavedGame(Player player, GameState.GameStateData game_state_data_to_load, int data_index) { this.player = player; data_to_load = game_state_data_to_load; if (data_to_load.Count != 0) { game_map = new Map.Map(tile_size, map_width, map_height, data_to_load.GameMaps[data_index], this.Content, player); } music = Content.Load <Song>("Audio\\background_music"); MediaPlayer.IsRepeating = true; MediaPlayer.Play(music); if (!player.AudioSettings.IsMuted) { MediaPlayer.Volume = (float)player.AudioSettings.MusicVolume; } else { MediaPlayer.Volume = 0; } MediaPlayer.Volume = (float)player.AudioSettings.MusicVolume; this.data_index = data_index; this.player.Dynamite = data_to_load.Dynamites[data_index]; this.player.Points = data_to_load.Points[data_index]; this.player.Rackets = data_to_load.Rackets[data_index]; totalMinutes = data_to_load.TotalMinutes[data_index]; totalSeconds = data_to_load.TotalSeconds[data_index]; Form.Invoke(new Action(() => Form.game_panel.playerName.Text = player.Name)); graphics.PreparingDeviceSettings += graphics_PreparingDeviceSettings; System.Windows.Forms.Control.FromHandle(Window.Handle).VisibleChanged += MainGame_VisibleChanged; System.Windows.Forms.Control.FromHandle(Form.Handle).KeyUp += new System.Windows.Forms.KeyEventHandler(Game_KeyUp); System.Windows.Forms.Control.FromHandle(Form.Handle).KeyPress += new System.Windows.Forms.KeyPressEventHandler(Game_KeyPress); System.Windows.Forms.Control.FromHandle(Form.Handle).KeyDown += new System.Windows.Forms.KeyEventHandler(Game_Key); System.Windows.Forms.Control.FromHandle(Form.Handle).PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(Game_PreviewKeyDown); IsMouseVisible = true; isStarted = true; }