mod abyss;
mod activity;
mod arcade;
mod avatar;
mod battle_pass;
mod cafe;
mod character_quest;
mod client_systems;
mod collect;
mod daily_challenge;
mod embattles;
mod event_graph;
mod fairy;
mod friend;
mod gacha;
mod hadal_zone;
mod item;
mod login;
mod mail;
mod main_city_revival;
mod misc;
mod month_card;
mod perform;
mod player;
mod private_message;
mod quest;
mod ramen;
mod vhs_store;
mod world;

mod core;

use crate::logic::Player;
use core::NetResult;
use core::{auth_req_handlers, notify_handlers, req_handlers};

pub use core::PacketHandlingError;

use crate::net::NetSession;
use proto::*;

auth_req_handlers! {
    login::PlayerGetToken;
    login::PlayerLogin;
}

req_handlers! {
    player::GetPlayerBasicInfo;
    player::CreateRole;
    player::GetPlayerTransaction;
    item::GetItemData;
    avatar::GetAvatarData;
    avatar::GetBuddyData;
    quest::GetQuestData;
    quest::GetYorozuyaInfo;
    quest::GetArchiveInfo;
    abyss::GetAbyssInfo;
    gacha::GetGachaData;
    ramen::GetRamenData;
    cafe::GetCafeData;
    cafe::GetRewardBuffData;
    mail::GetPlayerMails;
    fairy::GetFairyInfo;
    client_systems::GetTipsInfo;
    client_systems::GetClientSystemsInfo;
    private_message::GetPrivateMessageData;
    collect::GetCollectMap;
    collect::GetWorkbenchInfo;
    collect::GetAbyssRewardData;
    vhs_store::GetVhsStoreInfo;
    activity::GetActivityData;
    activity::GetWebActivityData;
    embattles::GetEmbattlesData;
    client_systems::GetNewsStandData;
    client_systems::GetTrashbinHermitData;
    client_systems::GetExplorationData;
    main_city_revival::GetMainCityRevivalData;
    arcade::GetArcadeData;
    battle_pass::GetBattlePassData;
    hadal_zone::GetHadalZoneData;
    daily_challenge::GetDailyChallengeInfo;
    abyss::GetCompletedAbyssGroupList;
    friend::GetFriendList;
    friend::GetFriendLimitInfo;
    character_quest::GetCharacterQuestList;
    character_quest::GetPhotoWallData;
    month_card::GetMonthCardDayReward;
    world::EnterWorld;
    world::SyncHallEvent;
    world::SavePosInMainCity;
    world::WorldInitFinish;
    world::AdvanceBeginnerProcedure;
    world::BeginnerBattleBegin;
    world::BeginnerBattleEnd;
    world::BeginnerBattleRebegin;
    world::StartTrialFightingMission;
    world::EndBattle;
    world::LeaveCurDungeon;
    world::InteractWithUnit;
    world::EnterSection;
    world::JumpPageSystem;
    world::StartHollowQuest;
    world::FinishHollowBattleEvent;
    world::LongFightProgressUpdate;
    client_systems::ReportUiLayoutPlatform;
    client_systems::PlayerOperation;
    client_systems::UnlockNewbieGroup;
    client_systems::BattleReport;
    client_systems::PopUpWindowSeen;
    client_systems::ReportSystemSettingsChange;
    client_systems::InteractWithSceneObject;
    client_systems::PlayerSystemParameterChange;
    client_systems::NewsStandSeen;
    perform::PerformTrigger;
    perform::PerformEnd;
    perform::PerformJump;
    misc::GetAuthkey;
    misc::GetServerTimestamp;
    misc::GetCutSceneKeyInfo;
    embattles::ReportBattleTeam;
    item::WeaponDress;
    item::WeaponUnDress;
    event_graph::RunEventGraph;
    quest::BeginArchiveBattleQuest;
    quest::FinishArchiveQuest;
    gacha::DoGacha;
    gacha::ChooseGachaUp;
    gacha::GachaFreeAgent;
    player::ModNickname;
    client_systems::ModQuickMenu;
    client_systems::ChangePostGirl;
}

notify_handlers! {
    player::KeepAlive;
    player::PlayerLogout;
}
