ui stuffs
This commit is contained in:
parent
fe06ed5f96
commit
65423358fd
5 changed files with 2444 additions and 1049 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -10,6 +10,7 @@ using UnityEngine.UIElements;
|
|||
using static UnityEngine.GraphicsBuffer;
|
||||
using static UnityEngine.UI.GridLayoutGroup;
|
||||
|
||||
|
||||
[ExecuteAlways]
|
||||
public class GameManager : MonoBehaviour
|
||||
{
|
||||
|
|
@ -18,7 +19,7 @@ public class GameManager : MonoBehaviour
|
|||
public Transform NodeParent;
|
||||
public GameObject NodePrefab;
|
||||
|
||||
public Player players;
|
||||
public List<Player> players;
|
||||
public int currentPlayer = -1;
|
||||
public Node pressedNode = null;
|
||||
|
||||
|
|
@ -42,6 +43,7 @@ public class GameManager : MonoBehaviour
|
|||
public ActionType type;
|
||||
public int nodeFromId;
|
||||
public int nodeToId;
|
||||
public int amount;
|
||||
public int player;
|
||||
}
|
||||
|
||||
|
|
@ -115,7 +117,7 @@ public class GameManager : MonoBehaviour
|
|||
}
|
||||
|
||||
public List<Node> GetNodes() => NodeParent.GetComponentsInChildren<Node>().ToList();
|
||||
public List<Connection> GetConnections() => ConnectionParent?.GetComponentsInChildren<Connection>().ToList() ?? new();
|
||||
public List<Connection> GetConnections() => ConnectionParent != null ? ConnectionParent.GetComponentsInChildren<Connection>()?.ToList() ?? new() : new();
|
||||
|
||||
public void ExecuteRoundEnd()
|
||||
{
|
||||
|
|
@ -133,16 +135,24 @@ public class GameManager : MonoBehaviour
|
|||
Node nodeTo = GetNodes().Find(n => n.id == action.nodeToId);
|
||||
Node nodeFrom = GetNodes().Find(n => n.id == action.nodeFromId);
|
||||
Connection con = GetConnections().Find(c => (c.nodeA == nodeTo && c.nodeB == nodeFrom) || (c.nodeA == nodeFrom && c.nodeB == nodeTo));
|
||||
Player p = players.Find(p => (p.id == action.player));
|
||||
|
||||
bool hostile = nodeTo.Owner != action.player;
|
||||
|
||||
switch (action.type)
|
||||
{
|
||||
case ActionType.MOVE_UNITS:
|
||||
if (p.energy < 1)
|
||||
{
|
||||
Debug.Log("Not enough energy");
|
||||
return;
|
||||
}
|
||||
p.energy -= 1;
|
||||
switch (con.state)
|
||||
{
|
||||
case Connection.BuildState.EMPTY:
|
||||
// Build Connection
|
||||
|
||||
con.state = Connection.BuildState.CONSTRUCTING;
|
||||
Debug.Log("Starting construction from " + nodeTo.id + " to " + nodeFrom.id);
|
||||
return;
|
||||
|
|
@ -173,10 +183,24 @@ public class GameManager : MonoBehaviour
|
|||
if (hostile)
|
||||
{
|
||||
Debug.Log("Attacking hostile units at " + nodeFrom.id);
|
||||
int actualAmount = action.amount + Math.Min(0, nodeFrom.Units - action.amount);
|
||||
nodeFrom.Units -= actualAmount;
|
||||
var unitDiff = actualAmount - nodeFrom.Units;
|
||||
nodeTo.Units -= actualAmount;
|
||||
if (unitDiff == 0)
|
||||
{
|
||||
nodeTo.Owner = -1;
|
||||
} else if (unitDiff > 0)
|
||||
{
|
||||
nodeTo.Owner = p.id;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("Moving units from " + nodeTo.id + " to " + nodeFrom.id);
|
||||
int actualAmount = action.amount + Math.Min(0, nodeFrom.Units - action.amount);
|
||||
nodeFrom.Units -= actualAmount;
|
||||
nodeTo.Units += actualAmount;
|
||||
}
|
||||
return;
|
||||
|
||||
|
|
@ -187,6 +211,12 @@ public class GameManager : MonoBehaviour
|
|||
case ActionType.DESTRUCT_CON:
|
||||
if (!hostile)
|
||||
{
|
||||
if (p.energy < 1)
|
||||
{
|
||||
Debug.Log("Not enough energy");
|
||||
return;
|
||||
}
|
||||
p.energy -= 1;
|
||||
Debug.Log("Starten deconstruction from " + nodeTo.id + " to " + nodeFrom.id);
|
||||
con.state = Connection.BuildState.DECONSTRUCTING;
|
||||
}
|
||||
|
|
@ -197,6 +227,12 @@ public class GameManager : MonoBehaviour
|
|||
return;
|
||||
|
||||
case ActionType.EXPLODE_CON:
|
||||
if (p.energy < 2)
|
||||
{
|
||||
Debug.Log("Not enough energy");
|
||||
return;
|
||||
}
|
||||
p.energy -= 2;
|
||||
Debug.Log("Exploding connection from " + nodeTo.id + " to " + nodeFrom.id);
|
||||
con.state = Connection.BuildState.EMPTY;
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ public class Node : MonoBehaviour
|
|||
void Update()
|
||||
{
|
||||
unitText.enabled = hovered;
|
||||
unitText.text = Nachos.ToString();
|
||||
unitText.text = Units.ToString();
|
||||
unitText.transform.forward = Camera.main.transform.forward;
|
||||
UpdateColor();
|
||||
UpdateTransform();
|
||||
|
|
|
|||
|
|
@ -1,32 +1,20 @@
|
|||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class Player : MonoBehaviour
|
||||
public class Player
|
||||
{
|
||||
/** Possible Moves:
|
||||
* - NodeA to NodeB (connection built): move Units (will attack if NodeB is hostile; cant traverse multiple unclaimed nodes)
|
||||
* - NodeA to NodeB (connection empty): build connection (-1 energy, takes 1 round)
|
||||
* - NodeA to NodeB (connection under de/-construction): intervene by attacking (will destroy connection if succesfull)
|
||||
* - Click connection: Option to Destruct (-1 energy, takes 1 round) or Blast (-2 energy, immediately) Connection
|
||||
* - Click connection: Option to Destruct (-1 energy, takes 1 round) or Blast (-2 energy, immediately) Connection <- blast ist schlecht weil problem
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
public int id;
|
||||
|
||||
public int energyLeft;
|
||||
|
||||
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
|
||||
}
|
||||
public int energy;
|
||||
|
||||
public List<Node> GetOwnedNodes() => GameManager.Instance.GetNodes().FindAll(n => n.Owner == this.id);
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
Loading…
Add table
Reference in a new issue