/[enigma]/enigma/src/game.cc
ViewVC logotype

Diff of /enigma/src/game.cc

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.30 by dheck, Thu Jun 19 22:18:25 2003 UTC revision 1.31 by reallysoft, Fri Jun 20 08:36:43 2003 UTC
# Line 259  Game::advance_level(int mode) Line 259  Game::advance_level(int mode)
259      }      }
260  }  }
261    
262  static string displayedLevelInfo (const LevelInfo *info)  static string displayedLevelInfo (const LevelInfo *info)
263  {  {
264      string displayed = (info->name.empty()) ?      string displayed = (info->name.empty()) ?
265          "Another nameless level" : string("\"")+info->name+"\"";          "Another nameless level" : string("\"")+info->name+"\"";
266      if (!info->author.empty())      if (!info->author.empty())
267          displayed += "  by "+info->author;          displayed += "  by "+info->author;
268      return displayed;      return displayed;
269  }  }
# Line 360  Game::tick(double dtime) Line 360  Game::tick(double dtime)
360  bool  bool
361  Game::load_level(int ilevel)  Game::load_level(int ilevel)
362  {  {
363        // first set default compatibility mode
364        // (may be overidden by load_level (from lua))
365        {
366            const LevelInfo *info     = level_pack->get_info(ilevel);
367            enigma::GameCompatibility = info->type;
368        }
369    
370      if (level_pack->load_level (ilevel))      if (level_pack->load_level (ilevel))
371      {      {
372          icurrent_level=ilevel;          icurrent_level=ilevel;
# Line 681  namespace Line 688  namespace
688      Game game_inst;      Game game_inst;
689  }  }
690    
691  bool   enigma::ConserveLevel     = false;  bool     enigma::ConserveLevel     = false;
692  bool   enigma::AllowTogglePlayer = false;  bool     enigma::AllowTogglePlayer = false;
693  bool   enigma::ShowMoves         = false;  bool     enigma::ShowMoves         = false;
694  double enigma::Brittleness       = 0;  GameType enigma::GameCompatibility = GAMET_ENIGMA;
695  double enigma::SlopeForce        = 0;  double   enigma::Brittleness       = 0;
696  double enigma::SlopeForce2       = 0;  double   enigma::SlopeForce        = 0;
697  double enigma::FrictionFactor    = 0;  double   enigma::SlopeForce2       = 0;
698  double enigma::ElectricForce     = 0;  double   enigma::FrictionFactor    = 0;
699    double   enigma::ElectricForce     = 0;
700    
701    
702  void enigma::GameReset()  void enigma::GameReset()
# Line 763  void enigma::RestartGame() { Line 771  void enigma::RestartGame() {
771  void enigma::QuitGame() {  void enigma::QuitGame() {
772      game_inst.quit();      game_inst.quit();
773  }  }
774    
775    
776    void enigma::SetCompatibility(const char *version) {
777        static const char *versionName[GAMET_COUNT+1] = {
778            "enigma", // same indices as enum GameType
779            "oxyd1",
780            "per.oxyd",
781            "oxyd.extra",
782            "oxyd.magnum",
783            0
784        };
785    
786        GameType type = GAMET_UNKNOWN;
787        for (int v = 0; v<GAMET_COUNT; ++v) {
788            if (0 == strcmp(version, versionName[v])) {
789                type = GameType(v);
790                break;
791            }
792        }
793    
794        if (type == GAMET_UNKNOWN) {
795            fprintf(stderr, "Invalid compatibility mode '%s' (ignored. using enigma behavior)\n", version);
796            fprintf(stderr, "Valid modes:");
797            for (int v = 0; v<GAMET_COUNT; ++v)
798                fprintf(stderr, " %s", versionName[v]);
799            fprintf(stderr, "\n");
800            type = GAMET_ENIGMA;
801        }
802    
803        GameCompatibility = type;
804    }

Legend:
Removed from v.1.30  
changed lines
  Added in v.1.31

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26