#undef FIELD
#undef MSLE
+void minigame_show_allspecs(vector boardpos, vector boardsize)
+{
+ string allspecs = "";
+ float allspecs_width = 0;
+ float max_allspecs_width = boardsize.x;
+ float max_current_spec_width = hud_fontsize.x * 5;
+ int allspecs_lines = 2;
+
+ entity e;
+ FOREACH_MINIGAME_ENTITY(e)
+ {
+ if (allspecs_width >= 0 && e.classname == "minigame_player" && e.team == C4_SPECTATOR_TEAM)
+ {
+ string current_spec = ColorTranslateRGB(entcs_GetName(e.minigame_playerslot - 1));
+ current_spec = textShortenToWidth(current_spec, max_current_spec_width, hud_fontsize, stringwidth_colors);
+ if (allspecs != "")
+ current_spec = strcat(", ", current_spec);
+ else
+ current_spec = current_spec;
+
+ allspecs_width = stringwidth(allspecs, true, hud_fontsize);
+
+ float max_width = max_allspecs_width * allspecs_lines - max_current_spec_width;
+ if (allspecs_width + stringwidth(current_spec, true, hud_fontsize) < max_width)
+ allspecs = strcat(allspecs, current_spec);
+ else
+ {
+ // current_spec doesn't fit in the list
+ allspecs = strcat(allspecs, ", ...");
+ allspecs_width = -1; // skip remaining spectators
+ }
+ }
+ }
+
+ if (allspecs != "")
+ {
+ vector pos = boardpos;
+ pos.y -= panel_bg_border + hud_fontsize.y * (1.25 + allspecs_lines + 0.5);
+ minigame_drawstring_wrapped(max_allspecs_width, pos, _("Spectators:"), hud_fontsize * 1.25, '0.85 0.47 0.42', panel_fg_alpha, DRAWFLAG_NORMAL, 0);
+
+ pos.y += hud_fontsize.y * 1.25;
+ minigame_drawcolorcodedstring_wrapped(max_allspecs_width, pos, allspecs, hud_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL, 0);
+ }
+}
+
string minigame_getWrappedLine(float w, vector theFontSize, textLengthUpToWidth_widthFunction_t tw)
{
string s = getWrappedLine_remaining;
// Check if the mouse is inside the given area
bool minigame_hud_mouse_in(vector pos, vector sz);
+// show spectator list above the board
+void minigame_show_allspecs(vector boardpos, vector boardsize);
+
// Like drawstring, but wrapping words to fit maxwidth
// returns the size of the drawn area
// align selects the string alignment (0 = left, 0.5 = center, 1 = right)
minigame_drawcolorcodedstring_wrapped(mySize_x,win_pos,
victory_text, winfs, panel_fg_alpha, DRAWFLAG_NORMAL, 0.5);
}
+
+ minigame_show_allspecs(bd_boardpos, bd_boardsize);
}
c4_boardpos = pos;
c4_boardsize = mySize;
- string allspecs = "";
- float allspecs_width = 0;
- float max_allspecs_width = c4_boardsize.x;
- float max_current_spec_width = hud_fontsize.x * 5;
- float allspecs_lines = 2;
-
minigame_hud_simpleboard(pos,mySize,minigame_texture("c4/board_under"));
drawpic(pos, minigame_texture("c4/board_over"), mySize, '1 1 1', 1, 0);
minigame_texture(strcat("c4/piece",ftos(e.team))),
tile_size, '1 1 1'*icon_color, panel_fg_alpha, DRAWFLAG_NORMAL );
}
-
- if (allspecs_width >= 0 && e.classname == "minigame_player" && e.team == C4_SPECTATOR_TEAM)
- {
- string current_spec = ColorTranslateRGB(entcs_GetName(e.minigame_playerslot - 1));
- current_spec = textShortenToWidth(current_spec, max_current_spec_width, hud_fontsize, stringwidth_colors);
- if (allspecs != "")
- current_spec = strcat(", ", current_spec);
- else
- current_spec = current_spec;
-
- allspecs_width = stringwidth(allspecs, true, hud_fontsize);
-
- float max_width = max_allspecs_width * allspecs_lines - max_current_spec_width;
- if (allspecs_width + stringwidth(current_spec, true, hud_fontsize) < max_width)
- allspecs = strcat(allspecs, current_spec);
- else
- {
- // current_spec doesn't fit in the list
- allspecs = strcat(allspecs, ", ...");
- allspecs_width = -1; // skip remaining spectators
- }
- }
}
if ( active_minigame.minigame_flags & C4_TURN_WIN )
winfs, panel_fg_alpha, DRAWFLAG_NORMAL, 0.5);
}
- if (allspecs != "")
- {
- pos = c4_boardpos;
- pos.y -= panel_bg_border + hud_fontsize.y * (1.25 + allspecs_lines + 0.5);
- minigame_drawstring_wrapped(max_allspecs_width, pos, _("Spectators:"), hud_fontsize * 1.25, '0.85 0.47 0.42', panel_fg_alpha, DRAWFLAG_NORMAL, 0);
-
- pos.y += hud_fontsize.y * 1.25;
- minigame_drawcolorcodedstring_wrapped(max_allspecs_width, pos, allspecs, hud_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL, 0);
- }
+ minigame_show_allspecs(c4_boardpos, c4_boardsize);
}
sprintf(_("%s^7 won the game!"), pname),
winfs, panel_fg_alpha, DRAWFLAG_NORMAL, 0.5);
}
+
+ minigame_show_allspecs(nmm_boardpos, nmm_boardsize);
}
// Required function, draw the game status panel
}
}
+
+ minigame_show_allspecs(pos, mySize);
}
// Required function, draw the game status panel
sprintf(_("%s^7 won the game!"), pname),
winfs, panel_fg_alpha, DRAWFLAG_NORMAL, 0.5);
}
+
+ minigame_show_allspecs(pp_boardpos, pp_boardsize);
}
strcat(_("Game over!"), " ", remaining_text),
winfs, panel_fg_alpha, DRAWFLAG_NORMAL, 0.5);
}
+
+ minigame_show_allspecs(ps_boardpos, ps_boardsize);
}
tile_size, '1 1 1'*icon_color, panel_fg_alpha, DRAWFLAG_NORMAL );
}
}
+
+ minigame_show_allspecs(ttt_boardpos, ttt_boardsize);
}
vector tile_size = '48 48 0';
entity e;
- string allspecs = "";
FOREACH_MINIGAME_ENTITY(e)
{
if ( e.classname == "minigame_player" && e.team != TTT_SPECTATOR_TEAM )
drawstring(mypos,ftos(e.minigame_flags),tile_size,
'0.7 0.84 1', panel_fg_alpha, DRAWFLAG_NORMAL);
}
-
- if (e.classname == "minigame_player" && e.team == TTT_SPECTATOR_TEAM)
- {
- string current_spec = "";
-
- string cmpctString = entcs_GetName(e.minigame_playerslot - 1);
- if (strlennocol(cmpctString) > 8)
- {
- int new_length = textLengthUpToLength(cmpctString, 8, strlennocol);
- cmpctString = strcat(substring(cmpctString, 0, new_length), "..");
- }
- if (strlen(allspecs) > 0)
- current_spec = strcat(",", cmpctString);
- else
- current_spec = cmpctString;
- if (strlen(allspecs) < 90)
- allspecs = strcat(allspecs, current_spec);
- }
- }
- if (strlen(allspecs) > 0)
- {
- pos_y = pos_y * 0.3;
- pos_x = pos_x * 0.41;
-
- ts = minigame_drawstring_wrapped(mySize_x * 1.7, pos, "Spectators: ", '14 14 0', '0.85 0.47 0.42', panel_fg_alpha, DRAWFLAG_NORMAL, 0);
- pos_y += 14;
- ts = minigame_drawcolorcodedstring_wrapped(mySize_x * 1.7, pos, allspecs, hud_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL, 0);
}
}