Removed additional ConsoleCommandReceiver interface. Console is now 100% squirrel.
authorChristoph Sommer <mail@christoph-sommer.de>
Sat, 20 Jan 2007 15:31:01 +0000 (15:31 +0000)
committerChristoph Sommer <mail@christoph-sommer.de>
Sat, 20 Jan 2007 15:31:01 +0000 (15:31 +0000)
SVN-Revision: 4611

src/console.cpp
src/console.hpp
src/player_status.cpp
src/player_status.hpp

index 422e247..3059132 100644 (file)
@@ -256,14 +256,6 @@ Console::autocomplete()
 
   std::list<std::string> cmds;
 
-  // append all known CCRs to list
-  for (std::map<std::string, std::list<ConsoleCommandReceiver*> >::iterator i = commands.begin(); i != commands.end(); i++) {
-    std::string cmdKnown = i->first;
-    if (cmdKnown.substr(0, prefix.length()) == prefix) {
-      cmds.push_back(cmdKnown);
-    }
-  }
-
   ready_vm();
 
   // append all keys of the current root table to list
@@ -364,48 +356,17 @@ Console::parse(std::string s)
   // ignore if it's an internal command
   if (consoleCommand(command,args)) return;
 
-  // look up registered ccr
-  std::map<std::string, std::list<ConsoleCommandReceiver*> >::iterator i = commands.find(command);
-  if ((i == commands.end()) || (i->second.size() == 0)) {
-    try {
-      execute_script(s);
-    } catch(std::exception& e) {
-      addLines(e.what());
-    }
-    return;
+  try {
+    execute_script(s);
+  } catch(std::exception& e) {
+    addLines(e.what());
   }
 
-  // send command to the most recently registered ccr
-  ConsoleCommandReceiver* ccr = i->second.front();
-  if (ccr->consoleCommand(command, args) != true) log_warning << "Sent command to registered ccr, but command was unhandled" << std::endl;
 }
 
 bool
-Console::consoleCommand(std::string command, std::vector<std::string> arguments)
+Console::consoleCommand(std::string /*command*/, std::vector<std::string> /*arguments*/)
 {
-  if (command == "ccrs") {
-    if (arguments.size() != 1) {
-      log_info << "Usage: ccrs <command>" << std::endl;
-      return true;
-    }
-    std::map<std::string, std::list<ConsoleCommandReceiver*> >::iterator i = commands.find(arguments[0]);
-    if ((i == commands.end()) || (i->second.size() == 0)) {
-      log_info << "unknown command: \"" << arguments[0] << "\"" << std::endl;
-      return true;
-    }
-
-    std::ostringstream ccr_list;
-    std::list<ConsoleCommandReceiver*> &ccrs = i->second;
-    std::list<ConsoleCommandReceiver*>::iterator j;
-    for (j = ccrs.begin(); j != ccrs.end(); j++) {
-      if (j != ccrs.begin()) ccr_list << ", ";
-      ccr_list << "[" << *j << "]";
-    }
-
-    log_info << "registered ccrs for \"" << arguments[0] << "\": " << ccr_list.str() << std::endl;
-    return true;
-  }
-
   return false;
 }
 
@@ -501,40 +462,6 @@ Console::draw(DrawingContext& context)
   context.pop_transform();
 }
 
-void
-Console::registerCommand(std::string command, ConsoleCommandReceiver* ccr)
-{
-  commands[command].push_front(ccr);
-}
-
-void
-Console::unregisterCommand(std::string command, ConsoleCommandReceiver* ccr)
-{
-  std::map<std::string, std::list<ConsoleCommandReceiver*> >::iterator i = commands.find(command);
-  if ((i == commands.end()) || (i->second.size() == 0)) {
-    log_warning << "Command \"" << command << "\" not associated with a command receiver. Not dissociated." << std::endl;
-    return;
-  }
-  std::list<ConsoleCommandReceiver*>::iterator j = find(i->second.begin(), i->second.end(), ccr);
-  if (j == i->second.end()) {
-    log_warning << "Command \"" << command << "\" not associated with given command receiver. Not dissociated." << std::endl;
-    return;
-  }
-  i->second.erase(j);
-}
-
-void
-Console::unregisterCommands(ConsoleCommandReceiver* ccr)
-{
-  for (std::map<std::string, std::list<ConsoleCommandReceiver*> >::iterator i = commands.begin(); i != commands.end(); i++) {
-    std::list<ConsoleCommandReceiver*> &ccrs = i->second;
-    std::list<ConsoleCommandReceiver*>::iterator j;
-    while ((j = find(ccrs.begin(), ccrs.end(), ccr)) != ccrs.end()) {
-      ccrs.erase(j);
-    }
-  }
-}
-
 Console* Console::instance = NULL;
 ConsoleStreamBuffer Console::inputBuffer;
 ConsoleStreamBuffer Console::outputBuffer;
