StarSystem

Stars With switching positions
(Bought stars are not saved or shown)
This commit is contained in:
brausjonas
2023-02-26 22:26:58 +01:00
parent 63ed43576c
commit 94d05de754
20 changed files with 1215 additions and 166 deletions
+9 -2
View File
@@ -115,7 +115,6 @@ public class Client : MonoBehaviour
players[job.data[1]].name = Encoding.ASCII.GetString(name).Replace(" ", "");
players[job.data[1]].index = job.data[1];
players[job.data[1]].textCoinsInfo = playerInfoElements[job.data[1]].textCoinInfo;
players[job.data[1]].Layout2 = layout2;
players[job.data[1]].uiHandler = uiHandler;
players[job.data[1]].Init();
@@ -133,6 +132,9 @@ public class Client : MonoBehaviour
case 7:
(players[job.data[1]]).EventStopFinished();
break;
case 8:
((NoPlayablePlayer)players[job.data[1]]).BuyStar();
break;
case 126:
stream.Write(new byte[]{126, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 10);
break;
@@ -204,8 +206,13 @@ public class Client : MonoBehaviour
stream.Write(new byte[]{6, (byte)action, 0, 0, 0, 0, 0, 0, 0, 0});
}
public void EventStopFinished()
public void SendEventStopFinished()
{
stream.Write(new byte[]{7, 0, 0, 0, 0, 0, 0, 0, 0, 0});
}
public void SendBuyStar()
{
stream.Write(new byte[]{8, 0, 0, 0, 0, 0, 0, 0, 0, 0});
}
}
+1 -11
View File
@@ -7,15 +7,5 @@ public class ItemShop : MonoBehaviour
[SerializeField] private GameObject Layout2;
[SerializeField] private GameObject LayoutItemShop;
[SerializeField] private Client client;
public void buttonMoveOn()
{
Layout2.SetActive(false);
client.EventStopFinished();
}
public void buttonEnter()
{
Layout2.SetActive(false);
LayoutItemShop.SetActive(true);
}
}
@@ -33,6 +33,12 @@ public class NoPlayablePlayer : Player
diceScript = dice.GetComponent<Dice>();
}
public void BuyStar()
{
GameObject.Find("StarPositions").GetComponent<StarController>().SwitchStar();
AddCoins(-20);
}
public void CoinFieldAction(int action)
{
if (action == 0)
@@ -153,4 +159,23 @@ public class NoPlayablePlayer : Player
}
}
private Star currentStar;
private void OnTriggerEnter(Collider collider)
{
if (collider.name.Equals("ItemShopTrigger"))
{
base.OnTriggerEnter(collider);
}
else if (collider.name.Equals("StarTrigger"))
{
currentStar = collider.GetComponent<Star>();
if(currentStar.IsActive)
{
base.OnTriggerEnter(collider);
}
}
}
}
@@ -208,29 +208,40 @@ public class PlayablePlayer : Player
private Star currentStar = null;
private void OnTriggerEnter(Collider collider)
{
base.OnTriggerEnter(collider);
if (collider.name.Equals("ItemShopTrigger"))
{
Layout2.SetActive(true);
base.OnTriggerEnter(collider);
uiHandler.ActivateLayout2(this);
}
else if (collider.name.Equals("StarTrigger"))
{
currentStar = collider.GetComponent<Star>();
uiHandler.ActivateLayoutBuyStar(this);
if(currentStar.IsActive)
{
base.OnTriggerEnter(collider);
uiHandler.ActivateLayoutBuyStar(this);
}
}
}
public void BuyStar(bool buy)
{
client.SendEventStopFinished();
if (buy)
{
currentStar.Buy(this);
client.SendBuyStar();
}
else
{
currentStar = null;
}
}
public void SkipShop()
{
client.SendEventStopFinished();
}
}
+1 -3
View File
@@ -6,8 +6,6 @@ using UnityEngine;
public abstract class Player : MonoBehaviour
{
public GameObject Layout2;
public string name = "";
public bool activated = false;
protected bool wurfelt = false;
@@ -55,7 +53,7 @@ public abstract class Player : MonoBehaviour
Coin
}
protected void AddCoins(int amount)
public void AddCoins(int amount)
{
coins += amount;
if (coins < 0)
@@ -0,0 +1,10 @@
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class LayoutBuyStarController : MonoBehaviour
{
public TMP_Text infoText;
public GameObject buttonBuy, buttonNo;
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f33e28d2770e17c49ba9886d0a37602c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+1 -1
View File
@@ -39,7 +39,7 @@ public class Star : MonoBehaviour
public void Buy(Player player)
{
player.coins -= cost;
player.AddCoins(-cost);
starController.SwitchStar();
}
}
+54
View File
@@ -1,11 +1,13 @@
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class UIHandler : MonoBehaviour
{
[SerializeField] private GameObject layout0;
[SerializeField] private GameObject layout1;
[SerializeField] private GameObject layout2;
[SerializeField] private GameObject layoutMiniMap;
[SerializeField] private GameObject layoutBuyStar;
@@ -17,6 +19,8 @@ public class UIHandler : MonoBehaviour
layout0.SetActive(true);
layoutMiniMap.SetActive(false);
layoutBuyStar.SetActive(false);
layout2.SetActive(false);
}
public void ActivateLayout1()
@@ -25,6 +29,7 @@ public class UIHandler : MonoBehaviour
layout1.SetActive(true);
layoutMiniMap.SetActive(false);
layoutBuyStar.SetActive(false);
layout2.SetActive(false);
}
public void ActivateLayoutMiniMap()
@@ -33,6 +38,7 @@ public class UIHandler : MonoBehaviour
layout1.SetActive(false);
layoutMiniMap.SetActive(true);
layoutBuyStar.SetActive(false);
layout2.SetActive(false);
}
public void ActivateLayoutBuyStar(Player player)
@@ -42,5 +48,53 @@ public class UIHandler : MonoBehaviour
layout1.SetActive(false);
layoutMiniMap.SetActive(false);
layoutBuyStar.SetActive(true);
layout2.SetActive(false);
LayoutBuyStarController controller = layoutBuyStar.GetComponent<LayoutBuyStarController>();
if (player.coins < 20)
{
controller.infoText.text = "oh... sorry... but you do not have enough coins (20)";
controller.buttonBuy.SetActive(false);
}
else
{
controller.infoText.text = "do you want to buy a star? (20 coins)";
controller.buttonBuy.SetActive(true);
}
}
public void ActivateLayout2(Player player)
{
currentPlayer = player;
layout0.SetActive(false);
layout1.SetActive(false);
layoutMiniMap.SetActive(false);
layoutBuyStar.SetActive(false);
layout2.SetActive(true);
}
public void ButtonBuyStar()
{
((PlayablePlayer)currentPlayer).BuyStar(true);
ActivateLayout1();
}
public void ButtonDontBuyStar()
{
((PlayablePlayer)currentPlayer).BuyStar(false);
ActivateLayout1();
}
public void ButtonMoveOn()
{
ActivateLayout1();
((PlayablePlayer)currentPlayer).SkipShop();
}
public void ButtonEnter()
{
}
}