Skip to content
This repository was archived by the owner on Jun 22, 2025. It is now read-only.

Commit 05e8958

Browse files
committed
직업 선택 구현
1 parent c1649dc commit 05e8958

26 files changed

+3635
-201
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using System.Collections;
2+
using System.Collections.Generic;
3+
using UnityEngine;
4+
5+
public class BattleStartHandler : MonoBehaviour, IBufHandler
6+
{
7+
private bool signaled = false; // À©¼ÒÄÏ ±×¸³À¾´Ï´Ù.
8+
9+
public void HandleBuffer(string payload)
10+
{
11+
signaled = true;
12+
}
13+
14+
private void FixedUpdate()
15+
{
16+
if (signaled)
17+
{
18+
UnityEngine.SceneManagement.SceneManager.LoadScene("Battle");
19+
}
20+
}
21+
}

MaybeBossRaid/Jemmun/Assets/01_Script/Handler/BattleStartHandler.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using System.Collections;
2+
using System.Collections.Generic;
3+
using UnityEngine;
4+
5+
public class JobHandler : MonoBehaviour, IBufHandler
6+
{
7+
public void HandleBuffer(string payload)
8+
{
9+
JobVO vo = JsonUtility.FromJson<JobVO>(payload);
10+
JobManager.HandleVO(vo);
11+
}
12+
}

MaybeBossRaid/Jemmun/Assets/01_Script/Handler/JobHandler.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
using System.Collections;
2+
using System.Collections.Generic;
3+
using UnityEngine;
4+
using UnityEngine.UI;
5+
6+
public partial class JobManager : MonoBehaviour
7+
{
8+
// 각 버튼에 해당하는 fader 인덱스는 같음
9+
[SerializeField] private Button[] btnJobs = new Button[5];
10+
[SerializeField] private GameObject[] faders = new GameObject[5];
11+
12+
// 지난 경험
13+
UnityEngine.Events.UnityAction btnEvent;
14+
15+
static private JobManager instance = null; // Singleton
16+
17+
private bool bSelected = false; // 직업 선택 메세지 받은 경우
18+
private Queue<JobVO> jobQueue = new Queue<JobVO>(); // 처리 대기열
19+
20+
private object lockObj = new object(); // 락
21+
22+
private void Awake()
23+
{
24+
instance = this;
25+
26+
#region NULLCheck
27+
foreach (Button btn in btnJobs)
28+
{
29+
NullChecker.CheckNULL(btn, true);
30+
}
31+
foreach (GameObject fader in faders)
32+
{
33+
NullChecker.CheckNULL(fader, true);
34+
}
35+
#endregion // NULLCheck
36+
37+
for (int i = 0; i < btnJobs.Length; ++i)
38+
{
39+
int idx = i;
40+
btnEvent = () => { SelectJob((JobList)idx); };
41+
42+
btnJobs[i].onClick.AddListener(btnEvent);
43+
faders[i].SetActive(false);
44+
}
45+
}
46+
47+
// 직업 선택
48+
private void SelectJob(JobList job)
49+
{
50+
JobVO jobVO = new JobVO(job, true);
51+
52+
DataVO vo = new DataVO("jobselect", JsonUtility.ToJson(jobVO));
53+
54+
faders[(int)job].SetActive(true);
55+
56+
SocketClient.Send(JsonUtility.ToJson(vo));
57+
58+
SetSelected(jobVO);
59+
}
60+
61+
62+
63+
64+
// 직업 선택됨으로 표시, 버튼 인터렉스 삭제
65+
private void SetSelected(JobVO vo)
66+
{
67+
for (int i = 0; i < btnJobs.Length; ++i)
68+
{
69+
btnJobs[i].interactable = false;
70+
}
71+
72+
faders[(int)vo.job].SetActive(true);
73+
}
74+
75+
private void HandleSelected(JobVO vo)
76+
{
77+
btnJobs[(int)vo.job].interactable = false;
78+
}
79+
80+
}
81+
82+
public partial class JobManager : MonoBehaviour
83+
{
84+
static public void HandleVO(JobVO vo)
85+
{
86+
lock (instance.lockObj)
87+
{
88+
instance.bSelected = true;
89+
instance.jobQueue.Enqueue(vo);
90+
}
91+
}
92+
93+
94+
private void FixedUpdate()
95+
{
96+
if (bSelected)
97+
{
98+
bSelected = false;
99+
100+
JobVO vo;
101+
lock (lockObj)
102+
{
103+
vo = jobQueue.Dequeue();
104+
}
105+
HandleSelected(vo);
106+
}
107+
}
108+
}

MaybeBossRaid/Jemmun/Assets/01_Script/Manager/JobManager.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using System;
2+
3+
[Serializable]
4+
public class JobVO
5+
{
6+
public JobList job; // ´©¸¥ Á÷¾÷
7+
public bool selected; // ¼±Åà ¿©ºÎ
8+
9+
public JobVO(JobList job, bool selected)
10+
{
11+
this.job = job;
12+
this.selected = selected;
13+
}
14+
}

MaybeBossRaid/Jemmun/Assets/01_Script/VO/JobVO.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
public enum JobList
2+
{
3+
Warrior = 0,
4+
Magican,
5+
Priest,
6+
Archer,
7+
Megumin,
8+
9+
JOB_END
10+
}

MaybeBossRaid/Jemmun/Assets/01_Script/_Base/Enum/JobList.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)