Files
project1_Space4x/Assets/PlanetUI.cs
2023-07-02 14:25:11 +02:00

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;
}
}
}