From efa9ffef8987fce777a2fea7300f15f9a7770a84 Mon Sep 17 00:00:00 2001 From: Aaron Moser Date: Sun, 23 Jul 2023 11:41:51 +0200 Subject: [PATCH] Commented research controller --- .../Controller/ResearchCostController.cs | 133 +++++--- .../Controller/ResearchQueueController.cs | 285 ++++++++++++------ .../Controller/ResearchTechController.cs | 74 ++++- 3 files changed, 330 insertions(+), 162 deletions(-) diff --git a/Space4x/Assets/Scripts/Research/Controller/ResearchCostController.cs b/Space4x/Assets/Scripts/Research/Controller/ResearchCostController.cs index 818b5e8..fb4dd09 100644 --- a/Space4x/Assets/Scripts/Research/Controller/ResearchCostController.cs +++ b/Space4x/Assets/Scripts/Research/Controller/ResearchCostController.cs @@ -1,45 +1,74 @@ +/** + * @file + * + * @author Marc de Craigher + * @author Aaron Moser + * + * @package Assets.Scripts.Research.Controller + */ using System; using UnityEngine; namespace NResearchController { + /** + * @section DESCRIPTION + * + * Class administrates top level of game. + */ public class ResearchCostController { - /// - /// Reference to gamemodel, set by constructor. - /// - private GameModel oGameModel; + //--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + // Public values - /// - /// Reference to research cost view, set by constructor. - /// - private ResearchCostViewScript oResearchCostView; - - /// - /// Delegate of TechButtonEnterEvent. - /// + /** + * Delegate of TechButtonEnterEvent. + * + * @param sender, object, which triggered event. + * @param e, research event args, containing information about event. + */ public delegate void TechButtonEnterHandler(object sender, NResearch.ResearchEventArgs e); - /// - /// Event invoked if mouse/pointer enters a TechButton. - /// + /** + * Event invoked if mouse/pointer enters a TechButton. + */ public static event TechButtonEnterHandler TechButtonEnter; - /// - /// Delegate of TechButtonExit event. - /// + /** + * Delegate of TechButtonExit event. + * + * @param sender, object, which triggered event. + * @param e, research event args, containing information about event. + */ public delegate void TechButtonExitHandler(object sender, NResearch.ResearchEventArgs e); - /// - /// Event invoked if mouse/pointer exits a TechButton. - /// + /** + * Event invoked if mouse/pointer exits a TechButton. + */ public static event TechButtonExitHandler TechButtonExit; - /// - /// Constructor of ResearchCostController, sets own gamemodel and researchcostview. Also adds methods to TechButtonEnter and TechButtonExit events. - /// - /// - /// + //--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + // Private values + + /** + * Reference to gamemodel, set by constructor. + */ + private GameModel oGameModel; + + /** + * Reference to research cost view, set by constructor. + */ + private ResearchCostViewScript oResearchCostView; + + //--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + // Public functions + + /** + * Constructor of ResearchCostController, sets own gamemodel and researchcostview. Also adds methods to TechButtonEnter and TechButtonExit events. + * + * @param oGameModel, reference to game model. + * @param ResearchCostView, reference to research cost view. + */ public ResearchCostController(GameModel oGameModel, ResearchCostViewScript ResearchCostView) { this.oGameModel = oGameModel; @@ -50,33 +79,38 @@ namespace NResearchController TechButtonExit += OnTechButtonExit; } - /// - /// Called when mouse/pointer enters TechButton. - /// - /// - /// + /** + * Called when mouse/pointer enters TechButton. + * + * @param oSender, object, which triggered event. + * @param eReasearchEvent, research event args, containing information about event. + */ public static void TechButtonEnterEvent(object oSender, NResearch.EResearchEvent eResearchEvent) { TechButtonEnter?.Invoke(oSender, new NResearch.ResearchEventArgs(eResearchEvent)); } - /// - /// Called when mouse/pointer exits TechButton. - /// - /// - /// + /** + * Called when mouse/pointer exits TechButton. + * + * @param oSender, object, which triggered event. + * @param eReasearchEvent, research event args, containing information about event. + */ public static void TechButtonExitEvent(object oSender, NResearch.EResearchEvent eResearchEvent) { TechButtonExit?.Invoke(oSender, new NResearch.ResearchEventArgs(eResearchEvent)); } - /// - /// Method added to TechButtonEnter event. Depending on which tech button hovered, gets queue elements and current tech level and calculates the cost for the next upgrade. - /// Then writes the outcome into the cost view. - /// - /// - /// - /// + //--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + // Private functions + + /** + * Function added to TechButtonEnter event. Depending on which tech button hovered, gets queue elements and current tech level and calculates the cost for the next upgrade. + * Then writes the outcome into the cost view. + * + * @param oSender, object, which triggered event. + * @param e, research event args, containing information about event. + */ private void OnTechButtonEnter(object oSender, NResearch.ResearchEventArgs e) { // Get research queue @@ -164,12 +198,13 @@ namespace NResearchController oResearchCostView.SetCostLabel(iCost); } - /// - /// Gets called when mouse pointer exits a tech button. Sets cost label text to 0. - /// Parameters are not used. - /// - /// - /// + /** + * Gets called when mouse pointer exits a tech button. Sets cost label text to 0. + * Parameters are not used. + * + * @param oSender, object, which triggered event. + * @param e, research event args, containing information about event. + */ private void OnTechButtonExit(object oSender, NResearch.ResearchEventArgs e) { oResearchCostView.SetCostLabel(0); diff --git a/Space4x/Assets/Scripts/Research/Controller/ResearchQueueController.cs b/Space4x/Assets/Scripts/Research/Controller/ResearchQueueController.cs index 68e220c..0ab7f34 100644 --- a/Space4x/Assets/Scripts/Research/Controller/ResearchQueueController.cs +++ b/Space4x/Assets/Scripts/Research/Controller/ResearchQueueController.cs @@ -1,18 +1,60 @@ +/** + * @file + * + * @author Marc de Craigher + * @author Aaron Moser + * + * @package Assets.Scripts.Research.Controller + */ using System; using UnityEngine; namespace NResearchController { + /** + * @section DESCRIPTION + * + * Class administrates communication between research queue model and view. + */ public class ResearchQueueController { - private GameModel oGameModel; - - private ResearchQueueViewScript oResearchQueueView; + //--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + // Public values + /** + * + * @param sender, object, which triggered event. + * @param e, research event arguments, conataining additional information about event triggered. + */ public delegate void TechRemoveButtonPressedHandler(object sender, NResearch.ResearchEventArgs e); + /** + * Event handler for event when tech remove button is pressed. + */ public static event TechRemoveButtonPressedHandler TechRemoveButtonPressed; + //--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + // Private values + + /** + * Reference to game model. + */ + private GameModel oGameModel; + + /** + * Reference to research queue view. + */ + private ResearchQueueViewScript oResearchQueueView; + + //--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + // Public functions + + /** + * Constructor sets references to game model and research queue view. + * + * @param oGameModel, reference to game model. + * @param oResearchQueueView, reference to research queue view. + */ public ResearchQueueController(GameModel oGameModel, ResearchQueueViewScript oResearchQueueView) { this.oGameModel = oGameModel; @@ -22,11 +64,152 @@ namespace NResearchController TechRemoveButtonPressed += OnTechRemoveButtonPressed; } + /** + * Invokes TechRemoveButtonPressed event if it is not null with overhanded parameters. + * + * @param oSender, object, which triggered event. + * @param eResearchEvent, research event arguments, conataining additional information about event triggered. + */ public static void TechRemoveButtonPressedEvent(object oSender, NResearch.EResearchEvent eResearchEvent) { TechRemoveButtonPressed?.Invoke(oSender, new NResearch.ResearchEventArgs(eResearchEvent)); } + /** + * Simulates one day for the tech queue, popping the first element and increasing the tech level, if the player has enough science points. + * + * @todo string at queue not optimal because mapping is necessary and changing language not possible. + */ + public void SimulateDay() + { + PlayerManager[] oPlayerManager = oGameModel.PlayerModel.GetPlayerManagers(); + + for (int i = 0; i < oPlayerManager.Length; i++) + { + int iCost = 0; + + string sTechnologyToLevelUp = oPlayerManager[i].ResearchModel.ResearchQueueModel.GetTechnologyQueueElement(0); + + switch (sTechnologyToLevelUp) + { + case ("IndustryTech"): + { + // Checks if player has enough science to increase the level. + if (oPlayerManager[i].PlayerAttributes.Resous.Science >= oPlayerManager[i].ResearchModel.Techs.IndustrialCapacityTech.Cost) + { + // If player has enough science to increase the level, reduce science by cost. + oPlayerManager[i].PlayerAttributes.Resous.Science -= (int)Math.Pow((double)oPlayerManager[i].ResearchModel.Techs.IndustrialCapacityTech.Level, (double)2); + + oPlayerManager[i].ResearchModel.Techs.IndustrialCapacityTech.Level++; + + //Calcuate new cost and set cost at model + iCost = (int)Math.Pow((double)oPlayerManager[i].ResearchModel.Techs.IndustrialCapacityTech.Level, (double)2); + oPlayerManager[i].ResearchModel.Techs.IndustrialCapacityTech.Cost = iCost; + + // Remove first element of tech queue since the player had enough science to increase the tech level. + oPlayerManager[i].ResearchModel.ResearchQueueModel.PopFirstTechnologyQueueElement(); + } + } + break; + case ("WealthTech"): + { + // Checks if player has enough science to increase the level. + if (oPlayerManager[i].PlayerAttributes.Resous.Science >= oPlayerManager[i].ResearchModel.Techs.WealthTech.Cost) + { + // If player has enough science to increase the level, reduce science by cost. + oPlayerManager[i].PlayerAttributes.Resous.Science -= (int)Math.Pow((double)oPlayerManager[i].ResearchModel.Techs.WealthTech.Level, (double)2); + + oPlayerManager[i].ResearchModel.Techs.WealthTech.Level++; + + //Calcuate new cost and set cost at model + iCost = (int)Math.Pow((double)oPlayerManager[i].ResearchModel.Techs.WealthTech.Level, (double)2); + oPlayerManager[i].ResearchModel.Techs.WealthTech.Cost = iCost; + + // Remove first element of tech queue since the player had enough science to increase the tech level. + oPlayerManager[i].ResearchModel.ResearchQueueModel.PopFirstTechnologyQueueElement(); + } + } + break; + case ("ScienceTech"): + { + // Checks if player has enough science to increase the level. + if (oPlayerManager[i].PlayerAttributes.Resous.Science >= oPlayerManager[i].ResearchModel.Techs.ScienceTech.Cost) + { + // If player has enough science to increase the level, reduce science by cost. + oPlayerManager[i].PlayerAttributes.Resous.Science -= (int)Math.Pow((double)oPlayerManager[i].ResearchModel.Techs.ScienceTech.Level, (double)2); + + oPlayerManager[i].ResearchModel.Techs.ScienceTech.Level++; + + //Calcuate new cost and set cost at model + iCost = (int)Math.Pow((double)oPlayerManager[i].ResearchModel.Techs.ScienceTech.Level, (double)2); + oPlayerManager[i].ResearchModel.Techs.ScienceTech.Cost = iCost; + + // Remove first element of tech queue since the player had enough science to increase the tech level. + oPlayerManager[i].ResearchModel.ResearchQueueModel.PopFirstTechnologyQueueElement(); + } + } + break; + case ("FoodTech"): + { + // Checks if player has enough science to increase the level. + if (oPlayerManager[i].PlayerAttributes.Resous.Science >= oPlayerManager[i].ResearchModel.Techs.FoodTech.Cost) + { + // If player has enough science to increase the level, reduce science by cost. + oPlayerManager[i].PlayerAttributes.Resous.Science -= (int)Math.Pow((double)oPlayerManager[i].ResearchModel.Techs.FoodTech.Level, (double)2); + + oPlayerManager[i].ResearchModel.Techs.FoodTech.Level++; + + //Calcuate new cost and set cost at model + iCost = (int)Math.Pow((double)oPlayerManager[i].ResearchModel.Techs.FoodTech.Level, (double)2); + oPlayerManager[i].ResearchModel.Techs.FoodTech.Cost = iCost; + + // Remove first element of tech queue since the player had enough science to increase the tech level. + oPlayerManager[i].ResearchModel.ResearchQueueModel.PopFirstTechnologyQueueElement(); + } + } + break; + case ("PowerTech"): + { + // Checks if player has enough science to increase the level. + if (oPlayerManager[i].PlayerAttributes.Resous.Science >= oPlayerManager[i].ResearchModel.Techs.PowerTech.Cost) + { + // If player has enough science to increase the level, reduce science by cost. + oPlayerManager[i].PlayerAttributes.Resous.Science -= (int)Math.Pow((double)oPlayerManager[i].ResearchModel.Techs.PowerTech.Level, (double)2); + + oPlayerManager[i].ResearchModel.Techs.PowerTech.Level++; + + //Calcuate new cost and set cost at model + iCost = (int)Math.Pow((double)oPlayerManager[i].ResearchModel.Techs.PowerTech.Level, (double)2); + oPlayerManager[i].ResearchModel.Techs.PowerTech.Cost = iCost; + + // Remove first element of tech queue since the player had enough science to increase the tech level. + oPlayerManager[i].ResearchModel.ResearchQueueModel.PopFirstTechnologyQueueElement(); + } + } + break; + case ("--"): + { + + } + break; + default: + { + throw new Exception("Unknown element popped from tech queue."); + } + } + } + } + + //--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + // Private functions + + /** + * Removes last added technology from queue. + * And updates queue view. + * + * @param oSender, object, which triggered event. + * @param e, research event arguments, conataining additional information about event triggered. + */ private void OnTechRemoveButtonPressed(object oSender, NResearch.ResearchEventArgs e) { switch (e.eResearchEvent) @@ -44,101 +227,5 @@ namespace NResearchController } } } - - // TODO string at queue not optimal - public void SimulateDay() - { - PlayerManager[] oPlayerManager = oGameModel.PlayerModel.GetPlayerManagers(); - - for (int i = 0; i < oPlayerManager.Length; i++) - { - int iCost = 0; - - string sTechnologyToLevelUp = oPlayerManager[i].ResearchModel.ResearchQueueModel.GetTechnologyQueueElement(0); - - switch (sTechnologyToLevelUp) - { - case ("IndustryTech"): - { - if (oPlayerManager[i].PlayerAttributes.Resous.Science >= oPlayerManager[i].ResearchModel.Techs.IndustrialCapacityTech.Cost) - { - oPlayerManager[i].PlayerAttributes.Resous.Science -= (int)Math.Pow((double)oPlayerManager[i].ResearchModel.Techs.IndustrialCapacityTech.Level, (double)2); - - oPlayerManager[i].ResearchModel.Techs.IndustrialCapacityTech.Level++; - iCost = (int)Math.Pow((double)oPlayerManager[i].ResearchModel.Techs.IndustrialCapacityTech.Level, (double)2); - oPlayerManager[i].ResearchModel.Techs.IndustrialCapacityTech.Cost = iCost; - - oPlayerManager[i].ResearchModel.ResearchQueueModel.PopFirstTechnologyQueueElement(); - } - } - break; - case ("WealthTech"): - { - if (oPlayerManager[i].PlayerAttributes.Resous.Science >= oPlayerManager[i].ResearchModel.Techs.WealthTech.Cost) - { - oPlayerManager[i].PlayerAttributes.Resous.Science -= (int)Math.Pow((double)oPlayerManager[i].ResearchModel.Techs.WealthTech.Level, (double)2); - - oPlayerManager[i].ResearchModel.Techs.WealthTech.Level++; - iCost = (int)Math.Pow((double)oPlayerManager[i].ResearchModel.Techs.WealthTech.Level, (double)2); - oPlayerManager[i].ResearchModel.Techs.WealthTech.Cost = iCost; - - oPlayerManager[i].ResearchModel.ResearchQueueModel.PopFirstTechnologyQueueElement(); - } - } - break; - case ("ScienceTech"): - { - if (oPlayerManager[i].PlayerAttributes.Resous.Science >= oPlayerManager[i].ResearchModel.Techs.ScienceTech.Cost) - { - oPlayerManager[i].PlayerAttributes.Resous.Science -= (int)Math.Pow((double)oPlayerManager[i].ResearchModel.Techs.ScienceTech.Level, (double)2); - - oPlayerManager[i].ResearchModel.Techs.ScienceTech.Level++; - iCost = (int)Math.Pow((double)oPlayerManager[i].ResearchModel.Techs.ScienceTech.Level, (double)2); - oPlayerManager[i].ResearchModel.Techs.ScienceTech.Cost = iCost; - - oPlayerManager[i].ResearchModel.ResearchQueueModel.PopFirstTechnologyQueueElement(); - } - } - break; - case ("FoodTech"): - { - if (oPlayerManager[i].PlayerAttributes.Resous.Science >= oPlayerManager[i].ResearchModel.Techs.FoodTech.Cost) - { - oPlayerManager[i].PlayerAttributes.Resous.Science -= (int)Math.Pow((double)oPlayerManager[i].ResearchModel.Techs.FoodTech.Level, (double)2); - - oPlayerManager[i].ResearchModel.Techs.FoodTech.Level++; - iCost = (int)Math.Pow((double)oPlayerManager[i].ResearchModel.Techs.FoodTech.Level, (double)2); - oPlayerManager[i].ResearchModel.Techs.FoodTech.Cost = iCost; - - oPlayerManager[i].ResearchModel.ResearchQueueModel.PopFirstTechnologyQueueElement(); - } - } - break; - case ("PowerTech"): - { - if (oPlayerManager[i].PlayerAttributes.Resous.Science >= oPlayerManager[i].ResearchModel.Techs.PowerTech.Cost) - { - oPlayerManager[i].PlayerAttributes.Resous.Science -= (int)Math.Pow((double)oPlayerManager[i].ResearchModel.Techs.PowerTech.Level, (double)2); - - oPlayerManager[i].ResearchModel.Techs.PowerTech.Level++; - iCost = (int)Math.Pow((double)oPlayerManager[i].ResearchModel.Techs.PowerTech.Level, (double)2); - oPlayerManager[i].ResearchModel.Techs.PowerTech.Cost = iCost; - - oPlayerManager[i].ResearchModel.ResearchQueueModel.PopFirstTechnologyQueueElement(); - } - } - break; - case ("--"): - { - - } - break; - default: - { - throw new Exception("Unknown element popped from tech queue."); - } - } - } - } } } \ No newline at end of file diff --git a/Space4x/Assets/Scripts/Research/Controller/ResearchTechController.cs b/Space4x/Assets/Scripts/Research/Controller/ResearchTechController.cs index e02843f..759269a 100644 --- a/Space4x/Assets/Scripts/Research/Controller/ResearchTechController.cs +++ b/Space4x/Assets/Scripts/Research/Controller/ResearchTechController.cs @@ -1,17 +1,60 @@ +/** + * @file + * + * @author Marc de Craigher + * @author Aaron Moser + * + * @package Assets.Scripts.Research.Controller + */ using System; namespace NResearchController { + /** + * @section DESCRIPTION + * + * @todo Class administrates communication between research tech model and view. + */ public class ResearchTechController { - private GameModel oGameModel; - - private ResearchQueueViewScript oResearchQueueView; + //--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + // Public values + /** + * Delegate of TechButtonPressed event. + * + * @param oGameModel, reference to game model. + * @param oResearchQueueView, reference to research queue view. + */ public delegate void TechButtonPressedHandler(object sender, NResearch.ResearchEventArgs e); + /** + * Event TechButtonPressed triggered from tech buttons if they are pressed. + */ public static event TechButtonPressedHandler TechButtonPressed; + //--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + // Private values + + /** + * Reference to game model. + */ + private GameModel oGameModel; + + /** + * Reference to research queue view. + */ + private ResearchQueueViewScript oResearchQueueView; + + //--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + // Public functions + + /** + * Sets game model and research queue view references. + * + * @param oGameModel, reference to game model. + * @param oResearchQueueView, reference to research queue view. + */ public ResearchTechController(GameModel oGameModel, ResearchQueueViewScript oResearchQueueView) { this.oGameModel = oGameModel; @@ -20,22 +63,25 @@ namespace NResearchController TechButtonPressed += OnTechButtonPressed; } - /// - /// - /// - /// - /// + /** + * + * @param oSender, object, which triggered event. + * @param eResearchEvent, research event arguments, containing additional information to event occured. + */ public static void TechButtonPressedEvent(object oSender, NResearch.EResearchEvent eResearchEvent) { TechButtonPressed?.Invoke(oSender, new NResearch.ResearchEventArgs(eResearchEvent)); } - /// - /// - /// - /// - /// - /// + //--------------------------------------------------------------------------------------------------------------------------------------------------------------------- + // Private functions + + /** + * Adds tech to research indicated by event args to queue. + * + * @param oSender, object, which triggered event. + * @param e, research event arguments, containing additional information to event occured. + */ private void OnTechButtonPressed(object oSender, NResearch.ResearchEventArgs e) { ResearchQueueModel oResearchQueueModel = oGameModel.PlayerModel.GetPlayerManagers()[0].ResearchModel.ResearchQueueModel;