Репозиторий ALT Linux backports/2.4
Последнее обновление: 9 июля 2008 | Пакетов: 497 | Посещений: 1492769
 поиск   регистрация   авторизация 
 
Группа :: Игры/Стратегия
Пакет: freeciv

 Главная   Изменения   Спек   Патчи   Загрузить   Bugs and FR 

Патч: freeciv-2.0.0-alt-reveal.patch


diff -uprk.orig freeciv-2.0.0.orig/server/commands.c freeciv-2.0.0/server/commands.c
--- freeciv-2.0.0.orig/server/commands.c	2005-04-01 08:19:33 +0400
+++ freeciv-2.0.0/server/commands.c	2005-04-25 18:24:10 +0400
@@ -356,6 +356,10 @@ const struct command commands[] = {
    "rfcstyle",
    N_("Switch server output between 'RFC-style' and normal style."), NULL
   },
+  {"revealmap",	ALLOW_HACK, ALLOW_HACK,
+   "revealmap <player-name>",
+   N_("Reveal map for given player."), NULL
+  },
   {"serverid",	ALLOW_INFO, ALLOW_INFO,
    "serverid",
    N_("Simply returns the id of the server."),
diff -uprk.orig freeciv-2.0.0.orig/server/commands.h freeciv-2.0.0/server/commands.h
--- freeciv-2.0.0.orig/server/commands.h	2005-04-01 08:19:33 +0400
+++ freeciv-2.0.0/server/commands.h	2005-04-25 18:25:24 +0400
@@ -79,6 +79,7 @@ enum command_id {
 
   /* undocumented */
   CMD_RFCSTYLE,
+  CMD_REVEAL_MAP,
   CMD_SRVID,
 
   /* pseudo-commands: */
diff -uprk.orig freeciv-2.0.0.orig/server/stdinhand.c freeciv-2.0.0/server/stdinhand.c
--- freeciv-2.0.0.orig/server/stdinhand.c	2005-04-16 00:20:55 +0400
+++ freeciv-2.0.0/server/stdinhand.c	2005-04-25 18:13:26 +0400
@@ -94,6 +94,7 @@ static bool take_command(struct connecti
 static bool detach_command(struct connection *caller, char *name, bool check);
 static bool start_command(struct connection *caller, char *name, bool check);
 static bool end_command(struct connection *caller, char *str, bool check);
+static bool reveal_map_command(struct connection *caller, char *name, bool check);
 
 enum vote_type {
   VOTE_NONE, VOTE_UNUSED, VOTE_YES, VOTE_NO
@@ -3089,6 +3090,24 @@ static bool detach_command(struct connec
   return res;
 }
 
+static bool reveal_map_command(struct connection *caller, char *name, bool check)
+{
+  enum m_pre_result match_result;
+  struct player *pplayer = find_player_by_name_prefix(name, &match_result);
+
+  if (pplayer) {
+    if (check) {
+      return TRUE;
+    }
+    map_know_all(pplayer);
+    cmd_reply(CMD_REVEAL_MAP, caller, C_OK,
+	      _("Map revealed for player '%s'."), pplayer->name);
+    return TRUE;
+  }
+  cmd_reply_no_such_player(CMD_REVEAL_MAP, caller, name, match_result);
+  return FALSE;
+}
+
 /**************************************************************************
   After a /load is completed, a reply is sent to all connections to tell
   them about the load.  This information is used by the conndlg to
@@ -3513,6 +3532,8 @@ bool handle_stdin_input(struct connectio
     return start_command(caller, arg, check);
   case CMD_END_GAME:
     return end_command(caller, arg, check);
+  case CMD_REVEAL_MAP:
+    return reveal_map_command(caller, arg, check);
   case CMD_NUM:
   case CMD_UNRECOGNIZED:
   case CMD_AMBIGUOUS:
 
design & coding: Vladimir Lettiev aka crux © 2004-2005