From 37fe4c84ae8a7352f2836cc20759e0e888234a08 Mon Sep 17 00:00:00 2001 From: twanvl Date: Tue, 17 Apr 2007 20:59:17 +0000 Subject: [PATCH] added guild mana support for all magic styles; uses correct script context for cards using a stylesheet other then the default one. git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@262 0fc631ac-6414-0410-93d0-97cfa31319b6 --- data/magic-new-flip.mse-style/style | 26 ++++++- data/magic-new-promo.mse-style/style | 26 ++++++- data/magic-new-split.mse-style/style | 87 ++++++++------------- data/magic-new.mse-style/style | 6 ++ data/magic-old-token.mse-style/style | 98 ++++++++++++------------ data/magic-old.mse-style/style | 100 ++++++++++++------------- data/magic-textless.mse-style/style | 82 ++++---------------- data/magic.mse-game/game | 91 +++++++++------------- data/vanguard-standard.mse-style/style | 43 ++++++++++- data/vanguard.mse-game/game | 14 ++++ src/data/action/keyword.hpp | 5 ++ src/gui/set/keywords_panel.cpp | 28 +++++++ src/gui/set/keywords_panel.hpp | 2 + src/render/card/viewer.cpp | 4 +- src/util/window_id.hpp | 2 + 15 files changed, 326 insertions(+), 288 deletions(-) diff --git a/data/magic-new-flip.mse-style/style b/data/magic-new-flip.mse-style/style index 3cda1938..9f98d1ab 100644 --- a/data/magic-new-flip.mse-style/style +++ b/data/magic-new-flip.mse-style/style @@ -26,7 +26,13 @@ init script: land_template := { "acard.jpg" } # Use the normal tap symbol - mana_t := { "new" } + mana_t := { + if styling.tap_symbol == "old" then "old" + else if styling.tap_symbol == "diagonal T" then "older" + else "new" + } + # Use guild mana symbols? + guild_mana := { styling.use_guild_mana_symbols } # Does the card have a color that requires a white font for copyright/artist? white_font_colors := filter_rule(match:"^(hybrid )?black|^land") @@ -55,12 +61,30 @@ styling field: name: popup mana symbols description: Use the symbols of the casting cost line inside the text box as well initial: no +styling field: + type: choice + name: tap symbol + description: What tap symbol should be used on cards? + initial: modern + choice: modern + choice: old + choice: diagonal T styling style: + use guild mana symbols: + choice images: + yes: /magic-mana-small.mse-symbol-font/mana_guild_rg.png + no: /magic-mana-small.mse-symbol-font/mana_rg.png popup mana symbols: choice images: yes: /magic-mana-large.mse-symbol-font/mana_w.png no: /magic-mana-small.mse-symbol-font/mana_w.png + tap symbol: + render style: both + choice images: + modern: /magic-mana-large.mse-symbol-font/mana_t.png + old: /magic-mana-large.mse-symbol-font/mana_t_old.png + diagonal T: /magic-mana-large.mse-symbol-font/mana_t_older.png ############################################################## Card fields card style: diff --git a/data/magic-new-promo.mse-style/style b/data/magic-new-promo.mse-style/style index b48ce34c..c814d2ae 100644 --- a/data/magic-new-promo.mse-style/style +++ b/data/magic-new-promo.mse-style/style @@ -27,7 +27,13 @@ init script: pt_template := { "/magic-new.mse-style/" + artifact_template() + "pt.jpg" } # Use the normal tap symbol - mana_t := { "mana_t.png" } + mana_t := { + if styling.tap_symbol == "old" then "old" + else if styling.tap_symbol == "diagonal T" then "older" + else "new" + } + # Use guild mana symbols? + guild_mana := { styling.use_guild_mana_symbols } # Does the card have a color that requires a white font for copyright/artist? white_font_colors := filter_rule(match:"^(hybrid 2 color)?black|^land") @@ -63,12 +69,30 @@ styling field: name: popup mana symbols description: Use the symbols of the casting cost line inside the text box as well initial: no +styling field: + type: choice + name: tap symbol + description: What tap symbol should be used on cards? + initial: modern + choice: modern + choice: old + choice: diagonal T styling style: + use guild mana symbols: + choice images: + yes: /magic-mana-small.mse-symbol-font/mana_guild_rg.png + no: /magic-mana-small.mse-symbol-font/mana_rg.png popup mana symbols: choice images: yes: /magic-mana-large.mse-symbol-font/mana_w.png no: /magic-mana-small.mse-symbol-font/mana_w.png + tap symbol: + render style: both + choice images: + modern: /magic-mana-large.mse-symbol-font/mana_t.png + old: /magic-mana-large.mse-symbol-font/mana_t_old.png + diagonal T: /magic-mana-large.mse-symbol-font/mana_t_older.png ############################################################## Card fields card style: diff --git a/data/magic-new-split.mse-style/style b/data/magic-new-split.mse-style/style index 250d6fa2..2ab66c0e 100644 --- a/data/magic-new-split.mse-style/style +++ b/data/magic-new-split.mse-style/style @@ -19,7 +19,13 @@ init script: } # Use the normal tap symbol - mana_t := { "mana_t.png" } + mana_t := { + if styling.tap_symbol == "old" then "old" + else if styling.tap_symbol == "diagonal T" then "older" + else "new" + } + # Use guild mana symbols? + guild_mana := { styling.use_guild_mana_symbols } # Does the card have a color that requires a white font for copyright/artist? white_font_colors := filter_rule(match:"^(hybrid 2 color)?black|^land") @@ -31,81 +37,50 @@ init script: } -############################################################## Set info fields -info style: - title: - padding left: 2 - font: - size: 16 - symbol: - variation: - name: common - border radius: 0.10 - fill type: solid - fill color: rgb(0,0,0) - border color: rgb(255,255,255) - variation: - name: uncommon - border radius: 0.05 - fill type: linear gradient - fill color 1: rgb(224,224,224) - fill color 2: rgb(84, 84, 84) - border color 1: rgb(0, 0, 0) - border color 2: rgb(0, 0, 0) - variation: - name: rare - border radius: 0.05 - fill type: linear gradient - fill color 1: rgb(214,196,94) - fill color 2: rgb(95, 84, 40) - border color 1: rgb(0, 0, 0) - border color 2: rgb(0, 0, 0) - variation: - name: special - border radius: 0.10 - fill type: linear gradient - fill color 1: rgb(224,170,247) - fill color 2: rgb(58,7,80) - border color 1: rgb(255,255,255) - border color 2: rgb(255,255,255) - automatic reminder text: - render style: both - choice images: - yes: script: buildin_image("bool_yes") - no: script: buildin_image("bool_no") - use gradient multicolor: - render style: both - choice images: - yes: script: buildin_image("bool_yes") - no: script: buildin_image("bool_no") +############################################################## Extra style options - -############################################################## Extra style - -extra field: +styling field: type: boolean name: colored mana symbols description: Use colored mana symbols, as used by Wizards since Fifth Dawn. -extra field: +styling field: type: boolean name: darker artifacts description: Use darker artifacts, as used by Wizards since Fifth Dawn. -extra field: +styling field: type: boolean name: use guild mana symbols description: Use the Ravnica guild symbols instead of the official half/half circles for hybrid mana. initial: no -extra field: +styling field: type: boolean name: popup mana symbols description: Use the symbols of the casting cost line inside the text box as well initial: no +styling field: + type: choice + name: tap symbol + description: What tap symbol should be used on cards? + initial: modern + choice: modern + choice: old + choice: diagonal T -extra style: +styling style: + use guild mana symbols: + choice images: + yes: /magic-mana-small.mse-symbol-font/mana_guild_rg.png + no: /magic-mana-small.mse-symbol-font/mana_rg.png popup mana symbols: choice images: yes: /magic-mana-large.mse-symbol-font/mana_w.png no: /magic-mana-small.mse-symbol-font/mana_w.png + tap symbol: + render style: both + choice images: + modern: /magic-mana-large.mse-symbol-font/mana_t.png + old: /magic-mana-large.mse-symbol-font/mana_t_old.png + diagonal T: /magic-mana-large.mse-symbol-font/mana_t_older.png ############################################################## Card fields card style: diff --git a/data/magic-new.mse-style/style b/data/magic-new.mse-style/style index d6464af3..b368cc5c 100644 --- a/data/magic-new.mse-style/style +++ b/data/magic-new.mse-style/style @@ -34,6 +34,8 @@ init script: else if styling.tap_symbol == "diagonal T" then "older" else "new" } + # Use guild mana symbols? + guild_mana := { styling.use_guild_mana_symbols } # Does the card have a color that requires a white font for copyright/artist? white_font_colors := filter_rule(match:"^(hybrid 2 color )?(hybrid 3 color [^/]*/[^/]*/ )?(hybrid vertical [^/]*/ )?(black|land|hybrid 4 color w/u/b/r)") @@ -90,6 +92,10 @@ styling style: light: oacard.jpg dark: acard.jpg brown: bacard.jpg + use guild mana symbols: + choice images: + yes: /magic-mana-small.mse-symbol-font/mana_guild_rg.png + no: /magic-mana-small.mse-symbol-font/mana_rg.png popup mana symbols: choice images: yes: /magic-mana-large.mse-symbol-font/mana_w.png diff --git a/data/magic-old-token.mse-style/style b/data/magic-old-token.mse-style/style index b4aa8c68..1e0f3a69 100644 --- a/data/magic-old-token.mse-style/style +++ b/data/magic-old-token.mse-style/style @@ -23,8 +23,14 @@ init script: # Horizontal 5 color blends are not supported card_hybrid_5b := card_hybrid_5 - # Use the old tap symbol - mana_t := { "old" } + # Use the normal tap symbol + mana_t := { + if styling.tap_symbol == "old" then "old" + else if styling.tap_symbol == "diagonal T" then "older" + else "new" + } + # Use guild mana symbols? + guild_mana := { styling.use_guild_mana_symbols } # Does the card have a color that requires a black font for copyright/artist? black_font_colors := filter_rule(match:"^(hybrid 2 color)?white") @@ -35,56 +41,42 @@ init script: rgb(255,255,255) } -############################################################## Set info fields -info style: - title: - padding left: 2 - font: - size: 16 - symbol: - variation: - name: common - border radius: 0.10 - fill type: solid - fill color: rgb(0,0,0) - border color: rgb(255,255,255) - variation: - name: uncommon - border radius: 0.05 - fill type: linear gradient - fill color 1: rgb(224,224,224) - fill color 2: rgb(84, 84, 84) - border color 1: rgb(0, 0, 0) - border color 2: rgb(0, 0, 0) - variation: - name: rare - border radius: 0.05 - fill type: linear gradient - fill color 1: rgb(214,196,94) - fill color 2: rgb(95, 84, 40) - border color 1: rgb(0, 0, 0) - border color 2: rgb(0, 0, 0) - variation: - name: special - border radius: 0.10 - fill type: linear gradient - fill color 1: rgb(224,170,247) - fill color 2: rgb(58,7,80) - border color 1: rgb(255,255,255) - border color 2: rgb(255,255,255) - automatic reminder text: +############################################################## Extra style options + +styling field: + type: boolean + name: use guild mana symbols + description: Use the Ravnica guild symbols instead of the official half/half circles for hybrid mana. + initial: no +styling field: + type: boolean + name: popup mana symbols + description: Use the symbols of the casting cost line inside the text box as well + initial: no +styling field: + type: choice + name: tap symbol + description: What tap symbol should be used on cards? + initial: old + choice: modern + choice: old + choice: diagonal T + +styling style: + use guild mana symbols: + choice images: + yes: /magic-mana-small.mse-symbol-font/mana_guild_rg.png + no: /magic-mana-small.mse-symbol-font/mana_rg.png + popup mana symbols: + choice images: + yes: /magic-mana-large.mse-symbol-font/mana_w.png + no: /magic-mana-small.mse-symbol-font/mana_w.png + tap symbol: render style: both choice images: - yes: script: buildin_image("bool_yes") - no: script: buildin_image("bool_no") - use gradient multicolor: - render style: both - choice images: - yes: script: buildin_image("bool_yes") - no: script: buildin_image("bool_no") - - -############################################################## Extra style + modern: /magic-mana-large.mse-symbol-font/mana_t.png + old: /magic-mana-large.mse-symbol-font/mana_t_old.png + diagonal T: /magic-mana-large.mse-symbol-font/mana_t_older.png ############################################################## Card fields card style: @@ -181,7 +173,11 @@ card style: scale down to: 6 color: rgb(0,0,0) symbol font: - name: magic-mana-small + name: + script: + if styling.popup_mana_symbols + then "magic-mana-large" + else "magic-mana-small" size: 13 align: middle center z index: 2 diff --git a/data/magic-old.mse-style/style b/data/magic-old.mse-style/style index 3f880c6d..0214e29a 100644 --- a/data/magic-old.mse-style/style +++ b/data/magic-old.mse-style/style @@ -23,8 +23,14 @@ init script: # Horizontal 5 color blends are not supported card_hybrid_5b := card_hybrid_5 - # Use the old tap symbol - mana_t := { "old" } + # Use the normal tap symbol + mana_t := { + if styling.tap_symbol == "old" then "old" + else if styling.tap_symbol == "diagonal T" then "older" + else "new" + } + # Use guild mana symbols? + guild_mana := { styling.use_guild_mana_symbols } # Does the card have a color that requires a black font for copyright/artist? black_font_colors := filter_rule(match:"^(hybrid 2 color)?white") @@ -35,57 +41,43 @@ init script: rgb(255,255,255) } -############################################################## Set info fields -info style: - title: - padding left: 2 - font: - size: 16 - symbol: - variation: - name: common - border radius: 0.10 - fill type: solid - fill color: rgb(0,0,0) - border color: rgb(255,255,255) - variation: - name: uncommon - border radius: 0.05 - fill type: linear gradient - fill color 1: rgb(224,224,224) - fill color 2: rgb(84, 84, 84) - border color 1: rgb(0, 0, 0) - border color 2: rgb(0, 0, 0) - variation: - name: rare - border radius: 0.05 - fill type: linear gradient - fill color 1: rgb(214,196,94) - fill color 2: rgb(95, 84, 40) - border color 1: rgb(0, 0, 0) - border color 2: rgb(0, 0, 0) - variation: - name: special - border radius: 0.10 - fill type: linear gradient - fill color 1: rgb(224,170,247) - fill color 2: rgb(58,7,80) - border color 1: rgb(255,255,255) - border color 2: rgb(255,255,255) - automatic reminder text: + +############################################################## Extra style options + +styling field: + type: boolean + name: use guild mana symbols + description: Use the Ravnica guild symbols instead of the official half/half circles for hybrid mana. + initial: no +styling field: + type: boolean + name: popup mana symbols + description: Use the symbols of the casting cost line inside the text box as well + initial: no +styling field: + type: choice + name: tap symbol + description: What tap symbol should be used on cards? + initial: old + choice: modern + choice: old + choice: diagonal T + +styling style: + use guild mana symbols: + choice images: + yes: /magic-mana-small.mse-symbol-font/mana_guild_rg.png + no: /magic-mana-small.mse-symbol-font/mana_rg.png + popup mana symbols: + choice images: + yes: /magic-mana-large.mse-symbol-font/mana_w.png + no: /magic-mana-small.mse-symbol-font/mana_w.png + tap symbol: render style: both choice images: - yes: script: buildin_image("bool_yes") - no: script: buildin_image("bool_no") - use gradient multicolor: - render style: both - choice images: - yes: script: buildin_image("bool_yes") - no: script: buildin_image("bool_no") - - - -############################################################## Extra style + modern: /magic-mana-large.mse-symbol-font/mana_t.png + old: /magic-mana-large.mse-symbol-font/mana_t_old.png + diagonal T: /magic-mana-large.mse-symbol-font/mana_t_older.png ############################################################## Card fields card style: @@ -203,7 +195,11 @@ card style: scale down to: 6 color: rgb(0,0,0) symbol font: - name: magic-mana-small + name: + script: + if styling.popup_mana_symbols + then "magic-mana-large" + else "magic-mana-small" size: 13 align: middle left z index: 2 diff --git a/data/magic-textless.mse-style/style b/data/magic-textless.mse-style/style index a5538ef9..2c3e7112 100644 --- a/data/magic-textless.mse-style/style +++ b/data/magic-textless.mse-style/style @@ -25,7 +25,13 @@ init script: pt_template := { input + "pt.jpg" } # Use the normal tap symbol - mana_t := { "new" } + mana_t := { + if styling.tap_symbol == "old" then "old" + else if styling.tap_symbol == "diagonal T" then "older" + else "new" + } + # Use guild mana symbols? + guild_mana := { styling.use_guild_mana_symbols } # Does the card have a color that requires a white font for copyright/artist? white_font_colors := filter_rule(match:"^(hybrid 2 color)?black|^land") @@ -36,86 +42,28 @@ init script: rgb(0,0,0) } -############################################################## Set info fields -info style: - title: - padding left: 2 - font: - size: 16 - symbol: - variation: - name: common - border radius: 0.10 - fill type: solid - fill color: rgb(0,0,0) - border color: rgb(255,255,255) - variation: - name: uncommon - border radius: 0.05 - fill type: linear gradient - fill color 1: rgb(224,224,224) - fill color 2: rgb(84, 84, 84) - border color 1: rgb(0, 0, 0) - border color 2: rgb(0, 0, 0) - variation: - name: rare - border radius: 0.05 - fill type: linear gradient - fill color 1: rgb(214,196,94) - fill color 2: rgb(95, 84, 40) - border color 1: rgb(0, 0, 0) - border color 2: rgb(0, 0, 0) - variation: - name: special - border radius: 0.10 - fill type: linear gradient - fill color 1: rgb(224,170,247) - fill color 2: rgb(58,7,80) - border color 1: rgb(255,255,255) - border color 2: rgb(255,255,255) - automatic reminder text: - render style: both - choice images: - yes: script: buildin_image("bool_yes") - no: script: buildin_image("bool_no") - use gradient multicolor: - render style: both - choice images: - yes: script: buildin_image("bool_yes") - no: script: buildin_image("bool_no") +############################################################## Extra style options - -############################################################## Extra style - -extra field: - type: boolean - name: colored mana symbols - description: Use colored mana symbols, as used by Wizards since Fifth Dawn. -extra field: +styling field: type: boolean name: darker artifacts description: Use darker artifacts, as used by Wizards since Fifth Dawn. -extra field: +styling field: type: boolean name: grey hybrid name description: Use a grey background for the name and type line on hybrid cards. This is done on real cards. initial: no -extra field: +styling field: type: boolean name: use guild mana symbols description: Use the Ravnica guild symbols instead of the official half/half circles for hybrid mana. initial: no -extra field: - type: boolean - name: popup mana symbols - description: Use the symbols of the casting cost line inside the text box as well - initial: no -extra style: - popup mana symbols: +styling style: + use guild mana symbols: choice images: - yes: /magic-mana-large.mse-symbol-font/mana_w.png - no: /magic-mana-small.mse-symbol-font/mana_w.png + yes: /magic-mana-small.mse-symbol-font/mana_guild_rg.png + no: /magic-mana-small.mse-symbol-font/mana_rg.png ############################################################## Card fields card style: diff --git a/data/magic.mse-game/game b/data/magic.mse-game/game index c0e54000..ddf18afa 100644 --- a/data/magic.mse-game/game +++ b/data/magic.mse-game/game @@ -271,22 +271,19 @@ set field: name: gold color: rgb(200,180,0) set field: - type: choice - name: automatic reminder text - choice: yes - choice: only for custom keywords - choice: no - description: Should reminder text be added to keywords by default? Note: you can enable/disable reminder text by right clicking the keyword. -set field: - # TODO : RENAME type: multiple choice - name: automatic reminder text2 + name: automatic reminder text choice: old choice: core choice: expert choice: custom - initial: old, core, export, custom - description: Should reminder text be added to keywords by default? Note: you can enable/disable reminder text by right clicking the keyword. + initial: old, core, expert, custom + # Convert from older mse versions + script: + if value = "yes" then "old, core, expert, custom" + else if value = "no" then "" + else value + description: For which kinds of keywords should reminder text be added by default? Note: you can enable/disable reminder text by right clicking the keyword. set field: type: boolean name: automatic card numbers @@ -343,11 +340,6 @@ default set style: border color 1: rgb(255,255,255) border color 2: rgb(255,255,255) automatic reminder text: - render style: both - choice images: - yes: script: buildin_image("bool_yes") - no: script: buildin_image("bool_no") - automatic reminder text2: render style: checklist direction: vertical use gradient multicolor: @@ -891,7 +883,7 @@ statistics category: has keywords: true -keyword preview: {keyword} ({reminder}) +#keyword preview: {keyword} ({reminder}) keyword mode: name: old @@ -970,12 +962,12 @@ keyword: reminder: This creature deals combat damage before creatures without first strike. keyword: keyword: Enchant - match: Enchant name + match: Enchant name mode: core - reminder: Target a as you play this. This card comes into play attached to that {param1}. + reminder: Target a {param1} as you play this. This card comes into play attached to that {param1}. keyword: keyword: Cycling - match: Cycling cost + match: Cycling cost mode: core reminder: {param1}, Discard this card: Draw a card. keyword: @@ -988,7 +980,7 @@ keyword: reminder: When declaring attackers or blockers this creature may group with others creatures with banding and one creature without banding. When damage is dealt, you decide where damage is dealt. keyword: keyword: Rampage - match: Rampage number + match: Rampage number mode: old reminder: Whenever this creature becomes blocked, it gets +{param1}/+{param1} until end of turn for each creature blocking it beyond the first. keyword: @@ -1001,7 +993,7 @@ keyword: reminder: This creature can’t attack. keyword: keyword: Cumulative upkeep - match: Cumulative upkeep cost + match: Cumulative upkeep cost mode: old reminder: At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay {param1} for each age counter on it. keyword: @@ -1014,7 +1006,7 @@ keyword: reminder: At the beginning of your upkeep, put this and any cards attached to it in the phased-out zone. If this is already in the phased-out zone, return it and any card attached to it to play. If there were counters on this card when it phased out, put that many counters on it when it returns to play. This ability does not cause comes-into-play or leaves play abilities to trigger. keyword: keyword: Flanking - match: Flanking number + match: Flanking number mode: old reminder: Whenever a creature without flanking blocks this creature, the blocking creature gets -{param1}/-{param1} until end of turn. keyword: @@ -1023,40 +1015,31 @@ keyword: reminder: This creature can block or be blocked by only creatures with shadow. keyword: keyword: Buyback - match: Buyback cost + match: Buyback cost mode: expert reminder: You may pay {param1} in addition to any other costs as you play this spell. If you do, put ~ into your hand instead of your graveyard as part of its resolution. keyword: keyword: Echo mode: expert reminder: At the beginning of your next upkeep after this permanent comes under your control, sacrifice it unless you pay its mana cost. -keyword: - keyword: Plainscycling - separator: whitespace [ ] - parameter: cost - mode: expert - reminder: , Discard this card: Search your library for a Plains card, reveal it, and put it into your hand. Then shuffle your library. keyword: keyword: Landcycling - match: prefixcycling cost + match: prefixcycling cost mode: expert reminder: {param2}, Discard this card: Search your library for a {param1} card, reveal it, and put it into your hand. Then shuffle your library. keyword: keyword: Fading - separator: whitespace [ ] - parameter: number (a, two, ...) + match: Fading number mode: expert - reminder: This comes into play with fade counter(s) on it. At the beginning of your upkeep, remove a fade counter from it. If you can’t, sacrifice it. + reminder: This comes into play with {param1} fade counter(s) on it. At the beginning of your upkeep, remove a fade counter from it. If you can’t, sacrifice it. keyword: keyword: Kicker - separator: whitespace [ ] - parameter: cost + match: Kicker cost mode: expert - reminder: You may pay an additional as you play this spell. + reminder: You may pay an additional {param1} as you play this spell. keyword: keyword: Madness - separator: whitespace [ ] - parameter: cost + match: Madness cost mode: expert reminder: You may play this card for its madness cost at the time you discard it. keyword: @@ -1082,7 +1065,7 @@ keyword: separator: whitespace [ ] parameter: number (a, two, ...) mode: expert - reminder: As this card comes into play, put +1/+1 counter(s) on it for each creature that shares a type with this that you reveal in your hand. + reminder: As this card comes into play, put {param1} +1/+1 counter(s) on it for each creature that shares a type with this that you reveal in your hand. keyword: keyword: Double strike mode: expert @@ -1112,7 +1095,7 @@ keyword: separator: whitespace [ ] parameter: cost mode: expert - reminder: : Attach to target creature you control. Equip only as a sorcery. This card comes into play unattached and stays in play if the creature leaves play. + reminder: {param1}: Attach to target creature you control. Equip only as a sorcery. This card comes into play unattached and stays in play if the creature leaves play. keyword: keyword: Imprint separator: dash [ - ] @@ -1124,20 +1107,20 @@ keyword: separator: whitespace [ ] parameter: number (a, two, ...) mode: expert - reminder: This comes into play with +1/+1 counter(s) on it. When it’s put into a graveyard, you may put its +1/+1 counters on target artifact creature. + reminder: This comes into play with {param1} +1/+1 counter(s) on it. When it’s put into a graveyard, you may put its +1/+1 counters on target artifact creature. keyword: keyword: Scry separator: whitespace [ ] parameter: number (, two, ...) mode: expert - reminder: Look at the top card(s) of your library. Put any number of them on the bottom of your library in any order and the rest on top of your library in any order. + reminder: Look at the top {param1} card(s) of your library. Put any number of them on the bottom of your library in any order and the rest on top of your library in any order. keyword: keyword: Sunburst mode: expert reminder: This comes into play with a +1/+1 counter on it for each color of mana used to pay its cost. If it is not a creature, use charge counters instead. #keyword: keyword: Splice - match: Splice onto name cost + match: Splice onto name cost mode: expert reminder: As you play a {param1} spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card’s effects to that spell. keyword: @@ -1151,25 +1134,25 @@ keyword: separator: dash [ - ] parameter: name mode: expert - reminder: You may play this card any time you could play an instant by sacrificing a and paying the difference in mana costs between this and the sacrificed . Mana cost includes color. + reminder: You may play this card any time you could play an instant by sacrificing a {param1} and paying the difference in mana costs between this and the sacrificed {param1}. Mana cost includes color. keyword: keyword: Bushido separator: whitespace [ ] parameter: number mode: expert - reminder: When this blocks or becomes blocked, it gets +/+ until end of turn. + reminder: When this blocks or becomes blocked, it gets +{param1}/+{param1} until end of turn. keyword: keyword: Ninjutsu separator: whitespace [ ] parameter: cost mode: expert - reminder: , Return an unblocked attacker you control to hand: Put this card into play from your hand tapped and attacking. + reminder: {param1}, Return an unblocked attacker you control to hand: Put this card into play from your hand tapped and attacking. keyword: keyword: Soulshift separator: whitespace [ ] parameter: number mode: expert - reminder: When this is put into a graveyard from play, you may return target Spirit card with converted mana cost or less from you graveyard to your hand. + reminder: When this is put into a graveyard from play, you may return target Spirit card with converted mana cost {param1} or less from you graveyard to your hand. keyword: keyword: Epic mode: expert @@ -1183,7 +1166,7 @@ keyword: separator: whitespace [ ] parameter: cost mode: expert - reminder: , Discard this card: Search your library for a card with the same converted mana cost as this card, reveal it, and put it into your hand. Then shuffle your library. Play only as a sorcery. + reminder: {param1}, Discard this card: Search your library for a card with the same converted mana cost as this card, reveal it, and put it into your hand. Then shuffle your library. Play only as a sorcery. keyword: keyword: Haunt mode: expert @@ -1193,7 +1176,7 @@ keyword: separator: whitespace [ ] parameter: number (a, two, ...) mode: expert - reminder: If an opponent was dealt damage this turn, this creature comes into play with +1/+1 counter(s) on it. + reminder: If an opponent was dealt damage this turn, this creature comes into play with {param1} +1/+1 counter(s) on it. keyword: keyword: Replicate separator: whitespace [ ] @@ -1218,7 +1201,7 @@ keyword: reminder: If defending player is wearing any clothing made of denim, this creature is unblockable. keyword: keyword: Landwalk - match: prefixwalk + match: prefixwalk mode: core reminder: This creature is unblockable as long as defending player controls a {param1}. keyword: @@ -1226,19 +1209,19 @@ keyword: separator: whitespace [ ] parameter: name mode: core - reminder: This creature can’t be blocked, targeted, dealt damage, or enchanted by anything . + reminder: This creature can’t be blocked, targeted, dealt damage, or enchanted by anything {param1}. keyword: keyword: Dredge separator: whitespace [ ] parameter: number (one, two, ...) mode: expert - reminder: As long as you have at least card(s) in your library, if you would draw a card, you may instead put exactly card(s) from the top of your library into your graveyard and return this card from your graveyard to your hand. + reminder: As long as you have at least {param1} card(s) in your library, if you would draw a card, you may instead put exactly {param1} card(s) from the top of your library into your graveyard and return this card from your graveyard to your hand. keyword: keyword: Graft separator: whitespace [ ] parameter: number (a, two, ...) mode: expert - reminder: This creature comes into play with +1/+1 counter(s) on it. Whenever another creature comes into play, you may move a +1/+1 counter from this creature onto it. + reminder: This creature comes into play with {param1} +1/+1 counter(s) on it. Whenever another creature comes into play, you may move a +1/+1 counter from this creature onto it. keyword: keyword: Forecast separator: whitespace [ ] diff --git a/data/vanguard-standard.mse-style/style b/data/vanguard-standard.mse-style/style index 1c9bc89b..da3d5a3e 100644 --- a/data/vanguard-standard.mse-style/style +++ b/data/vanguard-standard.mse-style/style @@ -9,8 +9,14 @@ icon: card-sample.png ############################################################## Extra scripts init script: - # Use the old tap symbol - mana_t := { "old" } + # Use the normal tap symbol + mana_t := { + if styling.tap_symbol == "old" then "old" + else if styling.tap_symbol == "diagonal T" then "older" + else "new" + } + # Use guild mana symbols? + guild_mana := { styling.use_guild_mana_symbols } ############################################################## Set info fields info style: @@ -19,13 +25,42 @@ info style: font: size: 16 -############################################################## Extra style +############################################################## Extra style options -extra field: +styling field: + type: boolean + name: use guild mana symbols + description: Use the Ravnica guild symbols instead of the official half/half circles for hybrid mana. + initial: no +styling field: type: boolean name: popup mana symbols description: Use the symbols of the casting cost line inside the text box as well initial: no +styling field: + type: choice + name: tap symbol + description: What tap symbol should be used on cards? + initial: old + choice: modern + choice: old + choice: diagonal T + +styling style: + use guild mana symbols: + choice images: + yes: /magic-mana-small.mse-symbol-font/mana_guild_rg.png + no: /magic-mana-small.mse-symbol-font/mana_rg.png + popup mana symbols: + choice images: + yes: /magic-mana-large.mse-symbol-font/mana_w.png + no: /magic-mana-small.mse-symbol-font/mana_w.png + tap symbol: + render style: both + choice images: + modern: /magic-mana-large.mse-symbol-font/mana_t.png + old: /magic-mana-large.mse-symbol-font/mana_t_old.png + diagonal T: /magic-mana-large.mse-symbol-font/mana_t_older.png ############################################################## Card fields card style: diff --git a/data/vanguard.mse-game/game b/data/vanguard.mse-game/game index e885d9e3..783b6fde 100644 --- a/data/vanguard.mse-game/game +++ b/data/vanguard.mse-game/game @@ -94,6 +94,9 @@ init script: ############################################################## Set fields +set field: + type: info + name: Set Information set field: type: text name: title @@ -107,6 +110,9 @@ set field: set field: type: text name: copyright +set field: + type: info + name: Defaults and Automation set field: type: color name: border color @@ -129,6 +135,14 @@ set field: initial: no description: Should card numbers be shown on the cards? +############################# Default style + +default set style: + title: + padding left: 2 + font: + size: 16 + ############################################################## Card fields ############################# Background stuff diff --git a/src/data/action/keyword.hpp b/src/data/action/keyword.hpp index 96f3c368..9dfcf6d4 100644 --- a/src/data/action/keyword.hpp +++ b/src/data/action/keyword.hpp @@ -97,5 +97,10 @@ class KeywordReminderTextValue : public KeywordTextValue { void highlight(const String& code, const vector& errors); }; +/// Changing the mode of a keyword +class ChangeKeywordModeAction : public Action { + +}; + // ----------------------------------------------------------------------------- : EOF #endif diff --git a/src/gui/set/keywords_panel.cpp b/src/gui/set/keywords_panel.cpp index d4971291..32ba4903 100644 --- a/src/gui/set/keywords_panel.cpp +++ b/src/gui/set/keywords_panel.cpp @@ -22,6 +22,9 @@ #include #include +DECLARE_TYPEOF_COLLECTION(KeywordParamP); +DECLARE_TYPEOF_COLLECTION(KeywordModeP); + // ----------------------------------------------------------------------------- : KeywordsPanel KeywordsPanel::KeywordsPanel(Window* parent, int id) @@ -36,6 +39,8 @@ KeywordsPanel::KeywordsPanel(Window* parent, int id) reminder = new TextCtrl(panel, wxID_ANY, true); // allow multiline for wordwrap rules = new TextCtrl(panel, wxID_ANY, true); errors = new wxStaticText(panel, wxID_ANY, _("")); + mode = new wxChoice(panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, nullptr); + add_param = new wxButton(panel, ID_KEYWORD_ADD_PARAM, _("Insert Parameter")); // warning about fixed keywords fixedL = new wxStaticText(panel, wxID_ANY, _("")); wxStaticBitmap* fixedI = new wxStaticBitmap(panel, wxID_ANY, wxArtProvider::GetBitmap(wxART_WARNING)); @@ -52,12 +57,15 @@ KeywordsPanel::KeywordsPanel(Window* parent, int id) wxSizer* s1 = new wxBoxSizer(wxVERTICAL); s1->Add(new wxStaticText(panel, wxID_ANY, _("Keyword:")), 0); s1->Add(keyword, 0, wxEXPAND | wxTOP, 2); + s1->Add(new wxStaticText(panel, wxID_ANY, _("Mode:")), 0, wxTOP, 2); + s1->Add(mode, 0, wxEXPAND | wxTOP, 2); sp->Add(s1, 0, wxEXPAND | wxLEFT, 2); sp->Add(new wxStaticLine(panel), 0, wxEXPAND | wxTOP | wxBOTTOM, 8); wxSizer* s2 = new wxBoxSizer(wxVERTICAL); s2->Add(new wxStaticText(panel, wxID_ANY, _("Match:")), 0); s2->Add(match, 0, wxEXPAND | wxTOP, 2); s2->Add(new wxStaticText(panel, wxID_ANY, _("Parameters:")), 0, wxTOP, 6); + s2->Add(add_param, 0, wxALIGN_LEFT | wxTOP, 2); sp->Add(s2, 0, wxEXPAND | wxLEFT, 2); sp->Add(new wxStaticLine(panel), 0, wxEXPAND | wxTOP | wxBOTTOM, 8); wxSizer* s3 = new wxBoxSizer(wxVERTICAL); @@ -127,6 +135,8 @@ void KeywordsPanel::onUpdateUI(wxUpdateUIEvent& ev) { case ID_KEYWORD_PREV: ev.Enable(list->canSelectPrevious()); break; case ID_KEYWORD_NEXT: ev.Enable(list->canSelectNext()); break; case ID_KEYWORD_REMOVE: ev.Enable(list->getKeyword() && !list->getKeyword()->fixed); break; + case ID_KEYWORD_ADD_PARAM: + break; } } @@ -147,6 +157,14 @@ void KeywordsPanel::onCommand(int id) { set->actions.add(new RemoveKeywordAction(*set, list->getKeyword())); } break; + case ID_KEYWORD_ADD_PARAM: { + wxMenu param_menu; + FOR_EACH(p, set->game->keyword_parameter_types) { + param_menu.Append(wxID_ANY, p->name); + } + add_param->PopupMenu(¶m_menu, 0, add_param->GetSize().y); + break; + } } } @@ -174,6 +192,12 @@ void KeywordsPanel::onChangeSet() { match ->getStyle().font.font.SetPointSize(10); reminder->updateSize(); rules ->setSet(set); + // parameter & mode lists + add_param->Enable(false); + mode->Clear(); + FOR_EACH(m, set->game->keyword_modes) { + mode->Append(m->name); + } // re-layout panel->Layout(); } @@ -198,12 +222,16 @@ void KeywordsPanel::onKeywordSelect(KeywordSelectEvent& ev) { shared_ptr reminder_value(new KeywordReminderTextValue(reminder->getFieldP(), &kw, !kw.fixed)); reminder->setValue(reminder_value); errors->SetLabel(reminder_value->errors); + add_param->Enable(!kw.fixed && !set->game->keyword_parameter_types.empty()); + mode->SetStringSelection(kw.mode); sp->Layout(); } else { keyword ->setValue(nullptr); match ->setValue(nullptr); rules ->setValue(nullptr); reminder->setValue(nullptr); + add_param->Enable(false); + mode ->Enable(false); } } diff --git a/src/gui/set/keywords_panel.hpp b/src/gui/set/keywords_panel.hpp index 1dbd3f39..cae453ae 100644 --- a/src/gui/set/keywords_panel.hpp +++ b/src/gui/set/keywords_panel.hpp @@ -52,6 +52,8 @@ class KeywordsPanel : public SetWindowPanel { wxStaticText* fixedL; wxSizer* fixed; wxStaticText* errors; + wxChoice* mode; + wxButton* add_param; /// Controls to edit a parameter struct ParamEditor { wxStaticText* label; diff --git a/src/render/card/viewer.cpp b/src/render/card/viewer.cpp index 9ba805ad..b2431337 100644 --- a/src/render/card/viewer.cpp +++ b/src/render/card/viewer.cpp @@ -57,7 +57,7 @@ bool DataViewer::drawEditing() const { return false; } bool DataViewer::drawFocus() const { return false; } wxPen DataViewer::borderPen(bool) const { return wxPen(); } ValueViewer* DataViewer::focusedViewer() const { return nullptr; } -Context& DataViewer::getContext() const { return set->getContext(); } +Context& DataViewer::getContext() const { return set->getContext(card); } Rotation DataViewer::getRotation() const { if (!stylesheet) stylesheet = set->stylesheet; @@ -68,7 +68,7 @@ Rotation DataViewer::getRotation() const { // ----------------------------------------------------------------------------- : Setting data void DataViewer::setCard(const CardP& card) { - if (!card) return; // TODO: clear editor? + if (!card) return; // TODO: clear vie? assert(set); this->card = card; stylesheet = set->stylesheetFor(card); diff --git a/src/util/window_id.hpp b/src/util/window_id.hpp index d69af5a4..f86e5945 100644 --- a/src/util/window_id.hpp +++ b/src/util/window_id.hpp @@ -108,6 +108,8 @@ enum ChildMenuID { , ID_KEYWORD_REMOVE , ID_KEYWORD_PREV , ID_KEYWORD_NEXT +, ID_KEYWORD_ADD_PARAM +, ID_KEYWORD_REF_PARAM // Format menu , ID_FORMAT_BOLD = 1201