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);
    }
Beispiel #2
0
    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>();
 }
Beispiel #5
0
    // 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();
    }