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

namespace PSO2SERVER.Zone
{
    public struct ZoneSettings
    {
        public uint WorldId;
        public uint Unk1;
        public uint ZoneId;
        /// Map layout id.
        public uint MapId;
        public uint ZoneType;
        public uint Seed;
        public uint Args;
        public uint SizeX;
        public uint SizeY;
        public uint Unk2;
        public uint AreaIndex;
        public uint SubArea;
        public uint Unk3;

        // 构造函数
        public ZoneSettings(uint worldId, uint unk1, uint zoneId, uint mapId, uint zoneType, uint seed,
                            uint args, uint sizeX, uint sizeY, uint unk2, uint areaIndex, uint subArea, uint unk3)
        {
            WorldId = worldId;
            Unk1 = unk1;
            ZoneId = zoneId;
            MapId = mapId;
            ZoneType = zoneType;
            Seed = seed;
            Args = args;
            SizeX = sizeX;
            SizeY = sizeY;
            Unk2 = unk2;
            AreaIndex = areaIndex;
            SubArea = subArea;
            Unk3 = unk3;
        }

        // 重写 ToString 方法（可选）
        public override string ToString()
        {
            return $"WorldId: {WorldId}, ZoneId: {ZoneId}, MapId: {MapId}, SizeX: {SizeX}, SizeY: {SizeY}";
        }
    }

    public struct WarpInfo
    {
        public uint unk1;
        public uint zone_id;
        public uint door_id;
        public uint dest_zone;
        public uint backdoor_id;
    }

    public struct LoadLevelThing3
    {
        public uint Unk1;
        public uint Unk2;
    }

    public struct LoadLevelThing4
    {
        public uint Unk1;
        public uint Unk2;
        public uint Unk3;
        public uint Unk4;
        public uint Unk5;
        public uint Unk6;
        public uint Unk7;
        public uint Unk8;
        public uint Unk9;
        public uint Unk10;
        public uint Unk11;
        public uint Unk12;
        public uint Unk13;
        public uint Unk14;
        public uint Unk15;
        public uint Unk16;
        public uint Unk17;
        public uint Unk18;
        public uint Unk19;
        public uint Unk20;
        public uint Unk21;
        public uint Unk22;
        public uint Unk23;
        public uint Unk24;
        public uint Unk25;
        public uint Unk26;
        public uint Unk27;
        public uint Unk28;
        public uint Unk29;
        public uint Unk30;
        public uint Unk31;
        public uint Unk32;
        public uint Unk33;
        public uint Unk34;
    }

    public struct LoadLevelThing6
    {
        public uint Unk1;
        public uint Unk2;
        public uint Unk3;
        public uint Unk4;
        public uint Unk5;
        public uint Unk6;
        public uint Unk7;
        public uint Unk8;
        public uint Unk9;
        public uint Unk10;
        public uint Unk11;
        public uint Unk12;
        public uint Unk13;
        public uint Unk14;
        public uint Unk15;
        public uint Unk16;
        public uint Unk17;
        public uint Unk18;
        public uint Unk19;
        public uint Unk20;
        public uint Unk21;
        public uint Unk22;
        public uint Unk23;
        public uint Unk24;
        public uint Unk25;
        public uint Unk26;
        public uint Unk27;
        public uint Unk28;
        public uint Unk29;
        public uint Unk30;
        public uint Unk31;
        public uint Unk32;
        public uint Unk33;
        public uint Unk34;
        public uint Unk35;
        public uint Unk36;
        public uint Unk37;
        public uint Unk38;
        public uint Unk39;
        public uint Unk40;
    }

