네트워크 멀티플레이 환경 문제 수정
관련 문제가 다시 발생하면 이 커밋으로 돌아올 것
This commit is contained in:
@@ -259,19 +259,14 @@ namespace Northbound
|
||||
if (!CanInteract(playerId))
|
||||
return;
|
||||
|
||||
// 플레이어 인벤토리 가져오기
|
||||
var playerObject = NetworkManager.Singleton.ConnectedClients[playerId].PlayerObject;
|
||||
if (playerObject == null)
|
||||
return;
|
||||
|
||||
var playerInventory = playerObject.GetComponent<PlayerResourceInventory>();
|
||||
if (playerInventory == null)
|
||||
var resourceManager = ServerResourceManager.Instance;
|
||||
if (resourceManager == null)
|
||||
{
|
||||
Debug.LogWarning($"플레이어 {playerId}에게 PlayerResourceInventory 컴포넌트가 없습니다.");
|
||||
Debug.LogWarning("ServerResourceManager 인스턴스를 찾을 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
int playerResourceAmount = playerInventory.CurrentResourceAmount;
|
||||
int playerResourceAmount = resourceManager.GetPlayerResourceAmount(playerId);
|
||||
if (playerResourceAmount <= 0)
|
||||
{
|
||||
Debug.Log($"플레이어 {playerId}가 건낼 자원이 없습니다.");
|
||||
@@ -282,16 +277,13 @@ namespace Northbound
|
||||
|
||||
if (depositAll)
|
||||
{
|
||||
// 전부 건네기
|
||||
depositAmount = playerResourceAmount;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 일부만 건네기
|
||||
depositAmount = Mathf.Min(depositAmountPerInteraction, playerResourceAmount);
|
||||
}
|
||||
|
||||
// 무제한 저장소가 아니면 용량 제한 확인
|
||||
if (!unlimitedStorage)
|
||||
{
|
||||
int availableSpace = maxStorageCapacity - _totalResources.Value;
|
||||
@@ -304,10 +296,8 @@ namespace Northbound
|
||||
return;
|
||||
}
|
||||
|
||||
// 플레이어로부터 자원 차감
|
||||
playerInventory.RemoveResourceServerRpc(depositAmount);
|
||||
|
||||
// 코어에 자원 추가
|
||||
resourceManager.RemoveResource(playerId, depositAmount);
|
||||
UpdatePlayerResourcesClientRpc(playerId);
|
||||
_totalResources.Value += depositAmount;
|
||||
|
||||
Debug.Log($"<color=green>[Core] 플레이어 {playerId}가 {depositAmount} 자원을 건넸습니다. 코어 총 자원: {_totalResources.Value}" +
|
||||
@@ -316,6 +306,20 @@ namespace Northbound
|
||||
ShowDepositEffectClientRpc();
|
||||
}
|
||||
|
||||
[Rpc(SendTo.ClientsAndHost)]
|
||||
private void UpdatePlayerResourcesClientRpc(ulong playerId)
|
||||
{
|
||||
var playerObject = NetworkManager.Singleton.ConnectedClients[playerId].PlayerObject;
|
||||
if (playerObject != null)
|
||||
{
|
||||
var playerInventory = playerObject.GetComponent<PlayerResourceInventory>();
|
||||
if (playerInventory != null)
|
||||
{
|
||||
playerInventory.RequestResourceUpdateServerRpc();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Rpc(SendTo.ClientsAndHost)]
|
||||
private void ShowDepositEffectClientRpc()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user