index 15d9791..83ea2fe 100644 (file)
@@ -61,9 +61,6 @@ public:
   void toggle(); /**< display the console if hidden, hide otherwise */
 
   bool hasFocus(); /**< true if characters should be sent to the console instead of their normal target */
-  void registerCommand(std::string command, ConsoleCommandReceiver* ccr); /**< associate command with the given CCR */
-  void unregisterCommand(std::string command, ConsoleCommandReceiver* ccr); /**< dissociate command and CCR */
-  void unregisterCommands(ConsoleCommandReceiver* ccr); /**< dissociate all commands of given CCR */
 
   template<typename T> static bool string_is(std::string s) {
     std::istringstream iss(s);
@@ -89,7 +86,6 @@ private:
   std::list<std::string> history; /**< command history. New lines get added to back. */
   std::list<std::string>::iterator history_position; /**< item of command history that is currently displayed */
   std::list<std::string> lines; /**< backbuffer of lines sent to the console. New lines get added to front. */
-  std::map<std::string, std::list<ConsoleCommandReceiver*> > commands; /**< map of console commands and a list of associated ConsoleCommandReceivers */
 
   std::auto_ptr<Surface> background; /**< console background image */
   std::auto_ptr<Surface> background2; /**< second, moving console background image */
@@ -138,19 +134,4 @@ class ConsoleStreamBuffer : public std::stringbuf
     }
 };
 
-class ConsoleCommandReceiver
-{
-public:
-  virtual ~ConsoleCommandReceiver()
-  {
-    Console::instance->unregisterCommands(this);
-  }
-
-  /**
-   * callback from Console; return false if command was unknown,
-   * true otherwise
-   */
-  virtual bool consoleCommand(std::string command, std::vector<std::string> arguments) = 0;
-};
-
 #endif
index 44512a1..8279e17 100644 (file)
@@ -48,8 +48,6 @@ PlayerStatus::PlayerStatus()
   reset();
 
   coin_surface.reset(new Surface("images/engine/hud/coins-0.png"));
-
-  Console::instance->registerCommand("coins", this);
 }
 
 PlayerStatus::~PlayerStatus()
@@ -171,16 +169,3 @@ PlayerStatus::operator= (const PlayerStatus& other)
   max_score_multiplier = other.max_score_multiplier;
 }
 
-bool
-PlayerStatus::consoleCommand(std::string command, std::vector<std::string> arguments)
-{
-  if (command == "coins") {
-    if ((arguments.size() < 1) || (!Console::string_is<int>(arguments[0]))) {
-      log_info << "Usage: coins <number>" << std::endl;
-    } else {
-      coins = Console::string_to<int>(arguments[0]);
-    }
-    return true;
-  }
-  return false;
-}
index bf5cc27..e231774 100644 (file)
@@ -41,7 +41,7 @@ class DrawingContext;
  * This class memorizes player status between different game sessions (for
  * example when switching maps in the worldmap)
  */
-class PlayerStatus : public Serializable, public ConsoleCommandReceiver
+class PlayerStatus : public Serializable
 {
 public:
   PlayerStatus();
@@ -54,8 +54,6 @@ public:
 
   void draw(DrawingContext& context);
 
-  bool consoleCommand(std::string command, std::vector<std::string> arguments); /**< callback from Console; return false if command was unknown, true otherwise */
-
   int  coins;
   BonusType bonus;
   int max_fire_bullets; /**< maximum number of fire bullets in play */