diff options
| author | chai <215380520@qq.com> | 2024-05-19 16:05:01 +0800 |
|---|---|---|
| committer | chai <215380520@qq.com> | 2024-05-19 16:05:01 +0800 |
| commit | c5f145786f4c6d2fe4bea831dfc16e52228920a5 (patch) | |
| tree | a6ead7ea8266c767d58ed0f816dcd7a1dd75bd65 /Thronefall_1_0/Rewired/Rewired.Demos/PressStartToJoinExample_Assigner.cs | |
| parent | 48b64e573a1709dc923cb9162b55be0246b3ff63 (diff) | |
* move
Diffstat (limited to 'Thronefall_1_0/Rewired/Rewired.Demos/PressStartToJoinExample_Assigner.cs')
| -rw-r--r-- | Thronefall_1_0/Rewired/Rewired.Demos/PressStartToJoinExample_Assigner.cs | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/Thronefall_1_0/Rewired/Rewired.Demos/PressStartToJoinExample_Assigner.cs b/Thronefall_1_0/Rewired/Rewired.Demos/PressStartToJoinExample_Assigner.cs new file mode 100644 index 0000000..6b23589 --- /dev/null +++ b/Thronefall_1_0/Rewired/Rewired.Demos/PressStartToJoinExample_Assigner.cs @@ -0,0 +1,87 @@ +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(state: false, "Assignment"); + player.controllers.maps.SetMapsEnabled(state: true, "Default"); + Debug.Log("Added Rewired Player id " + rewiredPlayerId + " to game player " + nextGamePlayerId); + } + + private int GetNextGamePlayerId() + { + return gamePlayerIdCounter++; + } +} |
