private void Awake() { // missleadingly, GetComponentInParent searches through all ancestors // also it FINDS COMPONENTS IN ITSELF goddamnit if (transform.parent != null) { selectableSystem = transform.parent.GetComponentInParent <SelectableSystem>(); } Signals.Get <FreeExplorationSignal>().AddListener(OnFreeExploration); }
private void Awake() { selectable = GetComponent <MySelectable>(); if (selectable == null) { selectable = GetComponentInParent <MySelectable>(); } system = GetComponent <SelectableSystem>(); selectable.onSelect += OnSelectableStateChange; selectable.onNormal += OnSelectableStateChange; selectable.onInactive += OnSelectableStateChange; selectable.onHide += OnSelectableStateChange; system.initialState = MySelectable.SelectableState.Hidden; Signals.Get <ShowSelectableSubsystemsSignal>().AddListener(OnShowSignal); }
void Start() { sectors = new Sector[size.x, size.y]; for (int i = 0; i < size.x; i++) { for (int j = 0; j < size.y; j++) { sectors[i, j] = new Sector(); for (int y = 0; y < 4; y++) { for (int x = 0; x < 4; x++) { GameObject newTile = Instantiate(tilePrefab, new Vector3((i - size.x / 2) * 4f + ((float)x / size.x * 2f), (j - size.y / 2) * 4f + ((float)y / size.y * 2f) + 1, 0), Quaternion.identity); //newTile.transform.localScale = newTile.transform.localScale * (1f/((size.x+size.y)/2f)); SpriteRenderer renderer = newTile.GetComponent("SpriteRenderer") as SpriteRenderer; SystemType theSystem = SystemType.EMPTY; StarSystem systemHolder = null; foreach (StarSystem sys in sectors[i, j].getSystems()) { if (sys.getPosition().x == x && sys.getPosition().y == y) { theSystem = sys.getType(); sys.tile = newTile; //newTile.GetComponent<SelectableSystem>().self = sys; systemHolder = sys; } //newTile.GetComponent<SelectableSystem>().self = sys; } if (theSystem != SystemType.EMPTY) { SelectableSystem ss = newTile.AddComponent(typeof(SelectableSystem)) as SelectableSystem; ss.planetUI = this.planetUI; Texture2D col = new Texture2D(132, 132, TextureFormat.RGBA32, false); newTile.GetComponent <SelectableSystem>().self = systemHolder;//theSystem;//sectors[i,j].getSystems(); systemHolder.sel = newTile.GetComponent <SelectableSystem>(); Color c = new Color(0f, 0f, 0f, ColorOverlayOpacity); switch (theSystem) { case SystemType.YELLOW: c.r = 1f; c.g = 1f; break; case SystemType.RED: c.r = 1f; break; case SystemType.BLUE: c.b = 1f; break; case SystemType.GREEN: c.g = 1f; break; } Color cb = new Color(c.r, c.g, c.b, ColorOverlayBorderOpacity); for (int yT = 0; yT < col.height; yT++) { for (int xT = 0; xT < col.width; xT++) { if (yT < Borderthickness || yT > col.height - Borderthickness || xT < Borderthickness || xT > col.width - Borderthickness) { col.SetPixel(xT, yT, cb); } else { col.SetPixel(xT, yT, c); } } } col.Apply(); Texture2D tex = ImageHelpers.AlphaBlend(planets[Random.Range(0, planets.Length)], col); renderer.sprite = Sprite.Create(tex, new Rect(0f, 0f, tex.width, tex.height), new Vector2(.5f, .5f), 128); } else { Color c = new Color(1f, 1f, 1f, ColorOverlayOpacity); Color cb = new Color(1f, 1f, 1f, ColorOverlayBorderOpacity); Texture2D col = new Texture2D(128, 128, TextureFormat.RGBA32, false); for (int yT = 0; yT < col.height; yT++) { for (int xT = 0; xT < col.width; xT++) { if (yT < Borderthickness || yT > col.height - Borderthickness || xT < Borderthickness || xT > col.width - Borderthickness) { col.SetPixel(xT, yT, cb); } else { col.SetPixel(xT, yT, c); } } } col.Apply(); renderer.sprite = Sprite.Create(col, new Rect(0f, 0f, col.width, col.height), new Vector2(.5f, .5f), 128); // renderer.color = ; } } } } } }
private void Awake() { selectableSystem = GetComponent <SelectableSystem>(); }
// Update is called once per frame void Update() { if (Input.GetMouseButtonDown(0) && !this.planetUI.enabled && !Trade_Interface.GetComponent <Canvas>().enabled&& !InteractableMenu_GUI.menu.enabled) //append here to block ray cast while GUIs are up //Detect player click { print("Click " + Input.GetKey(KeyCode.LeftControl) + Input.GetKey(KeyCode.LeftShift)); RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); bool hitSomething = false; int layerMask = 1 << 8; //Ships if (Physics.Raycast(ray, out hit, layerMask)) //If selection found { print("You selected " + hit.transform.name + " : " + this.transform.name); //Ensure you picked right object //The object hit is a Ship if (hit.transform.gameObject.GetComponent <Ship_Class>() != null) //&& hit.transform.name == this.transform.name) { //If current player owns ship and is only left clicking if (hit.transform.gameObject.GetComponent <Ship_Class>().faction == currentPlayer.playerFaction && !Input.GetKey(KeyCode.LeftControl) && !Input.GetKey(KeyCode.LeftShift)) { if (hit.transform.gameObject.GetComponent <Ship_Class>().selected = !hit.transform.gameObject.GetComponent <Ship_Class>().selected) { hud.updateShipInfo(hit.transform.gameObject.GetComponent <Ship_Class>(), this.getFactionIndex(hit.transform.gameObject.GetComponent <Ship_Class>().faction)); } else { hud.clearShipInfo(); } } //If current player owns ship and is only shift left clicking if (true /*faction == factionCurrent*/ && !Input.GetKey(KeyCode.LeftControl) && Input.GetKey(KeyCode.LeftShift)) { foreach (Ship_Class i in hit.transform.gameObject.GetComponent <Ship_Class>().shipsInStack) { if (i != null && true /*faction == factionCurrent*/) { //print("Cycle through and select " + i.name+" from "+ hit.transform.gameObject.name); if (hit.transform.gameObject.GetComponent <Ship_Class>().selected == true) { i.selected = false; } else { i.selected = true; } } } } //If current player owns ship and is only control left clicking if (hit.transform.gameObject.GetComponent <Ship_Class>().faction == currentPlayer.playerFaction && Input.GetKey(KeyCode.LeftControl) && !Input.GetKey(KeyCode.LeftShift)) { hit.transform.gameObject.GetComponent <Ship_Class>().selectFromStack++; if (hit.transform.gameObject.GetComponent <Ship_Class>().selectFromStack >= hit.transform.gameObject.GetComponent <Ship_Class>().shipsInStack.Length) { hit.transform.gameObject.GetComponent <Ship_Class>().selectFromStack = 0; } foreach (Ship_Class i in hit.transform.gameObject.GetComponent <Ship_Class>().shipsInStack) { if (true /*faction == factionCurrent*/ && i != null) { //print("Ship from stack " + i.name); //print(""); if (hit.transform.gameObject.GetComponent <Ship_Class>().shipsInStack[hit.transform.gameObject.GetComponent <Ship_Class>(). selectFromStack] == i) { //print("Selected " + i.name); i.selected = true; } else { i.selected = false; } } } } //If current player owns ship and is alt left clicking if (true /*faction == factionCurrent*/ && Input.GetKey(KeyCode.LeftAlt)) { foreach (Ship_Class i in hit.transform.gameObject.GetComponent <Ship_Class>().shipsInStack) { if (i != null) { i.selected = false; } } } hitSomething = true; } } layerMask = layerMask << 1; //next layer is systems if (!hitSomething && Physics.Raycast(ray, out hit, layerMask)) { hitSomething = true; if (hit.transform.gameObject.GetComponent <SelectableSystem>() != null) { SelectableSystem ss = hit.transform.gameObject.GetComponent <SelectableSystem>() as SelectableSystem; for (int i = 0; i < systems.Length; i++) { if ((systems[i].tile.GetComponent <SelectableSystem>() as SelectableSystem) != (ss)) { (systems[i].tile.GetComponent <SelectableSystem>() as SelectableSystem).deselect(); } } if (ss.isSelectable()) { if (ss.isSelected()) { ss.deselect(); } else { ss.select(); } } } } } else if (Input.GetMouseButtonDown(0)) { //The planetUI is up print("UI is still up"); } if (false) { //checkTrade(); } hud.updateHUDafterTrade(); }