#pragma once
#include "global.h"
//前置声明
class Entity;
struct MyView;
void CoyoteTime(std::shared_ptr<Entity>& we);
void JH_BlockLT(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_BlockRT(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_BlockPointLT(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_BlockPointRT(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_BlockLB(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_BlockRB(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_BlockPointLB(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_BlockPointRB(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_BlockLeft(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_BlockRight(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_SlopeA(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_SlopeB(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_SlopeC(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_SlopeD(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_SlopeE(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_SlopeF(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_SlopeG(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_SlopeH(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_SlopeI(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_SlopeJ(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_SlopeK(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_SlopeL(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH_InWater(std::shared_ptr<Entity>& we, int X, int Y, int offset);
void JH_InSpike(std::shared_ptr<Entity>& we, int X, int Y, int offset, int damage);
void JH_InLava(std::shared_ptr<Entity>& we, int X, int Y, int offset);
//npc对玩家
void JH_NPC_BlockT(std::shared_ptr<Entity>& we, std::shared_ptr<Entity>& wmc);
void JH_NPC_BlockB(std::shared_ptr<Entity>& we, std::shared_ptr<Entity>& wmc);
void JH_NPC_BlockL(std::shared_ptr<Entity>& we, std::shared_ptr<Entity>& wmc);
void JH_NPC_BlockR(std::shared_ptr<Entity>& we, std::shared_ptr<Entity>& wmc);
//洞窟版
void JH2_JudgeHitMyCharBlock_L(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH2_JudgeHitMyCharBlock_R(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH2_JudgeHitMyCharBlock_T(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH2_JudgeHitMyCharBlock_D(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH2_JudgeHitMyCharTriangleA(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH2_JudgeHitMyCharTriangleB(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH2_JudgeHitMyCharTriangleC(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH2_JudgeHitMyCharTriangleD(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH2_JudgeHitMyCharTriangleE(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH2_JudgeHitMyCharTriangleF(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH2_JudgeHitMyCharTriangleG(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH2_JudgeHitMyCharTriangleH(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH2_JudgeHitMyCharTriangleI(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH2_JudgeHitMyCharTriangleJ(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH2_JudgeHitMyCharTriangleK(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH2_JudgeHitMyCharTriangleL(std::shared_ptr<Entity>& we, int X, int Y, int offset, int pxa);
void JH2_JudgeHitMyCharWater(std::shared_ptr<Entity>& we, int X, int Y, int offset);
//风场
void JH_JudgeHitMyCharVectL(std::shared_ptr<Entity>& we, int X, int Y, int offset);
void JH_JudgeHitMyCharVectLU(std::shared_ptr<Entity>& we, int X, int Y, int offset);
void JH_JudgeHitMyCharVectU(std::shared_ptr<Entity>& we, int X, int Y, int offset);
void JH_JudgeHitMyCharVectRU(std::shared_ptr<Entity>& we, int X, int Y, int offset);
void JH_JudgeHitMyCharVectR(std::shared_ptr<Entity>& we, int X, int Y, int offset);
void JH_JudgeHitMyCharVectLD(std::shared_ptr<Entity>& we, int X, int Y, int offset);
void JH_JudgeHitMyCharVectD(std::shared_ptr<Entity>& we, int X, int Y, int offset);
void JH_JudgeHitMyCharVectRD(std::shared_ptr<Entity>& we, int X, int Y, int offset);
//破坏星星砖
bool JH_BreakStarBlock(std::shared_ptr<Entity>& we, int X, int Y, int offset,
	std::vector<LONG>& pxmData, std::map<LONG, LONG>& updatedPxmArr, int pxmArr_w);