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;