Advertisement
Guest User

Untitled

a guest
Aug 10th, 2018
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 24.55 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using System.IO;
  11.  
  12. using Engine;
  13.  
  14. namespace SuperAdventure
  15. {
  16.     public partial class SuperAdventure : Form
  17.     {
  18.         private Player _player;
  19.         private Monster _currentMonster;
  20.         private HealingPotion _healingPotion;
  21.  
  22.         private const string PLAYER_DATA_FILE_NAME = "PlayerData.xml";
  23.  
  24.         public SuperAdventure()
  25.         {
  26.             InitializeComponent();
  27.  
  28.             SetCurrentPlayer(new Player(10, 10, 20, 0));
  29.  
  30.             lblHitPoints.DataBindings.Add("Text", _player, "CurrentHitPoints");
  31.             lblGold.DataBindings.Add("Text", _player, "Gold");
  32.             lblExperience.DataBindings.Add("Text", _player, "ExperiencePoints");
  33.             lblLevel.DataBindings.Add("Text", _player, "Level");
  34.         }
  35.  
  36.         private void SetCurrentPlayer(Player player)
  37.         {
  38.             _player = player;
  39.  
  40.             MoveTo(World.LocationByID(World.LOCATION_ID_HOME));
  41.  
  42.             _player.Inventory.Add(new InventoryItem(World.ItemByID(World.ITEM_ID_RUSTY_SWORD), 1));
  43.             _player.Inventory.Add(new InventoryItem(World.ItemByID(World.ITEM_ID_HEALING_POTION), 1));
  44.  
  45.             UpdateInventoryListInUI(); //shows weapon at the beginning, if any
  46.             UpdatePotionListInUI(); //shows potion at the beginning, if any
  47.             //UpdatePlayerStats(); //shows current stats at the beginning
  48.             UpdateQuestListInUI();
  49.         }
  50.  
  51.         public void ResetByDeath()
  52.         {
  53.             List<PlayerQuest> previousQuests = _player.Quests;
  54.             List<InventoryItem> previousInventory = _player.Inventory;
  55.             List<InventoryItem> itemsToEnterPlaces = new List<InventoryItem>();
  56.  
  57.             foreach (InventoryItem ii in previousInventory)
  58.             {
  59.                 foreach (Location location in World.Locations)
  60.                 {
  61.                     if (location.ItemRequiredToEnter != null)
  62.                     {
  63.                         if (ii.Details == location.ItemRequiredToEnter)
  64.                         {
  65.                             itemsToEnterPlaces.Add(ii); //stores items that are required to enter locations
  66.                         }
  67.                     }
  68.                 }
  69.             }
  70.  
  71.             Player newPlayer = new Player(_player.CurrentHitPoints, _player.MaximumHitPoints, 20, _player.ExperiencePoints);
  72.  
  73.             newPlayer.CurrentHitPoints = _player.MaximumHitPoints;
  74.  
  75.             foreach (InventoryItem item in itemsToEnterPlaces)
  76.             {
  77.                 newPlayer.Inventory.Add(item); //keeps only items that are required to enter places
  78.             }
  79.  
  80.             newPlayer.Quests = previousQuests; //keeps quest list and quests done when you die
  81.  
  82.             SetCurrentPlayer(newPlayer);
  83.  
  84.             ScrollToBottomOfMessages();
  85.             rtbMessages.Text += Environment.NewLine + Environment.NewLine + Environment.NewLine;
  86.         }
  87.  
  88.         private void btnNorth_Click(object sender, EventArgs e)
  89.         {
  90.             MoveTo(_player.CurrentLocation.LocationToNorth);
  91.         }
  92.  
  93.         private void btnEast_Click(object sender, EventArgs e)
  94.         {
  95.             MoveTo(_player.CurrentLocation.LocationToEast);
  96.         }
  97.  
  98.         private void btnSouth_Click(object sender, EventArgs e)
  99.         {
  100.             MoveTo(_player.CurrentLocation.LocationToSouth);
  101.         }
  102.  
  103.         private void btnWest_Click(object sender, EventArgs e)
  104.         {
  105.             MoveTo(_player.CurrentLocation.LocationToWest);
  106.         }
  107.  
  108.  
  109.         public void MoveTo(Location newLocation)
  110.         {
  111.             if (!_player.HasRequiredItemToEnterThisLocation(newLocation))
  112.             {
  113.                 ScrollToBottomOfMessages();
  114.                 rtbMessages.Text += "You must have a/an " + newLocation.ItemRequiredToEnter.Name + " to enter this location." + Environment.NewLine;
  115.                 return;
  116.  
  117.             }
  118.  
  119.             //Update the player's current location
  120.             _player.CurrentLocation = newLocation;
  121.  
  122.             //Show/hide available movement buttons
  123.             btnNorth.Visible = (newLocation.LocationToNorth != null);
  124.             btnEast.Visible = (newLocation.LocationToEast != null);
  125.             btnSouth.Visible = (newLocation.LocationToSouth != null);
  126.             btnWest.Visible = (newLocation.LocationToWest != null);
  127.  
  128.  
  129.  
  130.             //Display current location name and description
  131.             rtbLocation.Text = newLocation.Name + Environment.NewLine;
  132.             rtbLocation.Text += newLocation.Description + Environment.NewLine;
  133.  
  134.             //Does the location have a quest?
  135.             if (newLocation.QuestAvailableHere != null)
  136.             {
  137.                 //see if the player already has the quest, and if they've completed it
  138.                 bool playerAlreadyHasQuest = _player.HasThisQuest(newLocation.QuestAvailableHere);
  139.                 bool playerAlreadyHasCompletedQuest = _player.CompletedThisQuest(newLocation.QuestAvailableHere);
  140.  
  141.                 //See if the player already has the quest
  142.                 if (playerAlreadyHasQuest)
  143.                 {
  144.                     //if the player has not completed the quest yet
  145.                     if (!playerAlreadyHasCompletedQuest)
  146.                     {
  147.                         //See if the player has all the items needed to complete the quest
  148.                         bool playerHasAllTheItemsToCompleteQuest = _player.HasAllQuestCompletionItems(newLocation.QuestAvailableHere);
  149.  
  150.                         if (playerHasAllTheItemsToCompleteQuest)
  151.                         {
  152.                             //display message
  153.                             ScrollToBottomOfMessages();
  154.                             rtbMessages.Text += Environment.NewLine;
  155.                             ScrollToBottomOfMessages();
  156.                             rtbMessages.Text += "You complete the " + "«" + newLocation.QuestAvailableHere.Name + "»" + " quest." + Environment.NewLine;
  157.  
  158.  
  159.                             //remove quest items from inventory
  160.                             _player.RemoveQuestCompletionItems(newLocation.QuestAvailableHere);
  161.  
  162.                             //give quest rewards
  163.                             ScrollToBottomOfMessages();
  164.                             rtbMessages.Text += "You receive: " + Environment.NewLine;
  165.                             rtbMessages.Text += newLocation.QuestAvailableHere.RewardExperiencePoints.ToString() + " experience points" + Environment.NewLine;
  166.                             rtbMessages.Text += newLocation.QuestAvailableHere.RewardGold.ToString() + " gold" + Environment.NewLine;
  167.                             rtbMessages.Text += newLocation.QuestAvailableHere.RewardItem.Name + Environment.NewLine;
  168.                             rtbMessages.Text += Environment.NewLine;
  169.  
  170.                             _player.AddExperiencePoints(newLocation.QuestAvailableHere.RewardExperiencePoints);
  171.                             _player.Gold += newLocation.QuestAvailableHere.RewardGold;
  172.  
  173.  
  174.  
  175.                             //Add reward item to the player's inventory
  176.                             _player.AddItemToInventory(newLocation.QuestAvailableHere.RewardItem);
  177.  
  178.                             //mark the quest as completed
  179.                             _player.MarkQuestCompleted(newLocation.QuestAvailableHere);
  180.  
  181.                             //Update UI text
  182.                             UpdateInventoryListInUI();
  183.  
  184.                             UpdatePotionListInUI();
  185.  
  186.                             lblGold.Text = _player.Gold.ToString();
  187.                             lblExperience.Text = _player.ExperiencePoints.ToString();
  188.  
  189.                         }
  190.                     }
  191.                 }
  192.                 else
  193.                 {
  194.                     //the player does not already have the quest
  195.  
  196.                     //display messages
  197.                     ScrollToBottomOfMessages();
  198.                     rtbMessages.Text += "You receive the " + "«" + newLocation.QuestAvailableHere.Name + "»" + " quest." + Environment.NewLine;
  199.                     rtbMessages.Text += newLocation.QuestAvailableHere.Description + Environment.NewLine;
  200.                     rtbMessages.Text += "To complete it, return with: " + Environment.NewLine;
  201.                     foreach (QuestCompletionItem qci in newLocation.QuestAvailableHere.QuestCompletionItems)
  202.                     {
  203.                         if (qci.Quantity == 1)
  204.                         {
  205.                             ScrollToBottomOfMessages();
  206.                             rtbMessages.Text += qci.Quantity.ToString() + " " + qci.Details.Name + Environment.NewLine;
  207.                         }
  208.                         else
  209.                         {
  210.                             ScrollToBottomOfMessages();
  211.                             rtbMessages.Text += qci.Quantity.ToString() + " " + qci.Details.NamePlural + Environment.NewLine;
  212.                         }
  213.                     }
  214.                     ScrollToBottomOfMessages();
  215.                     rtbMessages.Text += Environment.NewLine;
  216.  
  217.                     //Add the quest to the player quest's list
  218.                     _player.Quests.Add(new PlayerQuest(newLocation.QuestAvailableHere));
  219.                 }
  220.             }
  221.  
  222.             //Does the location have a monster?
  223.             if (newLocation.MonsterLivingHere != null)
  224.             {
  225.                 ScrollToBottomOfMessages();
  226.                 rtbMessages.Text += Environment.NewLine;
  227.                 ScrollToBottomOfMessages();
  228.                 rtbMessages.Text += "You see a " + newLocation.MonsterLivingHere.Name + "." + Environment.NewLine;
  229.  
  230.                 //make a new monster, using the values from the standard monster in the World.Monster list
  231.                 Monster standardMonster = World.MonsterByID(newLocation.MonsterLivingHere.ID);
  232.  
  233.                 _currentMonster = new Monster(standardMonster.ID, standardMonster.Name, standardMonster.MaximumDamage,
  234.                     standardMonster.RewardExperiencePoints, standardMonster.RewardGold, standardMonster.CurrentHitPoints, standardMonster.MaximumHitPoints);
  235.  
  236.                 foreach (LootItem lootItem in standardMonster.LootTable)
  237.                 {
  238.                     _currentMonster.LootTable.Add(lootItem);
  239.                 }
  240.  
  241.                 cboWeapons.Visible = true;
  242.                 btnUseWeapon.Visible = true;
  243.  
  244.  
  245.             }
  246.             else
  247.             {
  248.                 _currentMonster = null;
  249.  
  250.                 cboWeapons.Visible = false;
  251.                 btnUseWeapon.Visible = false;
  252.             }
  253.  
  254.             //refresh player's inventory list
  255.             UpdateInventoryListInUI();
  256.  
  257.             //refresh player's quest list
  258.             UpdateQuestListInUI();
  259.  
  260.             //refresh player's weapons combobox
  261.             UpdateWeaponsListInUI();
  262.  
  263.             //refresh player's potion combobox
  264.             UpdatePotionListInUI();
  265.  
  266.             //Show/hide save button in presence of monsters
  267.             btnSave.Visible = (_currentMonster == null);
  268.         }
  269.  
  270.         private void UpdateInventoryListInUI()
  271.         {
  272.             dgvInventory.RowHeadersVisible = false;
  273.  
  274.             dgvInventory.ColumnCount = 2;
  275.             dgvInventory.Columns[0].Name = "Name";
  276.             dgvInventory.Columns[0].Width = 209;
  277.             dgvInventory.Columns[1].Name = "Quantity";
  278.  
  279.             dgvInventory.Rows.Clear();
  280.  
  281.             foreach (InventoryItem inventoryItem in _player.Inventory)
  282.             {
  283.                 if (inventoryItem.Quantity > 0)
  284.                 {
  285.                     dgvInventory.Rows.Add(new[] { inventoryItem.Details.Name, inventoryItem.Quantity.ToString() });
  286.                 }
  287.             }
  288.         }
  289.  
  290.         private void UpdateQuestListInUI()
  291.         {
  292.  
  293.             dgvQuests.RowHeadersVisible = false;
  294.  
  295.             dgvQuests.ColumnCount = 2;
  296.             dgvQuests.Columns[0].Name = "Name";
  297.             dgvQuests.Columns[0].Width = 209;
  298.             dgvQuests.Columns[1].Name = "Cleared?";
  299.  
  300.  
  301.             dgvQuests.Rows.Clear();
  302.  
  303.             foreach (PlayerQuest playerQuest in _player.Quests)
  304.             {
  305.                 if (playerQuest.IsCompleted)
  306.                 {
  307.                     dgvQuests.Rows.Add(new[] { playerQuest.Details.Name, "Yes" });
  308.                 }
  309.                 else
  310.                 {
  311.                     dgvQuests.Rows.Add(new[] { playerQuest.Details.Name, "No" });
  312.                 }
  313.             }
  314.         }
  315.  
  316.         private void UpdateWeaponsListInUI()
  317.         {
  318.             List<Weapon> weapons = new List<Weapon>();
  319.  
  320.             foreach (InventoryItem inventoryItem in _player.Inventory)
  321.             {
  322.                 if (inventoryItem.Details is Weapon)
  323.                 {
  324.                     if (inventoryItem.Quantity > 0)
  325.                     {
  326.                         weapons.Add((Weapon)inventoryItem.Details);
  327.                     }
  328.                 }
  329.             }
  330.  
  331.             if (weapons.Count == 0)
  332.             {
  333.                 //the player has no weapons, hide the combobox and "use" button
  334.                 cboWeapons.Visible = false;
  335.                 btnUseWeapon.Visible = false;
  336.             }
  337.             else
  338.             {
  339.                 cboWeapons.SelectedIndexChanged -= cboWeapons_SelectedIndexChanged;
  340.                 cboWeapons.DataSource = weapons;
  341.                 cboWeapons.SelectedIndexChanged += cboWeapons_SelectedIndexChanged;
  342.                 cboWeapons.DisplayMember = "Name";
  343.                 cboWeapons.ValueMember = "ID";
  344.  
  345.                 if (_player.CurrentWeapon != null)
  346.                 {
  347.                     cboWeapons.SelectedItem = _player.CurrentWeapon;
  348.                 }
  349.                 else
  350.                 {
  351.                     cboWeapons.SelectedIndex = 0;
  352.                 }
  353.             }
  354.         }
  355.  
  356.         private void UpdatePotionListInUI()
  357.         {
  358.             List<HealingPotion> healingPotions = new List<HealingPotion>();
  359.  
  360.             foreach (InventoryItem inventoryItem in _player.Inventory)
  361.             {
  362.                 if (inventoryItem.Details is HealingPotion)
  363.                 {
  364.                     if (inventoryItem.Quantity > 0)
  365.                     {
  366.                         healingPotions.Add((HealingPotion)inventoryItem.Details);
  367.                     }
  368.                 }
  369.             }
  370.  
  371.             if (healingPotions.Count == 0)
  372.             {
  373.                 //the player does not have any potions, hide the combobox and "use button
  374.                 cboPotions.Visible = false;
  375.                 btnUsePotion.Visible = false;
  376.             }
  377.             else
  378.             {
  379.                 cboPotions.Visible = true;
  380.                 btnUsePotion.Visible = true;
  381.  
  382.                 cboPotions.DataSource = healingPotions;
  383.                 cboPotions.DisplayMember = "Name";
  384.                 cboPotions.ValueMember = "ID";
  385.  
  386.                 cboPotions.SelectedIndex = 0;
  387.             }
  388.         }
  389.  
  390.         //private void UpdatePlayerStats()
  391.         //{
  392.         //    // Refresh player information and inventory controls
  393.         //    lblHitPoints.Text = _player.CurrentHitPoints.ToString();
  394.         //    lblGold.Text = _player.Gold.ToString();
  395.         //    lblExperience.Text = _player.ExperiencePoints.ToString();
  396.         //    lblLevel.Text = _player.Level.ToString();
  397.         //}
  398.  
  399.         private void btnUseWeapon_Click(object sender, EventArgs e)
  400.         {
  401.             //get the currently selected weapon from cboWeapons combobox
  402.             Weapon currentWeapon = (Weapon)cboWeapons.SelectedItem;
  403.  
  404.             //Determine the amount of damage to do to the monster
  405.             int damageToMonster = RandomNumberGenerator.NumberBetween(currentWeapon.MinimumDamage, currentWeapon.MaximumDamage) + _player.BaseDamage;
  406.  
  407.             //apply damage to monster's currenthitpoints
  408.             _currentMonster.CurrentHitPoints -= damageToMonster;
  409.  
  410.             //display message
  411.             ScrollToBottomOfMessages();
  412.             rtbMessages.Text += "You hit the " + _currentMonster.Name + " for " + damageToMonster.ToString() + " points." + Environment.NewLine;
  413.  
  414.             //check if the monster is dead
  415.             if (_currentMonster.CurrentHitPoints <= 0)
  416.             {
  417.                 //Monster is dead
  418.  
  419.                 ScrollToBottomOfMessages();
  420.                 rtbMessages.Text += "You defeated the " + _currentMonster.Name + "." + Environment.NewLine;
  421.                 ScrollToBottomOfMessages();
  422.                 rtbMessages.Text += Environment.NewLine;
  423.  
  424.                 btnUseWeapon.Visible = false;
  425.                 cboWeapons.Visible = false;
  426.                
  427.                 //Give player experience for killing the monster
  428.                 _player.AddExperiencePoints(_currentMonster.RewardExperiencePoints);
  429.  
  430.                 ScrollToBottomOfMessages();
  431.                 rtbMessages.Text += "You receive " + _currentMonster.RewardExperiencePoints.ToString() + " experience points." + Environment.NewLine;
  432.  
  433.                 //Give player gold for killing the monster
  434.                 _player.Gold += _currentMonster.RewardGold;
  435.                 if (_currentMonster.RewardGold == 1)
  436.                 {
  437.                     ScrollToBottomOfMessages();
  438.                     rtbMessages.Text += "You get " + _currentMonster.RewardGold.ToString() + " piece of gold." + Environment.NewLine;
  439.                 }
  440.                 else
  441.                 {
  442.                     ScrollToBottomOfMessages();
  443.                     rtbMessages.Text += "You get " + _currentMonster.RewardGold.ToString() + " pieces of gold." + Environment.NewLine;
  444.                 }
  445.  
  446.                 //get random loot items from the monster
  447.                 List<InventoryItem> lootedItems = new List<InventoryItem>();
  448.  
  449.                 //Add items to the lootedItems list, comparing a random number to the drop percentage
  450.                 foreach (LootItem lootItem in _currentMonster.LootTable)
  451.                 {
  452.                     if (RandomNumberGenerator.NumberBetween(1, 100) <= lootItem.DropPercentage)
  453.                     {
  454.                         lootedItems.Add(new InventoryItem(lootItem.Details, 1));
  455.                     }
  456.                 }
  457.  
  458.                 //if no items were randomly selected, then add the default loot item(s)
  459.                 if (lootedItems.Count == 0)
  460.                 {
  461.                     foreach (LootItem lootItem in _currentMonster.LootTable)
  462.                     {
  463.                         if (lootItem.IsDefaultItem)
  464.                         {
  465.                             lootedItems.Add(new InventoryItem(lootItem.Details, 1));
  466.                         }
  467.                     }
  468.                 }
  469.  
  470.                 //add the looted items to the player's inventory
  471.                 foreach (InventoryItem inventoryItem in lootedItems)
  472.                 {
  473.                     _player.AddItemToInventory(inventoryItem.Details);
  474.  
  475.                     if (inventoryItem.Quantity == 1)
  476.                     {
  477.                         ScrollToBottomOfMessages();
  478.                         rtbMessages.Text += "You loot " + inventoryItem.Quantity.ToString() + " " + inventoryItem.Details.Name + Environment.NewLine;
  479.                     }
  480.                     else
  481.                     {
  482.                         ScrollToBottomOfMessages();
  483.                         rtbMessages.Text += "You loot " + inventoryItem.Quantity.ToString() + inventoryItem.Details.NamePlural + Environment.NewLine;
  484.                     }
  485.                 }
  486.  
  487.  
  488.  
  489.                 //refresh player information and inventory controls
  490.                 //UpdatePlayerStats();
  491.  
  492.                 UpdateInventoryListInUI();
  493.                 UpdateWeaponsListInUI();
  494.                 UpdatePotionListInUI();
  495.  
  496.                 _currentMonster = null;
  497.  
  498.                 btnSave.Visible = (_currentMonster == null);
  499.             }
  500.             else
  501.             {
  502.                 //monster is still alive
  503.  
  504.                 //determine the amount of damage the monster does to the player
  505.                 int damageToPlayer = RandomNumberGenerator.NumberBetween(1, _currentMonster.MaximumDamage);
  506.  
  507.                 //display message
  508.                 ScrollToBottomOfMessages();
  509.                 rtbMessages.Text += "The " + _currentMonster.Name + " did " + damageToPlayer.ToString() + " points of damage." + Environment.NewLine;
  510.  
  511.                 //subtract damage from player
  512.                 _player.CurrentHitPoints -= damageToPlayer;
  513.  
  514.                 //refresh player data in UI
  515.                 //lblHitPoints.Text = _player.CurrentHitPoints.ToString();
  516.  
  517.                 if (_player.CurrentHitPoints <= 0)
  518.                 {
  519.                     ScrollToBottomOfMessages();
  520.                     rtbMessages.Text += "The " + _currentMonster.Name + " killed you." + Environment.NewLine;
  521.  
  522.                     ResetByDeath();
  523.                 }
  524.             }
  525.         }
  526.  
  527.         private void cboWeapons_SelectedIndexChanged(object sender, EventArgs e)
  528.         {
  529.             _player.CurrentWeapon = (Weapon)cboWeapons.SelectedItem;
  530.         }
  531.  
  532.         private void btnUsePotion_Click(object sender, EventArgs e)
  533.         {
  534.             //get the currently selected potion from the combobox
  535.             HealingPotion potion = (HealingPotion)cboPotions.SelectedItem;
  536.  
  537.             //Add healing amount to the player's current hit points
  538.             _player.CurrentHitPoints += potion.AmountToHeal;
  539.  
  540.             //current hit points cannot exceed player's max hit points
  541.             if (_player.CurrentHitPoints > _player.MaximumHitPoints)
  542.             {
  543.                 _player.CurrentHitPoints = _player.MaximumHitPoints;
  544.             }
  545.  
  546.             //remove the potion from the player's inventory
  547.             foreach (InventoryItem ii in _player.Inventory)
  548.             {
  549.                 if (ii.Details.ID == potion.ID)
  550.                 {
  551.                     ii.Quantity--;
  552.                     break;
  553.                 }
  554.             }
  555.             //display message
  556.             ScrollToBottomOfMessages();
  557.             rtbMessages.Text += "You drink a " + potion.Name + " that replenishes " + potion.AmountToHeal.ToString() + " hit points." + Environment.NewLine;
  558.  
  559.             if (_currentMonster != null)
  560.             {
  561.                 //monster gets their turn to attack
  562.  
  563.                 //determine the amount of damage the monster does to the player
  564.                 int damageToPlayer = RandomNumberGenerator.NumberBetween(1, _currentMonster.MaximumDamage);
  565.  
  566.                 //display message
  567.                 ScrollToBottomOfMessages();
  568.                 rtbMessages.Text += "The " + _currentMonster.Name + " did " + damageToPlayer.ToString() + " points of damage." + Environment.NewLine;
  569.  
  570.                 //subtract damage from player
  571.                 _player.CurrentHitPoints -= damageToPlayer;
  572.  
  573.                 if (_player.CurrentHitPoints <= 0)
  574.                 {
  575.                     ScrollToBottomOfMessages();
  576.                     rtbMessages.Text += "The " + _currentMonster.Name + " killed you." + Environment.NewLine;
  577.  
  578.                     ResetByDeath();
  579.  
  580.                 }
  581.             }
  582.  
  583.             //refresh player data in UI
  584.             //lblHitPoints.Text = _player.CurrentHitPoints.ToString();
  585.             UpdateInventoryListInUI();
  586.             UpdatePotionListInUI();
  587.         }
  588.  
  589.         private void ScrollToBottomOfMessages()
  590.         {
  591.             rtbMessages.SelectionStart = rtbMessages.Text.Length;
  592.             rtbMessages.ScrollToCaret();
  593.         }
  594.  
  595.         public void btnSave_Click(object sender, EventArgs e)
  596.         {
  597.             File.WriteAllText(PLAYER_DATA_FILE_NAME, _player.ToXmlString());
  598.             ScrollToBottomOfMessages();
  599.             rtbMessages.Text += "You saved the game." + Environment.NewLine;
  600.         }
  601.  
  602.         private void btnLoad_Click(object sender, EventArgs e)
  603.         {
  604.             //mtbDecideLoad.Visible = true;
  605.             //btnDecideYesLoad.Visible = true;
  606.             //btnDecideNoLoad.Visible = true;
  607.  
  608.             if (File.Exists(PLAYER_DATA_FILE_NAME))
  609.             {
  610.                 _player = Player.CreatePlayerFromXmlString(File.ReadAllText(PLAYER_DATA_FILE_NAME));
  611.                 ScrollToBottomOfMessages();
  612.                 rtbMessages.Text += "You loaded the previous game save." + Environment.NewLine;
  613.             }
  614.             else
  615.             {
  616.                 _player = Player.CreateDefaultPlayer();
  617.                 ScrollToBottomOfMessages();
  618.                 rtbMessages.Text += "No data saved. Starting a new game." + Environment.NewLine;
  619.             }
  620.  
  621.             MoveTo(_player.CurrentLocation);
  622.  
  623.             //UpdatePlayerStats();
  624.         }
  625.     }
  626. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement