Skip to content

Commit

Permalink
fix drawline
Browse files Browse the repository at this point in the history
  • Loading branch information
zabd0ng authored May 14, 2024
1 parent d3ccc19 commit c5f864e
Show file tree
Hide file tree
Showing 7 changed files with 75 additions and 49 deletions.
76 changes: 43 additions & 33 deletions Assets/2Scripts/InGameManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -188,41 +188,21 @@ private void GenerateAI()
}
}

private void SetTurn()
private void SetTurn() // Master
{
turnList.Clear(); // 턴 리스트 초기화

// // 플레이어
// foreach (var player in PhotonNetwork.PlayerList)
// {
// var turn = new Turn { actorNumber = player.ActorNumber, nickname = player.NickName }; // 턴 생성 (플레이어)

// turnList.Add(turn); // 턴 리스트에 추가
// }

// // AI
// for (var i = 0; i < NetworkManager.IT.aiCount; i++)
// {
// var turn = new Turn { actorNumber = aiList[i].actorNumber, nickname = $"AI_{aiList[i].actorNumber - 1000}"}; // 턴 생성 (AI)

// turnList.Add(turn); // 턴 리스트에 추가
// }

int aiIdx=0;
// foreach (var slot in LobbyManager.IT.GetSlots()) { // 왜 로비매니저인데 작동하지?
foreach (var slot in NetworkManager.IT.gameForSlots) {
if (slot.actorNumber == 99)
{
Debug.Log("AIslot actorNum: " + slot.actorNumber);
Debug.Log("AIslot nickname: " + slot.nickName);
var turn = new Turn { actorNumber = aiList[aiIdx].actorNumber, nickName = "AI_"+(aiList[aiIdx].actorNumber-1000), teamNumber = slot.teamNumber }; // AI턴 생성
turnList.Add(turn);
aiIdx++;
}
else if (slot.actorNumber != -1)
{
Debug.Log("slot actor Num: " + slot.actorNumber);
Debug.Log("slot nickname: " + slot.nickName);
var turn = new Turn { actorNumber = slot.actorNumber, nickName = slot.nickName, teamNumber = slot.teamNumber }; // Player턴 생성
turnList.Add(turn);
}
Expand All @@ -233,6 +213,24 @@ private void SetTurn()
}

turnList = NetworkManager.IT.ShuffleTurn(turnList);

Debug.Log("InGameM::SetTurn");
foreach (var slot in turnList) {
if (slot.actorNumber == 99)
{
Debug.Log("AIslot actorNum: " + slot.actorNumber);
Debug.Log("AIslot nickname: " + slot.nickName);
}
else if (slot.actorNumber != -1)
{
Debug.Log("slot actor Num: " + slot.actorNumber);
Debug.Log("slot nickname: " + slot.nickName);
}
else
{
// 빈 슬롯
}
}

damageList.Clear(); // 누적 데미지 리스트 초기화

Expand All @@ -250,6 +248,7 @@ private void SetTurn()

private void GetTurn()
{
Debug.Log("InGameM::GetTurn");
foreach (var slot in NetworkManager.IT.gameForSlots) {
if (slot.actorNumber == 99)
{
Expand Down Expand Up @@ -346,13 +345,14 @@ private void SendTurn(int actorNumber)

PV.RPC(nameof(RPC_SendTurn), player); // RPC로 턴을 넘김

// 나머지 플레이어에게는 player의 턴을 알림
foreach (var otherPlayer in PhotonNetwork.PlayerList)
{
// 다른 플레이어일 경우
if (otherPlayer.ActorNumber != actorNumber)
PV.RPC(nameof(RPC_SendOtherTurn), otherPlayer, currentTurnPlayer.NickName); // RPC로 플레이어의 턴을 알림
}
// // 나머지 플레이어에게는 player의 턴을 알림
// foreach (var otherPlayer in PhotonNetwork.PlayerList)
// {
// // 다른 플레이어일 경우
// if (otherPlayer.ActorNumber != actorNumber)
// PV.RPC(nameof(RPC_SendOtherTurn), otherPlayer, currentTurnPlayer.NickName); // RPC로 플레이어의 턴을 알림
// }
PV.RPC(nameof(RPC_SendOtherTurn), RpcTarget.Others, currentTurnPlayer.NickName); // RPC로 플레이어의 턴을 알림

SetWind(); // 바람 세기 설정 (RPC)
SetCamera(player.NickName); // 카메라 설정 (RPC)
Expand Down Expand Up @@ -497,6 +497,8 @@ public void NextTurn()
{
turnIndex = 0; // 턴 인덱스 초기화
}

PV.RPC(nameof(RPC_SetTurn), RpcTarget.Others, turnIndex);

var turn = turnList[turnIndex]; // 현재 턴
var actorNumber = turn.actorNumber; // 현재 턴의 ActorNumber
Expand Down Expand Up @@ -536,6 +538,12 @@ public void NextTurn()
}
}

[PunRPC]
private void RPC_SetTurn(int t)
{
turnIndex = t;
}

public void NextTurnToMaster()
{
PV.RPC(nameof(RPC_NextTurn), RpcTarget.MasterClient);
Expand Down Expand Up @@ -781,11 +789,13 @@ private void RPC_Result(string data, int t)

public void DrawLine(float value)
{
if (turnList.Count == 0)
return;
// if (turnList[turnIndex].actorNumber == PhotonNetwork.LocalPlayer.ActorNumber) {
playerTankHandler.tankUIHandler.DrawLine(value);
// }
if (isAiTurn && turnList == null)
return ;

Debug.Log("InGame::DrawL::turnIdx:" + turnIndex);
if (turnList[turnIndex].actorNumber == PhotonNetwork.LocalPlayer.ActorNumber) {
playerTankHandler.tankUIHandler.DrawLine(value);
}
// else
{
// Debug.Log("not your Turn");
Expand Down
21 changes: 20 additions & 1 deletion Assets/2Scripts/NetworkManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -477,6 +477,20 @@ public override void OnRoomPropertiesUpdate(Hashtable propertiesThatChanged)
}
LobbyManager.IT.SetTeamColor(0, LobbyManager.IT.roomPlayerSlots[0].teamNumber);
}
else if (SceneManager.GetActiveScene().name == "Game")
{
gameForSlots = new List<Slot>
{
new(Slot0, (int)propertiesThatChanged[Slot0], (string)propertiesThatChanged["name"+Slot0], (int)propertiesThatChanged["team"+Slot0]),
new(Slot1, (int)propertiesThatChanged[Slot1], (string)propertiesThatChanged["name"+Slot1], (int)propertiesThatChanged["team"+Slot1]),
new(Slot2, (int)propertiesThatChanged[Slot2], (string)propertiesThatChanged["name"+Slot2], (int)propertiesThatChanged["team"+Slot2]),
new(Slot3, (int)propertiesThatChanged[Slot3], (string)propertiesThatChanged["name"+Slot3], (int)propertiesThatChanged["team"+Slot3]),
new(Slot4, (int)propertiesThatChanged[Slot4], (string)propertiesThatChanged["name"+Slot4], (int)propertiesThatChanged["team"+Slot4]),
new(Slot5, (int)propertiesThatChanged[Slot5], (string)propertiesThatChanged["name"+Slot5], (int)propertiesThatChanged["team"+Slot5]),
new(Slot6, (int)propertiesThatChanged[Slot6], (string)propertiesThatChanged["name"+Slot6], (int)propertiesThatChanged["team"+Slot6]),
new(Slot7, (int)propertiesThatChanged[Slot7], (string)propertiesThatChanged["name"+Slot7], (int)propertiesThatChanged["team"+Slot7])
};
}
}

public int GetTeamNum(int t) { // 플레이어 수
Expand Down Expand Up @@ -538,13 +552,18 @@ public void GameStart()
public List<Turn> ShuffleTurn(List<Turn> turnList)
{
// Shuffle
List<Turn> res = new List<Turn>();
for (var i = 0; i < turnList.Count; i++)
{
var temp = turnList[i]; // 임시 저장
var randomIndex = Random.Range(i, turnList.Count); // 랜덤 인덱스
turnList[i] = turnList[randomIndex]; // 랜덤 인덱스의 값을 현재 인덱스에 저장
turnList[randomIndex] = temp; // 현재 인덱스의 값을 랜덤 인덱스에 저장
}
for (var i = 0; i < turnList.Count; i++)
{
res.Add(turnList[i]);
}

Hashtable CustomRoomProperties = PhotonNetwork.CurrentRoom.CustomProperties; // 방의 프로퍼티
int slotIdx=0;
Expand All @@ -557,7 +576,7 @@ public List<Turn> ShuffleTurn(List<Turn> turnList)

PhotonNetwork.CurrentRoom.SetCustomProperties(CustomRoomProperties); // 방의 프로퍼티 설정

return turnList;
return res;
}
}

Expand Down
18 changes: 9 additions & 9 deletions Assets/2Scripts/Tank/TankHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public virtual void Start()
{
// Initialize
currentMoveValue = maxMoveValue; // 현재 이동값을 최대 이동값으로 초기화
UIManager.IT.SetProjectileAngle(projectileDegrees, direction); // 파워 게이지 UI 각도 초기화
UIManager.IT.SetProjectileAngle(projectileDegrees, direction, false); // 파워 게이지 UI 각도 초기화

// if (!transform.name.Contains("AI")) {
if (!transform.name.Contains("AI")) {
Expand Down Expand Up @@ -222,7 +222,7 @@ public void AngleInit()
{
if (isAi)
projectileDegrees = 0; // 미사일 발사 각도 초기화
UIManager.IT.SetProjectileAngle(projectileDegrees, direction); // 미사일 발사 각도 UI 설정
UIManager.IT.SetProjectileAngle(projectileDegrees, direction, false); // 미사일 발사 각도 UI 설정
}

public void MoveValueInit()
Expand All @@ -244,7 +244,7 @@ public void LeftArrowPressed()
anim.SetBool("Move", true); // Move 애니메이션 활성화

UIManager.IT.SetMove(currentMoveValue); // 이동 게이지 UI 설정
UIManager.IT.SetProjectileAngle(projectileDegrees, direction); // 미사일 발사 각도 UI 설정
UIManager.IT.SetProjectileAngle(projectileDegrees, direction, true); // 미사일 발사 각도 UI 설정
}

public void RepeatLeftArrowPressed(float time)
Expand Down Expand Up @@ -295,7 +295,7 @@ public void RightArrowPressed()
anim.SetBool("Move", true); // Move 애니메이션 활성화

UIManager.IT.SetMove(currentMoveValue); // 이동 게이지 UI 설정
UIManager.IT.SetProjectileAngle(projectileDegrees, direction); // 미사일 발사 각도 UI 설정
UIManager.IT.SetProjectileAngle(projectileDegrees, direction, true); // 미사일 발사 각도 UI 설정
}

public void SpaceDown()
Expand Down Expand Up @@ -351,13 +351,13 @@ public void UpArrowPressed()
{
projectileDegrees = 90f; // 미사일 발사 각도를 90도로 설정

UIManager.IT.SetProjectileAngle(projectileDegrees, direction); // 미사일 발사 각도 UI 설정
UIManager.IT.SetProjectileAngle(projectileDegrees, direction, true); // 미사일 발사 각도 UI 설정
return;
}

projectileDegrees += delta * Time.deltaTime; // 미사일 발사 각도 증가

UIManager.IT.SetProjectileAngle(projectileDegrees, direction); // 미사일 발사 각도 UI 설정
UIManager.IT.SetProjectileAngle(projectileDegrees, direction, true); // 미사일 발사 각도 UI 설정
}

public void DownArrowPressed()
Expand All @@ -367,21 +367,21 @@ public void DownArrowPressed()
{
projectileDegrees = 0; // 미사일 발사 각도를 0으로 설정

UIManager.IT.SetProjectileAngle(projectileDegrees, direction); // 미사일 발사 각도 UI 설정
UIManager.IT.SetProjectileAngle(projectileDegrees, direction, true); // 미사일 발사 각도 UI 설정
return;
}

projectileDegrees -= delta * Time.deltaTime; // 미사일 발사 각도 감소

UIManager.IT.SetProjectileAngle(projectileDegrees, direction); // 미사일 발사 각도 UI 설정
UIManager.IT.SetProjectileAngle(projectileDegrees, direction, true); // 미사일 발사 각도 UI 설정
}


