From abd9278fde1b5f9c3ddf2b9e291c560ced59f033 Mon Sep 17 00:00:00 2001 From: "John W. C. McNabb" Date: Thu, 22 Dec 2005 17:06:39 +0000 Subject: [PATCH] adding team colors to flags --- images/terrain/flag-1.png | Bin 0 -> 995 bytes images/terrain/flag-2.png | Bin 0 -> 867 bytes src/display.cpp | 40 +++++++++++++++++++----- src/game_config.cpp | 8 +++++ src/game_config.hpp | 2 ++ src/team.cpp | 64 ++++++++------------------------------ 6 files changed, 56 insertions(+), 58 deletions(-) create mode 100644 images/terrain/flag-1.png create mode 100644 images/terrain/flag-2.png diff --git a/images/terrain/flag-1.png b/images/terrain/flag-1.png new file mode 100644 index 0000000000000000000000000000000000000000..47590f704478043cbac058148f5ecaf23f7cc419 GIT binary patch literal 995 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Y)RhkE)4%caKYZ?lYt_f1s;*b z3=CX{K$!7a-Z6imAbW|YuPggi9x(xZ)#};3Dhv$F1)eUBAr*7p&h+&c4issduetQ8 zGgFgd9fP3IVUqM7Wo3krm(G#gzIkAn&&J^P4`GXP&dHd_Kpx_C2ek01GmTol~Q};Aq(b!53`H z8qXdme;{R$YF2XL&D-mpxd-$T^f&NpFghK`He2Ap=QW{f0q2dG|Ne0bFiJH@DX^-X zT`p`Oe@LBiibn3s$C(d!R;_h9psvtYwZ-zpz7sVZ`An`GmTDfk)3;=ndF%o25Y^TO z-vhP}m_LX}1ueaDc8XECt?QrUQyF!Tp8v_#utuf1Z|p;AF*!lz%^;{ns@+ zZNyj-=`mydfHq~UGM%JbmL*C{&}BYt(6oXFMKPYae3Q$scRFb_^!OPZ{LULHT*_DSAJhxcz=8J z)n#iO62k)2U;J2kLAHIz`Ot+uW~$7s;f`w;yk7pu^RssvYoOynKK99VTC4B$xJUE` zI~c0WijB2*jXnQpTmQQGr`rB-nar@8m+&-q{=_fOb^cxnIu_@f5g#p}yX{);{Fs0W z=UoQ`8f_qGLy*GT-1(&kyc+-fTA2gn?XT04UL%sRmgoMw5+>8FF)}l+#T~yFz{D7{ zPwL~=6Z;>seCpoH^z&oz&4jfMJDpfQIiRCo@|M@D4eo1lG^y=ph^~3b^2D(Lm@gR^ NJYD@<);T3K0RS82zVQG6 literal 0 HcmV?d00001 diff --git a/images/terrain/flag-2.png b/images/terrain/flag-2.png new file mode 100644 index 0000000000000000000000000000000000000000..1ff95c3085df7d5e3f661fb7ae2501b98271d8d3 GIT binary patch literal 867 zcmV-p1DyPcP)qsFJ{>Yv;ciT64(oT0v-a3rMQYWc)UBJ{E1(&;0X&A@Lk)C} zRWtE6MQX_^xuDRt2|5p)0IT0-t|LXZ8Q2F*xPCJWOgmy&bgHRoPZa=zeK9OM8{j2& zUmY(1FV~G-2VSe{Ndv=w4p&!JIFqjkl|c_0-uz$FR_QA!gpa8-bP==>_J6pBPC3wn z{Z~vG@)om#FQ^kcXG|Fia0NxuD?n}T!7jD(3dNMO*o+pgB3}yn9**W7=*IROQ$_>4 z#8Tff?wAr@PMB%p*u}(@Db|ADq?ck}?3RHlR_aW$g<{GBwBC4w{WGQzWI=ao=WW*J zp&#ZtQqD5U0MCGOOg9+M}g1pYZ_ zdL}{Rb3=Q-YRZ#z-rK!IjRLoO(-J}3T|xfoK|Mepj3gI+<*5VXh6qx5D)+X}Cf+4& z7*l*Bs7oCSe~#K6DGtdYTIWjvljdw zq@Q%QeLUtVdgH&heZ1x=e+s$?guyyumpo7TQ;?T!pGo!kAM;eMnBt!vG|Z01*H6+S zNCb%>5wtBSKD{D>wlYtZouFd#l=L8vjEpU4p=blQ9wjvql!x2*#x5hQ{{kRXD}gsX#HB0=y8KLGpg-U@7K<-q^|002ovPDHLkV1fk+bol@P literal 0 HcmV?d00001 diff --git a/src/display.cpp b/src/display.cpp index 7632d8d67e4..2e999b263c7 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -104,20 +104,46 @@ display::display(unit_map& units, CVideo& video, const gamemap& map, flags_.reserve(teams_.size()); for(size_t i = 0; i != teams_.size(); ++i) { std::string flag; + color_range new_rgb; + std::vector old_rgb; + if(teams_[i].flag().empty()) { flag = game_config::flag_image; - std::string::size_type pos; - while((pos = flag.find("%d")) != std::string::npos) { - std::ostringstream s; - s << teams_[i].map_colour_to(); - flag.replace(pos, 2, s.str()); - } + old_rgb = game_config::flag_rgb; + new_rgb = team::get_side_color_range(i+1); } else { flag = teams_[i].flag(); } LOG_STREAM(info, display) << "Adding flag for team " << i << " from animation " << flag << "\n"; - flags_.push_back(animated(flag)); + + //must recolor flag image + animated temp_anim; + + std::vector items = utils::split(flag); + int current_time = 0; + std::vector::const_iterator itor = items.begin(); + for(; itor != items.end(); ++itor) { + const std::vector& items = utils::split(*itor, ':'); + std::string str; + int time; + + if(items.size() > 1) { + str = items.front(); + time = atoi(items.back().c_str()); + } else { + str = *itor; + time = 100; + } + + std::cout<<" current time:"<::INFINITE_CYCLES); } diff --git a/src/game_config.cpp b/src/game_config.cpp index 77d2d2f49bc..d53474ed5ea 100644 --- a/src/game_config.cpp +++ b/src/game_config.cpp @@ -53,6 +53,7 @@ namespace game_config std::string enemy_energy_image = "misc/bar-energy-enemy.png"; std::string ally_energy_image = "misc/bar-energy-ally.png"; std::string flag_image = "terrain/flag-team%d-1.png:150,terrain/flag-team%d-2.png:150"; + std::vector flag_rgb; std::string dot_image = "misc/dot.png"; std::string cross_image = "misc/cross.png"; @@ -130,6 +131,13 @@ namespace game_config enemy_energy_image = v["enemy_energy_image"]; ally_energy_image = v["ally_energy_image"]; flag_image = v["flag_image"]; + flag_rgb = string2rgb(v["flag_rgb"]); + if( !flag_rgb.size()){ + //set green as old_flag_color + for(int i=0;i!=256;i++){ + flag_rgb.push_back((Uint32)(i<<8)); + } + } cross_image = v["cross_image"]; dot_image = v["dot_image"]; diff --git a/src/game_config.hpp b/src/game_config.hpp index 316bc9193c2..086cd3e2295 100644 --- a/src/game_config.hpp +++ b/src/game_config.hpp @@ -47,6 +47,8 @@ namespace game_config missile_n_image,missile_ne_image,terrain_mask_image,observer_image,download_campaign_image, checked_menu_image,unchecked_menu_image,level_image,ellipsis_image; + extern std::vector flag_rgb; + extern std::vector foot_left_nw,foot_left_n,foot_right_nw,foot_right_n; extern int title_logo_x, title_logo_y, title_buttons_x, title_buttons_y, title_buttons_padding, title_tip_x, title_tip_y, title_tip_width, title_tip_padding; diff --git a/src/team.cpp b/src/team.cpp index 834974f82ea..0fb92697266 100644 --- a/src/team.cpp +++ b/src/team.cpp @@ -908,82 +908,44 @@ bool team::shroud_map::copy_from(const std::vector& maps) std::map team::team_color_range_; -const Uint32 team::get_side_rgb(int side){ +const color_range team::get_side_color_range(int side){ size_t index = size_t(get_side_colour_index(side)); std::map::iterator p=team_color_range_.find(index); + if(p != team_color_range_.end()){ - return(p->second.mid()); + return(p->second); }else{ p=team_color_range_.find(side); if(p != team_color_range_.end()){ - return(p->second.mid()); + return(p->second); } } p=game_config::team_rgb_range.find(side); if(p != game_config::team_rgb_range.end()){ - return(p->second.mid()); + return(p->second); }else{ p=game_config::team_rgb_range.find(side); if(p != game_config::team_rgb_range.end()){ - return(p->second.mid()); + return(p->second); } } - return 0x00FF0000; + return(color_range(0x00FF0000,0x00FFFFFF,0x00000000)); +} + +const Uint32 team::get_side_rgb(int side){ + return(get_side_color_range(side).mid()); } const Uint32 team::get_side_rgb_max(int side){ - size_t index = size_t(get_side_colour_index(side)); - std::map::iterator p=team_color_range_.find(index); - if(p != team_color_range_.end()){ - return(p->second.max()); - }else{ - p=team_color_range_.find(side); - if(p != team_color_range_.end()){ - return(p->second.max()); - } - } - - p=game_config::team_rgb_range.find(side); - if(p != game_config::team_rgb_range.end()){ - return(p->second.max()); - }else{ - p=game_config::team_rgb_range.find(side); - if(p != game_config::team_rgb_range.end()){ - return(p->second.max()); - } - } - - return 0x00FFFFFF; + return(get_side_color_range(side).max()); } const Uint32 team::get_side_rgb_min(int side){ - size_t index = size_t(get_side_colour_index(side)); - std::map::iterator p=team_color_range_.find(index); - if(p != team_color_range_.end()){ - return(p->second.min()); - }else{ - p=team_color_range_.find(side); - if(p != team_color_range_.end()){ - return(p->second.min()); - } - } - - p=game_config::team_rgb_range.find(side); - if(p != game_config::team_rgb_range.end()){ - return(p->second.min()); - }else{ - p=game_config::team_rgb_range.find(side); - if(p != game_config::team_rgb_range.end()){ - return(p->second.min()); - } - } - - return 0x00000000; + return(get_side_color_range(side).min()); } - const SDL_Color team::get_side_colour(int side) { Uint32 rgb=get_side_rgb(side);