Core/SAI: ported set speed, weather and override light smart actions from 335
This commit is contained in:
1 parent
0e61055ac3
commit
52287e1f07
8 files changed
+177
-36
No files matched your search
@@ -66,7 +66,7 @@ static uint16 const holetab_v[4] = { 0x000F, 0x00F0, 0x0F00, 0xF000 };
|
||||
GridState* si_GridStates[MAX_GRID_STATE];
|
||||
|
||||
ZoneDynamicInfo::ZoneDynamicInfo() : MusicId(0), DefaultWeather(nullptr), WeatherId(WEATHER_STATE_FINE),
|
||||
WeatherGrade(0.0f), OverrideLightId(0), LightFadeInTime(0) { }
|
||||
Intensity(0.0f) { }
|
||||
|
||||
Map::~Map()
|
||||
{
|
||||
@@ -324,7 +324,7 @@ m_unloadTimer(0), m_VisibleDistance(DEFAULT_VISIBILITY_DISTANCE),
|
||||
m_VisibilityNotifyPeriod(DEFAULT_VISIBILITY_NOTIFY_PERIOD),
|
||||
m_activeNonPlayersIter(m_activeNonPlayers.end()), _transportsUpdateIter(_transports.end()),
|
||||
i_gridExpiry(expiry),
|
||||
i_scriptLock(false), _respawnCheckTimer(0), _defaultLight(DBCManager::GetDefaultMapLight(id))
|
||||
i_scriptLock(false), _respawnCheckTimer(0)
|
||||
{
|
||||
if (_parent)
|
||||
{
|
||||
@@ -4749,12 +4749,12 @@ void Map::SendZoneDynamicInfo(uint32 zoneId, Player* player) const
|
||||
|
||||
SendZoneWeather(itr->second, player);
|
||||
|
||||
if (uint32 overrideLightId = itr->second.OverrideLightId)
|
||||
for (ZoneDynamicInfo::LightOverride const& lightOverride : itr->second.LightOverrides)
|
||||
{
|
||||
WorldPackets::Misc::OverrideLight overrideLight;
|
||||
overrideLight.AreaLightID = _defaultLight;
|
||||
overrideLight.OverrideLightID = overrideLightId;
|
||||
overrideLight.TransitionMilliseconds = itr->second.LightFadeInTime;
|
||||
overrideLight.AreaLightID = lightOverride.AreaLightId;
|
||||
overrideLight.OverrideLightID = lightOverride.OverrideLightId;
|
||||
overrideLight.TransitionMilliseconds = lightOverride.TransitionMilliseconds;
|
||||
player->SendDirectMessage(overrideLight.Write());
|
||||
}
|
||||
}
|
||||
@@ -4775,7 +4775,7 @@ void Map::SendZoneWeather(ZoneDynamicInfo const& zoneDynamicInfo, Player* player
|
||||
{
|
||||
if (WeatherState weatherId = zoneDynamicInfo.WeatherId)
|
||||
{
|
||||
WorldPackets::Misc::Weather weather(weatherId, zoneDynamicInfo.WeatherGrade);
|
||||
WorldPackets::Misc::Weather weather(weatherId, zoneDynamicInfo.Intensity);
|
||||
player->SendDirectMessage(weather.Write());
|
||||
}
|
||||
else if (zoneDynamicInfo.DefaultWeather)
|
||||
@@ -4817,16 +4817,16 @@ Weather* Map::GetOrGenerateZoneDefaultWeather(uint32 zoneId)
|
||||
return info.DefaultWeather.get();
|
||||
}
|
||||
|
||||
void Map::SetZoneWeather(uint32 zoneId, WeatherState weatherId, float weatherGrade)
|
||||
void Map::SetZoneWeather(uint32 zoneId, WeatherState weatherId, float intensity)
|
||||
{
|
||||
ZoneDynamicInfo& info = _zoneDynamicInfo[zoneId];
|
||||
info.WeatherId = weatherId;
|
||||
info.WeatherGrade = weatherGrade;
|
||||
info.Intensity = intensity;
|
||||
Map::PlayerList const& players = GetPlayers();
|
||||
|
||||
if (!players.isEmpty())
|
||||
{
|
||||
WorldPackets::Misc::Weather weather(weatherId, weatherGrade);
|
||||
WorldPackets::Misc::Weather weather(weatherId, intensity);
|
||||
weather.Write();
|
||||
|
||||
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
|
||||
@@ -4836,19 +4836,31 @@ void Map::SetZoneWeather(uint32 zoneId, WeatherState weatherId, float weatherGra
|
||||
}
|
||||
}
|
||||
|
||||
void Map::SetZoneOverrideLight(uint32 zoneId, uint32 lightId, uint32 fadeInTime)
|
||||
void Map::SetZoneOverrideLight(uint32 zoneId, uint32 areaLightId, uint32 overrideLightId, uint32 transitionMilliseconds)
|
||||
{
|
||||
ZoneDynamicInfo& info = _zoneDynamicInfo[zoneId];
|
||||
info.OverrideLightId = lightId;
|
||||
info.LightFadeInTime = fadeInTime;
|
||||
Map::PlayerList const& players = GetPlayers();
|
||||
// client can support only one override for each light (zone independent)
|
||||
info.LightOverrides.erase(std::remove_if(info.LightOverrides.begin(), info.LightOverrides.end(), [areaLightId](ZoneDynamicInfo::LightOverride const& lightOverride)
|
||||
{
|
||||
return lightOverride.AreaLightId == areaLightId;
|
||||
}), info.LightOverrides.end());
|
||||
|
||||
// set new override (if any)
|
||||
if (overrideLightId)
|
||||
{
|
||||
ZoneDynamicInfo::LightOverride& lightOverride = info.LightOverrides.emplace_back();
|
||||
lightOverride.AreaLightId = areaLightId;
|
||||
lightOverride.OverrideLightId = overrideLightId;
|
||||
lightOverride.TransitionMilliseconds = transitionMilliseconds;
|
||||
}
|
||||
|
||||
Map::PlayerList const& players = GetPlayers();
|
||||
if (!players.isEmpty())
|
||||
{
|
||||
WorldPackets::Misc::OverrideLight overrideLight;
|
||||
overrideLight.AreaLightID = _defaultLight;
|
||||
overrideLight.OverrideLightID = lightId;
|
||||
overrideLight.TransitionMilliseconds = fadeInTime;
|
||||
overrideLight.AreaLightID = areaLightId;
|
||||
overrideLight.OverrideLightID = overrideLightId;
|
||||
overrideLight.TransitionMilliseconds = transitionMilliseconds;
|
||||
overrideLight.Write();
|
||||
|
||||
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
|
||||
|
||||
Reference in new issue
Block a user