private void PlaceMouseSpriteAsFirstOption()
    {
        // Instantiate
        var currentInstance = Instantiate(pickBuildingPrefab, transform);

        // Update -> Position / Image / Text
        currentInstance.GetComponent <RectTransform>().anchoredPosition =
            new Vector2(0, 0);
        currentInstance.Find("BuildingImage")
        .GetComponent <Image>().sprite = arrowSprite;
        currentInstance.Find("BuildingImage")
        .GetComponent <RectTransform>().sizeDelta = deltaForArrow;

        // Events
        buttons.Add(currentInstance.GetComponent <Button>());
        buttons[0].onClick.AddListener(() =>
        {
            BuildingManager.Instance.ChangeActiveBuilding(null);
            UpdateActiveBuildingType();
        });
        mouseEventsCache = buttons[0].GetComponent <MouseEnterExitEvents>();
        mouseEventsCache.OnMouseEnter += (object sender, EventArgs e) =>
        {
            TooltipUI.Instance.Show("Arrow", false);
        };
        mouseEventsCache.OnMouseExit += (object sender, EventArgs e) =>
        {
            TooltipUI.Instance.Hide();
        };

        arrowImageRef = currentInstance
                        .Find("Selected").GetComponent <Image>();
    }
Ejemplo n.º 2
0
    private Transform GenButton(float pos, BuildingTypeScriptableObject buildingType)
    {
        Transform xform = Instantiate(buildingSelect, transform);

        xform.gameObject.SetActive(true);
        xform.Find("image").GetComponent <Image>().sprite = buildingType != null ? buildingType.sprite : arrowSprite;
        xform.GetComponent <Button>().onClick.AddListener(() => {
            BuildingManager.Instance.SelectBuildingType(buildingType);
            UpdateSelectedBuildingType(buildingType);
        });
        if (buildingType != null)
        {
            _buildingButtons[buildingType] = xform;
        }
        MouseEnterExitEvents mouseEnterExitEvents = xform.GetComponent <MouseEnterExitEvents>();

        mouseEnterExitEvents.OnMouseEnter += (object sender, EventArgs eventArgs) => {
            if (buildingType != null)
            {
                TooltipUI.Instance.ShowMsg(buildingType.nameString + "\n" + buildingType.GetProductionCostsString());
            }
            else
            {
                TooltipUI.Instance.ShowMsg("Arrow");
            }
        };
        mouseEnterExitEvents.OnMouseExit += (object sender, EventArgs eventArgs) => {
            TooltipUI.Instance.Hide();
        };
        RectTransform rect = xform.GetComponent <RectTransform>();

        rect.anchoredPosition = new Vector3(pos, 0, 0);
        return(xform);
    }
    private void BuildRestOfUI(int providedIndex)
    {
        int i = providedIndex;

        Resources.Load <BuildingTypesSO>(
            typeof(BuildingTypesSO).Name).List.ForEach(x =>
        {
            // If type is not ignored
            if (ignoreBuildingList.Contains(x) == false)
            {
                // Instantiate
                var currentInstance = Instantiate(pickBuildingPrefab, transform);

                // Update -> Position / Image / Text
                currentInstance.GetComponent <RectTransform>().anchoredPosition =
                    new Vector2(moveByPixels * i, 0);
                currentInstance.Find("BuildingImage")
                .GetComponent <Image>().sprite = x.sprite;

                // Events
                buttons.Add(currentInstance.GetComponent <Button>());
                buttons[i].onClick.AddListener(() =>
                {
                    BuildingManager.Instance.ChangeActiveBuilding(x);
                    UpdateActiveBuildingType();
                });
                mouseEventsCache = buttons[i].GetComponent <MouseEnterExitEvents>();
                mouseEventsCache.OnMouseEnter += (object sender, EventArgs e) =>
                {
                    TooltipUI.Instance.Show($"{x.buildingName}\n{x.GetConstructionCost()}", false);
                };
                mouseEventsCache.OnMouseExit += (object sender, EventArgs e) =>
                {
                    TooltipUI.Instance.Hide();
                };

                // Image reference
                referenceForSelected.Add(x, currentInstance
                                         .Find("Selected").GetComponent <Image>());

                i++;
            }
        });
    }
    private void Awake()
    {
        Transform buttonTemplate = transform.Find("buttonTemplate");

        buttonTemplate.gameObject.SetActive(false);

        BuildingTypeListSO buildingTypeList = Resources.Load <BuildingTypeListSO>(typeof(BuildingTypeListSO).Name);

        buttonTransformDictionary = new Dictionary <BuildingTypeSO, Transform>();

        int index = 0;

        arrowButton = Instantiate(buttonTemplate, transform);
        arrowButton.gameObject.SetActive(true);

        float offsetAmount = +110f;

        arrowButton.GetComponent <RectTransform>().anchoredPosition = new Vector2(offsetAmount * index, 0);

        arrowButton.Find("image").GetComponent <Image>().sprite            = arrowSprite;
        arrowButton.Find("image").GetComponent <RectTransform>().sizeDelta = new Vector2(0, -40);

        arrowButton.GetComponent <Button>().onClick.AddListener(() => {
            BuildingManager.Instance.SetActiveBuildingType(null);
        });

        // Using the class with Interfaces of mouse OnPinterEnter and exit.
        MouseEnterExitEvents mouseEnterExitEvents = arrowButton.GetComponent <MouseEnterExitEvents>();

        mouseEnterExitEvents.OnMouseEnter += (object sender, EventArgs eventArgs) => {
            TooltipUI.Insntace.Show("Arrow");
        };

        mouseEnterExitEvents.OnMouseExit += (object sender, EventArgs eventArgs) => {
            TooltipUI.Insntace.Hide();
        };

        index++;

        foreach (BuildingTypeSO buildingType in buildingTypeList.list)
        {
            if (ignoreBuildingTypeList.Contains(buildingType))
            {
                continue; // Will Skip this current iteraction
            }

            Transform buttonTransform = Instantiate(buttonTemplate, transform);
            buttonTransform.gameObject.SetActive(true);

            offsetAmount = +110f;
            buttonTransform.GetComponent <RectTransform>().anchoredPosition = new Vector2(offsetAmount * index, 0);

            buttonTransform.Find("image").GetComponent <Image>().sprite = buildingType.sprite;

            buttonTransform.GetComponent <Button>().onClick.AddListener(() => {
                BuildingManager.Instance.SetActiveBuildingType(buildingType);
            });

            // Using the class with Interfaces of mouse OnPinterEnter and exit.
            mouseEnterExitEvents = buttonTransform.GetComponent <MouseEnterExitEvents>();
            mouseEnterExitEvents.OnMouseEnter += (object sender, EventArgs eventArgs) => {
                TooltipUI.Insntace.Show(buildingType.nameString + "\n" + buildingType.GetConstructionResourceCostString());
            };

            mouseEnterExitEvents.OnMouseExit += (object sender, EventArgs eventArgs) => {
                TooltipUI.Insntace.Hide();
            };

            buttonTransformDictionary[buildingType] = buttonTransform;
            index++;
        }
    }
