void Game_Event::Refresh() { if (!data.active) { if (from_save) { SetVisible(false); from_save = false; } return; } RPG::EventPage* new_page = NULL; std::vector<RPG::EventPage>::reverse_iterator i; for (i = event.pages.rbegin(); i != event.pages.rend(); ++i) { // Loop in reverse order to see whether any page meets conditions... if (AreConditionsMet(*i)) { new_page = &(*i); // Stop looking for more... break; } } // Only update the page pointer when game is loaded, // don't setup event, already done if (from_save) { SetupFromSave(new_page); from_save = false; } else if (new_page != this->page) { ClearStarting(); Setup(new_page); } }
bool Game_Battle::UpdateEvents() { if (interpreter->IsRunning()) { return false; } const RPG::TroopPage* new_page = NULL; std::vector<RPG::TroopPage>::const_iterator it; for (it = troop->pages.begin(); it != troop->pages.end(); ++it) { const RPG::TroopPage& page = *it; if (!page_executed[(*it).ID - 1] && AreConditionsMet(page.condition)) { new_page = &*it; page_executed[(*it).ID - 1] = true; break; } } if (new_page != NULL) { interpreter->Setup(new_page->event_commands, 0); } return new_page == NULL; }