mirror of
https://github.com/mm201/pkmn-classic-framework.git
synced 2026-03-22 01:44:20 -05:00
Workaround LAST_INSERT_ID and CAST limitations by making all primary keys unsigned bigint. Workaround LAST_INSERT_ID signed/unsigned inconsistency between 5.5 and 5.6 by using Convert.ToUInt64 instead of casts.
140 lines
3.5 KiB
C#
140 lines
3.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace PkmnFoundations.Structures
|
|
{
|
|
public class BattleVideoHeader5
|
|
{
|
|
public BattleVideoHeader5()
|
|
{
|
|
}
|
|
|
|
public BattleVideoHeader5(int pid, ulong serial_number, byte[] data)
|
|
{
|
|
if (data.Length != 196) throw new ArgumentException("Battle video header data must be 196 bytes.");
|
|
|
|
PID = pid;
|
|
SerialNumber = serial_number;
|
|
Data = data;
|
|
}
|
|
|
|
// todo: encapsulate these so calculated fields are always correct
|
|
public int PID;
|
|
public ulong SerialNumber;
|
|
public byte[] Data;
|
|
|
|
public ushort Streak
|
|
{
|
|
get
|
|
{
|
|
return BitConverter.ToUInt16(Data, 0xa4);
|
|
}
|
|
}
|
|
|
|
public ushort[] Party
|
|
{
|
|
get
|
|
{
|
|
ushort[] result = new ushort[12];
|
|
for (int x = 0; x < result.Length; x++)
|
|
{
|
|
result[x] = BitConverter.ToUInt16(Data, 0x80 + x * 2);
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
|
|
public byte[] TrainerName
|
|
{
|
|
get
|
|
{
|
|
byte[] result = new byte[16];
|
|
Array.Copy(Data, 0, result, 0, 16);
|
|
return result;
|
|
}
|
|
}
|
|
|
|
public BattleVideoMetagames5 Metagame
|
|
{
|
|
get
|
|
{
|
|
return (BattleVideoMetagames5)Data[0xa6];
|
|
}
|
|
}
|
|
|
|
public byte Country
|
|
{
|
|
get
|
|
{
|
|
return Data[0x17];
|
|
}
|
|
}
|
|
|
|
public byte Region
|
|
{
|
|
get
|
|
{
|
|
return Data[0x18];
|
|
}
|
|
}
|
|
|
|
public BattleVideoHeader5 Clone()
|
|
{
|
|
return new BattleVideoHeader5(PID, SerialNumber, Data.ToArray());
|
|
}
|
|
}
|
|
|
|
public enum BattleVideoMetagames5 : byte
|
|
{
|
|
ColosseumSingleNoLauncher = 0x18,
|
|
ColosseumDoubleNoLauncher = 0x19,
|
|
ColosseumTripleNoLauncher = 0x1a,
|
|
ColosseumRotationNoLauncher = 0x1b,
|
|
ColosseumMultiNoLauncher = 0x1c,
|
|
|
|
ColosseumSingleLauncher = 0x98,
|
|
ColosseumDoubleLauncher = 0x99,
|
|
ColosseumTripleLauncher = 0x9a,
|
|
ColosseumRotationLauncher = 0x9b,
|
|
ColosseumMultiLauncher = 0x9c,
|
|
|
|
BattleSubwaySingle = 0x00,
|
|
BattleSubwayDouble = 0x01,
|
|
BattleSubwayMulti = 0x04,
|
|
|
|
RandomMatchupSingle = 0x28,
|
|
RandomMatchupDouble = 0x29,
|
|
RandomMatchupTriple = 0x2a,
|
|
RandomMatchupRotation = 0x2b,
|
|
RandomMatchupLauncher = 0xaa,
|
|
|
|
RatingSingle = 0x68,
|
|
RatingDouble = 0x69,
|
|
RatingTriple = 0x6a,
|
|
RatingRotation = 0x6b,
|
|
|
|
BattleCompetitionSingle = 0x38,
|
|
BattleCompetitionDouble = 0x39,
|
|
BattleCompetitionTriple = 0x3a,
|
|
BattleCompetitionRotation = 0x3b,
|
|
|
|
SearchBattleCompetition = 0x38,
|
|
// This is not a legal value in either a search or a record.
|
|
// I'm using it to indicate that no search is being done
|
|
// (byte 0x148 in the search is 0).
|
|
// Otherwise, the value 00 collides with Battle Subway Single
|
|
// which is a legitimate search.
|
|
SearchNone = 0xff,
|
|
}
|
|
|
|
public enum BattleVideoRankings5 : uint
|
|
{
|
|
None = 0x00000000,
|
|
Newest30 = 0x00000001,
|
|
LinkBattles = 0x00000003,
|
|
SubwayBattles = 0x00000002,
|
|
}
|
|
}
|