Skip to main content

IPlayerData

Contract for accessing player state from game code.

iplayer data

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

A saved value, not the live balance

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";
}
}
Stale References

Do not cache PlayerRoster long-term. The roster reference may change after save/load operations. Query player.PlayerRoster each time you need it.