Galaxy scripts commented
This commit is contained in:
@@ -1,16 +1,49 @@
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* @author Aaron Moser
|
||||
*
|
||||
* @package Assets.Scripts.Galaxy.Controller
|
||||
*/
|
||||
namespace NGalaxy
|
||||
{
|
||||
/**
|
||||
* @section DESCRIPTION
|
||||
*
|
||||
* @todo Class cares about communication of galaxy view and model.
|
||||
*
|
||||
* At the moment just instantiates a street system of solar systems at galaxy model and lets view display it.
|
||||
*/
|
||||
public class GalaxyController
|
||||
{
|
||||
private NGalaxy.GalaxyModelBuilder oGalaxyModelBuilder;
|
||||
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
// Public values
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
// Private values
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
// Public functions
|
||||
|
||||
/**
|
||||
* Constructor of galaxy controller, creates at the moment only a street solar system.
|
||||
*
|
||||
* @todo Add different maps to lobby, which players can choose from. Add parameter to this constructor that describes what kind of map was chosen.
|
||||
*
|
||||
* @param oGalaxyModel, reference to galaxy model.
|
||||
* @param oGalaxyView, reference to galaxy view.
|
||||
*/
|
||||
public GalaxyController(GalaxyModel oGalaxyModel, GalaxyViewScript oGalaxyView)
|
||||
{
|
||||
oGalaxyModelBuilder = new NGalaxy.GalaxyModelBuilder();
|
||||
NGalaxy.GalaxyModelBuilder oGalaxyModelBuilder = new NGalaxy.GalaxyModelBuilder();
|
||||
|
||||
// Create street solar system
|
||||
oGalaxyModel.SolarSystemModels = oGalaxyModelBuilder.BuildStreetSystem(oGalaxyModel.SolarSystemCount);
|
||||
|
||||
oGalaxyView.DisplaySolarSystems();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
// Private functions
|
||||
}
|
||||
}
|
||||
@@ -1,16 +1,56 @@
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* @author Aaron Moser
|
||||
*
|
||||
* @package Assets.Scripts.Galaxy.Model
|
||||
*/
|
||||
namespace NGalaxy
|
||||
{
|
||||
/**
|
||||
* @section DESCRIPTION
|
||||
*
|
||||
* Class containing definition of galaxy model.
|
||||
* Galaxy model consists of solar system models.
|
||||
*/
|
||||
public class GalaxyModel
|
||||
{
|
||||
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
// Public values
|
||||
|
||||
/**
|
||||
* Count of solar system at galaxy.
|
||||
*/
|
||||
public int SolarSystemCount;
|
||||
|
||||
/**
|
||||
* Array with references to solar system models.
|
||||
*/
|
||||
public SolarSystemModel[] SolarSystemModels;
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
// Private values
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
// Public functions
|
||||
|
||||
/**
|
||||
* Constructor of galaxy model, sets only count of solar systems
|
||||
*/
|
||||
public GalaxyModel()
|
||||
{
|
||||
this.SolarSystemCount = NewGameDataManager.Instance.NumberOfSolarSystems;
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches for planet indicated by unique iPlanetID at the solar systems.
|
||||
*
|
||||
* @todo throw Exception if planet was not found, because this sholdn't be possible and returning null is not good.
|
||||
*
|
||||
* @param PlanetID, unique id of a planet to search for.
|
||||
*
|
||||
* @return Planet indicated by PlanetID or null if planet not found.
|
||||
*/
|
||||
public NPlanet.PlanetModel FindPlanet(int PlanetID)
|
||||
{
|
||||
NPlanet.PlanetModel oPlanetToReturn = null;
|
||||
@@ -27,6 +67,13 @@ namespace NGalaxy
|
||||
return oPlanetToReturn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns sum of industrial capacity of a solar system which belongs to the player indicated by iPlayerID.
|
||||
*
|
||||
* @param iPlayerID, id of player to check the amount of industrial capacity.
|
||||
*
|
||||
* @return Sum of industrial capacity of the player.
|
||||
*/
|
||||
public int GetIndustrialCapacityOfSolarSystems(int iPlayerID)
|
||||
{
|
||||
int iIndustrialCapacitySum = 0;
|
||||
@@ -37,6 +84,13 @@ namespace NGalaxy
|
||||
return iIndustrialCapacitySum;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns sum of money of a solar system which belongs to the player indicated by iPlayerID.
|
||||
*
|
||||
* @param iPlayerID, id of player to check the amount of money.
|
||||
*
|
||||
* @return Sum of money of the player.
|
||||
*/
|
||||
public int GetMoneyOfSolarSystems(int iPlayerID)
|
||||
{
|
||||
int iMoneySum = 0;
|
||||
@@ -47,6 +101,13 @@ namespace NGalaxy
|
||||
return iMoneySum;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns sum of science of a solar system which belongs to the player indicated by iPlayerID.
|
||||
*
|
||||
* @param iPlayerID, id of player to check the amount of science.
|
||||
*
|
||||
* @return Sum of science of the player.
|
||||
*/
|
||||
public int GetScienceOfSolarSystems(int iPlayerID)
|
||||
{
|
||||
int iScienceSum = 0;
|
||||
@@ -57,6 +118,13 @@ namespace NGalaxy
|
||||
return iScienceSum;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns sum of power of a solar system which belongs to the player indicated by iPlayerID.
|
||||
*
|
||||
* @param iPlayerID, id of player to check the amount of power.
|
||||
*
|
||||
* @return Sum of power of the player.
|
||||
*/
|
||||
public int GetPowerOfSolarSystems(int iPlayerID)
|
||||
{
|
||||
int iPowerSum = 0;
|
||||
@@ -67,6 +135,13 @@ namespace NGalaxy
|
||||
return iPowerSum;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns sum of food of a solar system which belongs to the player indicated by iPlayerID.
|
||||
*
|
||||
* @param iPlayerID, id of player to check the amount of food.
|
||||
*
|
||||
* @return Sum of food of the player.
|
||||
*/
|
||||
public int GetFoodOfSolarSystems(int iPlayerID, int iFoodTechLevel)
|
||||
{
|
||||
int iFoodSum = 0;
|
||||
@@ -77,6 +152,13 @@ namespace NGalaxy
|
||||
return iFoodSum;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns sum of population of a solar system which belongs to the player indicated by iPlayerID.
|
||||
*
|
||||
* @param iPlayerID, id of player to check the amount of population.
|
||||
*
|
||||
* @return Sum of population of the player.
|
||||
*/
|
||||
public int GetPopulationOfSolarSystems(int iPlayerID)
|
||||
{
|
||||
int iPopulationSum = 0;
|
||||
@@ -87,6 +169,13 @@ namespace NGalaxy
|
||||
return iPopulationSum;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns sum of actual food of a solar system which belongs to the player indicated by iPlayerID.
|
||||
*
|
||||
* @param iPlayerID, id of player to check the amount of actual food.
|
||||
*
|
||||
* @return Sum of actual food of the player.
|
||||
*/
|
||||
public int GetActualFoodOfSolarSystems(int iPlayerID)
|
||||
{
|
||||
int iActualFoodSum = 0;
|
||||
|
||||
@@ -1,13 +1,29 @@
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* @author Aaron Moser
|
||||
*
|
||||
* @package Assets.Scripts.Galaxy.Model
|
||||
*/
|
||||
using UnityEngine;
|
||||
|
||||
namespace NGalaxy
|
||||
{
|
||||
/**
|
||||
* @section DESCRIPTION
|
||||
*
|
||||
* Class has functionality to build different galaxy layouts, instantiating solar systems and setting their positions
|
||||
*/
|
||||
public class GalaxyModelBuilder
|
||||
{
|
||||
/**
|
||||
* Builds street of solar systems at galaxy canvas.
|
||||
*
|
||||
* @todo split functionality of positioning information and other unrelated values.
|
||||
*
|
||||
* @param iCountOfSolarSystems
|
||||
* @return SolarSystemModel[] models of solarsystem
|
||||
* @param iCountOfSolarSystems, number of solar systems to create.
|
||||
*
|
||||
* @return SolarSystemModel[] models of solar systems, containing information of street system.
|
||||
*/
|
||||
public SolarSystemModel[] BuildStreetSystem(int iCountOfSolarSystems)
|
||||
{
|
||||
@@ -71,7 +87,9 @@ namespace NGalaxy
|
||||
return SolarSystemModels;
|
||||
}
|
||||
|
||||
//TODO
|
||||
/**
|
||||
* @todo Build custom solar system
|
||||
*/
|
||||
private void BuildSolarSystems(int iCountOfSolarSystems, int iCountOfPlayers, int[,] aaiPlayerArea)
|
||||
{
|
||||
int iNumberOfDistinctSolarSystems = iCountOfSolarSystems / iCountOfPlayers;
|
||||
@@ -111,7 +129,9 @@ namespace NGalaxy
|
||||
// Insert distinct planets and clones into each players area so each player has the same amount of resources
|
||||
}
|
||||
|
||||
//TODO
|
||||
/**
|
||||
* @todo Build custom solar system
|
||||
*/
|
||||
private void Build4PlayerGalaxy(int iCountOfSolarSystems, int iCountOfPlayers)
|
||||
{
|
||||
// Depending on players divide grid so each player has one area.
|
||||
|
||||
@@ -1,11 +1,34 @@
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* @author Aaron Moser
|
||||
*
|
||||
* @package Assets.Scripts.Galaxy.Model
|
||||
*/
|
||||
using UnityEngine;
|
||||
|
||||
/**
|
||||
* @section DESCRIPTION
|
||||
*
|
||||
* Class supposed to help solar system builder with generating random maps, creating a two dimensional array of this class.
|
||||
* Array should be like a grid at the galaxy canvas.
|
||||
*/
|
||||
public class SolarSystemBuildHelper
|
||||
{
|
||||
/**
|
||||
* Position at screen
|
||||
*/
|
||||
public Vector2 Position;
|
||||
|
||||
/**
|
||||
* True if this field is already occupied, so to roll another value to set the next solar system to.
|
||||
*/
|
||||
public bool Occupied;
|
||||
|
||||
/**
|
||||
* Constructor initializes position with 0, 0 and Occupied with false.
|
||||
*
|
||||
*/
|
||||
public SolarSystemBuildHelper()
|
||||
{
|
||||
Position = new Vector2(0, 0);
|
||||
|
||||
@@ -10,15 +10,22 @@ namespace NSolarSystem
|
||||
/**
|
||||
* @section DESCRIPTION
|
||||
*
|
||||
* Class .
|
||||
* Class describes event arguments, which occur at galaxy level.
|
||||
* If a solar system at galaxy view is clicked, this arguments are used to overhand the unique id of the solar system clicked.
|
||||
*/
|
||||
public class SolarSystemEventArgs
|
||||
{
|
||||
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
// Public values
|
||||
|
||||
/**
|
||||
* Property eSolarSystemEvent, describes the event occured @see ESolarSystemEvent.
|
||||
*/
|
||||
public ESolarSystemEvent eSolarSystemEvent { get; set; }
|
||||
|
||||
/**
|
||||
* Property SolarSystemID, unique id of clicked solar system.
|
||||
*/
|
||||
public int SolarSystemID { get; set; }
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
@@ -27,6 +34,12 @@ namespace NSolarSystem
|
||||
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
// Public functions
|
||||
|
||||
/**
|
||||
* Constructor of solar system event arguments. Sets attributes of this.
|
||||
*
|
||||
* @param eSolarSystemEvent, event that occured (at the moment only one event solar system clicked possible).
|
||||
* @param iSolarSystemID, unique id of solar system clicked.
|
||||
*/
|
||||
public SolarSystemEventArgs(ESolarSystemEvent eSolarSystemEvent, int iSolarSystemID)
|
||||
{
|
||||
this.eSolarSystemEvent = eSolarSystemEvent;
|
||||
|
||||
@@ -1,40 +1,101 @@
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* @author Aaron Moser
|
||||
* @author Mohamad Kadou
|
||||
*
|
||||
* @package Assets.Scripts.Galaxy.View
|
||||
*/
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/**
|
||||
* @section DESCRIPTION
|
||||
*
|
||||
* Class cares about the galaxy view, the events, that can only occur on its level and the display of the solar system view bodies.
|
||||
*/
|
||||
public class GalaxyViewScript : MonoBehaviour
|
||||
{
|
||||
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
// Public values
|
||||
|
||||
/**
|
||||
* View game object of solar system level.
|
||||
*
|
||||
* InvisibleObjectsCanvas.GameView.GalaxyView.SolarSystemView
|
||||
*/
|
||||
public SolarSystemViewScript oSolarSystemView;
|
||||
|
||||
/**
|
||||
* Canvas reference containing galaxy ui.
|
||||
*
|
||||
* GalaxyCanvas
|
||||
*/
|
||||
public GameObject GalaxyCanvas;
|
||||
|
||||
/**
|
||||
* Canvas reference containing solar system ui.
|
||||
*
|
||||
* SolarSystemCanvas
|
||||
*/
|
||||
public GameObject SolarSystemCanvas;
|
||||
|
||||
/**
|
||||
* Canvas reference containing galaxy bodies ui.
|
||||
*
|
||||
* GalaxyCanvas.GalaxyBodysCanvas
|
||||
*/
|
||||
public Canvas GalaxyBodysCanvas;
|
||||
|
||||
/**
|
||||
* Reference to galaxy view spawner game object.
|
||||
*
|
||||
* GalaxyCanvas.GalaxyBodysCanvas.GalaxyViewSpawner
|
||||
*/
|
||||
public GalaxyViewSpawnerScript GalaxyViewSpawner;
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
// Private values
|
||||
|
||||
/**
|
||||
* Array for references to solar system views which will be instantiated @see DisplaySolarSystems().
|
||||
*/
|
||||
private SolarSystemViewBody[] SolarSystemViewBodies;
|
||||
|
||||
/**
|
||||
* Reference to a game model, set @see SetGameModel(GameModel oGameModel)
|
||||
*/
|
||||
private GameModel oGameModel;
|
||||
|
||||
/// <summary>
|
||||
/// Lets spawner instantiate solarsystemviewbodies.
|
||||
/// </summary>
|
||||
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
// Public functions
|
||||
|
||||
/**
|
||||
* Lets spawner instantiate solar system view bodies.
|
||||
* Afterwards sets values of them.
|
||||
* Also adds event listeners on click.
|
||||
*/
|
||||
public void DisplaySolarSystems()
|
||||
{
|
||||
SolarSystemViewBodies = GalaxyViewSpawner.SpawnSolarSystems(oGameModel.GalaxyModel.SolarSystemCount);
|
||||
|
||||
SolarSystemModel[] aoSolarSystemModels = oGameModel.GalaxyModel.SolarSystemModels;
|
||||
|
||||
for (int i = 0; i < SolarSystemViewBodies.Length; i++)
|
||||
{
|
||||
SolarSystemViewBodies[i].SolarSystemSprite = oGameModel.GalaxyModel.SolarSystemModels[i].SolarSystemSprite;
|
||||
// Set solar system sprite
|
||||
SolarSystemViewBodies[i].SolarSystemSprite = aoSolarSystemModels[i].SolarSystemSprite;
|
||||
|
||||
// Set position related attributes
|
||||
SolarSystemViewBodies[i].transform.SetParent(GalaxyBodysCanvas.transform, false);
|
||||
SolarSystemViewBodies[i].transform.position = oGameModel.GalaxyModel.SolarSystemModels[i].Position;
|
||||
SolarSystemViewBodies[i].transform.position = aoSolarSystemModels[i].Position;
|
||||
SolarSystemViewBodies[i].transform.localScale = new Vector3(1, 1, 1);
|
||||
|
||||
SolarSystemViewBodies[i].ID = oGameModel.GalaxyModel.SolarSystemModels[i].SolarSystemID;
|
||||
// Set unique solar system id
|
||||
SolarSystemViewBodies[i].ID = aoSolarSystemModels[i].SolarSystemID;
|
||||
|
||||
// Add event listeners, on click
|
||||
int ID = SolarSystemViewBodies[i].ID;
|
||||
SolarSystemViewBodies[i].onClick.AddListener(() => DisplaySolarSystem(ID));
|
||||
SolarSystemViewBodies[i].onClick.AddListener(() => SetSolarSystemCanvasActive());
|
||||
@@ -42,21 +103,11 @@ public class GalaxyViewScript : MonoBehaviour
|
||||
}
|
||||
}
|
||||
|
||||
private void SetSolarSystemCanvasActive()
|
||||
{
|
||||
SolarSystemCanvas.SetActive(true);
|
||||
}
|
||||
|
||||
private void SetGalaxyCanvasInactive()
|
||||
{
|
||||
GalaxyCanvas.SetActive(false);
|
||||
}
|
||||
|
||||
private void DisplaySolarSystem(int iSolarSystemID)
|
||||
{
|
||||
NSolarSystem.SolarSystemController.SolarSystemPressedEvent(this, new NSolarSystem.SolarSystemEventArgs(ESolarSystemEvent.SolarSystemClicked, iSolarSystemID));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets game model reference of this and children.
|
||||
*
|
||||
* @param oGameModel, reference to game model.
|
||||
*/
|
||||
public void SetGameModel(GameModel oGameModel)
|
||||
{
|
||||
// Set own game model
|
||||
@@ -65,4 +116,35 @@ public class GalaxyViewScript : MonoBehaviour
|
||||
// Set sub views game model
|
||||
oSolarSystemView.SetGameModel(oGameModel);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
// Private functions
|
||||
|
||||
/**
|
||||
* Sets solar system canvas active.
|
||||
*/
|
||||
private void SetSolarSystemCanvasActive()
|
||||
{
|
||||
SolarSystemCanvas.SetActive(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets galaxy canvas inactive.
|
||||
*/
|
||||
private void SetGalaxyCanvasInactive()
|
||||
{
|
||||
GalaxyCanvas.SetActive(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Triggers event of solar system controller, that solar system with unique id iSolarSystemID was clicked.
|
||||
*/
|
||||
private void DisplaySolarSystem(int iSolarSystemID)
|
||||
{
|
||||
NSolarSystem.SolarSystemEventArgs oSolarSystemWasClickedWithID = new NSolarSystem.SolarSystemEventArgs(ESolarSystemEvent.SolarSystemClicked, iSolarSystemID);
|
||||
|
||||
NSolarSystem.SolarSystemController.SolarSystemPressedEvent(this, oSolarSystemWasClickedWithID);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,19 +1,36 @@
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* @author Mohamad Kadou
|
||||
* @author Aaron Moser
|
||||
*
|
||||
* @package Assets.Scripts.Galaxy.View
|
||||
*/
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/**
|
||||
* @section DESCRIPTION
|
||||
*
|
||||
* Class contains functionality to instantiate a number of solar system view body prefabs.
|
||||
*/
|
||||
public class GalaxyViewSpawnerScript : MonoBehaviour
|
||||
{
|
||||
/// <summary>
|
||||
/// Prefab to instantiate.
|
||||
/// </summary>
|
||||
/**
|
||||
* Prefab reference to instantiate.
|
||||
*
|
||||
* Assets.PreFabs.SolarSystem
|
||||
*/
|
||||
public SolarSystemViewBody SolarSystemViewBodyPrefab;
|
||||
|
||||
/// <summary>
|
||||
/// Instantiates iCountOfSolarSystems PlanetViewBodies and returns the array reference.
|
||||
/// </summary>
|
||||
/// <param name="iCountOfSolarSystems"></param>
|
||||
/// <returns></returns>
|
||||
/**
|
||||
* Instantiates iCountOfSolarSystems PlanetViewBodies and returns the array reference.
|
||||
*
|
||||
* @param iCountOfSolarSystems, count of solar systems to instantiate.
|
||||
*
|
||||
* @return Array with solar system bodies references, which were instantiated.
|
||||
*/
|
||||
public SolarSystemViewBody[] SpawnSolarSystems(int iCountOfSolarSystems)
|
||||
{
|
||||
SolarSystemViewBody[] aoSolarSystemViewBodies = new SolarSystemViewBody[iCountOfSolarSystems];
|
||||
|
||||
Reference in New Issue
Block a user