#include "Mod.h"

#include "SDK/Player.h"

auto Mod::getMode() -> std::string { return _(""); }

auto Mod::onEnabled() -> void {}
auto Mod::onDisabled() -> void {}
auto Mod::onAnyEnabled() -> void {}
auto Mod::onAnyDisabled() -> void {}

auto Mod::onClient() -> void {}

auto Mod::onClient2() -> void {}
auto Mod::onClient3() -> void {}
auto Mod::onClient4() -> void {}

auto Mod::onKilledPlayer(Actor& actor) -> void {}
auto Mod::onWinGame() -> void {}

auto Mod::onImGuiRender() -> void {}
auto Mod::onKeyboard(int key, bool* held, bool* cancel) -> void {}
auto Mod::onMouse(char button, char action, bool* cancel) -> void {}

auto Mod::onSetupAndRender() -> void {}

auto Mod::onBaseTick(Player* _this) -> void {}
auto Mod::onGetShadowRadius(Player* _this, float* radius) -> void {}
auto Mod::onFire(Player* _this, bool* isonfire) -> void {}

auto Mod::onSwing(Player* _this, bool* cancel) -> void {}
auto Mod::onWorldTick(Player* _this) -> void {}
auto Mod::onBobHurt(glm::mat4* matrix, bool* cancel) -> void {}
auto Mod::onBobHurt_cause(bool* cancel) -> void {}

auto Mod::onSwingDuration(int* duration) -> void {}

auto Mod::onPacketReceive(Packet* packet, bool* cancel) -> void {};

auto Mod::onPacketSendBefore(Packet* packet) -> void {};
auto Mod::onPacketSendBefore2(Packet* packet) -> void {};
auto Mod::onPacketSendAfter(Packet* packet, bool* cancel) -> void {};
auto Mod::onPacketSendAfter2(Packet* packet, bool* cancel) -> void {};
auto Mod::onPacketSendAfter3(Packet* packet, bool* cancel) -> void {};

auto Mod::onViewPerspectiveBefore(int* perspective) -> void {}
auto Mod::onViewPerspectiveAfter(int* perspective) -> void {}
auto Mod::onGetGamma(float* gamma) -> void {}
auto Mod::onGetFov(float* fov) -> void {}

auto Mod::onContainerScreenSlotHovered(ContainerScreenController* _this, std::string containerName, int64_t slot) -> void {}
auto Mod::onContainerScreenTick(ContainerScreenController* _this) -> void {}

auto Mod::onGetTime(float* time) -> void {}

auto Mod::onDimensionChanged() -> void {}
auto Mod::isPreGame(bool* state) -> void {}

auto Mod::onStartDestroyBlock() -> void {}
auto Mod::onStopDestroyBlock() -> void {}
auto Mod::onGetPickRange(float* range) -> void {}
auto Mod::onAttack(Actor& target) -> void {}

auto Mod::onGetActorOverlayColor(ImColor* color) -> void {}

auto Mod::onGetTexture(ResourceLocation* location, mce::TexturePtr* ptr) -> void {}
auto Mod::onDrawImage(BedrockTextureData* ptr, glm::vec2* pos) -> void {}

auto Mod::onRunUpdateCycle(bool* cancel) -> void {}

auto Mod::onItemRenderer_render(ActorRenderData* data) -> void {}

auto Mod::onCameraComponentUpdate(glm::vec4* angle) -> void {}

auto Mod::onUIControlGetPosition(UIControl* _this, glm::vec2* position) -> void {}

auto Mod::onConnectionRequest(std::string* deviceId) -> void {}

auto Mod::onItemInHandRenderer_render(ItemStack* itemstack) -> void {}

auto Mod::onGeneralSettingsScreenController_onCreate(bool* isGlobalSettings, bool* reloadTexturePacksOnExit) -> void {}

auto Mod::onResourcePackManager_composeFullStack() -> void {}

auto Mod::onSettingScreen_ExitBefore() -> void {}
auto Mod::onSettingScreen_ExitAfter() -> void {}

auto Mod::onRenderChunkCoordinator_handleVisibilityUpdates(bool* cancel) -> void {}

auto Mod::onRenderOrder_execute(bool* cancel) -> void {}


auto Mod::onRenderActorBefore(Actor* actor, glm::vec3* camera, glm::vec3* position) -> void {};
auto Mod::onRenderActorAfter(Actor* actor) -> void {};

auto Mod::onInterpolatedHeadYaw(Player* _this, float* yaw) -> void {};
auto Mod::onInterpolatedBodyYaw(Player* _this, float* yaw) -> void {};
