private void ExchangeItem(int idx) { ExchangePanel.transform.Find("Text").GetComponent <Text>().text = _dataDic.FindItemDic[idx].Name + " 교환"; for (var i = 1; i <= 5; i++) { // 혹시 있을 Closure 오류 방지 var btnIdx = i - 1; ExchangePanel.transform.Find("Button" + i).GetComponent <Button>() .onClick.AddListener(() => ExchangeBtnClick(idx, btnIdx)); } ExchangePanel.SetActive(true); }
private void ExchangeBtnClick(int itemIdx, int btnIdx) { var deleteAmount = new int[3]; //[0]Red [1]Blue [2]Green 삭제될 별 개수 for (var i = 0; i < 3; i++) { // 별 아이템의 index var starIdx = 1001 + btnIdx + i * 5; deleteAmount[i] = _dataController.GetItemNum(starIdx); } var reqireedAmount = ExchangeRatio[btnIdx]; // 별 아이템 개수가 필요한 양(ExchangeRatio[btnIdx])보다 많거나 같을 경우 if (deleteAmount.Sum() >= reqireedAmount) { var deleted = 0; for (var i = 0; i < 3; i++) { // 별 아이템의 index var starIdx = 1001 + btnIdx + i * 5; for (var j = 0; j < deleteAmount[i]; j++) { if (deleted >= reqireedAmount) { break; } _dataController.DeleteItem(starIdx); deleted++; //요구량 다 채우면 안 하기 } } _dataController.InsertNewItem(itemIdx); ExchangePanel.SetActive(false); // refresh scene SceneManager.LoadScene("BookList"); } else { // TODO: 잠깐 버튼 클릭 막기 PopUpWindow.Alert("재료가 부족합니다."); } }