void CMapLayers::LoadBackgroundMap() { if(!g_Config.m_ClShowMenuMap) return; int HourOfTheDay = time_houroftheday(); char aBuf[128]; // check for the appropriate day/night map str_format(aBuf, sizeof(aBuf), "ui/themes/%s_%s.map", g_Config.m_ClMenuMap, (HourOfTheDay >= 6 && HourOfTheDay < 18) ? "day" : "night"); if(!m_pMenuMap->Load(aBuf, m_pClient->Storage())) { // fall back on generic map str_format(aBuf, sizeof(aBuf), "ui/themes/%s.map", g_Config.m_ClMenuMap); if(!m_pMenuMap->Load(aBuf, m_pClient->Storage())) { // fall back on day/night alternative map str_format(aBuf, sizeof(aBuf), "ui/themes/%s_%s.map", g_Config.m_ClMenuMap, (HourOfTheDay >= 6 && HourOfTheDay < 18) ? "night" : "day"); if(!m_pMenuMap->Load(aBuf, m_pClient->Storage())) { str_format(aBuf, sizeof(aBuf), "map '%s' not found", g_Config.m_ClMenuMap); Console()->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "client", aBuf); return; } } } str_format(aBuf, sizeof(aBuf), "loaded map '%s'", g_Config.m_ClMenuMap); Console()->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "client", aBuf); m_pMenuLayers->Init(Kernel(), m_pMenuMap); RenderTools()->RenderTilemapGenerateSkip(m_pMenuLayers); m_pClient->m_pMapimages->OnMenuMapLoad(m_pMenuMap); LoadEnvPoints(m_pMenuLayers, m_lEnvPointsMenu); }
void CMapLayers::BackgroundMapUpdate() { if(m_Type == TYPE_BACKGROUND && m_pMenuMap) { // unload map m_pMenuMap->Unload(); int HourOfTheDay = (time_timestamp()/3600)%24; char aBuf[128]; str_format(aBuf, sizeof(aBuf), "ui/%s_%s.map", g_Config.m_ClMenuMap, (HourOfTheDay >= 6 && HourOfTheDay < 18) ? "day" : "night"); if(!m_pMenuMap->Load(aBuf, m_pClient->Storage())) { str_format(aBuf, sizeof(aBuf), "map '%s' not found", g_Config.m_ClMenuMap); Console()->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "client", aBuf); return; } str_format(aBuf, sizeof(aBuf), "loaded map '%s'", g_Config.m_ClMenuMap); Console()->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "client", aBuf); m_pMenuLayers->Init(Kernel(), m_pMenuMap); RenderTools()->RenderTilemapGenerateSkip(m_pMenuLayers); m_pClient->m_pMapimages->OnMenuMapLoad(m_pMenuMap); LoadEnvPoints(m_pMenuLayers, m_lEnvPointsMenu); } }
void CMapLayers::OnMapLoad() { if(Layers()) LoadEnvPoints(Layers(), m_lEnvPoints); // easter time, place eggs if(m_pClient->IsEaster()) { CMapItemLayerTilemap* pGameLayer = Layers()->GameLayer(); if(m_pEggTiles) mem_free(m_pEggTiles); m_EggLayerWidth = pGameLayer->m_Width; m_EggLayerHeight = pGameLayer->m_Height; m_pEggTiles = (CTile*)mem_alloc(sizeof(CTile) * m_EggLayerWidth * m_EggLayerHeight,1); mem_zero(m_pEggTiles, sizeof(CTile) * m_EggLayerWidth * m_EggLayerHeight); CTile* aGameLayerTiles = (CTile*)Layers()->Map()->GetData(pGameLayer->m_Data); // first pass: baskets static const int s_aBasketIDs[] = { 38, 86 }; static const int s_BasketCount = sizeof(s_aBasketIDs)/sizeof(s_aBasketIDs[0]); PlaceEggDoodads(m_EggLayerWidth, m_EggLayerHeight, m_pEggTiles, aGameLayerTiles, 3, 2, s_aBasketIDs, s_BasketCount, 250); // second pass: double eggs static const int s_aDoubleEggIDs[] = { 9, 25, 41, 57, 73, 89 }; static const int s_DoubleEggCount = sizeof(s_aDoubleEggIDs)/sizeof(s_aDoubleEggIDs[0]); PlaceEggDoodads(m_EggLayerWidth, m_EggLayerHeight, m_pEggTiles, aGameLayerTiles, 2, 1, s_aDoubleEggIDs, s_DoubleEggCount, 100); // third pass: eggs static const int s_aEggIDs[] = { 1, 2, 3, 4, 5, 17, 18, 19, 20, 33, 34, 35, 36, 49, 50, 52, 65, 66, 82, 98 }; static const int s_EggCount = sizeof(s_aEggIDs)/sizeof(s_aEggIDs[0]); PlaceEggDoodads(m_EggLayerWidth, m_EggLayerHeight, m_pEggTiles, aGameLayerTiles, 1, 1, s_aEggIDs, s_EggCount, 30); } }
void CMapLayers::OnMapLoad() { if(Layers()) LoadEnvPoints(Layers(), m_lEnvPoints); }