95 lines
2.8 KiB
C#
95 lines
2.8 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using System;
|
|
|
|
|
|
public class PlanetUI : MonoBehaviour
|
|
{
|
|
|
|
public float rotationSpeed = 1f; // Geschwindigkeit der Rotation
|
|
public float radius = 5f; // Radius des Kreises
|
|
private float angle = 0f; // Aktueller Winkel im Kreis
|
|
private Vector2 centerPosition; // Position des Zentrums des Kreises
|
|
|
|
public Text textID;
|
|
|
|
public int PlayerID = 0;
|
|
|
|
// Planet values
|
|
public int money;
|
|
public int science;
|
|
public int power;
|
|
public int food;
|
|
public int industrialCapacity;
|
|
public int population;
|
|
public int actualFood;
|
|
private int OldFoodLevel = 0;
|
|
|
|
// Start is called before the first frame update
|
|
void Start()
|
|
{
|
|
System.Random random = new System.Random();
|
|
centerPosition = transform.parent.position; // Position des Zentrums
|
|
transform.position = GetPositionOnCircle(angle); // Setze die Startposition
|
|
food = random.Next(2, 5); // Generiert eine zufällige Zahl zwischen 2 (inklusive) und 5 (exklusive)
|
|
science = random.Next(2, 5);
|
|
money = random.Next(2, 5);
|
|
industrialCapacity = random.Next(2, 5);
|
|
}
|
|
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
angle += rotationSpeed * Time.deltaTime; // Aktualisiere den Winkel basierend auf der Geschwindigkeit
|
|
transform.position = GetPositionOnCircle(angle); // Berechne die neue Position des Planeten
|
|
if (PlayerID == 0)
|
|
{
|
|
textID.text = "";
|
|
}
|
|
else
|
|
{
|
|
textID.text = PlayerID.ToString();
|
|
}
|
|
DistributeFoodToPopulation();
|
|
}
|
|
|
|
Vector3 GetPositionOnCircle(float angle)
|
|
{
|
|
float xPos = centerPosition.x + Mathf.Sin(angle) * radius; // X-Position auf dem Kreis
|
|
float yPos = centerPosition.y + Mathf.Cos(angle) * radius; // Y-Position auf dem Kreis
|
|
return new Vector3(xPos, yPos, 0f); // Position als Vektor zurückgeben
|
|
}
|
|
|
|
public void DistributeFoodToPopulation()
|
|
{
|
|
int remainingFood = food - population;
|
|
|
|
if (remainingFood < 0)
|
|
{
|
|
// Falls das Essen nicht ausreicht, um die Veröffentlichung zu decken,
|
|
// setze actualfood auf 0 und aktualisiere die publication entsprechend
|
|
actualFood = 0;
|
|
population = food;
|
|
}
|
|
else
|
|
{
|
|
// Falls das Essen ausreicht, um die Veröffentlichung zu decken,
|
|
// setze actualfood auf den überschüssigen Wert
|
|
actualFood = remainingFood;
|
|
}
|
|
}
|
|
// update scourse methodes
|
|
// nur Food
|
|
public void UpdateFood(int foodLevel)
|
|
{
|
|
if (foodLevel > OldFoodLevel)
|
|
{
|
|
food *= foodLevel;
|
|
OldFoodLevel = foodLevel;
|
|
}
|
|
}
|
|
}
|