Elo system update

This commit is contained in:
2026-04-29 13:10:00 +07:00
parent ed86fface3
commit 1222d39fdf
25 changed files with 462 additions and 293 deletions

View File

@@ -5,6 +5,7 @@ using System.Threading.Tasks;
using Fusion;
using Fusion.Sockets;
using UnityEngine;
using OnlyScove.Scripts;
namespace Hallucinate.UI
{
@@ -42,7 +43,6 @@ namespace Hallucinate.UI
{
OnJoinStartedEvent?.Invoke();
// Sử dụng SessionProperties để lưu mật khẩu
var customProps = new Dictionary<string, SessionProperty>();
if (!string.IsNullOrEmpty(password))
{
@@ -88,13 +88,6 @@ namespace Hallucinate.UI
public void OnPlayerJoined(NetworkRunner runner, PlayerRef player)
{
if (runner.IsServer)
{
Vector2 spawnPosition = (player == runner.LocalPlayer) ? new Vector2(-8, 0) : new Vector2(8, 0);
var networkPlayerObject = runner.Spawn(_playerPrefab, spawnPosition, Quaternion.identity, player);
_spawnedCharacters.Add(player, networkPlayerObject);
}
if (player == runner.LocalPlayer)
{
var pdm = FindFirstObjectByType<_PlayerDataManager>();
@@ -104,12 +97,21 @@ namespace Hallucinate.UI
{
Name = LocalPlayerProfile.Name,
Role = LocalPlayerProfile.Role,
IsReady = false
};
pdm.RPC_UpdatePlayerMetaData(player, metaData);
}
}
}
public void StartGame()
{
if (_runner.IsServer)
{
_runner.LoadScene("Main Scene");
}
}
public void OnPlayerLeft(NetworkRunner runner, PlayerRef player)
{
if (_spawnedCharacters.TryGetValue(player, out NetworkObject networkObject))
@@ -132,8 +134,27 @@ namespace Hallucinate.UI
public void OnInput(NetworkRunner runner, NetworkInput input)
{
var data = new _PlayerInputData();
data.direction = Input.GetAxis("Vertical");
var data = new PlayerInputData();
// Try to get input from the local player's InputReader
if (PlayerStateMachine.Local != null && PlayerStateMachine.Local.Input != null)
{
var inputReader = PlayerStateMachine.Local.Input;
data.Direction = inputReader.MoveInput;
data.sprint = inputReader.IsSprintHeld;
if (PlayerStateMachine.Local.Cam != null)
{
data.rot = PlayerStateMachine.Local.Cam.PlanarRotation;
}
}
else
{
// Fallback to basic input if player not spawned or InputReader missing
data.Direction = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
data.sprint = Input.GetKey(KeyCode.LeftShift);
}
input.Set(data);
}
@@ -149,7 +170,31 @@ namespace Hallucinate.UI
public void OnObjectEnterAOI(NetworkRunner runner, NetworkObject obj, PlayerRef player) { }
public void OnCustomAuthenticationResponse(NetworkRunner runner, Dictionary<string, object> data) { }
public void OnHostMigration(NetworkRunner runner, HostMigrationToken hostMigrationToken) { }
public void OnSceneLoadDone(NetworkRunner runner) { }
public void OnSceneLoadDone(NetworkRunner runner)
{
string currentSceneName = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name;
if (runner.IsServer && currentSceneName == "Main Scene")
{
foreach (var player in runner.ActivePlayers)
{
Vector2 spawnPosition = (player == runner.LocalPlayer) ? new Vector2(-8, 0) : new Vector2(8, 0);
var networkPlayerObject = runner.Spawn(_playerPrefab, spawnPosition, Quaternion.identity, player);
_spawnedCharacters.Add(player, networkPlayerObject);
}
}
if (currentSceneName == "Main Scene")
{
if (UIManager.Instance != null) UIManager.Instance.OnGameStarted();
}
else if (currentSceneName == "Lobby" || currentSceneName == "Menu")
{
if (UIManager.Instance != null) UIManager.Instance.OnBackToMenu();
}
}
public void OnSceneLoadStart(NetworkRunner runner) { }
}
}