    public struct LoadLevelThing5
    {
        public uint Unk1;
        public uint Unk2;
        public uint Unk3;
        public uint Unk4;
        public uint Unk5;
        public uint Unk6;
        public uint Unk7;
        public uint Unk8;
        public uint Unk9;
        public uint Unk10;
        public uint Unk11;
        public uint Unk12;
        public uint Unk13;
        public uint Unk14;
        public uint Unk15;
        public uint Unk16;
        public uint Unk17;
        public uint Unk18;
        public uint Unk19;
        public uint Unk20;
        public uint Unk21;
        public uint Unk22;
        public uint Unk23;
        public uint Unk24;
        public uint Unk25;
        public uint Unk26;
        public uint Unk27;
        public uint Unk28;
        public uint Unk29;
        public uint Unk30;
        public uint Unk31;
        public uint Unk32;
        public uint Unk33;
        public uint Unk34;
        public uint Unk35;
        public uint Unk36;
        public uint Unk37;
        public uint Unk38;
        public uint Unk39;
        public uint Unk40;
        public uint Unk41;
        public uint Unk42;
        public uint Unk43;
        public uint Unk44;
        public uint Unk45;
        public uint Unk46;
        public uint Unk47;
        public uint Unk48;
        public uint Unk49;
        public uint Unk50;
        public uint Unk51;
        public uint Unk52;
        public uint Unk53;
        public uint Unk54;
        public uint Unk55;
        public uint Unk56;
    }

    public struct LoadLevelThing7
    {
        public uint Unk1;
        public uint Unk2;
        public uint Unk3;
        public uint Unk4;
        public uint Unk5;
        public uint Unk6;
        public uint Unk7;
        public uint Unk8;
        public uint Unk9;
        public uint Unk10;
        public uint Unk11;
        public uint Unk12;
        public uint Unk13;
        public uint Unk14;
        public uint Unk15;
        public uint Unk16;
        public uint Unk17;
        public uint Unk18;
        public uint Unk19;
        public uint Unk20;
        public uint Unk21;
        public uint Unk22;
        public uint Unk23;
        public uint Unk24;
        public uint Unk25;
        public uint Unk26;
        public uint Unk27;
        public uint Unk28;
        public uint Unk29;
        public uint Unk30;
        public uint Unk31;
        public uint Unk32;
        public uint Unk33;
        public uint Unk34;
        public uint Unk35;
        public uint Unk36;
        public uint Unk37;
        public uint Unk38;
        public uint Unk39;
        public uint Unk40;
        public uint Unk41;
        public uint Unk42;
        public uint Unk43;
        public uint Unk44;
        public uint Unk45;
        public uint Unk46;
        public uint Unk47;
        public uint Unk48;
        public uint Unk49;
        public uint Unk50;
        public uint Unk51;
        public uint Unk52;
        public uint Unk53;
        public uint Unk54;
        public uint Unk55;
        public uint Unk56;
        public uint Unk57;
        public uint Unk58;
        public uint Unk59;
        public uint Unk60;
    }

    public struct LoadLevelThing8
    {
        public uint Unk1;
        public uint Unk2;
        public uint Unk3;
        public uint Unk4;
        public uint Unk5;
        public uint Unk6;
        public uint Unk7;
        public uint Unk8;
        public uint Unk9;
        public uint Unk10;
        public uint Unk11;
        public uint Unk12;
        public uint Unk13;
        public uint Unk14;
        public uint Unk15;
        public uint Unk16;
        public uint Unk17;
        public uint Unk18;
        public uint Unk19;
        public uint Unk20;
        public uint Unk21;
        public uint Unk22;
        public uint Unk23;
        public uint Unk24;
        public uint Unk25;
        public uint Unk26;
        public uint Unk27;
        public uint Unk28;
        public uint Unk29;
        public uint Unk30;
        public uint Unk31;
        public uint Unk32;
        public uint Unk33;
        public uint Unk34;
        public uint Unk35;
        public uint Unk36;
        public uint Unk37;
        public uint Unk38;
        public uint Unk39;
        public uint Unk40;
        public uint Unk41;
    }

    public struct LoadLevelThing9
    {
        public uint Unk1;
        public uint Unk2;
    }

    public struct LoadLevelThing10
    {
        public uint Unk1;
        public uint Unk2;
        public uint Unk3;
        public uint Unk4;
        public uint Unk5;
        public uint Unk6;
        public uint Unk7;
        public uint Unk8;
        public uint Unk9;
        public uint Unk10;
        public uint Unk11;
        public uint Unk12;
        public uint Unk13;
    }

    public struct UnkThing1
    {
        public uint Unk1;
        public uint Unk2;
        public uint Unk3;
        public uint Unk4;
        public uint Unk5;
        public uint Unk6;
        public uint Unk7;
        public uint Unk8;
        public uint Unk9;
        public uint Unk10;
    }

    public struct UnkThing2
    {
        public uint Unk1;
        public uint Unk2;
    }
}
