Saltar al contenido principal

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

Tipo de datos concreto, no una interfaz del SDK

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[]

Prefiera el indexador y RosterSize

Para 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.

ParametroTipoDescripcion
indexintIndice 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).

ParametroTipoDescripcion
indexintIndice 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.).

ParametroTipoDescripcion
speciesMonsterEntryEspecie de este monstruo
formFormForma de este monstruo (una forma invalida recae en la predeterminada)
levelbyteNivel 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.

ParametroTipoDescripcion
monsterMonsterInstanceMonstruo 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.

ParametroTipoDescripcion
indexintIndice a eliminar

RemoveMonster(MonsterInstance monster)​

Elimina una instancia de monstruo especifica del roster.

ParametroTipoDescripcion
monsterMonsterInstanceMonstruo a eliminar

Exchange(int firstIndex, int secondIndex)​

Intercambia dos monstruos en el roster (intercambia sus ranuras).

ParametroTipoDescripcion
firstIndexintPrimer indice a intercambiar
secondIndexintSegundo indice a intercambiar

ReplaceMonsterAt(int index, MonsterInstance newMonster)​

Reemplaza el monstruo en el indice dado con otro.

ParametroTipoDescripcion
indexintIndice a reemplazar
newMonsterMonsterInstanceMonstruo 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.)

ParametroTipoDescripcion
moveMoveMovimiento a verificar

Devuelve: bool -- true si algun miembro lo conoce.

CopyFrom(Roster other)​

Clona los monstruos de otro roster dentro de este.

ParametroTipoDescripcion
otherRosterRoster 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();
}
}