void setupGame(bool loadUpWorld) { currentLevel = 1; // Reset entity manager. memset(&eManager, 0, sizeof(eManager)); sf2d_set_clear_color(RGBA8(0x82, 0x6D, 0x6C, 0xFF)); if (!loadUpWorld) { initNewMap(); initPlayer(); airWizardHealthDisplay = 2000; int i; for (i = 0; i < 5; ++i) { trySpawn(500, i); } addEntityToList(newAirWizardEntity(630, 820, 0), &eManager); player.p.hasWonSaved = false; } else { initPlayer(); loadWorld(currentFileName, &eManager, &player, (u8*) map, (u8*) data); } initMiniMap(loadUpWorld); shouldRenderMap = false; mScrollX = 0; mScrollY = 0; zoomLevel = 2; sprintf(mapText,"x%d",zoomLevel); initGame = 0; }
void Level::tick() { trySpawn(1); int tilesTickAttempts = w * h / 50; for (int i = 0; i < tilesTickAttempts; ++i) { int xt = random->nextInt(w); int yt = random->nextInt(h); getTile(xt, yt)->tick(this, xt, yt); } for (list<Entity*>::iterator it = entities.begin(); it != entities.end(); it++ ) { Entity * e = *it; int xto = e->x >> 4; int yto = e->y >> 4; e->tick(); if (e->removed) { removeEntity(xto, yto, e); //we should not delete player, because it will freeze on death //we should not delete furniture, because it is used in FurnitureItem, when taken if (!e->instanceOf(PLAYER) && !e->instanceOf(FURNITURE)) delete e; it = entities.erase(it); } else { int xt = e->x >> 4; int yt = e->y >> 4; if (xto != xt || yto != yt) { removeEntity(xto, yto, e); insertEntity(xt, yt, e); } } } }
void setupGame(bool loadUpWorld){ currentLevel = 1; // Reset entity manager. memset(&eManager, 0, sizeof(eManager)); sf2d_set_clear_color(RGBA8(0x82, 0x6D, 0x6C, 0xFF)); if(!loadUpWorld){ initNewMap(); initPlayer(); airWizardHealthDisplay = 2000; int i; for(i=0;i<5;++i){ trySpawn(500, i); } addEntityToList(newAirWizardEntity(630,820,0), &eManager); } else { initPlayer(); loadWorld(currentFileName, &eManager, &player, (u8*)map, (u8*)data); } initMiniMap(loadUpWorld); initGame = 0; }