diff --git a/cis237assignment3/Droid.cs b/cis237assignment3/Droid.cs index d6e5a60423f3d9d3544d01dd021e179cd4474bcc..0e16ea79cdd820f86e308e530753455aab09695a 100644 --- a/cis237assignment3/Droid.cs +++ b/cis237assignment3/Droid.cs @@ -16,14 +16,37 @@ namespace cis237assignment3 { #region Variables - protected string selectedMaterialString; - protected string selectedModelString; - protected string selectedColorString; protected decimal baseCostDecimal; // Cost of droid before any extra features. IE, just the material, model, and color cost. protected decimal totalCostDecimal; // Full cost of droid, including all extra features. protected decimal costPerFeatureDecimal = 10; // Standard cost per most features. protected int numberOfItemsInt; // Number of individual items influencing droid price. + + // All the necessary variables for material selection. + protected string selectedMaterialString; + private decimal selectedMaterialDecimal; + public static string MATERIAL_1_STRING = "Tin"; + public static string MATERIAL_2_STRING = "Steel"; + public static string MATERIAL_3_STRING = "Titanium"; + public static string MATERIAL_4_STRING = "Mythril"; + public static string MATERIAL_5_STRING = "Unobtanium"; + + // All the necessary variables for model selection. + protected string selectedModelString; + protected decimal selectedModelDecimal; + public static string MODEL_1_STRING = "TI-84"; + public static string MODEL_2_STRING = "CAT5"; + public static string MODEL_3_STRING = "M7"; + + // All the necessary variables for color selection. + protected string selectedColorString; + private decimal selectedColorDecimal; + public static string COLOR_1_STRING = "White"; + public static string COLOR_2_STRING = "Black"; + public static string COLOR_3_STRING = "Blue"; + public static string COLOR_4_STRING = "Red"; + public static string COLOR_5_STRING = "Green"; + #endregion @@ -98,7 +121,11 @@ namespace cis237assignment3 #region Protected Methods - + /// <summary> + /// Creates string for droid type. Needed due to how inheritance works. + /// </summary> + /// <returns>String of droid's type.</returns> + protected abstract string TypeString(); #endregion @@ -109,12 +136,31 @@ namespace cis237assignment3 /// <summary> /// Calculates total cost of droid. /// </summary> - public abstract void CalculateTotalCost(); + public virtual void CalculateTotalCost() + { + totalCostDecimal = baseCostDecimal; + } + + /// <summary> + /// Determines the base cost of a droid. This is the cost of the droid minus any additional features. + /// IE, only the cost in regards to the model, material, and color. + /// </summary> + public void CalculateBaseCost() + { + baseCostDecimal = selectedModelDecimal + selectedMaterialDecimal + selectedColorDecimal; + } /// <summary> /// Calculates individual feature costs of droid. /// </summary> - public abstract void CalculateFeatures(); + public virtual void CalculateFeatures() + { + selectedModelDecimal = 10; + selectedMaterialDecimal = 10; + selectedColorDecimal = 10; + + CalculateBaseCost(); + } /// <summary> /// Shortened string for displaying of many droids, each in single line format. @@ -122,14 +168,19 @@ namespace cis237assignment3 /// <returns>Single ine formatted for list of droids.</returns> public virtual string DisplayShortToString() { - return (selectedMaterialString + " ").PadRight(11) + (selectedModelString + " ").PadRight(10) + (selectedColorString + " ").PadRight(10) + totalCostDecimal.ToString("C").PadLeft(10) + Environment.NewLine; + return TypeString().PadRight(11) + (selectedMaterialString + " ").PadRight(11) + (selectedModelString + " ").PadRight(10) + (selectedColorString + " ").PadRight(10) + totalCostDecimal.ToString("C").PadLeft(10) + Environment.NewLine; } /// <summary> /// Full string for displaying of single droid spanning multiple lines. /// </summary> /// <returns>Full information regarding single droid.</returns> - public abstract string DisplayLongToString(); + public virtual string DisplayLongToString() + { + return "".PadRight(5) + TypeString().PadRight(11) + (selectedMaterialString + " ").PadRight(11) + (selectedModelString + " ").PadRight(10) + selectedColorString.PadRight(10) + baseCostDecimal.ToString("C").PadLeft(10) + Environment.NewLine + + Environment.NewLine + + Environment.NewLine; + } #endregion diff --git a/cis237assignment3/DroidCollection.cs b/cis237assignment3/DroidCollection.cs index 3eaa38fd1b7a03aef7326c8aacdab3cc7b775a5e..205cc8aef5cbc21c47888a3fc2b9cf5c5b42b6ce 100644 --- a/cis237assignment3/DroidCollection.cs +++ b/cis237assignment3/DroidCollection.cs @@ -32,7 +32,7 @@ namespace cis237assignment3 { droidListSizeInt = 0; lenghtOfArrayInt = 10; - droidCollection = new Droid_Generic[lenghtOfArrayInt]; + droidCollection = new Droid[lenghtOfArrayInt]; } #endregion @@ -64,7 +64,7 @@ namespace cis237assignment3 { // Set list size to be one and a half times the size of current. lenghtOfArrayInt = droidListSizeInt + (droidListSizeInt / 2); - tempArray = new Droid_Generic[lenghtOfArrayInt]; + tempArray = new Droid[lenghtOfArrayInt]; indexInt = 0; // While not through entire list of droids yet. diff --git a/cis237assignment3/Droid_Generic.cs b/cis237assignment3/Droid_Generic.cs deleted file mode 100644 index 78a6eb7194cfb975230e94421e3114e9a22ae492..0000000000000000000000000000000000000000 --- a/cis237assignment3/Droid_Generic.cs +++ /dev/null @@ -1,345 +0,0 @@ -// Brandon Rodriguez - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace cis237assignment3 -{ - /// <summary> - /// Not Sure if needed? - /// </summary> - class Droid_Generic : Droid - { - #region Variables - - // All the necessary variables for material selection. - private decimal selectedMaterialDecimal; - public static string MATERIAL_1_STRING = "Tin"; - public static string MATERIAL_2_STRING = "Steel"; - public static string MATERIAL_3_STRING = "Titanium"; - public static string MATERIAL_4_STRING = "Mythril"; - public static string MATERIAL_5_STRING = "Unobtanium"; - private decimal material1Decimal; - private decimal material2Decimal; - private decimal material3Decimal; - private decimal material4Decimal; - private decimal material5Decimal; - - // All the necessary variables for model selection. - protected decimal selectedModelDecimal; - public static string MODEL_1_STRING = "TI-84"; - public static string MODEL_2_STRING = "CAT5"; - public static string MODEL_3_STRING = "M7"; - - private decimal model1Decimal; - private decimal model2Decimal; - - // All the necessary variables for color selection. - private decimal selectedColorDecimal; - public static string COLOR_1_STRING = "White"; - public static string COLOR_2_STRING = "Black"; - public static string COLOR_3_STRING = "Blue"; - public static string COLOR_4_STRING = "Red"; - public static string COLOR_5_STRING = "Green"; - private decimal color1Decimal; - private decimal color2Decimal; - private decimal color3Decimal; - private decimal color4Decimal; - private decimal color5Decimal; - - // Random variables for pricing creation. - Random random = new Random(); - private int randomNumberInt; - private int clearanceInt; - - #endregion - - - - #region Constructor - - /// <summary> - /// Base constructor. - /// </summary> - public Droid_Generic() - { - - } - - /// <summary> - /// - /// </summary> - /// <param name="material"></param> - /// <param name="model"></param> - /// <param name="color"></param> - public Droid_Generic(string material, string model, string color) - : base(material, model, color) - { - - } - - #endregion - - - - #region Properties - - - - #endregion - - - - #region Private Methods - - - /* EXTRA FUNCTIONALITY. WORK ON LAST. - /// <summary> - /// Sets a clearance int for the program. This is the permanent discount for all items on clearance. - /// </summary> - private void SetClearancePrice() - { - if (clearanceInt == null) - { - clearanceInt = random.Next(1, 10); - } - } - - /// <summary> - /// Sets pricings of each material type. - /// </summary> - private void MaterialPricing() - { - SetClearancePrice(); - - randomNumberInt = random.Next(5); - decimal baseMaterialCost = baseCostDecimal * 10; - - // Set price of material 1. - if (randomNumberInt == 0) - { - material1Decimal = ((baseMaterialCost - clearanceInt) / 2) + AddCents(); - } - else - { - material1Decimal = (baseMaterialCost / 2) + AddCents(); - } - - // Set price of material 2. - if (randomNumberInt == 1) - { - material2Decimal = (baseMaterialCost - clearanceInt) + AddCents(); - } - else - { - material2Decimal = baseMaterialCost + AddCents(); - } - - // Set price of material 3. - if (randomNumberInt == 2) - { - material3Decimal = (baseMaterialCost - clearanceInt) + AddCents(); - } - else - { - material3Decimal = baseMaterialCost + AddCents(); - } - - // Set price of material 4. - if (randomNumberInt == 3) - { - material4Decimal = (baseMaterialCost - clearanceInt) + AddCents(); - } - else - { - material4Decimal = baseMaterialCost + AddCents(); - } - - // Set price of material 5. - if (randomNumberInt == 4) - { - material5Decimal = (baseMaterialCost - clearanceInt) + AddCents(); - } - else - { - material5Decimal = baseMaterialCost + AddCents(); - } - } - - /// <summary> - /// Sets pricings of each model. - /// </summary> - private void ModelPricing() - { - randomNumberInt = random.Next(2); - decimal baseModelCost = baseCostDecimal * 5; - - // Sets price of model 1. - if (randomNumberInt == 0) - { - model1Decimal = (baseModelCost - clearanceInt) + AddCents(); - } - else - { - model1Decimal = baseModelCost + AddCents(); - } - - // Sets price of model 2. - if (randomNumberInt == 1) - { - model2Decimal = (baseModelCost - clearanceInt) + AddCents(); - } - else - { - model2Decimal = baseModelCost + AddCents(); - } - } - - /// <summary> - /// Sets pricings of each color. - /// </summary> - private void ColorPricing() - { - randomNumberInt = random.Next(5); - decimal baseColorCost = baseCostDecimal / 2; - - // Sets price of color 1. - if (randomNumberInt == 0) - { - color1Decimal = (baseColorCost - clearanceInt) + AddCents(); - } - else - { - color1Decimal = baseColorCost + AddCents(); - } - - // Sets price of color 2. - if (randomNumberInt == 1) - { - color2Decimal = (baseColorCost - clearanceInt) + AddCents(); - } - else - { - color2Decimal = baseColorCost + AddCents(); - } - - // Sets price of color 3. - if (randomNumberInt == 2) - { - color3Decimal = (baseColorCost - clearanceInt) + AddCents(); - } - else - { - color3Decimal = baseColorCost + AddCents(); - } - - // Sets price of color 4. - if (randomNumberInt == 3) - { - color4Decimal = (baseColorCost - clearanceInt) + AddCents(); - } - else - { - color4Decimal = baseColorCost + AddCents(); - } - - // Sets price of color 5. - if (randomNumberInt == 4) - { - color5Decimal = (baseColorCost - clearanceInt) + AddCents(); - } - else - { - color5Decimal = baseColorCost + AddCents(); - } - } - * - * */ - - /// <summary> - /// Determines the base cost of a droid. This is the cost of the droid minus any additional features. - /// IE, only the cost in regards to the model, material, and color. - /// </summary> - public void CalculateBaseCost() - { - baseCostDecimal = selectedModelDecimal + selectedMaterialDecimal + selectedColorDecimal; - } - - /// <summary> - /// Creates string for droid type. Needed due to how inheritance works. - /// </summary> - /// <returns>String of droid's type.</returns> - protected virtual string TypeString() - { - return ""; - } - - - #endregion - - - - #region Protected Methods - - /// <summary> - /// Adds a random amount of change for each pricing. - /// </summary> - /// <returns>A random decimal between 0(inclusive) and 1(exclusive).</returns> - protected decimal AddCents() - { - double centsDouble = random.NextDouble(); - return Convert.ToDecimal(centsDouble); - } - - #endregion - - - - #region Public Methods - - /// <summary> - /// Calculates total cost of a Generic droid. - /// </summary> - public override void CalculateTotalCost() - { - totalCostDecimal = baseCostDecimal; - } - - /// <summary> - /// Calculates individual feature costs of droid. - /// </summary> - public override void CalculateFeatures() - { - selectedModelDecimal = 10; - selectedMaterialDecimal = 10; - selectedColorDecimal = 10; - - CalculateBaseCost(); - } - - /// <summary> - /// Shortened string for displaying of many droids, each in single line format. - /// </summary> - /// <returns>Single ine formatted for list of droids.</returns> - public override string DisplayShortToString() - { - return TypeString().PadRight(11) + base.DisplayShortToString(); - } - - /// <summary> - /// Full string for displaying of single droid spanning multiple lines. - /// </summary> - /// <returns>Full information regarding single droid.</returns> - public override string DisplayLongToString() - { - return "".PadRight(5) + TypeString().PadRight(11) + (selectedMaterialString + " ").PadRight(11) + (selectedModelString + " ").PadRight(10) + selectedColorString.PadRight(10) + baseCostDecimal.ToString("C").PadLeft(10) + Environment.NewLine + - Environment.NewLine + - Environment.NewLine; - } - - #endregion - } -} diff --git a/cis237assignment3/Droid_Protocol.cs b/cis237assignment3/Droid_Protocol.cs index 1495299038ab4d54d6413d1af17854caf1f53600..f492d49905ff994ac54728e0d3e385e71d438bd2 100644 --- a/cis237assignment3/Droid_Protocol.cs +++ b/cis237assignment3/Droid_Protocol.cs @@ -12,7 +12,7 @@ namespace cis237assignment3 /// Class for Droids of type Protocol. /// Inherits only from Droid. /// </summary> - class Droid_Protocol : Droid_Generic + class Droid_Protocol : Droid { #region Variables diff --git a/cis237assignment3/Droid_Utility.cs b/cis237assignment3/Droid_Utility.cs index 451e0b1a618cbda3b84e9bd94abd3a797177a9b5..a76a9fbca178ce65037515c82943c33fc7ef1891 100644 --- a/cis237assignment3/Droid_Utility.cs +++ b/cis237assignment3/Droid_Utility.cs @@ -12,7 +12,7 @@ namespace cis237assignment3 /// Class for Droids of type Utility. /// Inherits only from Droid. /// </summary> - class Droid_Utility : Droid_Generic + class Droid_Utility : Droid { #region Variables diff --git a/cis237assignment3/RunProgram.cs b/cis237assignment3/RunProgram.cs index 975ea118bf1547848986aee75ec25086dbf32b95..05d8fbd283682759ae8a83910339d59d37c71726 100644 --- a/cis237assignment3/RunProgram.cs +++ b/cis237assignment3/RunProgram.cs @@ -414,19 +414,19 @@ namespace cis237assignment3 /// </summary> private void ModelSelection() { - UserInterface.Menus.DisplayModelSelectionMenu(Droid_Generic.MODEL_1_STRING, Droid_Generic.MODEL_2_STRING, Droid_Generic.MODEL_3_STRING); + UserInterface.Menus.DisplayModelSelectionMenu(Droid.MODEL_1_STRING, Droid.MODEL_2_STRING, Droid.MODEL_3_STRING); userInputString = UserInterface.GetUserInput(); switch (userInputString) { case "1": - selectedModelString = Droid_Generic.MODEL_1_STRING; + selectedModelString = Droid.MODEL_1_STRING; break; case "2": - selectedModelString = Droid_Generic.MODEL_2_STRING; + selectedModelString = Droid.MODEL_2_STRING; break; case "3": - selectedModelString = Droid_Generic.MODEL_3_STRING; + selectedModelString = Droid.MODEL_3_STRING; break; case "esc": UserInterface.ClearDisplayLine(); @@ -444,25 +444,25 @@ namespace cis237assignment3 /// </summary> private void MaterialSelection() { - UserInterface.Menus.DisplayMaterialSelectionMenu(Droid_Generic.MATERIAL_1_STRING, Droid_Generic.MATERIAL_2_STRING, Droid_Generic.MATERIAL_3_STRING, Droid_Generic.MATERIAL_4_STRING, Droid_Generic.MATERIAL_5_STRING); + UserInterface.Menus.DisplayMaterialSelectionMenu(Droid.MATERIAL_1_STRING, Droid.MATERIAL_2_STRING, Droid.MATERIAL_3_STRING, Droid.MATERIAL_4_STRING, Droid.MATERIAL_5_STRING); userInputString = UserInterface.GetUserInput(); switch (userInputString) { case "1": - selectedMaterialString = Droid_Generic.MATERIAL_1_STRING; + selectedMaterialString = Droid.MATERIAL_1_STRING; break; case "2": - selectedMaterialString = Droid_Generic.MATERIAL_2_STRING; + selectedMaterialString = Droid.MATERIAL_2_STRING; break; case "3": - selectedMaterialString = Droid_Generic.MATERIAL_3_STRING; + selectedMaterialString = Droid.MATERIAL_3_STRING; break; case "4": - selectedMaterialString = Droid_Generic.MATERIAL_4_STRING; + selectedMaterialString = Droid.MATERIAL_4_STRING; break; case "5": - selectedMaterialString = Droid_Generic.MATERIAL_5_STRING; + selectedMaterialString = Droid.MATERIAL_5_STRING; break; case "esc": UserInterface.ClearDisplayLine(); @@ -480,25 +480,25 @@ namespace cis237assignment3 /// </summary> private void ColorSelection() { - UserInterface.Menus.DisplayColorSelectionMenu(Droid_Generic.COLOR_1_STRING, Droid_Generic.COLOR_2_STRING, Droid_Generic.COLOR_3_STRING, Droid_Generic.COLOR_4_STRING, Droid_Generic.COLOR_5_STRING); + UserInterface.Menus.DisplayColorSelectionMenu(Droid.COLOR_1_STRING, Droid.COLOR_2_STRING, Droid.COLOR_3_STRING, Droid.COLOR_4_STRING, Droid.COLOR_5_STRING); userInputString = UserInterface.GetUserInput(); switch (userInputString) { case "1": - selectedColorString = Droid_Generic.COLOR_1_STRING; + selectedColorString = Droid.COLOR_1_STRING; break; case "2": - selectedColorString = Droid_Generic.COLOR_2_STRING; + selectedColorString = Droid.COLOR_2_STRING; break; case "3": - selectedColorString = Droid_Generic.COLOR_3_STRING; + selectedColorString = Droid.COLOR_3_STRING; break; case "4": - selectedColorString = Droid_Generic.COLOR_4_STRING; + selectedColorString = Droid.COLOR_4_STRING; break; case "5": - selectedColorString = Droid_Generic.COLOR_5_STRING; + selectedColorString = Droid.COLOR_5_STRING; break; case "esc": UserInterface.ClearDisplayLine(); diff --git a/cis237assignment3/cis237assignment3.csproj b/cis237assignment3/cis237assignment3.csproj index 871a7d2bf8a113cfa76ee6f2f0c3ca372709e8fe..85c3ff87c253e917a9feeb3fd38be752c8a5cd05 100644 --- a/cis237assignment3/cis237assignment3.csproj +++ b/cis237assignment3/cis237assignment3.csproj @@ -44,7 +44,6 @@ <Compile Include="Droid.cs" /> <Compile Include="DroidCollection.cs" /> <Compile Include="Droid_Astromech.cs" /> - <Compile Include="Droid_Generic.cs" /> <Compile Include="Droid_Janitor.cs" /> <Compile Include="Droid_Protocol.cs" /> <Compile Include="Droid_Utility.cs" />