Roster
Un roster de hasta 6 monstruos MonsterInstance que se pueden usar en batalla. Este es el tipo devuelto por IPlayerData.PlayerRoster, asi que es su punto de entrada para leer y modificar el equipo del jugador.
Namespace: OpenMon.MCE.Monster
Roster es un ScriptableObject concreto (SavableObject), no una interfaz de OpenMon.MCE.SDK. Los miembros de abajo son la superficie principal que la mayoria de los compradores usa; la clase tiene miembros adicionales (gestion de plantillas, serializacion de guardado/carga, propagacion de virus, poblado aleatorio). Consulte el codigo fuente (nivel Source) para la API completa.
Definicion
[CreateAssetMenu(menuName = "MCE/Roster", fileName = "Roster")]
public class Roster : SavableObject, IEnumerable
{
public event Action OnRosterUpdated;
public MonsterInstance[] RosterData = new MonsterInstance[6];
public MCESettings Settings;
public MonsterDatabaseInstance Database;
public int RosterSize { get; }
public int NumberThatCanBattle { get; }
public MonsterInstance this[int index] { get; set; }
public IEnumerator GetEnumerator();
public bool IsMonsterNull(int index);
public void AddMonster(MonsterEntry species, Form form, byte level, /* ...many optional overrides... */);
public int AddMonster(MonsterInstance monster);
public void RemoveMonster(int index);
public void RemoveMonster(MonsterInstance monster);
public void Exchange(int firstIndex, int secondIndex);
public MonsterInstance ReplaceMonsterAt(int index, MonsterInstance newMonster);
public void CompletelyHeal();
public bool AnyHasMove(Move move);
public void CopyFrom(Roster other);
}
Eventos
OnRosterUpdated
Se dispara cada vez que se modifica el roster (monstruo agregado, eliminado, intercambiado, reemplazado, etc.).
Firma: event Action OnRosterUpdated
Campos y propiedades
RosterData
El arreglo de respaldo de las instancias de monstruos. Siempre tiene longitud 6; las ranuras vacias contienen una entrada nula.
Tipo: MonsterInstance[]
RosterSizePara lecturas cotidianas, use el indexador roster[i] y RosterSize en lugar de iterar RosterData directamente: las ranuras finales pueden ser nulas o entradas nulas.
Settings
Referencia a la configuracion de MCE.
Tipo: MCESettings
Database
Referencia a la base de datos de monstruos.
Tipo: MonsterDatabaseInstance
RosterSize
Obtiene el tamano de este roster: la cantidad de ranuras iniciales ocupadas (se detiene en la primera entrada nula).
Tipo: int (solo lectura, 0-6)
NumberThatCanBattle
Obtiene la cantidad de monstruos que pueden combatir actualmente (no una entrada nula y CanBattle == true).
Tipo: int (solo lectura)
Metodos
this[int index]
Acceso rapido a una instancia de monstruo por ranura.
| Parametro | Tipo | Descripcion |
|---|---|---|
index | int | Indice de esa instancia de monstruo (0-5) |
Tipo: MonsterInstance (get/set)
GetEnumerator()
Acceso rapido al enumerador de datos (implementa IEnumerable, por lo que puede recorrer un roster con foreach).
Devuelve: IEnumerator sobre RosterData.
IsMonsterNull(int index)
Verifica si una ranura de monstruo es nula (ya sea un null real o una entrada nula).
| Parametro | Tipo | Descripcion |
|---|---|---|
index | int | Indice a verificar |
Devuelve: bool -- true si es nula.
AddMonster(species, form, level, ...)
Agrega un monstruo al roster, construyendo el MonsterInstance por usted. Solo se necesitan species, form y level; el resto tiene valores por defecto (naturaleza/habilidad aleatoria, sin apodo, origen por defecto, etc.).
| Parametro | Tipo | Descripcion |
|---|---|---|
species | MonsterEntry | Especie de este monstruo |
form | Form | Forma de este monstruo (una forma invalida recae en la predeterminada) |
level | byte | Nivel de este monstruo |
| (muchos opcionales) | naturaleza, habilidad, genero, IVs/EVs, movimientos, apodo, entrenador, ball, cintas, objeto equipado, isEgg, y mas |
AddMonster(MonsterInstance monster)
Agrega un monstruo ya construido al roster.
| Parametro | Tipo | Descripcion |
|---|---|---|
monster | MonsterInstance | Monstruo a agregar |
Devuelve: int -- el indice en el que se agrego, o -1 si todas las ranuras ya estan ocupadas.
RemoveMonster(int index)
Elimina el monstruo en la ranura dada y luego compacta el equipo para que no haya huecos.
| Parametro | Tipo | Descripcion |
|---|---|---|
index | int | Indice a eliminar |
RemoveMonster(MonsterInstance monster)
Elimina una instancia de monstruo especifica del roster.
| Parametro | Tipo | Descripcion |
|---|---|---|
monster | MonsterInstance | Monstruo a eliminar |
Exchange(int firstIndex, int secondIndex)
Intercambia dos monstruos en el roster (intercambia sus ranuras).
| Parametro | Tipo | Descripcion |
|---|---|---|
firstIndex | int | Primer indice a intercambiar |
secondIndex | int | Segundo indice a intercambiar |
ReplaceMonsterAt(int index, MonsterInstance newMonster)
Reemplaza el monstruo en el indice dado con otro.
| Parametro | Tipo | Descripcion |
|---|---|---|
index | int | Indice a reemplazar |
newMonster | MonsterInstance | Monstruo a colocar ahi |
Devuelve: MonsterInstance -- el monstruo que fue reemplazado.
CompletelyHeal()
Cura completamente a todos los monstruos del roster (HP, PP y estado).
AnyHasMove(Move move)
Conoce algun monstruo de este roster un movimiento dado? (Util para verificaciones de movimientos de campo/tipo MO.)
| Parametro | Tipo | Descripcion |
|---|---|---|
move | Move | Movimiento a verificar |
Devuelve: bool -- true si algun miembro lo conoce.
CopyFrom(Roster other)
Clona los monstruos de otro roster dentro de este.
| Parametro | Tipo | Descripcion |
|---|---|---|
other | Roster | Roster desde el cual copiar |
Ejemplo de uso
using OpenMon.MCE.SDK;
using OpenMon.MCE.Monster;
using Zenject;
public class PartyManager : MonoBehaviour
{
[Inject] private IMonsterCaptureEngine engine;
private void Start()
{
Roster roster = engine.Player.PlayerRoster;
// React to any party change.
roster.OnRosterUpdated += () =>
Debug.Log($"Party changed — size {roster.RosterSize}, "
+ $"{roster.NumberThatCanBattle} able to battle");
// Iterate the current party.
foreach (MonsterInstance monster in roster)
{
if (monster is { IsNullEntry: false })
Debug.Log($"- {monster.Species.name} (Lv {monster.StatData.Level})");
}
// Swap the lead with the second slot.
if (roster.RosterSize >= 2)
roster.Exchange(0, 1);
// Heal the whole party after a rough battle.
roster.CompletelyHeal();
}
}