private void Fire()
{
Debug.Log("dir: " + direction);
UIManager.IT.SetMove(currentMoveValue); // 이동 게이지 UI 설정
UIManager.IT.SetProjectileAngle(projectileDegrees, direction); // 미사일 발사 각도 UI 설정
UIManager.IT.SetProjectileAngle(projectileDegrees, direction, true); // 미사일 발사 각도 UI 설정

SoundManager.IT.PlaySFX();
isTurn = false; // 턴 종료
Expand Down
2 changes: 0 additions & 2 deletions Assets/2Scripts/Tank/TankUIHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,6 @@ public void SetColor(int t) {
}

public void DrawLine(float value) {
if (tankHandler.isAi == true)
return ;
float angle = UIManager.IT.GetProjectileAngle();
float lineRenderCount = InGameManager.IT.lineRenderCount;
float dir = tankHandler.GetDirection();
Expand Down
5 changes: 3 additions & 2 deletions Assets/2Scripts/UI/UIManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -99,10 +99,11 @@ public void SetTankHorizontal(float value, int direction)
tankHorizontalInstrument.SetHorizontal(value, direction); // 탱크의 수평각 변경
}

public void SetProjectileAngle(float value, int direction)
public void SetProjectileAngle(float value, int direction, bool draw)
{
projectileAngleInstrument.SetAngle(value, direction); // 포탄의 발사각 변경
InGameManager.IT.DrawLine(predictPowerSlider.GetValue());
if (draw)
InGameManager.IT.DrawLine(predictPowerSlider.GetValue());
}

public float GetProjectileAngle()
Expand Down
1 change: 0 additions & 1 deletion Assets/Resources/AI.prefab
Original file line number Diff line number Diff line change
Expand Up @@ -1096,7 +1096,6 @@ MonoBehaviour:
rayOffset: {x: 0.12, y: 0, z: 0}
angle: 0
isTurn: 0
maxHP: 300
currentHP: 0
tankUIHandler: {fileID: 0}
isAi: 0
Expand Down
1 change: 0 additions & 1 deletion Assets/Resources/Tank.prefab
Original file line number Diff line number Diff line change
Expand Up @@ -955,7 +955,6 @@ MonoBehaviour:
rayOffset: {x: 0.12, y: 0, z: 0}
angle: 0
isTurn: 0
maxHP: 300
currentHP: 0
tankUIHandler: {fileID: 0}
isAi: 0
Expand Down

0 comments on commit c5f864e

Please sign in to comment.