using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PkmnFoundations.Structures
{
    public class BattleVideoRecord5
    {
        public BattleVideoRecord5()
        {
        }

        public BattleVideoRecord5(int pid, ulong serial_number, byte[] data)
        {
            if (data.Length != 6308) throw new ArgumentException("Battle video data must be 6308 bytes.");

            byte[] data_head = new byte[196];
            byte[] data_main = new byte[6112];

            Array.Copy(data, 0, data_head, 0, 196);
            Array.Copy(data, 196, data_main, 0, 6112);

            PID = pid;
            SerialNumber = serial_number;
            Header = new BattleVideoHeader5(pid, serial_number, data_head);
            Data = data_main;
        }

        public BattleVideoRecord5(int pid, ulong serial_number, BattleVideoHeader5 header, byte[] data_main)
        {
            if (data_main.Length != 6112) throw new ArgumentException("Battle video main data must be 6112 bytes.");

            PID = pid;
            SerialNumber = serial_number;
            Header = header;
            Data = data_main;
        }

        public int PID;
        public ulong SerialNumber;
        public BattleVideoHeader5 Header;
        public byte[] Data;

        public BattleVideoRecord5 Clone()
        {
            return new BattleVideoRecord5(PID, SerialNumber, Header.Clone(), Data.ToArray());
        }

        public byte[] Save()
        {
            byte[] result = new byte[6308];
            Array.Copy(Header.Data, 0, result, 0, 196);
            Array.Copy(Data, 196, result, 0, 6112);
            return result;
        }
    }
}
