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

Diff of /enigma/src/oxyd.cc

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

revision 1.39 by dheck, Sun May 11 08:45:25 2003 UTC revision 1.40 by dheck, Mon May 12 22:54:16 2003 UTC
# Line 59  namespace Line 59  namespace
59          LevelPack_Oxyd (OxydVersion ver, DatFile *dat, int idx_start, int idx_end);          LevelPack_Oxyd (OxydVersion ver, DatFile *dat, int idx_start, int idx_end);
60    
61          // LevelPack interface          // LevelPack interface
62          string name() const;          virtual string get_name() const;
63          size_t size() const { return nlevels; }          size_t size() const { return nlevels; }
64    
65          bool load_level (size_t index);          bool load_level (size_t index);
# Line 76  namespace Line 76  namespace
76          virtual Stone *make_stone (int type, int x, int y);          virtual Stone *make_stone (int type, int x, int y);
77          virtual Item *make_item (int type);          virtual Item *make_item (int type);
78    
79            Level *get_level() const { return m_level; }
80    
81      private:      private:
82          // Private methods          // Private methods
83          void load_floor (const Level &level);          void load_floor (const Level &level);
# Line 506  LevelPack_Oxyd::LevelPack_Oxyd (OxydVers Line 508  LevelPack_Oxyd::LevelPack_Oxyd (OxydVers
508          else          else
509              Log << "Error parsing level at index " << i << ": " << msg << endl;              Log << "Error parsing level at index " << i << ": " << msg << endl;
510      }      }
511      Log << "Levelpack '" << name() << "' has " << nlevels << " levels." << endl;      Log << "Levelpack '" << get_name() << "' has " << nlevels << " levels." << endl;
512  }  }
513    
514    
515    
516  string  string
517  LevelPack_Oxyd::name() const  LevelPack_Oxyd::get_name() const
518  {  {
519      static char *names1p[] = {      static char *names1p[] = {
520          "Oxyd 1", "Oxyd magnum", "Magnum Gold", "Per.Oxyd", "Oxyd extra"          "Oxyd 1", "Oxyd magnum", "Magnum Gold", "Per.Oxyd", "Oxyd extra"
# Line 611  LevelPack_Oxyd::make_stone (int type, in Line 613  LevelPack_Oxyd::make_stone (int type, in
613      default:      default:
614          // No special case -> get Stone from map          // No special case -> get Stone from map
615          const char *name = stone_map[type];          const char *name = stone_map[type];
616          if (name == 0)          if (name == 0) {
617              fprintf (stderr, "Unknown stone %X\n", type);              fprintf (stderr, "Unknown stone %X\n", type);
618          st = MakeStone (name ? name : "st-dummy");              st = MakeStone ("st-dummy");
619            }
620            else if (name[0] != '\0') { // ignore if name==""
621                st = MakeStone (name);
622            }
623      }      }
624      return st;      return st;
625  }  }
# Line 718  LevelPack_Oxyd::load_level (size_t index Line 724  LevelPack_Oxyd::load_level (size_t index
724      Level level;      Level level;
725    
726      if (!parseLevel (m_datfile->getLevel(level_index[index]), &level, &msg)) {      if (!parseLevel (m_datfile->getLevel(level_index[index]), &level, &msg)) {
727          Log << "Could not load " << name() << " level #" << index+1          Log << "Could not load " << get_name() << " level #" << index+1
728              << ":\n  " << msg;              << ":\n  " << msg;
729          return false;          return false;
730      }      }
# Line 750  LevelPack_Oxyd::get_info (size_t index) Line 756  LevelPack_Oxyd::get_info (size_t index)
756      static LevelInfo info ("oxyd", "Oxyd", "Dongleware");      static LevelInfo info ("oxyd", "Oxyd", "Dongleware");
757    
758      char name[200];      char name[200];
759      sprintf (name, "%s #%d", this->name().c_str(), index+1);      sprintf (name, "%s #%d", get_name().c_str(), index+1);
760      info.name = name;      info.name = name;
761    
762      char filename[200];      char filename[200];
763      sprintf (filename, "Import %s %d", this->name().c_str(), index);      sprintf (filename, "Import %s %d", get_name().c_str(), index);
764      info.filename = filename;      info.filename = filename;
765    
766      return &info;      return &info;
# Line 813  LP_Oxyd1::LP_Oxyd1 (DatFile *dat, bool t Line 819  LP_Oxyd1::LP_Oxyd1 (DatFile *dat, bool t
819      stone_map[0x38] = "st-oneway-n";      stone_map[0x38] = "st-oneway-n";
820      stone_map[0x39] = "st-oneway-s";      stone_map[0x39] = "st-oneway-s";
821      stone_map[0x3e] = "st-window";      stone_map[0x3e] = "st-window";
822      stone_map[0x3f] = "st-magic";      stone_map[0x3f] = ""; // "st-magic";
823      stone_map[0x40] = "st-magic";      stone_map[0x40] = ""; // "st-magic";
824      stone_map[0x41] = "st-magic";      stone_map[0x41] = ""; // "st-magic";
825  //    stone_map[0x42] = "st-stoneimpulse";  //    stone_map[0x42] = "st-stoneimpulse";
826    
827      stone_map[0x44] = "st-laser-s";      stone_map[0x44] = "st-laser-s";
# Line 888  LP_Oxyd1::make_stone (int type, int x, i Line 894  LP_Oxyd1::make_stone (int type, int x, i
894      return st ? st : LevelPack_Oxyd::make_stone(type, x, y);      return st ? st : LevelPack_Oxyd::make_stone(type, x, y);
895  }  }
896    
897    
898  //----------------------------------------  //----------------------------------------
899  // PerOxyd level pack  // PerOxyd level pack
900  //----------------------------------------  //----------------------------------------
# Line 956  LP_PerOxyd::LP_PerOxyd (DatFile *dat, bo Line 963  LP_PerOxyd::LP_PerOxyd (DatFile *dat, bo
963      stone_map[0x76] = "st-invisible";      stone_map[0x76] = "st-invisible";
964      stone_map[0x79] = "st-white1";      stone_map[0x79] = "st-white1";
965      stone_map[0x7a] = "st-black1";      stone_map[0x7a] = "st-black1";
966        stone_map[0x7d] = "st-yinyang1";
967        stone_map[0x7e] = "st-break_acwhite";
968        stone_map[0x7f] = "st-break_acblack";
969      stone_map[0x8c] = "st-rock3";      stone_map[0x8c] = "st-rock3";
970      stone_map[0x91] = "st-rotator-left";      stone_map[0x91] = "st-rotator-left";
971      stone_map[0x92] = "st-rotator-right";      stone_map[0x92] = "st-rotator-right";
# Line 969  LP_PerOxyd::make_stone (int type, int x, Line 979  LP_PerOxyd::make_stone (int type, int x,
979  {  {
980      Stone *st = 0;      Stone *st = 0;
981      switch (type) {      switch (type) {
982        case 0x39: case 0x3a: case 0x3b:
983            // Create magic stones only if they are absolutely necessary
984            if (get_level()->getRequireMagicPiece()) {
985                char *names[] = { "st-magic", "st-magic", "st-magic" };
986                st = MakeStone (names[type - 0x39]);
987            }
988            break;
989      case 0x51: st = MakeStone("st-puzzle"); st->set_attrib("connections", 7); break;      case 0x51: st = MakeStone("st-puzzle"); st->set_attrib("connections", 7); break;
990      case 0x52: st = MakeStone("st-puzzle"); st->set_attrib("connections", 4); break;      case 0x52: st = MakeStone("st-puzzle"); st->set_attrib("connections", 4); break;
991      case 0x53: st = MakeStone("st-puzzle"); st->set_attrib("connections", 10); break;      case 0x53: st = MakeStone("st-puzzle"); st->set_attrib("connections", 10); break;
# Line 986  LP_PerOxyd::make_stone (int type, int x, Line 1003  LP_PerOxyd::make_stone (int type, int x,
1003      return st;      return st;
1004  }  }
1005    
1006    
1007  //----------------------------------------  //----------------------------------------
1008  // Oxyd Magnum level pack  // Oxyd Magnum level pack
1009  //----------------------------------------  //----------------------------------------

Legend:
Removed from v.1.39  
changed lines
  Added in v.1.40

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