From 43e4e55a618aab20f5ba4b75df81bc5662c14ee7 Mon Sep 17 00:00:00 2001 From: Dominic Bolin Date: Wed, 19 Jul 2006 22:12:08 +0000 Subject: [PATCH] Syntax change to TC, and fix a few more spots that use it. MP selection always uses red, because the selection dialogs don't know what color to use. --- data/campaigns/Eastern_Invasion.cfg | 8 +++--- data/campaigns/Heir_To_The_Throne.cfg | 6 ++-- data/campaigns/The_South_Guard.cfg | 2 +- data/campaigns/Two_Brothers.cfg | 6 ++-- data/factions/alliance_of_darkness.cfg | 2 +- data/factions/knalgans-aoh.cfg | 2 +- data/factions/knalgans-default.cfg | 2 +- data/factions/loyalists-aoh.cfg | 2 +- data/factions/loyalists-default.cfg | 2 +- data/factions/northerners-aoh.cfg | 2 +- data/factions/northerners-default.cfg | 2 +- data/factions/rebels-aoh.cfg | 2 +- data/factions/rebels-default.cfg | 2 +- data/factions/undead-aoh.cfg | 2 +- data/factions/undead-default.cfg | 2 +- src/help.cpp | 4 +-- src/image.cpp | 39 +++++++++++++++++--------- src/image.hpp | 3 +- src/leader_list.cpp | 4 +-- src/menu_events.cpp | 8 +++--- src/multiplayer_wait.cpp | 4 +-- 21 files changed, 59 insertions(+), 47 deletions(-) diff --git a/data/campaigns/Eastern_Invasion.cfg b/data/campaigns/Eastern_Invasion.cfg index 7e7137ab409..072f4e42592 100644 --- a/data/campaigns/Eastern_Invasion.cfg +++ b/data/campaigns/Eastern_Invasion.cfg @@ -6,14 +6,14 @@ id=eastern_invasion rank=30 #textdomain wesnoth-ei -icon=units/human-loyalists/general.png(1,magenta) +icon=units/human-loyalists/general.png~TC~TC(1,magenta) name= _ "The Eastern Invasion" define=CAMPAIGN_EASTERN_INVASION first_scenario=The_Outpost difficulties=EASY,NORMAL,HARD -difficulty_descriptions={MENU_IMG_TXT2 "units/human-loyalists/spearman.png(1,magenta)" _"Spearman" _"(easiest)"} + - ";*" + {MENU_IMG_TXT "units/human-loyalists/swordsman.png(1,magenta)" _"Swordsman"} + - ";" + {MENU_IMG_TXT2 "units/human-loyalists/royalguard.png(1,magenta)" (_"Royal Guard") _"(hardest)"} +difficulty_descriptions={MENU_IMG_TXT2 "units/human-loyalists/spearman.png~TC(1,magenta)" _"Spearman" _"(easiest)"} + + ";*" + {MENU_IMG_TXT "units/human-loyalists/swordsman.png~TC(1,magenta)" _"Swordsman"} + + ";" + {MENU_IMG_TXT2 "units/human-loyalists/royalguard.png~TC(1,magenta)" (_"Royal Guard") _"(hardest)"} description= _ "There are rumors of undead attacks on the eastern border of Wesnoth. You, an officer in the Royal Army, have been sent to the eastern front to protect the villagers and find out what is happening." image=portraits/gweddry.png diff --git a/data/campaigns/Heir_To_The_Throne.cfg b/data/campaigns/Heir_To_The_Throne.cfg index 411a4fdc2f4..16dd4546e94 100644 --- a/data/campaigns/Heir_To_The_Throne.cfg +++ b/data/campaigns/Heir_To_The_Throne.cfg @@ -10,9 +10,9 @@ define=CAMPAIGN_HEIR_TO_THE_THRONE first_scenario=01_The_Elves_Besieged difficulties=EASY,NORMAL,HARD - difficulty_descriptions={MENU_IMG_TXT2 "units/elves-wood/fighter.png(1,magenta)" _"Fighter" _"(easiest)"} + - ";*" + {MENU_IMG_TXT "units/elves-wood/hero.png(1,magenta)" _"Hero"} + ";" + - {MENU_IMG_TXT2 "units/elves-wood/champion.png(1,magenta)" _"Champion" _"(hardest)"} + difficulty_descriptions={MENU_IMG_TXT2 "units/elves-wood/fighter.png~TC(1,magenta)" _"Fighter" _"(easiest)"} + + ";*" + {MENU_IMG_TXT "units/elves-wood/hero.png~TC(1,magenta)" _"Hero"} + ";" + + {MENU_IMG_TXT2 "units/elves-wood/champion.png~TC(1,magenta)" _"Champion" _"(hardest)"} description= _ "Fight to regain the throne of Wesnoth, of which you are the legitimate heir." image=portraits/konrad.png diff --git a/data/campaigns/The_South_Guard.cfg b/data/campaigns/The_South_Guard.cfg index 0f624fb27ec..7000d4ab06e 100644 --- a/data/campaigns/The_South_Guard.cfg +++ b/data/campaigns/The_South_Guard.cfg @@ -16,7 +16,7 @@ description= _ "A young Knight, Deoran, is dispatched to take command of the South Guard... Note: This campaign is designed as an introduction to Wesnoth. The 'Civilian' difficulty level is aimed at first-time players." difficulties=EASY,NORMAL,HARD - difficulty_descriptions="*" + {MENU_IMG_TXT2 "units/human-loyalists/peasant.png(1,magenta)" _"Civilian" _"(simple)"} + ";" + {MENU_IMG_TXT2 "units/human-loyalists/spearman.png(1,magenta)" _"Recruit" _"(easy)"} + ";" + {MENU_IMG_TXT2 "units/human-loyalists/javelineer.png(1,magenta)" _"Soldier" _"(normal)"} + difficulty_descriptions="*" + {MENU_IMG_TXT2 "units/human-loyalists/peasant.png~TC(1,magenta)" _"Civilian" _"(simple)"} + ";" + {MENU_IMG_TXT2 "units/human-loyalists/spearman.png~TC(1,magenta)" _"Recruit" _"(easy)"} + ";" + {MENU_IMG_TXT2 "units/human-loyalists/javelineer.png~TC(1,magenta)" _"Soldier" _"(normal)"} first_scenario=1_Born_To_The_Banner diff --git a/data/campaigns/Two_Brothers.cfg b/data/campaigns/Two_Brothers.cfg index c87d28f33cf..0513a461a4b 100644 --- a/data/campaigns/Two_Brothers.cfg +++ b/data/campaigns/Two_Brothers.cfg @@ -6,14 +6,14 @@ name="wesnoth-tb" id=Two_Brothers rank=1 #textdomain wesnoth-tb - icon="units/human-loyalists/knight.png(1,magenta)" + icon="units/human-loyalists/knight.png~TC(1,magenta)" image="arne.png" name= _ "A Tale Of Two Brothers" define="CAMPAIGN_TWO_BROTHERS" first_scenario="1_Rooting_Out_A_Mage" difficulties=EASY,HARD - difficulty_descriptions={MENU_IMG_TXT2 "units/human-loyalists/horseman-moving.png(1,magenta)" _"Horseman" _"(easy)"} + - ";" + {MENU_IMG_TXT2 "units/human-loyalists/grand-knight.png(1,magenta)" _"Knight" _"(hard)"} + difficulty_descriptions={MENU_IMG_TXT2 "units/human-loyalists/horseman-moving.png~TC(1,magenta)" _"Horseman" _"(easy)"} + + ";" + {MENU_IMG_TXT2 "units/human-loyalists/grand-knight.png~TC(1,magenta)" _"Knight" _"(hard)"} description= _ "A Black Mage is threatening the local village and its inhabitants. When their leader Bjarn sends for aid from his brother Arne, he is victorious, but Bjarn himself is kidnapped. Can you rescue him? A very short campaign, made for beginners on easy and challenging for pros on hard." diff --git a/data/factions/alliance_of_darkness.cfg b/data/factions/alliance_of_darkness.cfg index 2614b66ce7d..7299fc60fbd 100644 --- a/data/factions/alliance_of_darkness.cfg +++ b/data/factions/alliance_of_darkness.cfg @@ -1,6 +1,6 @@ [multiplayer_side] id=Alliance of Darkness - name={MENU_IMG_TXT "undead-necromancers/dark_sorcerer.png" (_"Alliance of Darkness")} + name={MENU_IMG_TXT "undead-necromancers/dark_sorcerer.png~TC(1,magenta)" (_"Alliance of Darkness")} type=Dark Sorcerer leader=Dark Sorcerer,Revenant,Bone Shooter,Deathblade,Orcish Warrior,Troll,Troll Rocklobber,Orcish Crossbowman,Orcish Slayer,Rogue,Bandit,Trapper,Saurian Oracle,Saurian Soothsayer random_leader=Dark Sorcerer,Revenant,Bone Shooter,Deathblade,Orcish Warrior,Troll,Troll Rocklobber,Orcish Crossbowman,Orcish Slayer,Rogue,Bandit,Trapper diff --git a/data/factions/knalgans-aoh.cfg b/data/factions/knalgans-aoh.cfg index 2134e336026..d3d5961c59d 100644 --- a/data/factions/knalgans-aoh.cfg +++ b/data/factions/knalgans-aoh.cfg @@ -1,6 +1,6 @@ [multiplayer_side] id=Knalgan Alliance - name={MENU_IMG_TXT "dwarves/lord.png" (_"Knalgan Alliance")} + name={MENU_IMG_TXT "dwarves/lord.png~TC(1,magenta)" (_"Knalgan Alliance")} type=Dwarvish Lord leader=Dwarvish Lord,Dwarvish Dragonguard,Dwarvish Sentinel,Assassin,Trapper random_leader=Dwarvish Lord,Dwarvish Dragonguard,Dwarvish Sentinel,Assassin diff --git a/data/factions/knalgans-default.cfg b/data/factions/knalgans-default.cfg index fa0b5984aae..f8dd2191755 100644 --- a/data/factions/knalgans-default.cfg +++ b/data/factions/knalgans-default.cfg @@ -1,6 +1,6 @@ [multiplayer_side] id=Knalgan Alliance - name={MENU_IMG_TXT "dwarves/warrior.png" (_"Knalgan Alliance")} + name={MENU_IMG_TXT "dwarves/warrior.png~TC(1,magenta)" (_"Knalgan Alliance")} type=Dwarvish Steelclad leader=Dwarvish Steelclad,Dwarvish Thunderguard,Dwarvish Stalwart,Rogue,Trapper recruit=Dwarvish Guardsman,Dwarvish Fighter,Dwarvish Ulfserker,Dwarvish Thunderer,Thief,Poacher,Footpad,Gryphon Rider diff --git a/data/factions/loyalists-aoh.cfg b/data/factions/loyalists-aoh.cfg index dc6d841a35e..465b2cd5d89 100644 --- a/data/factions/loyalists-aoh.cfg +++ b/data/factions/loyalists-aoh.cfg @@ -1,6 +1,6 @@ [multiplayer_side] id=Loyalists - name={MENU_IMG_TXT "human-loyalists/general.png" _"Loyalists"} + name={MENU_IMG_TXT "human-loyalists/general.png~TC(1,magenta)" _"Loyalists"} type=General leader=General,Royal Guard,Halbardier,Iron Mauler,Master Bowman,Mage of Light,Arch Mage,Silver Mage,Javelineer random_leader=General,Royal Guard,Halbardier,Iron Mauler,Master Bowman,Arch Mage,Silver Mage diff --git a/data/factions/loyalists-default.cfg b/data/factions/loyalists-default.cfg index 2738d7bd4f3..b69f9062806 100644 --- a/data/factions/loyalists-default.cfg +++ b/data/factions/loyalists-default.cfg @@ -1,6 +1,6 @@ [multiplayer_side] id=Loyalists - name={MENU_IMG_TXT "human-loyalists/lieutenant.png" _"Loyalists"} + name={MENU_IMG_TXT "human-loyalists/lieutenant.png~TC(1,magenta)" _"Loyalists"} type=Lieutenant leader=Lieutenant,Swordsman,Pikeman,Javelineer,Shock Trooper,Longbowman,White Mage,Red Mage random_leader=Lieutenant,Swordsman,Pikeman,Javelineer,Shock Trooper,Longbowman,Red Mage diff --git a/data/factions/northerners-aoh.cfg b/data/factions/northerners-aoh.cfg index 7f91422ce4a..039aa692df4 100644 --- a/data/factions/northerners-aoh.cfg +++ b/data/factions/northerners-aoh.cfg @@ -1,6 +1,6 @@ [multiplayer_side] id=Northerners - name={MENU_IMG_TXT "orcs/warlord.png" _"Northerners"} + name={MENU_IMG_TXT "orcs/warlord.png~TC(1,magenta)" _"Northerners"} type=Orcish Warlord leader=Orcish Warlord,Troll Warrior,Orcish Slurbow,Orcish Slayer random_leader=Orcish Warlord,Troll Warrior,Orcish Slurbow diff --git a/data/factions/northerners-default.cfg b/data/factions/northerners-default.cfg index 4d4f21a3958..8e24428f160 100644 --- a/data/factions/northerners-default.cfg +++ b/data/factions/northerners-default.cfg @@ -1,6 +1,6 @@ [multiplayer_side] id=Northeners - name={MENU_IMG_TXT "orcs/warrior.png" _"Northerners"} + name={MENU_IMG_TXT "orcs/warrior.png~TC(1,magenta)" _"Northerners"} type=Orcish Warrior leader=Orcish Warrior,Troll,Troll Rocklobber,Orcish Crossbowman,Orcish Slayer recruit=Orcish Grunt,Troll Whelp,Wolf Rider,Orcish Archer,Orcish Assassin,Naga Fighter,Goblin Spearman diff --git a/data/factions/rebels-aoh.cfg b/data/factions/rebels-aoh.cfg index 16e54dffb53..e231cfdf221 100644 --- a/data/factions/rebels-aoh.cfg +++ b/data/factions/rebels-aoh.cfg @@ -1,6 +1,6 @@ [multiplayer_side] id=Rebels - name={MENU_IMG_TXT "elves-wood/marshal.png" _"Rebels"} + name={MENU_IMG_TXT "elves-wood/marshal.png~TC(1,magenta)" _"Rebels"} type=Elvish Marshal leader=Elvish Marshal,Elvish Champion,Elvish Avenger,Elvish Sharpshooter,Mage of Light,Arch Mage,Silver Mage,Elvish Shyde,Elvish Enchantress,Ancient Wose random_leader=Elvish Marshal,Elvish Champion,Elvish Avenger,Elvish Sharpshooter,Arch Mage,Silver Mage,Elvish Shyde,Elvish Enchantress diff --git a/data/factions/rebels-default.cfg b/data/factions/rebels-default.cfg index 14c9b3ad7e6..4cbaa11f716 100644 --- a/data/factions/rebels-default.cfg +++ b/data/factions/rebels-default.cfg @@ -1,6 +1,6 @@ [multiplayer_side] id=Rebels - name={MENU_IMG_TXT "elves-wood/captain.png" _"Rebels"} + name={MENU_IMG_TXT "elves-wood/captain.png~TC(1,magenta)" _"Rebels"} type=Elvish Captain leader=Elvish Captain,Elvish Hero,Elvish Ranger,Elvish Marksman,Elvish Druid,Elvish Sorceress,White Mage,Red Mage,Elder Wose random_leader=Elvish Captain,Elvish Hero,Elvish Ranger,Elvish Marksman,Elvish Druid,Elvish Sorceress,Red Mage diff --git a/data/factions/undead-aoh.cfg b/data/factions/undead-aoh.cfg index bb863427403..731b040a74c 100644 --- a/data/factions/undead-aoh.cfg +++ b/data/factions/undead-aoh.cfg @@ -1,6 +1,6 @@ [multiplayer_side] id=Undead - name={MENU_IMG_TXT "undead-necromancers/lich.png" _"Undead"} + name={MENU_IMG_TXT "undead-necromancers/lich.png~TC(1,magenta)" _"Undead"} type=Lich leader=Lich,Necromancer,Draug,Soul Shooter,Necrophage,Deathblade random_leader=Lich,Necromancer,Draug,Soul Shooter diff --git a/data/factions/undead-default.cfg b/data/factions/undead-default.cfg index b9dc2da59a3..ed2a68ca4b1 100644 --- a/data/factions/undead-default.cfg +++ b/data/factions/undead-default.cfg @@ -1,6 +1,6 @@ [multiplayer_side] id=Undead - name={MENU_IMG_TXT "undead-necromancers/dark-sorcerer.png" _"Undead"} + name={MENU_IMG_TXT "undead-necromancers/dark-sorcerer.png~TC(1,magenta)" _"Undead"} type=Dark Sorcerer leader=Dark Sorcerer,Revenant,Deathblade,Bone Shooter,Necrophage recruit=Skeleton,Skeleton Archer,Walking Corpse,Ghost,Vampire Bat,Dark Adept,Ghoul diff --git a/src/help.cpp b/src/help.cpp index b31582654b9..4d2095cdfc7 100644 --- a/src/help.cpp +++ b/src/help.cpp @@ -1086,10 +1086,10 @@ public: const unit_type& male_type = type_.get_gender_unit_type(unit_race::MALE); // Show the unit's image and its level. - ss << "src='" << male_type.image() << "(1," << male_type.flag_rgb() << ")" << "' "; + ss << "src='" << male_type.image() << "~TC(1," << male_type.flag_rgb() << ")" << "' "; if (&female_type != &male_type) - ss << "src='" << female_type.image() << "(1," << female_type.flag_rgb() << ")" << "' "; + ss << "src='" << female_type.image() << "~TC(1," << female_type.flag_rgb() << ")" << "' "; ss << "font_size=" << font::relative_size(11) << " text=' " << escape(_("level")) << " " << type_.level() << "'"; diff --git a/src/image.cpp b/src/image.cpp index 0073113758c..cc1c8521eb1 100644 --- a/src/image.cpp +++ b/src/image.cpp @@ -119,19 +119,8 @@ void locator::init_index() index_ = i->second; } } -void locator::get_tc_info() +void locator::get_tc_info(const std::string& field) { - std::string& fn(val_.filename_); - if(fn.empty()) { - return; - } - size_t open_field = fn.find('('); - size_t close_field = fn.find(')'); - if(open_field == std::string::npos || close_field == std::string::npos) { - return; - } - std::string field = fn.substr(open_field+1,close_field-open_field-1); - fn = fn.substr(0,open_field); // field should be of the format "team,team_color_id" size_t comma = field.find(','); if(comma == std::string::npos) { @@ -142,6 +131,28 @@ void locator::get_tc_info() val_.new_color = team::get_side_color_range(team_n); val_.swap_colors = game_config::tc_info(color_id); } +void locator::parse_arguments() +{ + std::string& fn(val_.filename_); + if(fn.empty()) { + return; + } + size_t markup_field = fn.find('~'); + while(markup_field != std::string::npos) { + size_t open_field = fn.find('(',markup_field); + size_t close_field = fn.find(')',markup_field); + if(open_field == std::string::npos || close_field == std::string::npos) { + return; + } + std::string field = fn.substr(open_field+1,close_field-open_field-1); + std::string function = fn.substr(markup_field+1,open_field-markup_field-1); + fn = fn.substr(0,markup_field) + fn.substr(close_field+1); + if(function == "TC") { + get_tc_info(field); + } + markup_field = fn.find('~'); + } +} locator::locator() : index_(-1) @@ -156,15 +167,15 @@ locator::locator(const locator &a): locator::locator(const char *filename) : val_(filename) { + parse_arguments(); init_index(); - get_tc_info(); } locator::locator(const std::string &filename) : val_(filename) { + parse_arguments(); init_index(); - get_tc_info(); } locator::locator(const char *filename, const color_range& new_rgb, const std::vector& swap_rgb) : diff --git a/src/image.hpp b/src/image.hpp index e9fcc54a313..10b41280a8a 100644 --- a/src/image.hpp +++ b/src/image.hpp @@ -47,7 +47,8 @@ namespace image { // Called by each constructor after actual construction to // initialize the index_ field void init_index(); - void get_tc_info(); + void get_tc_info(const std::string& field); + void parse_arguments(); public: enum type { NONE, FILE, SUB_FILE }; diff --git a/src/leader_list.cpp b/src/leader_list.cpp index 5ce0b1d58a1..29d7e4aedc3 100644 --- a/src/leader_list.cpp +++ b/src/leader_list.cpp @@ -87,8 +87,8 @@ void leader_list_manager::update_leader_list(int side_index) if (utypes.find(*itor) != utypes.end()) { const std::string name = utypes.find(*itor)->second.language_name(); const std::string image = utypes.find(*itor)->second.image(); - - leader_strings.push_back(IMAGE_PREFIX + image + COLUMN_SEPARATOR + name); + + leader_strings.push_back(IMAGE_PREFIX + image + std::string("~TC(1," + utypes.find(*itor)->second.flag_rgb() + ")") + COLUMN_SEPARATOR + name); } else { leader_strings.push_back("?"); } diff --git a/src/menu_events.cpp b/src/menu_events.cpp index 1d647aca697..72cc546847f 100644 --- a/src/menu_events.cpp +++ b/src/menu_events.cpp @@ -218,7 +218,7 @@ namespace events{ } std::stringstream str; - str << IMAGE_PREFIX << type->second.image() << "(" << team << "," << type->second.flag_rgb() << ")" << COLUMN_SEPARATOR + str << IMAGE_PREFIX << type->second.image() << "~TC(" << team << "," << type->second.flag_rgb() << ")" << COLUMN_SEPARATOR << type->second.language_name() << COLUMN_SEPARATOR << i->second << "\n"; table.push_back(str.str()); } @@ -337,7 +337,7 @@ namespace events{ //output the number of the side first, and this will //cause it to be displayed in the correct colour if(leader != units_.end()) { - str << IMAGE_PREFIX << leader->second.absolute_image() << "(" << (n+1) << "," << leader->second.team_color() << ")" << COLUMN_SEPARATOR + str << IMAGE_PREFIX << leader->second.absolute_image() << "~TC(" << (n+1) << "," << leader->second.team_color() << ")" << COLUMN_SEPARATOR << "\033[3" << lexical_cast(n+1) << 'm' << leader->second.description() << COLUMN_SEPARATOR; } else { str << ' ' << COLUMN_SEPARATOR << "\033[3" << lexical_cast(n+1) << "m-" << COLUMN_SEPARATOR; @@ -563,7 +563,7 @@ namespace events{ std::stringstream description; - description << font::IMAGE << type.image() << "(" << team_num << "," << type.flag_rgb() << ")" << COLUMN_SEPARATOR << font::LARGE_TEXT + description << font::IMAGE << type.image() << "~TC(" << team_num << "," << type.flag_rgb() << ")" << COLUMN_SEPARATOR << font::LARGE_TEXT << prefix << type.language_name() << "\n" << prefix << type.cost() << " " << sgettext("unit^Gold"); items.push_back(description.str()); @@ -698,7 +698,7 @@ namespace events{ for(std::vector::const_iterator u = recall_list.begin(); u != recall_list.end(); ++u) { std::stringstream option; const std::string& description = u->description().empty() ? "-" : u->description(); - option << IMAGE_PREFIX << u->absolute_image() << "(" << team_num << "," << u->team_color() << ")" << COLUMN_SEPARATOR + option << IMAGE_PREFIX << u->absolute_image() << "~TC(" << team_num << "," << u->team_color() << ")" << COLUMN_SEPARATOR << u->language_name() << COLUMN_SEPARATOR << description << COLUMN_SEPARATOR << u->level() << COLUMN_SEPARATOR diff --git a/src/multiplayer_wait.cpp b/src/multiplayer_wait.cpp index 972159842e1..b6f559a7270 100644 --- a/src/multiplayer_wait.cpp +++ b/src/multiplayer_wait.cpp @@ -89,7 +89,7 @@ void wait::leader_preview_pane::draw_contents() if (utypes.find(leader) != utypes.end()) { leader_name = utypes.find(leader)->second.language_name(); - image = utypes.find(leader)->second.image(); + image = utypes.find(leader)->second.image() + "~TC(1," + utypes.find(leader)->second.flag_rgb() + ")"; } for(std::vector::const_iterator itor = recruit_list.begin(); itor != recruit_list.end(); ++itor) { @@ -393,7 +393,7 @@ void wait::generate_menu() std::string::size_type p = side_name.str().find_first_of(COLUMN_SEPARATOR); if(p != std::string::npos && p < side_name.size()) { - side_name = IMAGE_PREFIX + leader_image + COLUMN_SEPARATOR + side_name.str().substr(p+1); + side_name = IMAGE_PREFIX + leader_image + std::string("~TC(" + sd["side"] + ",") + std::string(utypes.find(leader_type)->second.flag_rgb() + ")") + COLUMN_SEPARATOR + side_name.str().substr(p+1); } } }