373 lines
7.6 KiB
C
373 lines
7.6 KiB
C
|
|
#pragma once
|
|||
|
|
//<2F><>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>Map
|
|||
|
|
extern std::map<uint64_t, ActorPtr>ActorPtrMapObject;
|
|||
|
|
|
|||
|
|
extern NPK_M* npk;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
static SQInteger Create_Image(HSQUIRRELVM v)
|
|||
|
|
{
|
|||
|
|
SQInteger Top = sq_gettop(v);
|
|||
|
|
if (Top <= 0)
|
|||
|
|
{
|
|||
|
|
sq_throwerror(v, _SST("Incorrect function argument"));
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
const SQChar* gOutPutBuffer;
|
|||
|
|
sq_getstring(v, 2, &gOutPutBuffer);
|
|||
|
|
|
|||
|
|
SQInteger gFrame;
|
|||
|
|
sq_getinteger(v, 3, &gFrame);
|
|||
|
|
|
|||
|
|
//ת<><D7AA>img<6D><67><EFBFBD><EFBFBD>
|
|||
|
|
std::string TextureName = (char*)gOutPutBuffer;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
TexturePtr t = SquirrelClassEx::GetTexturePtrByImg(TextureName, gFrame);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
SpritePtr Png = new Sprite(t);
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΨһID
|
|||
|
|
uint64_t UUID = Png->GetObjectID();
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Map<61><70><EFBFBD><EFBFBD>
|
|||
|
|
ActorPtrMapObject[UUID] = Png;
|
|||
|
|
|
|||
|
|
sq_pushinteger(v, UUID);
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
static SQInteger Create_ImageEx(HSQUIRRELVM v)
|
|||
|
|
{
|
|||
|
|
SQInteger Top = sq_gettop(v);
|
|||
|
|
if (Top <= 0)
|
|||
|
|
{
|
|||
|
|
sq_throwerror(v, _SST("Incorrect function argument"));
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
|||
|
|
if (Top == 3) {
|
|||
|
|
const SQChar* gOutPutBuffer;
|
|||
|
|
sq_getstring(v, 2, &gOutPutBuffer);
|
|||
|
|
|
|||
|
|
SQInteger gFrame;
|
|||
|
|
sq_getinteger(v, 3, &gFrame);
|
|||
|
|
|
|||
|
|
std::string TextureName = (char*)gOutPutBuffer;
|
|||
|
|
|
|||
|
|
SpriteExPtr Png = new SpriteEx();
|
|||
|
|
|
|||
|
|
TexturePtr t = SquirrelClassEx::GetTexturePtrByImg(TextureName, gFrame);
|
|||
|
|
|
|||
|
|
Png->SetFrame(t);
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΨһID
|
|||
|
|
uint64_t UUID = Png->GetObjectID();
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Map<61><70><EFBFBD><EFBFBD>
|
|||
|
|
ActorPtrMapObject[UUID] = Png;
|
|||
|
|
|
|||
|
|
sq_pushinteger(v, UUID);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
else if (Top == 1) {
|
|||
|
|
|
|||
|
|
SpriteExPtr Png = new SpriteEx();
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΨһID
|
|||
|
|
uint64_t UUID = Png->GetObjectID();
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Map<61><70><EFBFBD><EFBFBD>
|
|||
|
|
ActorPtrMapObject[UUID] = Png;
|
|||
|
|
|
|||
|
|
sq_pushinteger(v, UUID);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ø<C3B8>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
|
static SQInteger Set_ImageEx_Mode(HSQUIRRELVM v)
|
|||
|
|
{
|
|||
|
|
SQInteger Top = sq_gettop(v);
|
|||
|
|
if (Top <= 0)
|
|||
|
|
{
|
|||
|
|
sq_throwerror(v, _SST("Incorrect function argument"));
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
SQInteger ActorUUID;
|
|||
|
|
sq_getinteger(v, 2, &ActorUUID);
|
|||
|
|
|
|||
|
|
SQInteger gType;
|
|||
|
|
sq_getinteger(v, 3, &gType);
|
|||
|
|
|
|||
|
|
//<2F><>ȫ<EFBFBD><C8AB>Map<61>л<EFBFBD>ȡ<EFBFBD><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|||
|
|
if (ActorPtrMapObject.count(ActorUUID)) {
|
|||
|
|
SpriteExPtr Png = dynamic_cast<SpriteEx*>(ActorPtrMapObject[ActorUUID].Get());
|
|||
|
|
Png->SetMode(gType);
|
|||
|
|
sq_pushbool(v, true);
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
sq_pushbool(v, false);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ø<C3B8>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
|
|||
|
|
static SQInteger Set_ImageEx_Frame(HSQUIRRELVM v)
|
|||
|
|
{
|
|||
|
|
SQInteger Top = sq_gettop(v);
|
|||
|
|
if (Top <= 0)
|
|||
|
|
{
|
|||
|
|
sq_throwerror(v, _SST("Incorrect function argument"));
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
SQInteger ActorUUID;
|
|||
|
|
sq_getinteger(v, 2, &ActorUUID);
|
|||
|
|
|
|||
|
|
const SQChar* gOutPutBuffer;
|
|||
|
|
sq_getstring(v, 3, &gOutPutBuffer);
|
|||
|
|
|
|||
|
|
SQInteger gFrame;
|
|||
|
|
sq_getinteger(v, 4, &gFrame);
|
|||
|
|
|
|||
|
|
std::string TextureName = (char*)gOutPutBuffer;
|
|||
|
|
|
|||
|
|
//<2F><>ȫ<EFBFBD><C8AB>Map<61>л<EFBFBD>ȡ<EFBFBD><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|||
|
|
if (ActorPtrMapObject.count(ActorUUID)) {
|
|||
|
|
SpriteExPtr Png = dynamic_cast<SpriteEx*>(ActorPtrMapObject[ActorUUID].Get());
|
|||
|
|
|
|||
|
|
TexturePtr t = SquirrelClassEx::GetTexturePtrByImg(TextureName, gFrame);
|
|||
|
|
|
|||
|
|
Png->SetFrame(t);
|
|||
|
|
|
|||
|
|
sq_pushbool(v, true);
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
sq_pushbool(v, false);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ø<C3B8><DFBC><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><CDB8><EFBFBD><EFBFBD>
|
|||
|
|
static SQInteger Set_ImageEx_Alpha(HSQUIRRELVM v)
|
|||
|
|
{
|
|||
|
|
SQInteger Top = sq_gettop(v);
|
|||
|
|
if (Top <= 0)
|
|||
|
|
{
|
|||
|
|
sq_throwerror(v, _SST("Incorrect function argument"));
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
SQInteger ActorUUID;
|
|||
|
|
sq_getinteger(v, 2, &ActorUUID);
|
|||
|
|
|
|||
|
|
SQFloat Alpha;
|
|||
|
|
sq_getfloat(v, 3, &Alpha);
|
|||
|
|
|
|||
|
|
|
|||
|
|
//<2F><>ȫ<EFBFBD><C8AB>Map<61>л<EFBFBD>ȡ<EFBFBD><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|||
|
|
if (ActorPtrMapObject.count(ActorUUID)) {
|
|||
|
|
SpriteExPtr Png = dynamic_cast<SpriteEx*>(ActorPtrMapObject[ActorUUID].Get());
|
|||
|
|
Png->SetOpacity(Alpha);
|
|||
|
|
sq_pushbool(v, true);
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
sq_pushbool(v, false);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ø<C3B8><DFBC><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>֡<EFBFBD><D6A1>Ϣ
|
|||
|
|
static SQInteger Set_ImageEx_FrameInfo(HSQUIRRELVM v)
|
|||
|
|
{
|
|||
|
|
SQInteger Top = sq_gettop(v);
|
|||
|
|
if (Top <= 0)
|
|||
|
|
{
|
|||
|
|
sq_throwerror(v, _SST("Incorrect function argument"));
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
SQInteger ActorUUID;
|
|||
|
|
sq_getinteger(v, 2, &ActorUUID);
|
|||
|
|
|
|||
|
|
std::vector<int> FrameDelay;
|
|||
|
|
sq_pushnull(v); // null iterator
|
|||
|
|
while (SQ_SUCCEEDED(sq_next(v, 3)))
|
|||
|
|
{
|
|||
|
|
SQInteger gDelay;
|
|||
|
|
sq_getinteger(v, -1, &gDelay);
|
|||
|
|
FrameDelay.push_back(gDelay);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>-1<><31>ֵ<EFBFBD><D6B5>-2<>Ǽ<EFBFBD>
|
|||
|
|
sq_pop(v, 2); //<2F><><EFBFBD><EFBFBD>һ<EFBFBD>ε<EFBFBD><CEB5><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
}
|
|||
|
|
sq_pop(v, 1);
|
|||
|
|
|
|||
|
|
SQInteger Loop;
|
|||
|
|
sq_getinteger(v, 4, &Loop);
|
|||
|
|
|
|||
|
|
//<2F><>ȫ<EFBFBD><C8AB>Map<61>л<EFBFBD>ȡ<EFBFBD><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|||
|
|
if (ActorPtrMapObject.count(ActorUUID)) {
|
|||
|
|
SpriteExPtr Png = dynamic_cast<SpriteEx*>(ActorPtrMapObject[ActorUUID].Get());
|
|||
|
|
Png->SetFrameInfo(FrameDelay, Loop);
|
|||
|
|
sq_pushbool(v, true);
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
sq_pushbool(v, false);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ø<C3B8><DFBC><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD>Ŷ<F1B2A5B7><C5B6><EFBFBD>
|
|||
|
|
static SQInteger Set_ImageEx_PlayAnimotion(HSQUIRRELVM v)
|
|||
|
|
{
|
|||
|
|
SQInteger Top = sq_gettop(v);
|
|||
|
|
if (Top <= 0)
|
|||
|
|
{
|
|||
|
|
sq_throwerror(v, _SST("Incorrect function argument"));
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
SQInteger ActorUUID;
|
|||
|
|
sq_getinteger(v, 2, &ActorUUID);
|
|||
|
|
|
|||
|
|
SQBool Type;
|
|||
|
|
sq_getbool(v, 3, &Type);
|
|||
|
|
|
|||
|
|
//<2F><>ȫ<EFBFBD><C8AB>Map<61>л<EFBFBD>ȡ<EFBFBD><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|||
|
|
if (ActorPtrMapObject.count(ActorUUID)) {
|
|||
|
|
SpriteExPtr Png = dynamic_cast<SpriteEx*>(ActorPtrMapObject[ActorUUID].Get());
|
|||
|
|
Png->SetAnimotionPlay(Type);
|
|||
|
|
sq_pushbool(v, true);
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
sq_pushbool(v, false);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ø<C3B8><DFBC><EFBFBD><EFBFBD><EFBFBD>Ani֡
|
|||
|
|
static SQInteger Set_ImageEx_Animotion_Frame(HSQUIRRELVM v)
|
|||
|
|
{
|
|||
|
|
SQInteger Top = sq_gettop(v);
|
|||
|
|
if (Top <= 0)
|
|||
|
|
{
|
|||
|
|
sq_throwerror(v, _SST("Incorrect function argument"));
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
SQInteger ActorUUID;
|
|||
|
|
sq_getinteger(v, 2, &ActorUUID);
|
|||
|
|
|
|||
|
|
SQInteger Frame;
|
|||
|
|
sq_getinteger(v, 3, &Frame);
|
|||
|
|
|
|||
|
|
//<2F><>ȫ<EFBFBD><C8AB>Map<61>л<EFBFBD>ȡ<EFBFBD><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|||
|
|
if (ActorPtrMapObject.count(ActorUUID)) {
|
|||
|
|
SpriteExPtr Png = dynamic_cast<SpriteEx*>(ActorPtrMapObject[ActorUUID].Get());
|
|||
|
|
Png->SetAnimotionFrame(Frame);
|
|||
|
|
sq_pushbool(v, true);
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
sq_pushbool(v, false);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ø<C3B8><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ
|
|||
|
|
static SQInteger Set_ImageEx_Shadow(HSQUIRRELVM v)
|
|||
|
|
{
|
|||
|
|
SQInteger Top = sq_gettop(v);
|
|||
|
|
if (Top <= 0)
|
|||
|
|
{
|
|||
|
|
sq_throwerror(v, _SST("Incorrect function argument"));
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
SQInteger ActorUUID;
|
|||
|
|
sq_getinteger(v, 2, &ActorUUID);
|
|||
|
|
|
|||
|
|
//SQInteger Frame;
|
|||
|
|
//sq_getinteger(v, 3, &Frame);
|
|||
|
|
|
|||
|
|
//<2F><>ȫ<EFBFBD><C8AB>Map<61>л<EFBFBD>ȡ<EFBFBD><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|||
|
|
if (ActorPtrMapObject.count(ActorUUID)) {
|
|||
|
|
SpriteExPtr Png = dynamic_cast<SpriteEx*>(ActorPtrMapObject[ActorUUID].Get());
|
|||
|
|
Png->SetShadow();
|
|||
|
|
sq_pushbool(v, true);
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
sq_pushbool(v, false);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ò<EFBFBD><C3B2>о<EFBFBD><D0BE><EFBFBD>
|
|||
|
|
static SQInteger Set_Image_CropRect(HSQUIRRELVM v)
|
|||
|
|
{
|
|||
|
|
SQInteger Top = sq_gettop(v);
|
|||
|
|
if (Top <= 0)
|
|||
|
|
{
|
|||
|
|
sq_throwerror(v, _SST("Incorrect function argument"));
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
SQInteger ActorUUID;
|
|||
|
|
sq_getinteger(v, 2, &ActorUUID);
|
|||
|
|
|
|||
|
|
SQFloat L;
|
|||
|
|
sq_getfloat(v, 3, &L);
|
|||
|
|
|
|||
|
|
SQFloat U;
|
|||
|
|
sq_getfloat(v, 4, &U);
|
|||
|
|
|
|||
|
|
SQFloat R;
|
|||
|
|
sq_getfloat(v, 5, &R);
|
|||
|
|
|
|||
|
|
SQFloat D;
|
|||
|
|
sq_getfloat(v, 6, &D);
|
|||
|
|
|
|||
|
|
//<2F><>ȫ<EFBFBD><C8AB>Map<61>л<EFBFBD>ȡ<EFBFBD><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
|||
|
|
if (ActorPtrMapObject.count(ActorUUID)) {
|
|||
|
|
SpritePtr Png = dynamic_cast<Sprite*>(ActorPtrMapObject[ActorUUID].Get());
|
|||
|
|
|
|||
|
|
Png->SetCropRect(Rect(Point(L,U), Point(R, D)));
|
|||
|
|
sq_pushbool(v, true);
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
sq_pushbool(v, false);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return 1;
|
|||
|
|
}
|