Added delayed ticking to Lua API
git-svn-id: http://mc-server.googlecode.com/svn/trunk@953 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
parent
12b536d467
commit
a2f6243b21
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** Lua binding: AllToLua
|
** Lua binding: AllToLua
|
||||||
** Generated automatically by tolua++-1.0.92 on 10/06/12 17:42:13.
|
** Generated automatically by tolua++-1.0.92 on 10/13/12 10:55:10.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __cplusplus
|
#ifndef __cplusplus
|
||||||
@ -11161,6 +11161,38 @@ static int tolua_AllToLua_cWorld_GetGameMode00(lua_State* tolua_S)
|
|||||||
}
|
}
|
||||||
#endif //#ifndef TOLUA_DISABLE
|
#endif //#ifndef TOLUA_DISABLE
|
||||||
|
|
||||||
|
/* method: IsPVPEnabled of class cWorld */
|
||||||
|
#ifndef TOLUA_DISABLE_tolua_AllToLua_cWorld_IsPVPEnabled00
|
||||||
|
static int tolua_AllToLua_cWorld_IsPVPEnabled00(lua_State* tolua_S)
|
||||||
|
{
|
||||||
|
#ifndef TOLUA_RELEASE
|
||||||
|
tolua_Error tolua_err;
|
||||||
|
if (
|
||||||
|
!tolua_isusertype(tolua_S,1,"const cWorld",0,&tolua_err) ||
|
||||||
|
!tolua_isnoobj(tolua_S,2,&tolua_err)
|
||||||
|
)
|
||||||
|
goto tolua_lerror;
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
const cWorld* self = (const cWorld*) tolua_tousertype(tolua_S,1,0);
|
||||||
|
#ifndef TOLUA_RELEASE
|
||||||
|
if (!self) tolua_error(tolua_S,"invalid 'self' in function 'IsPVPEnabled'", NULL);
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
bool tolua_ret = (bool) self->IsPVPEnabled();
|
||||||
|
tolua_pushboolean(tolua_S,(bool)tolua_ret);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
#ifndef TOLUA_RELEASE
|
||||||
|
tolua_lerror:
|
||||||
|
tolua_error(tolua_S,"#ferror in function 'IsPVPEnabled'.",&tolua_err);
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif //#ifndef TOLUA_DISABLE
|
||||||
|
|
||||||
/* method: SetWorldTime of class cWorld */
|
/* method: SetWorldTime of class cWorld */
|
||||||
#ifndef TOLUA_DISABLE_tolua_AllToLua_cWorld_SetWorldTime00
|
#ifndef TOLUA_DISABLE_tolua_AllToLua_cWorld_SetWorldTime00
|
||||||
static int tolua_AllToLua_cWorld_SetWorldTime00(lua_State* tolua_S)
|
static int tolua_AllToLua_cWorld_SetWorldTime00(lua_State* tolua_S)
|
||||||
@ -12629,6 +12661,45 @@ static int tolua_AllToLua_cWorld_GetStorageSaveQueueLength00(lua_State* tolua_S)
|
|||||||
}
|
}
|
||||||
#endif //#ifndef TOLUA_DISABLE
|
#endif //#ifndef TOLUA_DISABLE
|
||||||
|
|
||||||
|
/* method: QueueBlockForTick of class cWorld */
|
||||||
|
#ifndef TOLUA_DISABLE_tolua_AllToLua_cWorld_QueueBlockForTick00
|
||||||
|
static int tolua_AllToLua_cWorld_QueueBlockForTick00(lua_State* tolua_S)
|
||||||
|
{
|
||||||
|
#ifndef TOLUA_RELEASE
|
||||||
|
tolua_Error tolua_err;
|
||||||
|
if (
|
||||||
|
!tolua_isusertype(tolua_S,1,"cWorld",0,&tolua_err) ||
|
||||||
|
!tolua_isnumber(tolua_S,2,0,&tolua_err) ||
|
||||||
|
!tolua_isnumber(tolua_S,3,0,&tolua_err) ||
|
||||||
|
!tolua_isnumber(tolua_S,4,0,&tolua_err) ||
|
||||||
|
!tolua_isnumber(tolua_S,5,0,&tolua_err) ||
|
||||||
|
!tolua_isnoobj(tolua_S,6,&tolua_err)
|
||||||
|
)
|
||||||
|
goto tolua_lerror;
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
cWorld* self = (cWorld*) tolua_tousertype(tolua_S,1,0);
|
||||||
|
int a_BlockX = ((int) tolua_tonumber(tolua_S,2,0));
|
||||||
|
int a_BlockY = ((int) tolua_tonumber(tolua_S,3,0));
|
||||||
|
int a_BlockZ = ((int) tolua_tonumber(tolua_S,4,0));
|
||||||
|
float a_TimeToWait = ((float) tolua_tonumber(tolua_S,5,0));
|
||||||
|
#ifndef TOLUA_RELEASE
|
||||||
|
if (!self) tolua_error(tolua_S,"invalid 'self' in function 'QueueBlockForTick'", NULL);
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
self->QueueBlockForTick(a_BlockX,a_BlockY,a_BlockZ,a_TimeToWait);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
#ifndef TOLUA_RELEASE
|
||||||
|
tolua_lerror:
|
||||||
|
tolua_error(tolua_S,"#ferror in function 'QueueBlockForTick'.",&tolua_err);
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif //#ifndef TOLUA_DISABLE
|
||||||
|
|
||||||
/* method: CastThunderbolt of class cWorld */
|
/* method: CastThunderbolt of class cWorld */
|
||||||
#ifndef TOLUA_DISABLE_tolua_AllToLua_cWorld_CastThunderbolt00
|
#ifndef TOLUA_DISABLE_tolua_AllToLua_cWorld_CastThunderbolt00
|
||||||
static int tolua_AllToLua_cWorld_CastThunderbolt00(lua_State* tolua_S)
|
static int tolua_AllToLua_cWorld_CastThunderbolt00(lua_State* tolua_S)
|
||||||
@ -12863,6 +12934,44 @@ static int tolua_AllToLua_cWorld_GetMaxCactusHeight00(lua_State* tolua_S)
|
|||||||
}
|
}
|
||||||
#endif //#ifndef TOLUA_DISABLE
|
#endif //#ifndef TOLUA_DISABLE
|
||||||
|
|
||||||
|
/* method: IsBlockDirectlyWatered of class cWorld */
|
||||||
|
#ifndef TOLUA_DISABLE_tolua_AllToLua_cWorld_IsBlockDirectlyWatered00
|
||||||
|
static int tolua_AllToLua_cWorld_IsBlockDirectlyWatered00(lua_State* tolua_S)
|
||||||
|
{
|
||||||
|
#ifndef TOLUA_RELEASE
|
||||||
|
tolua_Error tolua_err;
|
||||||
|
if (
|
||||||
|
!tolua_isusertype(tolua_S,1,"cWorld",0,&tolua_err) ||
|
||||||
|
!tolua_isnumber(tolua_S,2,0,&tolua_err) ||
|
||||||
|
!tolua_isnumber(tolua_S,3,0,&tolua_err) ||
|
||||||
|
!tolua_isnumber(tolua_S,4,0,&tolua_err) ||
|
||||||
|
!tolua_isnoobj(tolua_S,5,&tolua_err)
|
||||||
|
)
|
||||||
|
goto tolua_lerror;
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
cWorld* self = (cWorld*) tolua_tousertype(tolua_S,1,0);
|
||||||
|
int a_BlockX = ((int) tolua_tonumber(tolua_S,2,0));
|
||||||
|
int a_BlockY = ((int) tolua_tonumber(tolua_S,3,0));
|
||||||
|
int a_BlockZ = ((int) tolua_tonumber(tolua_S,4,0));
|
||||||
|
#ifndef TOLUA_RELEASE
|
||||||
|
if (!self) tolua_error(tolua_S,"invalid 'self' in function 'IsBlockDirectlyWatered'", NULL);
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
bool tolua_ret = (bool) self->IsBlockDirectlyWatered(a_BlockX,a_BlockY,a_BlockZ);
|
||||||
|
tolua_pushboolean(tolua_S,(bool)tolua_ret);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
#ifndef TOLUA_RELEASE
|
||||||
|
tolua_lerror:
|
||||||
|
tolua_error(tolua_S,"#ferror in function 'IsBlockDirectlyWatered'.",&tolua_err);
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif //#ifndef TOLUA_DISABLE
|
||||||
|
|
||||||
/* method: Clear of class cInventory */
|
/* method: Clear of class cInventory */
|
||||||
#ifndef TOLUA_DISABLE_tolua_AllToLua_cInventory_Clear00
|
#ifndef TOLUA_DISABLE_tolua_AllToLua_cInventory_Clear00
|
||||||
static int tolua_AllToLua_cInventory_Clear00(lua_State* tolua_S)
|
static int tolua_AllToLua_cInventory_Clear00(lua_State* tolua_S)
|
||||||
@ -22365,6 +22474,7 @@ TOLUA_API int tolua_AllToLua_open (lua_State* tolua_S)
|
|||||||
tolua_beginmodule(tolua_S,"cWorld");
|
tolua_beginmodule(tolua_S,"cWorld");
|
||||||
tolua_function(tolua_S,"GetTime",tolua_AllToLua_cWorld_GetTime00);
|
tolua_function(tolua_S,"GetTime",tolua_AllToLua_cWorld_GetTime00);
|
||||||
tolua_function(tolua_S,"GetGameMode",tolua_AllToLua_cWorld_GetGameMode00);
|
tolua_function(tolua_S,"GetGameMode",tolua_AllToLua_cWorld_GetGameMode00);
|
||||||
|
tolua_function(tolua_S,"IsPVPEnabled",tolua_AllToLua_cWorld_IsPVPEnabled00);
|
||||||
tolua_function(tolua_S,"SetWorldTime",tolua_AllToLua_cWorld_SetWorldTime00);
|
tolua_function(tolua_S,"SetWorldTime",tolua_AllToLua_cWorld_SetWorldTime00);
|
||||||
tolua_function(tolua_S,"GetHeight",tolua_AllToLua_cWorld_GetHeight00);
|
tolua_function(tolua_S,"GetHeight",tolua_AllToLua_cWorld_GetHeight00);
|
||||||
tolua_function(tolua_S,"UnloadUnusedChunks",tolua_AllToLua_cWorld_UnloadUnusedChunks00);
|
tolua_function(tolua_S,"UnloadUnusedChunks",tolua_AllToLua_cWorld_UnloadUnusedChunks00);
|
||||||
@ -22406,6 +22516,7 @@ TOLUA_API int tolua_AllToLua_open (lua_State* tolua_S)
|
|||||||
tolua_function(tolua_S,"GetLightingQueueLength",tolua_AllToLua_cWorld_GetLightingQueueLength00);
|
tolua_function(tolua_S,"GetLightingQueueLength",tolua_AllToLua_cWorld_GetLightingQueueLength00);
|
||||||
tolua_function(tolua_S,"GetStorageLoadQueueLength",tolua_AllToLua_cWorld_GetStorageLoadQueueLength00);
|
tolua_function(tolua_S,"GetStorageLoadQueueLength",tolua_AllToLua_cWorld_GetStorageLoadQueueLength00);
|
||||||
tolua_function(tolua_S,"GetStorageSaveQueueLength",tolua_AllToLua_cWorld_GetStorageSaveQueueLength00);
|
tolua_function(tolua_S,"GetStorageSaveQueueLength",tolua_AllToLua_cWorld_GetStorageSaveQueueLength00);
|
||||||
|
tolua_function(tolua_S,"QueueBlockForTick",tolua_AllToLua_cWorld_QueueBlockForTick00);
|
||||||
tolua_function(tolua_S,"CastThunderbolt",tolua_AllToLua_cWorld_CastThunderbolt00);
|
tolua_function(tolua_S,"CastThunderbolt",tolua_AllToLua_cWorld_CastThunderbolt00);
|
||||||
tolua_function(tolua_S,"SetWeather",tolua_AllToLua_cWorld_SetWeather00);
|
tolua_function(tolua_S,"SetWeather",tolua_AllToLua_cWorld_SetWeather00);
|
||||||
tolua_function(tolua_S,"ChangeWeather",tolua_AllToLua_cWorld_ChangeWeather00);
|
tolua_function(tolua_S,"ChangeWeather",tolua_AllToLua_cWorld_ChangeWeather00);
|
||||||
@ -22413,6 +22524,7 @@ TOLUA_API int tolua_AllToLua_open (lua_State* tolua_S)
|
|||||||
tolua_function(tolua_S,"SetNextBlockTick",tolua_AllToLua_cWorld_SetNextBlockTick00);
|
tolua_function(tolua_S,"SetNextBlockTick",tolua_AllToLua_cWorld_SetNextBlockTick00);
|
||||||
tolua_function(tolua_S,"GetMaxSugarcaneHeight",tolua_AllToLua_cWorld_GetMaxSugarcaneHeight00);
|
tolua_function(tolua_S,"GetMaxSugarcaneHeight",tolua_AllToLua_cWorld_GetMaxSugarcaneHeight00);
|
||||||
tolua_function(tolua_S,"GetMaxCactusHeight",tolua_AllToLua_cWorld_GetMaxCactusHeight00);
|
tolua_function(tolua_S,"GetMaxCactusHeight",tolua_AllToLua_cWorld_GetMaxCactusHeight00);
|
||||||
|
tolua_function(tolua_S,"IsBlockDirectlyWatered",tolua_AllToLua_cWorld_IsBlockDirectlyWatered00);
|
||||||
tolua_endmodule(tolua_S);
|
tolua_endmodule(tolua_S);
|
||||||
tolua_cclass(tolua_S,"cInventory","cInventory","",NULL);
|
tolua_cclass(tolua_S,"cInventory","cInventory","",NULL);
|
||||||
tolua_beginmodule(tolua_S,"cInventory");
|
tolua_beginmodule(tolua_S,"cInventory");
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
** Lua binding: AllToLua
|
** Lua binding: AllToLua
|
||||||
** Generated automatically by tolua++-1.0.92 on 10/06/12 17:42:14.
|
** Generated automatically by tolua++-1.0.92 on 10/13/12 10:55:10.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Exported function */
|
/* Exported function */
|
||||||
|
@ -1032,16 +1032,16 @@ int cWorld::GetBiomeAt (int a_BlockX, int a_BlockZ)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cWorld::SetBlock( int a_X, int a_Y, int a_Z, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta )
|
void cWorld::SetBlock(int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta)
|
||||||
{
|
{
|
||||||
if(a_BlockType == E_BLOCK_AIR)
|
if(a_BlockType == E_BLOCK_AIR)
|
||||||
{
|
{
|
||||||
BlockHandler(GetBlock(a_X, a_Y, a_Z))->OnDestroyed(this, a_X, a_Y, a_Z);
|
BlockHandler(GetBlock(a_BlockX, a_BlockY, a_BlockZ))->OnDestroyed(this, a_BlockX, a_BlockY, a_BlockZ);
|
||||||
}
|
}
|
||||||
m_ChunkMap->SetBlock(a_X, a_Y, a_Z, a_BlockType, a_BlockMeta);
|
m_ChunkMap->SetBlock(a_BlockX, a_BlockY, a_BlockZ, a_BlockType, a_BlockMeta);
|
||||||
|
|
||||||
GetSimulatorManager()->WakeUp(a_X, a_Y, a_Z);
|
GetSimulatorManager()->WakeUp(a_BlockX, a_BlockY, a_BlockZ);
|
||||||
BlockHandler(a_BlockType)->OnPlaced(this, a_X, a_Y, a_Z, a_BlockMeta);
|
BlockHandler(a_BlockType)->OnPlaced(this, a_BlockX, a_BlockY, a_BlockZ, a_BlockMeta);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2094,45 +2094,62 @@ void cWorld::GetChunkStats(int & a_NumValid, int & a_NumDirty, int & a_NumInLigh
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cWorld::TickQueuedBlocks(float a_Dt)
|
void cWorld::TickQueuedBlocks(float a_Dt)
|
||||||
{
|
{
|
||||||
if(m_BlockTickQueue.empty())
|
if (m_BlockTickQueue.empty())
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
m_BlockTickQueueCopy.clear();
|
m_BlockTickQueueCopy.clear();
|
||||||
m_BlockTickQueue.swap(m_BlockTickQueueCopy);
|
m_BlockTickQueue.swap(m_BlockTickQueueCopy);
|
||||||
|
|
||||||
for(std::vector<BlockTickQueueItem *>::iterator itr = m_BlockTickQueueCopy.begin(); itr != m_BlockTickQueueCopy.end(); itr++)
|
for (std::vector<BlockTickQueueItem *>::iterator itr = m_BlockTickQueueCopy.begin(); itr != m_BlockTickQueueCopy.end(); itr++)
|
||||||
{
|
{
|
||||||
BlockTickQueueItem *Block = (*itr);
|
BlockTickQueueItem *Block = (*itr);
|
||||||
Block->ToWait -= a_Dt;
|
Block->ToWait -= a_Dt;
|
||||||
if(Block->ToWait <= 0)
|
if (Block->ToWait <= 0)
|
||||||
{
|
{
|
||||||
BlockHandler(GetBlock(Block->X, Block->Y, Block->Z))->OnUpdate(this, Block->X, Block->Y, Block->Z);
|
BlockHandler(GetBlock(Block->X, Block->Y, Block->Z))->OnUpdate(this, Block->X, Block->Y, Block->Z);
|
||||||
delete Block; //We don´t have to remove it from the vector, this will happen automatically on the next tick
|
delete Block; //We don't have to remove it from the vector, this will happen automatically on the next tick
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
m_BlockTickQueue.push_back(Block); //Keep the block in the queue
|
m_BlockTickQueue.push_back(Block); //Keep the block in the queue
|
||||||
}
|
}
|
||||||
}
|
} // for itr - m_BlockTickQueueCopy[]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void cWorld::QueueBlockForTick(int a_X, int a_Y, int a_Z, float a_Time)
|
|
||||||
|
|
||||||
|
|
||||||
|
void cWorld::QueueBlockForTick(int a_BlockX, int a_BlockY, int a_BlockZ, float a_TimeToWait)
|
||||||
{
|
{
|
||||||
BlockTickQueueItem *Block = new BlockTickQueueItem;
|
BlockTickQueueItem * Block = new BlockTickQueueItem;
|
||||||
Block->X = a_X;
|
Block->X = a_BlockX;
|
||||||
Block->Y = a_Y;
|
Block->Y = a_BlockY;
|
||||||
Block->Z = a_Z;
|
Block->Z = a_BlockZ;
|
||||||
Block->ToWait = a_Time;
|
Block->ToWait = a_TimeToWait;
|
||||||
|
|
||||||
m_BlockTickQueue.push_back(Block);
|
m_BlockTickQueue.push_back(Block);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool cWorld::IsBlockDirectlyWatered(int a_X, int a_Y, int a_Z)
|
|
||||||
|
|
||||||
|
|
||||||
|
bool cWorld::IsBlockDirectlyWatered(int a_BlockX, int a_BlockY, int a_BlockZ)
|
||||||
{
|
{
|
||||||
return IsBlockWater(GetBlock(a_X - 1, a_Y, a_Z))
|
return (
|
||||||
|| IsBlockWater(GetBlock(a_X + 1, a_Y, a_Z))
|
IsBlockWater(GetBlock(a_BlockX - 1, a_BlockY, a_BlockZ)) ||
|
||||||
|| IsBlockWater(GetBlock(a_X, a_Y, a_Z - 1))
|
IsBlockWater(GetBlock(a_BlockX + 1, a_BlockY, a_BlockZ)) ||
|
||||||
|| IsBlockWater(GetBlock(a_X, a_Y, a_Z + 1));
|
IsBlockWater(GetBlock(a_BlockX, a_BlockY, a_BlockZ - 1)) ||
|
||||||
|
IsBlockWater(GetBlock(a_BlockX, a_BlockY, a_BlockZ + 1))
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -381,7 +381,7 @@ public:
|
|||||||
float ToWait;
|
float ToWait;
|
||||||
};
|
};
|
||||||
|
|
||||||
void QueueBlockForTick(int a_BlockX, int a_BlockY, int a_BlockZ, float a_Time);
|
void QueueBlockForTick(int a_BlockX, int a_BlockY, int a_BlockZ, float a_TimeToWait); // tolua_export
|
||||||
|
|
||||||
void CastThunderbolt (int a_BlockX, int a_BlockY, int a_BlockZ); //tolua_export
|
void CastThunderbolt (int a_BlockX, int a_BlockY, int a_BlockZ); //tolua_export
|
||||||
void SetWeather ( eWeather a_Weather ); //tolua_export
|
void SetWeather ( eWeather a_Weather ); //tolua_export
|
||||||
@ -398,7 +398,7 @@ public:
|
|||||||
int GetMaxSugarcaneHeight(void) const { return m_MaxSugarcaneHeight; } // tolua_export
|
int GetMaxSugarcaneHeight(void) const { return m_MaxSugarcaneHeight; } // tolua_export
|
||||||
int GetMaxCactusHeight (void) const { return m_MaxCactusHeight; } // tolua_export
|
int GetMaxCactusHeight (void) const { return m_MaxCactusHeight; } // tolua_export
|
||||||
|
|
||||||
bool IsBlockDirectlyWatered(int a_X, int a_Y, int a_Z);
|
bool IsBlockDirectlyWatered(int a_BlockX, int a_BlockY, int a_BlockZ); // tolua_export
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user