Ejemplo n.º 5
0
    private void Awake()
    {
        btnTypeButtonDict = new Dictionary <BuildingTypeSO, Button>();
        Transform btnTmpTrm = transform.Find("btnTamplate");

        btnTmpTrm.gameObject.SetActive(false);

        buildingTypeListSO = Resources.Load <BuildingTypeListSO>(typeof(BuildingTypeListSO).Name);
        Debug.Log(buildingTypeListSO.btList.Count);

        int idx = 0;

        arrowBtnTrm = Instantiate(btnTmpTrm, transform);
        arrowBtnTrm.gameObject.SetActive(true);

        // 위치 적용
        float offsetAmount = 146f;

        arrowBtnTrm.GetComponent <RectTransform>().anchoredPosition = new Vector2(offsetAmount * idx, 0);

        // 이미지 적용
        Transform imageTrm = arrowBtnTrm.Find("image");

        imageTrm.GetComponent <Image>().sprite            = arrowSprite;
        imageTrm.GetComponent <RectTransform>().sizeDelta = new Vector2(-30, -30);

        Button imageButton = imageTrm.gameObject.AddComponent <Button>();

        imageButton.onClick.AddListener(() =>
        {
            BuilderManager.Instance.SetActiveBuildingType(null);

            selectedImgTrm.position = arrowBtnTrm.position;
        });

        idx++;

        foreach (var item in buildingTypeListSO.btList)
        {
            if (ignoreBuilidingTypeList.Contains(item))
            {
                continue;
            }

            // 생성 및 활성화
            Transform btnTrm = Instantiate(btnTmpTrm, transform);
            btnTrm.gameObject.SetActive(true);

            // 위치 적용
            btnTrm.GetComponent <RectTransform>().anchoredPosition = new Vector2(offsetAmount * idx, 0);

            // 이미지 적용
            btnTrm.Find("image").GetComponent <Image>().sprite = item.sprite;

            btnTrm.GetComponent <Button>().onClick.AddListener(() =>
            {
                BuilderManager.Instance.SetActiveBuildingType(item);

                selectedImgTrm.position = btnTrm.position;
            });

            idx++;

            //마우스 이벤트 캡처 코드
            MouseEnterExitEvents mouseEnterExitEvents = btnTrm.GetComponent <MouseEnterExitEvents>();

            mouseEnterExitEvents.OnMouseEnter += () => UIToolTip.instance.ShowBulidingInfo(item.nameStr, item.buildResCostArr);
            mouseEnterExitEvents.OnMouseExit  += () => UIToolTip.instance.Hide();
        }
    }
        void Awake()
        {
            Transform btnTemplate = transform.Find("btnTemplate");

            btnTemplate.gameObject.SetActive(false);
            _btnTransformDictionary = new Dictionary <BuildingTypeSO, Transform>();
            BuildingTypeListSO buildingTypeList = Resources.Load <BuildingTypeListSO>(nameof(BuildingTypeListSO));

            int index = 0;

            _arrowBtn = Instantiate(btnTemplate, transform);
            _arrowBtn.gameObject.SetActive(true);

            float offsetAmount = 130f;

            _arrowBtn.GetComponent <RectTransform>().anchoredPosition = new Vector2(offsetAmount * index, 0);

            _arrowBtn.Find("image").GetComponent <Image>().sprite            = arrowSprite;
            _arrowBtn.Find("image").GetComponent <RectTransform>().sizeDelta = new Vector2(0, -30);


            _arrowBtn.GetComponent <Button>().onClick
            .AddListener(() => BuildingManager.Instance.SetActiveBuildingType(null));

            MouseEnterExitEvents mouseEnterExitEvents = _arrowBtn.GetComponent <MouseEnterExitEvents>();

            mouseEnterExitEvents.OnMouseEnter += (sender, e) => { TooltipUI.Instance.Show("Arrow"); };
            mouseEnterExitEvents.OnMouseExit  += (sender, e) => { TooltipUI.Instance.Hide(); };


            index++;

            foreach (BuildingTypeSO buildingType in buildingTypeList.list)
            {
                if (ignoreBuildingTypeList.Contains(buildingType))
                {
                    continue;
                }
                Transform btnTransform = Instantiate(btnTemplate, transform);
                btnTransform.gameObject.SetActive(true);

                offsetAmount = 130f;
                btnTransform.GetComponent <RectTransform>().anchoredPosition = new Vector2(offsetAmount * index, 0);

                btnTransform.Find("image").GetComponent <Image>().sprite = buildingType.sprite;

                btnTransform.GetComponent <Button>().onClick
                .AddListener(() => BuildingManager.Instance.SetActiveBuildingType(buildingType));

                mouseEnterExitEvents = btnTransform.GetComponent <MouseEnterExitEvents>();
                mouseEnterExitEvents.OnMouseEnter += (sender, e) =>
                {
                    TooltipUI.Instance.Show(buildingType.nameString + "\n" +
                                            buildingType.GetConstructionResourceCostString());
                };
                mouseEnterExitEvents.OnMouseExit += (object sender, EventArgs e) => {
                    TooltipUI.Instance.Hide();
                };
                _btnTransformDictionary[buildingType] = btnTransform;

                index++;
            }
        }