Delayed updating of scripts on keyword changes

git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@383 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
twanvl
2007-05-15 16:43:13 +00:00
parent 82a7690909
commit ee6f0b9df7
5 changed files with 28 additions and 2 deletions
+9 -1
View File
@@ -84,6 +84,7 @@ Context& SetScriptContext::getContext(const CardP& card) {
SetScriptManager::SetScriptManager(Set& set)
: SetScriptContext(set)
, delay(0)
{
// add as an action listener for the set, so we receive actions
set.actions.addListener(this);
@@ -143,7 +144,7 @@ void SetScriptManager::onAction(const Action& action, bool undone) {
value->keyword.prepare(set.game->keyword_parameter_types, true);
set.keyword_db.clear();
}
updateAllDependend(set.game->dependent_scripts_keywords);
delay |= DELAY_KEYWORDS;
return;
}
// find the affected card
@@ -199,6 +200,13 @@ void SetScriptManager::updateStyles(const CardP& card) {
}
}
void SetScriptManager::updateDelayed() {
if (delay & DELAY_KEYWORDS) {
updateAllDependend(set.game->dependent_scripts_keywords);
}
delay = 0;
}
void SetScriptManager::updateValue(Value& value, const CardP& card) {
Age starting_age; // the start of the update process
deque<ToUpdate> to_update;
+11 -1
View File
@@ -58,9 +58,12 @@ class SetScriptManager : public SetScriptContext, public ActionListener {
SetScriptManager(Set& set);
~SetScriptManager();
// Update all styles for a particular card
/// Update all styles for a particular card
void updateStyles(const CardP& card);
/// Update expensive things that were previously delayed
void updateDelayed();
/// Update all fields of all cards
/** Update all set info fields
* Doesn't update styles
@@ -93,6 +96,13 @@ class SetScriptManager : public SetScriptContext, public ActionListener {
/// Schedule all things in deps to be updated by adding them to to_update
void alsoUpdate(deque<ToUpdate>& to_update, const vector<Dependency>& deps, const CardP& card);
/// Delayed update for (bitmask)...
enum Delay
{ DELAY_KEYWORDS = 0x01
, DELAY_CARDS = 0x02
};
int delay;
protected:
/// Respond to actions by updating scripts
void onAction(const Action&, bool undone);