Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UI;
- public class GameManager : MonoBehaviour
- {
- public bool alwaysShowGrid = false;
- public int alwaysShowGridPressed = 0;
- public Text goldDisplay;
- public Text buildingCostDisplay;
- public Text reactorCostDisplay;
- public CustomCursor customCursor;
- public StatManager statManager;
- private GameObject grid;
- private GameObject[] buildings;
- private GameObject[] reactors;
- private Building buildingToPlace;
- private Reactor reactorToPlace;
- public Tile[] tiles;
- public void Start()
- {
- grid = GameObject.FindGameObjectWithTag("Grid");
- grid.SetActive(false);
- }
- public void AlwaysShowGrid()
- {
- alwaysShowGridPressed++;
- if (alwaysShowGridPressed == 1)
- {
- alwaysShowGrid = true;
- grid.SetActive(true);
- }
- if (alwaysShowGridPressed > 1)
- {
- alwaysShowGridPressed = 0;
- alwaysShowGrid = false;
- grid.SetActive(false);
- }
- }
- public void Update()
- {
- goldDisplay.text = statManager.Gold.ToString();
- buildingCostDisplay.text = statManager.buildingCost.ToString();
- reactorCostDisplay.text = statManager.reactorCost.ToString();
- buildings = GameObject.FindGameObjectsWithTag("BuildingPrefab");
- statManager.energyBeingUsed = buildings.Length;
- reactors = GameObject.FindGameObjectsWithTag("ReactorPrefab");
- statManager.energyBeingProvided = reactors.Length * 10;
- if (Input.GetMouseButtonDown(0) && buildingToPlace != null)
- {
- Tile nearestTile = null;
- float shortestDistance = float.MaxValue;
- foreach(Tile tile in tiles)
- {
- float distance = Vector2.Distance(tile.transform.position, Camera.main.ScreenToWorldPoint(Input.mousePosition));
- if (distance < shortestDistance)
- {
- shortestDistance = distance;
- nearestTile = tile;
- }
- }
- if (nearestTile.isOccupied == false)
- {
- statManager.Gold -= statManager.buildingCost;
- Vector3 positionToPlace = nearestTile.transform.position;
- positionToPlace.y += 0.3f;
- Instantiate(buildingToPlace, positionToPlace, Quaternion.identity);
- buildingToPlace = null;
- nearestTile.isOccupied = true;
- customCursor.gameObject.SetActive(false);
- Cursor.visible = true;
- if (alwaysShowGrid == false)
- {
- grid.SetActive(false);
- }
- }
- }
- if (Input.GetMouseButtonDown(0) && reactorToPlace != null)
- {
- Tile nearestTile = null;
- Tile nearestTileX1 = null;
- Tile nearestTileY1 = null;
- Tile nearestTileXY1 = null;
- float shortestDistance = float.MaxValue;
- float shortestDistanceX1 = float.MaxValue;
- float shortestDistanceY1 = float.MaxValue;
- float shortestDistanceXY1 = float.MaxValue;
- foreach (Tile tile in tiles)
- {
- float distance = Vector2.Distance(tile.transform.position, Camera.main.ScreenToWorldPoint(Input.mousePosition));
- if (nearestTile != null)
- {
- Vector2 nearestTileX1Position = nearestTile.transform.position;
- nearestTileX1Position.x += 1;
- float distanceX1 = Vector2.Distance(tile.transform.position, nearestTileX1Position);
- Vector2 nearestTileY1Position = nearestTile.transform.position;
- nearestTileY1Position.y += 1;
- float distanceY1 = Vector2.Distance(tile.transform.position, nearestTileY1Position);
- Vector2 nearestTileXY1Position = nearestTile.transform.position;
- nearestTileXY1Position.x += 1;
- nearestTileXY1Position.y += 1;
- float distanceXY1 = Vector2.Distance(tile.transform.position, nearestTileXY1Position);
- if (distanceX1 < shortestDistanceX1)
- {
- shortestDistanceX1 = distanceX1;
- nearestTileX1 = tile;
- }
- if (distanceY1 < shortestDistanceY1)
- {
- shortestDistanceY1 = distanceY1;
- nearestTileY1 = tile;
- }
- if (distanceXY1 < shortestDistanceXY1)
- {
- shortestDistanceXY1 = distanceXY1;
- nearestTileXY1 = tile;
- }
- }
- if (distance < shortestDistance)
- {
- shortestDistance = distance;
- nearestTile = tile;
- }
- }
- if (nearestTile.isOccupied == false && nearestTileX1.isOccupied == false && nearestTileY1.isOccupied == false && nearestTileXY1.isOccupied == false)
- {
- statManager.Gold -= statManager.reactorCost;
- Vector3 positionToPlace = nearestTile.transform.position;
- Instantiate(reactorToPlace, positionToPlace, Quaternion.identity);
- reactorToPlace = null;
- nearestTile.isOccupied = true;
- nearestTileX1.isOccupied = true;
- nearestTileY1.isOccupied = true;
- nearestTileXY1.isOccupied = true;
- customCursor.gameObject.SetActive(false);
- Cursor.visible = true;
- if (alwaysShowGrid == false)
- {
- grid.SetActive(false);
- }
- }
- }
- if (Input.GetKeyDown(KeyCode.Escape) && buildingToPlace != null)
- {
- buildingToPlace = null;
- customCursor.gameObject.SetActive(false);
- Cursor.visible = true;
- if (alwaysShowGrid == false)
- {
- grid.SetActive(false);
- }
- }
- if (Input.GetKeyDown(KeyCode.Escape) && reactorToPlace != null)
- {
- reactorToPlace = null;
- customCursor.gameObject.SetActive(false);
- Cursor.visible = true;
- if (alwaysShowGrid == false)
- {
- grid.SetActive(false);
- }
- }
- }
- public void BuyBuilding(Building building)
- {
- if (statManager.Gold >= statManager.buildingCost)
- {
- buildingToPlace = building;
- customCursor.gameObject.SetActive(true);
- customCursor.transform.localScale = new Vector3(0.4551f, 0.4551f);
- customCursor.GetComponent<SpriteRenderer>().sprite = building.GetComponent<SpriteRenderer>().sprite;
- Cursor.visible = false;
- if (alwaysShowGrid == false)
- {
- grid.SetActive(true);
- }
- }
- }
- public void BuyReactor(Reactor reactor)
- {
- if (statManager.Gold >= statManager.reactorCost)
- {
- reactorToPlace = reactor;
- customCursor.gameObject.SetActive(true);
- customCursor.transform.localScale = new Vector3(1f, 1.12f);
- customCursor.GetComponent<SpriteRenderer>().sprite = reactor.GetComponent<SpriteRenderer>().sprite;
- Cursor.visible = false;
- if (alwaysShowGrid == false)
- {
- grid.SetActive(true);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement