Exemple #1
0
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);
	}
}
Exemple #2
0
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;
}