IPlayerData
Contract for accessing player state from game code.
In an online world the same properties are answered by the server, and the calling code does not change.
Namespace: OpenMon.MCE.SDK
Definition
public interface IPlayerData
{
Roster PlayerRoster { get; }
int Money { get; }
string PlayerName { get; }
int BadgeCount { get; }
}
Properties
PlayerRoster
The player's current party of monsters.
Type: Roster
A Roster holds up to 6 MonsterInstance objects. Access individual members by index:
Roster roster = player.PlayerRoster;
MonsterInstance first = roster[0]; // Lead monster
int teamSize = roster.RosterSize; // How many monsters in the party
Money
The money value held by GlobalGameData.
Type: int
GlobalGameData.Money exists for the savegame preview and the engine writes it when the game is saved. The balance the player is spending is the one in the player's Bag (PlayerBag.Money), so Money can lag behind it between saves.
PlayerName
The name of the player's CharacterData asset (the character the player chose).
Type: string
BadgeCount
The number of gym badges the player has earned.
Type: int
Usage Example
using OpenMon.MCE.SDK;
using Zenject;
public class PlayerHUD : MonoBehaviour
{
// Only IMonsterCaptureEngine is bound in DI; reach subsystems through it.
[Inject] private IMonsterCaptureEngine engine;
private IPlayerData player;
private void Awake()
{
player = engine.Player;
}
[SerializeField] private Text nameLabel;
[SerializeField] private Text moneyLabel;
[SerializeField] private Text badgeLabel;
[SerializeField] private Text teamLabel;
private void Update()
{
nameLabel.text = player.PlayerName;
moneyLabel.text = $"${player.Money:N0}";
badgeLabel.text = $"Badges: {player.BadgeCount}/8";
var roster = player.PlayerRoster;
teamLabel.text = $"Team: {roster.RosterSize}/6";
}
}
Do not cache PlayerRoster long-term. The roster reference may change after save/load operations. Query player.PlayerRoster each time you need it.