Merge branch 'master' into Ranks
This commit is contained in:
commit
45068f9bf4
@ -236,7 +236,7 @@ endif()
|
||||
|
||||
|
||||
# Generate a list of all source files:
|
||||
set(ALLFILES "")
|
||||
set(ALLFILES "${SRCS}" "${HDRS}")
|
||||
foreach(folder ${FOLDERS})
|
||||
get_directory_property(FOLDER_SRCS DIRECTORY ${folder} DEFINITION SRCS)
|
||||
foreach (src ${FOLDER_SRCS})
|
||||
|
@ -579,7 +579,7 @@ void cChunk::Tick(float a_Dt)
|
||||
}
|
||||
|
||||
for (cEntityList::iterator itr = m_Entities.begin(); itr != m_Entities.end();)
|
||||
{
|
||||
{
|
||||
if (!((*itr)->IsMob())) // Mobs are ticked inside cWorld::TickMobs() (as we don't have to tick them if they are far away from players)
|
||||
{
|
||||
// Tick all entities in this chunk (except mobs):
|
||||
@ -594,17 +594,19 @@ void cChunk::Tick(float a_Dt)
|
||||
itr = m_Entities.erase(itr);
|
||||
delete ToDelete;
|
||||
}
|
||||
else if ((*itr)->IsWorldTravellingFrom(m_World)) // Remove all entities that are travelling to another world:
|
||||
else if ((*itr)->IsWorldTravellingFrom(m_World))
|
||||
{
|
||||
// Remove all entities that are travelling to another world
|
||||
MarkDirty();
|
||||
(*itr)->SetWorldTravellingFrom(NULL);
|
||||
itr = m_Entities.erase(itr);
|
||||
}
|
||||
else if ( // If any entity moved out of the chunk, move it to the neighbor:
|
||||
else if (
|
||||
((*itr)->GetChunkX() != m_PosX) ||
|
||||
((*itr)->GetChunkZ() != m_PosZ)
|
||||
)
|
||||
{
|
||||
// The entity moved out of the chunk, move it to the neighbor
|
||||
MarkDirty();
|
||||
MoveEntityToNewChunk(*itr);
|
||||
itr = m_Entities.erase(itr);
|
||||
@ -885,14 +887,14 @@ void cChunk::ApplyWeatherToTop()
|
||||
SetBlock(X, Height, Z, E_BLOCK_ICE, 0);
|
||||
}
|
||||
else if (
|
||||
(m_World->IsDeepSnowEnabled()) &&
|
||||
(
|
||||
(TopBlock == E_BLOCK_RED_ROSE) ||
|
||||
(TopBlock == E_BLOCK_YELLOW_FLOWER) ||
|
||||
(TopBlock == E_BLOCK_RED_MUSHROOM) ||
|
||||
(TopBlock == E_BLOCK_BROWN_MUSHROOM)
|
||||
)
|
||||
(m_World->IsDeepSnowEnabled()) &&
|
||||
(
|
||||
(TopBlock == E_BLOCK_RED_ROSE) ||
|
||||
(TopBlock == E_BLOCK_YELLOW_FLOWER) ||
|
||||
(TopBlock == E_BLOCK_RED_MUSHROOM) ||
|
||||
(TopBlock == E_BLOCK_BROWN_MUSHROOM)
|
||||
)
|
||||
)
|
||||
{
|
||||
SetBlock(X, Height, Z, E_BLOCK_SNOW, 0);
|
||||
}
|
||||
@ -2142,10 +2144,14 @@ bool cChunk::DoWithRedstonePoweredEntityAt(int a_BlockX, int a_BlockY, int a_Blo
|
||||
case E_BLOCK_DROPPER:
|
||||
case E_BLOCK_DISPENSER:
|
||||
case E_BLOCK_NOTE_BLOCK:
|
||||
{
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
// There is a block entity here, but of different type. No other block entity can be here, so we can safely bail out
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (a_Callback.Item((cRedstonePoweredEntity *)*itr))
|
||||
|
@ -241,7 +241,7 @@ public:
|
||||
bool DoWithBlockEntityAt(int a_BlockX, int a_BlockY, int a_BlockZ, cBlockEntityCallback & a_Callback); // Lua-acessible
|
||||
|
||||
/** Calls the callback for the redstone powered entity at the specified coords; returns false if there's no redstone powered entity at those coords, true if found */
|
||||
bool DoWithRedstonePoweredEntityAt(int a_BlockX, int a_BlockY, int a_BlockZ, cRedstonePoweredCallback & a_Callback);
|
||||
bool DoWithRedstonePoweredEntityAt(int a_BlockX, int a_BlockY, int a_BlockZ, cRedstonePoweredCallback & a_Callback);
|
||||
/** Calls the callback for the beacon at the specified coords; returns false if there's no beacon at those coords, true if found */
|
||||
bool DoWithBeaconAt(int a_BlockX, int a_BlockY, int a_BlockZ, cBeaconCallback & a_Callback); // Lua-acessible
|
||||
|
||||
|
@ -341,8 +341,8 @@ void cClientHandle::Authenticate(const AString & a_Name, const AString & a_UUID,
|
||||
m_Protocol->SendWeather(World->GetWeather());
|
||||
}
|
||||
|
||||
// Send time
|
||||
m_Protocol->SendTimeUpdate(World->GetWorldAge(), World->GetTimeOfDay());
|
||||
// Send time:
|
||||
m_Protocol->SendTimeUpdate(World->GetWorldAge(), World->GetTimeOfDay(), World->IsDaylightCycleEnabled());
|
||||
|
||||
// Send contents of the inventory window
|
||||
m_Protocol->SendWholeInventory(*m_Player->GetWindow());
|
||||
@ -2589,9 +2589,9 @@ void cClientHandle::SendThunderbolt(int a_BlockX, int a_BlockY, int a_BlockZ)
|
||||
|
||||
|
||||
|
||||
void cClientHandle::SendTimeUpdate(Int64 a_WorldAge, Int64 a_TimeOfDay)
|
||||
void cClientHandle::SendTimeUpdate(Int64 a_WorldAge, Int64 a_TimeOfDay, bool a_DoDaylightCycle)
|
||||
{
|
||||
m_Protocol->SendTimeUpdate(a_WorldAge, a_TimeOfDay);
|
||||
m_Protocol->SendTimeUpdate(a_WorldAge, a_TimeOfDay, a_DoDaylightCycle);
|
||||
}
|
||||
|
||||
|
||||
|
@ -179,7 +179,7 @@ public:
|
||||
void SendTabCompletionResults(const AStringVector & a_Results);
|
||||
void SendTeleportEntity (const cEntity & a_Entity);
|
||||
void SendThunderbolt (int a_BlockX, int a_BlockY, int a_BlockZ);
|
||||
void SendTimeUpdate (Int64 a_WorldAge, Int64 a_TimeOfDay);
|
||||
void SendTimeUpdate (Int64 a_WorldAge, Int64 a_TimeOfDay, bool a_DoDaylightCycle); // tolua_export
|
||||
void SendUnloadChunk (int a_ChunkX, int a_ChunkZ);
|
||||
void SendUpdateBlockEntity (cBlockEntity & a_BlockEntity);
|
||||
void SendUpdateSign (int a_BlockX, int a_BlockY, int a_BlockZ, const AString & a_Line1, const AString & a_Line2, const AString & a_Line3, const AString & a_Line4);
|
||||
|
@ -116,7 +116,7 @@ public:
|
||||
virtual void SendTabCompletionResults(const AStringVector & a_Results) = 0;
|
||||
virtual void SendTeleportEntity (const cEntity & a_Entity) = 0;
|
||||
virtual void SendThunderbolt (int a_BlockX, int a_BlockY, int a_BlockZ) = 0;
|
||||
virtual void SendTimeUpdate (Int64 a_WorldAge, Int64 a_TimeOfDay) = 0;
|
||||
virtual void SendTimeUpdate (Int64 a_WorldAge, Int64 a_TimeOfDay, bool a_DoDaylightCycle) = 0;
|
||||
virtual void SendUnloadChunk (int a_ChunkX, int a_ChunkZ) = 0;
|
||||
virtual void SendUpdateBlockEntity (cBlockEntity & a_BlockEntity) = 0;
|
||||
virtual void SendUpdateSign (int a_BlockX, int a_BlockY, int a_BlockZ, const AString & a_Line1, const AString & a_Line2, const AString & a_Line3, const AString & a_Line4) = 0;
|
||||
|
@ -1072,8 +1072,11 @@ void cProtocol125::SendThunderbolt(int a_BlockX, int a_BlockY, int a_BlockZ)
|
||||
|
||||
|
||||
|
||||
void cProtocol125::SendTimeUpdate(Int64 a_WorldAge, Int64 a_TimeOfDay)
|
||||
void cProtocol125::SendTimeUpdate(Int64 a_WorldAge, Int64 a_TimeOfDay, bool a_DoDaylightCycle)
|
||||
{
|
||||
// This protocol doesn't support a_DoDaylightCycle on false.
|
||||
UNUSED(a_DoDaylightCycle);
|
||||
|
||||
cCSLock Lock(m_CSPacket);
|
||||
WriteByte (PACKET_UPDATE_TIME);
|
||||
// Use a_WorldAge for daycount, and a_TimeOfDay for the proper time of day:
|
||||
|
@ -88,7 +88,7 @@ public:
|
||||
virtual void SendTabCompletionResults(const AStringVector & a_Results) override;
|
||||
virtual void SendTeleportEntity (const cEntity & a_Entity) override;
|
||||
virtual void SendThunderbolt (int a_BlockX, int a_BlockY, int a_BlockZ) override;
|
||||
virtual void SendTimeUpdate (Int64 a_WorldAge, Int64 a_TimeOfDay) override;
|
||||
virtual void SendTimeUpdate (Int64 a_WorldAge, Int64 a_TimeOfDay, bool a_DoDaylightCycle) override;
|
||||
virtual void SendUnloadChunk (int a_ChunkX, int a_ChunkZ) override;
|
||||
virtual void SendUpdateBlockEntity (cBlockEntity & a_BlockEntity) override {}
|
||||
virtual void SendUpdateSign (int a_BlockX, int a_BlockY, int a_BlockZ, const AString & a_Line1, const AString & a_Line2, const AString & a_Line3, const AString & a_Line4) override;
|
||||
|
@ -130,8 +130,14 @@ void cProtocol142::SendSoundParticleEffect(int a_EffectID, int a_SrcX, int a_Src
|
||||
|
||||
|
||||
|
||||
void cProtocol142::SendTimeUpdate(Int64 a_WorldAge, Int64 a_TimeOfDay)
|
||||
void cProtocol142::SendTimeUpdate(Int64 a_WorldAge, Int64 a_TimeOfDay, bool a_DoDaylightCycle)
|
||||
{
|
||||
if (!a_DoDaylightCycle)
|
||||
{
|
||||
// When writing a "-" before the number the client ignores it but it will stop the client-side time expiration.
|
||||
a_TimeOfDay = std::min(-a_TimeOfDay, -1LL);
|
||||
}
|
||||
|
||||
cCSLock Lock(m_CSPacket);
|
||||
WriteByte (PACKET_UPDATE_TIME);
|
||||
WriteInt64(a_WorldAge);
|
||||
|
@ -34,7 +34,7 @@ public:
|
||||
// Sending commands (alphabetically sorted):
|
||||
virtual void SendPickupSpawn (const cPickup & a_Pickup) override;
|
||||
virtual void SendSoundParticleEffect(int a_EffectID, int a_SrcX, int a_SrcY, int a_SrcZ, int a_Data) override;
|
||||
virtual void SendTimeUpdate (Int64 a_WorldAge, Int64 a_TimeOfDay) override;
|
||||
virtual void SendTimeUpdate (Int64 a_WorldAge, Int64 a_TimeOfDay, bool a_DoDaylightCycle) override;
|
||||
|
||||
// Specific packet parsers:
|
||||
virtual int ParseLocaleViewDistance(void) override;
|
||||
|
@ -1289,9 +1289,14 @@ void cProtocol172::SendThunderbolt(int a_BlockX, int a_BlockY, int a_BlockZ)
|
||||
|
||||
|
||||
|
||||
void cProtocol172::SendTimeUpdate(Int64 a_WorldAge, Int64 a_TimeOfDay)
|
||||
void cProtocol172::SendTimeUpdate(Int64 a_WorldAge, Int64 a_TimeOfDay, bool a_DoDaylightCycle)
|
||||
{
|
||||
ASSERT(m_State == 3); // In game mode?
|
||||
if (!a_DoDaylightCycle)
|
||||
{
|
||||
// When writing a "-" before the number the client ignores it but it will stop the client-side time expiration.
|
||||
a_TimeOfDay = std::min(-a_TimeOfDay, -1LL);
|
||||
}
|
||||
|
||||
cPacketizer Pkt(*this, 0x03);
|
||||
Pkt.WriteInt64(a_WorldAge);
|
||||
|
@ -120,7 +120,7 @@ public:
|
||||
virtual void SendTabCompletionResults(const AStringVector & a_Results) override;
|
||||
virtual void SendTeleportEntity (const cEntity & a_Entity) override;
|
||||
virtual void SendThunderbolt (int a_BlockX, int a_BlockY, int a_BlockZ) override;
|
||||
virtual void SendTimeUpdate (Int64 a_WorldAge, Int64 a_TimeOfDay) override;
|
||||
virtual void SendTimeUpdate (Int64 a_WorldAge, Int64 a_TimeOfDay, bool a_DoDaylightCycle) override;
|
||||
virtual void SendUnloadChunk (int a_ChunkX, int a_ChunkZ) override;
|
||||
virtual void SendUpdateBlockEntity (cBlockEntity & a_BlockEntity) override;
|
||||
virtual void SendUpdateSign (int a_BlockX, int a_BlockY, int a_BlockZ, const AString & a_Line1, const AString & a_Line2, const AString & a_Line3, const AString & a_Line4) override;
|
||||
|
@ -716,10 +716,10 @@ void cProtocolRecognizer::SendThunderbolt(int a_BlockX, int a_BlockY, int a_Bloc
|
||||
|
||||
|
||||
|
||||
void cProtocolRecognizer::SendTimeUpdate(Int64 a_WorldAge, Int64 a_TimeOfDay)
|
||||
void cProtocolRecognizer::SendTimeUpdate(Int64 a_WorldAge, Int64 a_TimeOfDay, bool a_DoDaylightCycle)
|
||||
{
|
||||
ASSERT(m_Protocol != NULL);
|
||||
m_Protocol->SendTimeUpdate(a_WorldAge, a_TimeOfDay);
|
||||
m_Protocol->SendTimeUpdate(a_WorldAge, a_TimeOfDay, a_DoDaylightCycle);
|
||||
}
|
||||
|
||||
|
||||
|
@ -123,7 +123,7 @@ public:
|
||||
virtual void SendTabCompletionResults(const AStringVector & a_Results) override;
|
||||
virtual void SendTeleportEntity (const cEntity & a_Entity) override;
|
||||
virtual void SendThunderbolt (int a_BlockX, int a_BlockY, int a_BlockZ) override;
|
||||
virtual void SendTimeUpdate (Int64 a_WorldAge, Int64 a_TimeOfDay) override;
|
||||
virtual void SendTimeUpdate (Int64 a_WorldAge, Int64 a_TimeOfDay, bool a_DoDaylightCycle) override;
|
||||
virtual void SendUnloadChunk (int a_ChunkX, int a_ChunkZ) override;
|
||||
virtual void SendUpdateBlockEntity (cBlockEntity & a_BlockEntity) override;
|
||||
virtual void SendUpdateSign (int a_BlockX, int a_BlockY, int a_BlockZ, const AString & a_Line1, const AString & a_Line2, const AString & a_Line3, const AString & a_Line4) override;
|
||||
|
@ -159,28 +159,6 @@ void cWebAdmin::Stop(void)
|
||||
|
||||
|
||||
|
||||
AString cWebAdmin::GetTemplate()
|
||||
{
|
||||
AString retVal = "";
|
||||
|
||||
char SourceFile[] = "webadmin/template.html";
|
||||
|
||||
cFile f;
|
||||
if (!f.Open(SourceFile, cFile::fmRead))
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
// copy the file into the buffer:
|
||||
f.ReadRestOfFile(retVal);
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cWebAdmin::HandleWebadminRequest(cHTTPConnection & a_Connection, cHTTPRequest & a_Request)
|
||||
{
|
||||
if (!a_Request.HasAuth())
|
||||
@ -198,9 +176,9 @@ void cWebAdmin::HandleWebadminRequest(cHTTPConnection & a_Connection, cHTTPReque
|
||||
}
|
||||
|
||||
// Check if the contents should be wrapped in the template:
|
||||
AString URL = a_Request.GetBareURL();
|
||||
ASSERT(URL.length() > 0);
|
||||
bool ShouldWrapInTemplate = ((URL.length() > 1) && (URL[1] != '~'));
|
||||
AString BareURL = a_Request.GetBareURL();
|
||||
ASSERT(BareURL.length() > 0);
|
||||
bool ShouldWrapInTemplate = ((BareURL.length() > 1) && (BareURL[1] != '~'));
|
||||
|
||||
// Retrieve the request data:
|
||||
cWebadminRequestData * Data = (cWebadminRequestData *)(a_Request.GetUserData());
|
||||
@ -215,7 +193,7 @@ void cWebAdmin::HandleWebadminRequest(cHTTPConnection & a_Connection, cHTTPReque
|
||||
HTTPTemplateRequest TemplateRequest;
|
||||
TemplateRequest.Request.Username = a_Request.GetAuthUsername();
|
||||
TemplateRequest.Request.Method = a_Request.GetMethod();
|
||||
TemplateRequest.Request.Path = URL.substr(1);
|
||||
TemplateRequest.Request.Path = BareURL.substr(1);
|
||||
|
||||
if (Data->m_Form.Finish())
|
||||
{
|
||||
@ -258,7 +236,7 @@ void cWebAdmin::HandleWebadminRequest(cHTTPConnection & a_Connection, cHTTPReque
|
||||
return;
|
||||
}
|
||||
|
||||
AString BaseURL = GetBaseURL(URL);
|
||||
AString BaseURL = GetBaseURL(BareURL);
|
||||
AString Menu;
|
||||
Template = "{CONTENT}";
|
||||
AString FoundPlugin;
|
||||
|
@ -208,9 +208,6 @@ protected:
|
||||
/** The HTTP server which provides the underlying HTTP parsing, serialization and events */
|
||||
cHTTPServer m_HTTPServer;
|
||||
|
||||
|
||||
AString GetTemplate(void);
|
||||
|
||||
/** Handles requests coming to the "/webadmin" or "/~webadmin" URLs */
|
||||
void HandleWebadminRequest(cHTTPConnection & a_Connection, cHTTPRequest & a_Request);
|
||||
|
||||
|
@ -243,6 +243,7 @@ cWorld::cWorld(const AString & a_WorldName, eDimension a_Dimension, const AStrin
|
||||
#endif
|
||||
m_Dimension(a_Dimension),
|
||||
m_IsSpawnExplicitlySet(false),
|
||||
m_IsDaylightCycleEnabled(true),
|
||||
m_WorldAgeSecs(0),
|
||||
m_TimeOfDaySecs(0),
|
||||
m_WorldAge(0),
|
||||
@ -576,6 +577,7 @@ void cWorld::Start(void)
|
||||
m_bEnabledPVP = IniFile.GetValueSetB("Mechanics", "PVPEnabled", true);
|
||||
m_bUseChatPrefixes = IniFile.GetValueSetB("Mechanics", "UseChatPrefixes", true);
|
||||
m_VillagersShouldHarvestCrops = IniFile.GetValueSetB("Monsters", "VillagersShouldHarvestCrops", true);
|
||||
m_IsDaylightCycleEnabled = IniFile.GetValueSetB("General", "IsDaylightCycleEnabled", true);
|
||||
int GameMode = IniFile.GetValueSetI("General", "Gamemode", (int)m_GameMode);
|
||||
int Weather = IniFile.GetValueSetI("General", "Weather", (int)m_Weather);
|
||||
|
||||
@ -797,6 +799,7 @@ void cWorld::Stop(void)
|
||||
IniFile.SetValueI("Physics", "TNTShrapnelLevel", (int)m_TNTShrapnelLevel);
|
||||
IniFile.SetValueB("Mechanics", "CommandBlocksEnabled", m_bCommandBlocksEnabled);
|
||||
IniFile.SetValueB("Mechanics", "UseChatPrefixes", m_bUseChatPrefixes);
|
||||
IniFile.SetValueB("General", "IsDaylightCycleEnabled", m_IsDaylightCycleEnabled);
|
||||
IniFile.SetValueI("General", "Weather", (int)m_Weather);
|
||||
IniFile.SetValueI("General", "TimeInTicks", m_TimeOfDay);
|
||||
IniFile.WriteFile(m_IniFileName);
|
||||
@ -827,28 +830,32 @@ void cWorld::Tick(float a_Dt, int a_LastTickDurationMSec)
|
||||
{
|
||||
SetChunkData(**itr);
|
||||
} // for itr - SetChunkDataQueue[]
|
||||
|
||||
// We need sub-tick precision here, that's why we store the time in seconds and calculate ticks off of it
|
||||
|
||||
m_WorldAgeSecs += (double)a_Dt / 1000.0;
|
||||
m_TimeOfDaySecs += (double)a_Dt / 1000.0;
|
||||
|
||||
// Wrap time of day each 20 minutes (1200 seconds)
|
||||
if (m_TimeOfDaySecs > 1200.0)
|
||||
{
|
||||
m_TimeOfDaySecs -= 1200.0;
|
||||
}
|
||||
|
||||
m_WorldAge = (Int64)(m_WorldAgeSecs * 20.0);
|
||||
m_TimeOfDay = (Int64)(m_TimeOfDaySecs * 20.0);
|
||||
|
||||
// Updates the sky darkness based on current time of day
|
||||
UpdateSkyDarkness();
|
||||
|
||||
// Broadcast time update every 40 ticks (2 seconds)
|
||||
if (m_LastTimeUpdate < m_WorldAge - 40)
|
||||
if (m_IsDaylightCycleEnabled)
|
||||
{
|
||||
BroadcastTimeUpdate();
|
||||
m_LastTimeUpdate = m_WorldAge;
|
||||
// We need sub-tick precision here, that's why we store the time in seconds and calculate ticks off of it
|
||||
m_TimeOfDaySecs += (double)a_Dt / 1000.0;
|
||||
|
||||
// Wrap time of day each 20 minutes (1200 seconds)
|
||||
if (m_TimeOfDaySecs > 1200.0)
|
||||
{
|
||||
m_TimeOfDaySecs -= 1200.0;
|
||||
}
|
||||
|
||||
m_TimeOfDay = (Int64)(m_TimeOfDaySecs * 20.0);
|
||||
|
||||
// Updates the sky darkness based on current time of day
|
||||
UpdateSkyDarkness();
|
||||
|
||||
// Broadcast time update every 40 ticks (2 seconds)
|
||||
if (m_LastTimeUpdate < m_WorldAge - 40)
|
||||
{
|
||||
BroadcastTimeUpdate();
|
||||
m_LastTimeUpdate = m_WorldAge;
|
||||
}
|
||||
}
|
||||
|
||||
// Add entities waiting in the queue to be added:
|
||||
@ -2251,7 +2258,7 @@ void cWorld::BroadcastTimeUpdate(const cClientHandle * a_Exclude)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
ch->SendTimeUpdate(m_WorldAge, m_TimeOfDay);
|
||||
ch->SendTimeUpdate(m_WorldAge, m_TimeOfDay, m_IsDaylightCycleEnabled);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3320,7 +3327,7 @@ void cWorld::AddQueuedPlayers(void)
|
||||
cCSLock Lock(m_CSPlayers);
|
||||
for (cPlayerList::iterator itr = PlayersToAdd.begin(), end = PlayersToAdd.end(); itr != end; ++itr)
|
||||
{
|
||||
ASSERT(std::find(m_Players.begin(), m_Players.end(), *itr) == m_Players.end()); // Is it already in the list? HOW?
|
||||
ASSERT(std::find(m_Players.begin(), m_Players.end(), *itr) == m_Players.end()); // Is it already in the list? HOW?
|
||||
LOGD("Adding player %s to world \"%s\".", (*itr)->GetName().c_str(), m_WorldName.c_str());
|
||||
|
||||
m_Players.push_back(*itr);
|
||||
|
16
src/World.h
16
src/World.h
@ -145,7 +145,17 @@ public:
|
||||
// tolua_begin
|
||||
|
||||
int GetTicksUntilWeatherChange(void) const { return m_WeatherInterval; }
|
||||
|
||||
|
||||
/** Is the daylight cyclus enabled? */
|
||||
virtual bool IsDaylightCycleEnabled(void) const { return m_IsDaylightCycleEnabled; }
|
||||
|
||||
/** Sets the daylight cyclus to true/false. */
|
||||
virtual void SetDaylightCycleEnabled(bool a_IsDaylightCycleEnabled)
|
||||
{
|
||||
m_IsDaylightCycleEnabled = a_IsDaylightCycleEnabled;
|
||||
BroadcastTimeUpdate();
|
||||
}
|
||||
|
||||
virtual Int64 GetWorldAge (void) const override { return m_WorldAge; }
|
||||
virtual Int64 GetTimeOfDay(void) const override { return m_TimeOfDay; }
|
||||
|
||||
@ -158,6 +168,7 @@ public:
|
||||
{
|
||||
m_TimeOfDay = a_TimeOfDay;
|
||||
m_TimeOfDaySecs = (double)a_TimeOfDay / 20.0;
|
||||
UpdateSkyDarkness();
|
||||
BroadcastTimeUpdate();
|
||||
}
|
||||
|
||||
@ -224,7 +235,7 @@ public:
|
||||
void BroadcastEntityRelMoveLook (const cEntity & a_Entity, char a_RelX, char a_RelY, char a_RelZ, const cClientHandle * a_Exclude = NULL);
|
||||
void BroadcastEntityStatus (const cEntity & a_Entity, char a_Status, const cClientHandle * a_Exclude = NULL);
|
||||
void BroadcastEntityVelocity (const cEntity & a_Entity, const cClientHandle * a_Exclude = NULL);
|
||||
virtual void BroadcastEntityAnimation(const cEntity & a_Entity, char a_Animation, const cClientHandle * a_Exclude = NULL) override; // tolua_export
|
||||
virtual void BroadcastEntityAnimation(const cEntity & a_Entity, char a_Animation, const cClientHandle * a_Exclude = NULL) override; // tolua_export
|
||||
void BroadcastParticleEffect (const AString & a_ParticleName, float a_SrcX, float a_SrcY, float a_SrcZ, float a_OffsetX, float a_OffsetY, float a_OffsetZ, float a_ParticleData, int a_ParticleAmmount, cClientHandle * a_Exclude = NULL); // tolua_export
|
||||
void BroadcastPlayerListItem (const cPlayer & a_Player, bool a_IsOnline, const cClientHandle * a_Exclude = NULL);
|
||||
void BroadcastRemoveEntityEffect (const cEntity & a_Entity, int a_EffectID, const cClientHandle * a_Exclude = NULL);
|
||||
@ -868,6 +879,7 @@ private:
|
||||
bool m_BroadcastDeathMessages;
|
||||
bool m_BroadcastAchievementMessages;
|
||||
|
||||
bool m_IsDaylightCycleEnabled;
|
||||
double m_WorldAgeSecs; // World age, in seconds. Is only incremented, cannot be set by plugins.
|
||||
double m_TimeOfDaySecs; // Time of day in seconds. Can be adjusted. Is wrapped to zero each day.
|
||||
Int64 m_WorldAge; // World age in ticks, calculated off of m_WorldAgeSecs
|
||||
|
Loading…
Reference in New Issue
Block a user