Files
UltimateFishing/Assets/Scripts/Assembly-CSharp/Rewired/Demos/PressStartToJoinExample_Assigner.cs
2026-02-21 16:45:37 +08:00

89 lines
2.0 KiB
C#

using System.Collections.Generic;
using UnityEngine;
namespace Rewired.Demos
{
[AddComponentMenu("")]
public class PressStartToJoinExample_Assigner : MonoBehaviour
{
private class PlayerMap
{
public int rewiredPlayerId;
public int gamePlayerId;
public PlayerMap(int rewiredPlayerId, int gamePlayerId)
{
this.rewiredPlayerId = rewiredPlayerId;
this.gamePlayerId = gamePlayerId;
}
}
private static PressStartToJoinExample_Assigner instance;
public int maxPlayers = 4;
private List<PlayerMap> playerMap;
private int gamePlayerIdCounter;
public static Player GetRewiredPlayer(int gamePlayerId)
{
if (!ReInput.isReady)
{
return null;
}
if (instance == null)
{
Debug.LogError("Not initialized. Do you have a PressStartToJoinPlayerSelector in your scehe?");
return null;
}
for (int i = 0; i < instance.playerMap.Count; i++)
{
if (instance.playerMap[i].gamePlayerId == gamePlayerId)
{
return ReInput.players.GetPlayer(instance.playerMap[i].rewiredPlayerId);
}
}
return null;
}
private void Awake()
{
playerMap = new List<PlayerMap>();
instance = this;
}
private void Update()
{
for (int i = 0; i < ReInput.players.playerCount; i++)
{
if (ReInput.players.GetPlayer(i).GetButtonDown("JoinGame"))
{
AssignNextPlayer(i);
}
}
}
private void AssignNextPlayer(int rewiredPlayerId)
{
if (playerMap.Count >= maxPlayers)
{
Debug.LogError("Max player limit already reached!");
return;
}
int nextGamePlayerId = GetNextGamePlayerId();
playerMap.Add(new PlayerMap(rewiredPlayerId, nextGamePlayerId));
Player player = ReInput.players.GetPlayer(rewiredPlayerId);
player.controllers.maps.SetMapsEnabled(false, "Assignment");
player.controllers.maps.SetMapsEnabled(true, "Default");
Debug.Log("Added Rewired Player id " + rewiredPlayerId + " to game player " + nextGamePlayerId);
}
private int GetNextGamePlayerId()
{
return gamePlayerIdCounter++;
}
}
}