mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-12 21:47:00 -04:00
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:
@@ -56,6 +56,9 @@ Context& Set::getContext(const CardP& card) {
|
|||||||
void Set::updateFor(const CardP& card) {
|
void Set::updateFor(const CardP& card) {
|
||||||
script_manager->updateStyles(card);
|
script_manager->updateStyles(card);
|
||||||
}
|
}
|
||||||
|
void Set::updateDelayed() {
|
||||||
|
script_manager->updateDelayed();
|
||||||
|
}
|
||||||
|
|
||||||
Context& Set::getContextForThumbnails() {
|
Context& Set::getContextForThumbnails() {
|
||||||
assert(!wxThread::IsMain());
|
assert(!wxThread::IsMain());
|
||||||
|
|||||||
@@ -68,6 +68,8 @@ class Set : public Packaged {
|
|||||||
Context& getContext(const CardP& card);
|
Context& getContext(const CardP& card);
|
||||||
/// Update styles for a card
|
/// Update styles for a card
|
||||||
void updateFor(const CardP& card);
|
void updateFor(const CardP& card);
|
||||||
|
/// Update scripts that were delayed
|
||||||
|
void updateDelayed();
|
||||||
/// A context for performing scripts
|
/// A context for performing scripts
|
||||||
/** Should only be used from the thumbnail thread! */
|
/** Should only be used from the thumbnail thread! */
|
||||||
Context& getContextForThumbnails();
|
Context& getContextForThumbnails();
|
||||||
|
|||||||
@@ -131,6 +131,9 @@ void KeywordsPanel::destroyUI(wxToolBar* tb, wxMenuBar* mb) {
|
|||||||
tb->DeleteTool(ID_KEYWORD_REMOVE);
|
tb->DeleteTool(ID_KEYWORD_REMOVE);
|
||||||
// Menus
|
// Menus
|
||||||
mb->Remove(2);
|
mb->Remove(2);
|
||||||
|
|
||||||
|
// This is also a good moment to propagate changes
|
||||||
|
if (set) set->updateDelayed();
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeywordsPanel::onUpdateUI(wxUpdateUIEvent& ev) {
|
void KeywordsPanel::onUpdateUI(wxUpdateUIEvent& ev) {
|
||||||
|
|||||||
@@ -84,6 +84,7 @@ Context& SetScriptContext::getContext(const CardP& card) {
|
|||||||
|
|
||||||
SetScriptManager::SetScriptManager(Set& set)
|
SetScriptManager::SetScriptManager(Set& set)
|
||||||
: SetScriptContext(set)
|
: SetScriptContext(set)
|
||||||
|
, delay(0)
|
||||||
{
|
{
|
||||||
// add as an action listener for the set, so we receive actions
|
// add as an action listener for the set, so we receive actions
|
||||||
set.actions.addListener(this);
|
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);
|
value->keyword.prepare(set.game->keyword_parameter_types, true);
|
||||||
set.keyword_db.clear();
|
set.keyword_db.clear();
|
||||||
}
|
}
|
||||||
updateAllDependend(set.game->dependent_scripts_keywords);
|
delay |= DELAY_KEYWORDS;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// find the affected card
|
// 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) {
|
void SetScriptManager::updateValue(Value& value, const CardP& card) {
|
||||||
Age starting_age; // the start of the update process
|
Age starting_age; // the start of the update process
|
||||||
deque<ToUpdate> to_update;
|
deque<ToUpdate> to_update;
|
||||||
|
|||||||
@@ -58,9 +58,12 @@ class SetScriptManager : public SetScriptContext, public ActionListener {
|
|||||||
SetScriptManager(Set& set);
|
SetScriptManager(Set& set);
|
||||||
~SetScriptManager();
|
~SetScriptManager();
|
||||||
|
|
||||||
// Update all styles for a particular card
|
/// Update all styles for a particular card
|
||||||
void updateStyles(const CardP& card);
|
void updateStyles(const CardP& card);
|
||||||
|
|
||||||
|
/// Update expensive things that were previously delayed
|
||||||
|
void updateDelayed();
|
||||||
|
|
||||||
/// Update all fields of all cards
|
/// Update all fields of all cards
|
||||||
/** Update all set info fields
|
/** Update all set info fields
|
||||||
* Doesn't update styles
|
* 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
|
/// 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);
|
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:
|
protected:
|
||||||
/// Respond to actions by updating scripts
|
/// Respond to actions by updating scripts
|
||||||
void onAction(const Action&, bool undone);
|
void onAction(const Action&, bool undone);
|
||||||
|
|||||||
Reference in New Issue
Block a user