TIL_240125

Z_제트·2024년 1월 25일
0

TODAY I LEARNED

목록 보기
62/88
post-thumbnail

to do_오늘 할 일

  • 최종프로젝트 ing

retro_오늘 한 일(회고)

최종프로젝트 진행상황


BuyConfirm_PopupUI.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;


public class BuyConfirm_PopupUI : BaseUI
{
    private Button _yesButton;
    private Button _noButton;

    // Data
    public CharacterData ShopUnitData { get; set; }
    public RoomData ShopRoomData { get; set; }


    protected override void Init()
    {
        SetUI<Button>();

        _yesButton = GetUI<Button>("YesBtn");
        _noButton = GetUI<Button>("NoBtn");

        SetUICallback(_yesButton.gameObject, EUIEventState.Click, ClickYesBtn);
        SetUICallback(_noButton.gameObject, EUIEventState.Click, ClickNoBtn);

    }

    private void ClickYesBtn(PointerEventData eventData)
    {
        if (ShopUnitData != null) // 구분 - 구매하는 데이터가 유닛 일 때
        {
            BuyUnitItem(ShopUnitData);
        }
        else // 구분 - 구매하는 데이터가 Room 일 때
        {
            BuyRoomItem(ShopRoomData);
        }

        Main.Get<UIManager>().ClosePopup();

    }

    private void ClickNoBtn(PointerEventData eventData)
    {
        Main.Get<UIManager>().ClosePopup();
    }


    //유닛구매
    private void BuyUnitItem(CharacterData data)
    {
        if (Main.Get<GameManager>()._playerMoney >= data.Price)
        {
            Main.Get<GameManager>().ChangeMoney(-data.Price);
            Main.Get<GameManager>().playerUnits.Add(data); // 얕은복사이슈발생할수도
            Debug.Log("구매완료했습니다.");
            Debug.Log($"잔액 : {Main.Get<GameManager>()._playerMoney}");
        }
        else // 보유 금액 부족 시
        {
            Main.Get<UIManager>().OpenPopup<MoneyError_PopupUI>("MoneyError_PopupUI"); // 돈이 아이템 금액보다 적으면 돈부족 경고창 띄우기
            Debug.Log("돈이 부족해서 구매할 수 없습니다.");
        }
    }

    //Room구매
    private void BuyRoomItem(RoomData data)
    {
        if (Main.Get<GameManager>()._playerMoney >= data.Price)
        {
            Main.Get<GameManager>().ChangeMoney(-data.Price);
            Main.Get<GameManager>().PlayerRooms.Add(data);
            Debug.Log("구매완료했습니다.");
            Debug.Log($"잔액 : {Main.Get<GameManager>()._playerMoney}");
        }
        else
        {
            Main.Get<UIManager>().OpenPopup<MoneyError_PopupUI>("MoneyError_PopupUI"); // 돈이 아이템 금액보다 적으면 돈부족 경고창 띄우기
            Debug.Log("돈이 부족해서 구매할 수 없습니다.");
        }
    }
}
  • ClickYesBtn 을 눌렀을 때
    구매하려는 데이터가 유닛이라면 BuyUnitItem(ShopUnitData) 이 작동하고, 구매하려는 데이터가 Room 일 때 BuyRoomItem(ShopRoomData) 작동하게끔 조건을 어떻게 걸어줘야하나.. bool 값을 추가해야하나..
    오전 시간 내내 이것저것 시도하면서 고민했는데 실패 !
    조원찬스를 통해 조언을 구한 결과,
    조건 부분에서 ShopUnitData != null 이라면 BuyUnitItem(ShopUnitData); 함수가 실행하고, ShopUnitData 가 null 이라면( = 구매하려는 데이터가 ShopRoomData 라면(일단은 데이터가 Unit 말고는 Room 밖에 없기 때문에)) BuyRoomItem(ShopRoomData); 실행되도록 하면 된다고 하심 !

유연한 사고방식 파이팅....!

profile
trying to make the world a better place with a cool head and warm heart

0개의 댓글