/[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.25 by mhawlisch, Sat Apr 5 20:22:12 2003 UTC revision 1.26 by mhawlisch, Sun Apr 6 17:03:51 2003 UTC
# Line 231  char *LevelPack_Oxyd::common_item_map[25 Line 231  char *LevelPack_Oxyd::common_item_map[25
231      "it-seed",                  // 0x24      "it-seed",                  // 0x24
232      "it-spring2",               // 0x25      "it-spring2",               // 0x25
233      "it-spring1",               // 0x26      "it-spring1",               // 0x26
234      0,                          // 0x27      "it-spring2",                          // 0x27
235      "it-magnet",                // 0x28      "it-magnet",                // 0x28
236      0,                          // 0x29      0,                          // 0x29
237      0,                          // 0x2a      0,                          // 0x2a
238      "it-shogun-s",              // 0x2b      0,              // 0x2b
239      "it-shogun-l",              // 0x2c      0,              // 0x2c
240      0,                          // 0x2d      0,                          // 0x2d
241      0,                          // 0x2e      0,                          // 0x2e
242      "it-wormhole",              // 0x2f      "it-wormhole",              // 0x2f
# Line 332  char *LevelPack_Oxyd::common_stone_map[2 Line 332  char *LevelPack_Oxyd::common_stone_map[2
332      0,                          // 0x24      0,                          // 0x24
333      0,                          // 0x25      0,                          // 0x25
334      0,                          // 0x26      0,                          // 0x26
335      0,                  // 0x27      0,                          // 0x27
336      "st-switch",                // 0x28      0,                          // 0x28
337      0,                          // 0x29      0,                          // 0x29
338      0,                          // 0x2a      0,                          // 0x2a
339      0,                          // 0x2b      0,                          // 0x2b
340      0,                          // 0x2c      0,                          // 0x2c
341      "st-floppy",                // 0x2d      0,                          // 0x2d
342      0,                          // 0x2e      0,                          // 0x2e
343      "st-death",                 // 0x2f      "st-death",                 // 0x2f
344      "st-death_invisible",       // 0x30      0,       // 0x30
345      "st-oneway_black-w",        // 0x31      "st-oneway_black-w",        // 0x31
346      "st-oneway_black-e",        // 0x32      "st-oneway_black-e",        // 0x32
347      "st-oneway_black-n",        // 0x33      "st-oneway_black-n",        // 0x33
# Line 489  LevelPack_Oxyd::LevelPack_Oxyd (OxydVers Line 489  LevelPack_Oxyd::LevelPack_Oxyd (OxydVers
489          stone_map[0x26] = "st-glass3";          stone_map[0x26] = "st-glass3";
490          stone_map[0x29] = "st-rock3_hole"; // see 0x12          stone_map[0x29] = "st-rock3_hole"; // see 0x12
491          stone_map[0x2b] = "st-wood";          stone_map[0x2b] = "st-wood";
         stone_map[0x2c] = "st-switch";  
492          stone_map[0x34] = "st-death";          stone_map[0x34] = "st-death";
493          stone_map[0x35] = "st-death_invisible";          stone_map[0x35] = "st-death_invisible";
494          stone_map[0x42] = "st-stoneimpulse";          stone_map[0x42] = "st-stoneimpulse";
495          stone_map[0x68] = "st-bombs";          stone_map[0x68] = "st-bombs";
         stone_map[0x6c] = "st-shogun-s";  
496          stone_map[0x75] = "st-rock2";          stone_map[0x75] = "st-rock2";
497          stone_map[0x76] = "st-invisible";          stone_map[0x76] = "st-invisible";
498          stone_map[0x8a] = "st-stone1";          stone_map[0x8a] = "st-stone1";
# Line 520  LevelPack_Oxyd::LevelPack_Oxyd (OxydVers Line 518  LevelPack_Oxyd::LevelPack_Oxyd (OxydVers
518    
519          item_map[0x25] = "it-seed";          item_map[0x25] = "it-seed";
520          item_map[0x36] = "it-springboard";          item_map[0x36] = "it-springboard";
521            item_map[0x4c] = "it-springboard";
522    
523          stone_map[0x1a] = "st-grate1";          stone_map[0x1a] = "st-grate1";
524          stone_map[0x1f] = "st-brick";          stone_map[0x1f] = "st-brick";
525            stone_map[0x20] = "st-rock1";
526          stone_map[0x23] = "st-woven";          stone_map[0x23] = "st-woven";
527          stone_map[0x24] = "st-marble";          stone_map[0x24] = "st-marble";
528          stone_map[0x25] = "st-glass1";          stone_map[0x25] = "st-glass1";
529          stone_map[0x26] = "st-glass3";          stone_map[0x26] = "st-glass3";
530          stone_map[0x27] = "st-glass1";          stone_map[0x27] = "st-glass1";
531          stone_map[0x2b] = "st-wood";          stone_map[0x2b] = "st-wood";
532            stone_map[0x34] = "st-death";
533          stone_map[0x35] = "st-death_invisible";          stone_map[0x35] = "st-death_invisible";
534            stone_map[0x43] = "st-actorimpulse_invisible";
535          stone_map[0x68] = "st-bombs";          stone_map[0x68] = "st-bombs";
         stone_map[0x6c] = "st-shogun-s";  
536          stone_map[0x6d] = "st-stoneimpulse";          stone_map[0x6d] = "st-stoneimpulse";
537          stone_map[0x8a] = "st-stone1";          stone_map[0x8a] = "st-stone1";
538          stone_map[0x8c] = "st-white1";          stone_map[0x8c] = "st-white1";
# Line 628  LevelPack_Oxyd::set_item (const Level &l Line 629  LevelPack_Oxyd::set_item (const Level &l
629          it->set_attrib("type", 3);          it->set_attrib("type", 3);
630          break;          break;
631    
632        case 0x2b: it = MakeItem("it-trigger");
633            snprintf( buf, sizeof(buf), "o_%d_%d", x, y);
634            it->set_attrib("invisible", 1);
635            NameObject(it, buf);
636            break;
637      case 0x2c: it = MakeItem("it-shogun-s");      case 0x2c: it = MakeItem("it-shogun-s");
638          snprintf( buf, sizeof(buf), "O_%d_%d", x, y);          snprintf( buf, sizeof(buf), "O_%d_%d", x, y);
639          NameObject(it, buf);          NameObject(it, buf);
640          break;          break;
641    
642      case 0x40: it = MakeItem("st-trigger");      case 0x63: it = MakeItem("it-trigger");
643          snprintf( buf, sizeof(buf), "O_%d_%d", x, y);          snprintf( buf, sizeof(buf), "O_%d_%d", x, y);
644          NameObject(it, buf);          NameObject(it, buf);
645          break;          break;
# Line 670  LevelPack_Oxyd::set_stone (const Level & Line 676  LevelPack_Oxyd::set_stone (const Level &
676      char buf[20] = "";      char buf[20] = "";
677    
678      switch( type) {      switch( type) {
679      case 0x00: break;           // ignore      case 0x00: return;  // ignore no real stones
680            break;
681    
682      case 0x01:  // Oxyd stones of different colors      case 0x01:  // Oxyd stones of different colors
683      case 0x02:      case 0x02:
# Line 692  LevelPack_Oxyd::set_stone (const Level & Line 699  LevelPack_Oxyd::set_stone (const Level &
699          st->set_attrib("flavor", "a");          st->set_attrib("flavor", "a");
700          break;          break;
701    
     case 0x28: st = MakeStone("st-switch");  
         snprintf( buf, sizeof(buf), "O_%d_%d", x, y);  
         NameObject(st, buf);  
         break;  
   
     case 0x2b: st = MakeStone("st-fourswitch");  
         snprintf( buf, sizeof(buf), "O_%d_%d", x, y);  
         NameObject(st, buf);  
         break;  
   
     case 0x2c: st = MakeStone("st-switch");  
         snprintf( buf, sizeof(buf), "O_%d_%d", x, y);  
         NameObject(st, buf);  
         break;  
   
     case 0x2d: st = MakeStone("st-floppy");  
         snprintf( buf, sizeof(buf), "O_%d_%d", x, y);  
         NameObject(st, buf);  
         break;  
   
     case 0x3e: st = MakeStone("st-laser");  
         snprintf( buf, sizeof(buf), "O_%d_%d", x, y);  
         NameObject(st, buf);  
         st->set_attrib("direction", NORTH);  
         break;  
     case 0x3f: st = MakeStone("st-laser");  
         snprintf( buf, sizeof(buf), "O_%d_%d", x, y);  
         NameObject(st, buf);  
         st->set_attrib("direction", SOUTH);  
         break;  
     case 0x40: st = MakeStone("st-laser");  
         snprintf( buf, sizeof(buf), "O_%d_%d", x, y);  
         NameObject(st, buf);  
         st->set_attrib("direction", EAST);  
         break;  
   
     case 0x46:  
         st = MakeStone("st-laser");  
         snprintf( buf, sizeof(buf), "O_%d_%d", x, y);  
         NameObject(st, buf);  
         st->set_attrib("direction", EAST);  
         break;  
   
     case 0x51: st = MakeStone("st-puzzle");  
         st->set_attrib("connections", 7);  
         break;  
     case 0x52: st = MakeStone("st-puzzle");  
         st->set_attrib("connections", 4);  
         break;  
     case 0x53: st = MakeStone("st-puzzle");  
         st->set_attrib("connections", 10);  
         break;  
     case 0x54: st = MakeStone("st-puzzle");  
         st->set_attrib("connections",13);  
         break;  
     case 0x55: st = MakeStone("st-puzzle");  
         st->set_attrib("connections", 6);  
         break;  
     case 0x56: st = MakeStone("st-puzzle");  
         st->set_attrib("connections",11);  
         break;  
     case 0x57: st = MakeStone("st-puzzle");  
         st->set_attrib("connections", 9);  
         break;  
     case 0x58: st = MakeStone("st-puzzle");  
         st->set_attrib("connections", 3);  
         break;  
     case 0x59: st = MakeStone("st-puzzle");  
         st->set_attrib("connections", 2);  
         break;  
     case 0x5a: st = MakeStone("st-puzzle");  
         st->set_attrib("connections", 5);  
         break;  
     case 0x5b: st = MakeStone("st-puzzle");  
         st->set_attrib("connections", 16);  
         break;  
     case 0x5c: st = MakeStone("st-puzzle");  
         st->set_attrib("connections", 1);  
         break;  
   
702      case 0x73:      case 0x73:
703          st = MakeStone("st-door-h");          st = MakeStone("st-door-h");
704          snprintf( buf, sizeof(buf), "D_%d_%d", x, y);          snprintf( buf, sizeof(buf), "D_%d_%d", x, y);
# Line 783  LevelPack_Oxyd::set_stone (const Level & Line 710  LevelPack_Oxyd::set_stone (const Level &
710          NameObject(st, buf);          NameObject(st, buf);
711          break;          break;
712    
713      default:      default: ;
714          {      }
715              const char *name = stone_map[type];      if (st == 0) {  // handle stones that are different between the oxyd versions
716              if( name == 0)          switch (m_version) {
717                  fprintf(stderr, "Unknown stone %X\n",type);          case OxydVersion_Oxyd1:
718              st = MakeStone (name ? name : "st-dummy");              switch( type) {
719                case 0x2c: st = MakeStone("st-switch");
720                    snprintf( buf, sizeof(buf), "O_%d_%d", x, y);
721                    NameObject(st, buf);
722                    break;
723                case 0x44: st = MakeStone("st-laser-n");
724                    snprintf( buf, sizeof(buf), "O_%d_%d", x, y);
725                    NameObject(st, buf);
726                    break;
727                case 0x45: st = MakeStone("st-laser-s");
728                    snprintf( buf, sizeof(buf), "O_%d_%d", x, y);
729                    NameObject(st, buf);
730                    break;
731                case 0x46:
732                    st = MakeStone("st-laser-e");
733                    snprintf( buf, sizeof(buf), "O_%d_%d", x, y);
734                    NameObject(st, buf);
735                    break;
736                case 0x49: st = MakeStone("st-pmirror");
737                    st->set_attrib("movable", "0");
738                    st->set_attrib("transparent", "0");
739                    st->set_attrib("orientation", 1);
740                    break;
741                case 0x50: st = MakeStone("st-pmirror");
742                    st->set_attrib("movable", "0");
743                    st->set_attrib("transparent", "0");
744                    st->set_attrib("orientation", 4);
745                    break;
746                case 0x53: st = MakeStone("st-3mirror");
747                    st->set_attrib("movable", "0");
748                    st->set_attrib("transparent", "0");
749                    st->set_attrib("orientation", 4);
750                    break;
751                case 0x54: st = MakeStone("st-3mirror");
752                    st->set_attrib("movable", "0");
753                    st->set_attrib("transparent", "0");
754                    st->set_attrib("orientation", 3);
755                    break;
756                case 0x56: st = MakeStone("st-3mirror");
757                    st->set_attrib("movable", "0");
758                    st->set_attrib("transparent", "0");
759                    st->set_attrib("orientation", 1);
760                    break;
761                case 0x55: st = MakeStone("st-3mirror");
762                    st->set_attrib("movable", "0");
763                    st->set_attrib("transparent", "0");
764                    st->set_attrib("orientation", 2);
765                    break;
766                case 0x6e: st = MakeStone("st-laserswitch");
767                    snprintf( buf, sizeof(buf), "O_%d_%d", x, y);
768                    NameObject(st, buf);
769                    break;
770                default: ;
771                }
772                break;
773            case OxydVersion_PerOxyd:
774                switch( type) {
775                case 0x2b:  st = MakeStone("st-fourswitch");
776                    snprintf( buf, sizeof(buf), "O_%d_%d", x, y);
777                    NameObject(st, buf);
778                    break;
779                case 0x51: st = MakeStone("st-puzzle");
780                    st->set_attrib("connections", 7);
781                    break;
782                case 0x52: st = MakeStone("st-puzzle");
783                    st->set_attrib("connections", 4);
784                    break;
785                case 0x53: st = MakeStone("st-puzzle");
786                    st->set_attrib("connections", 10);
787                    break;
788                case 0x54: st = MakeStone("st-puzzle");
789                    st->set_attrib("connections",13);
790                    break;
791                case 0x55: st = MakeStone("st-puzzle");
792                    st->set_attrib("connections", 6);
793                    break;
794                case 0x56: st = MakeStone("st-puzzle");
795                    st->set_attrib("connections",11);
796                    break;
797                case 0x57: st = MakeStone("st-puzzle");
798                    st->set_attrib("connections", 9);
799                    break;
800                case 0x58: st = MakeStone("st-puzzle");
801                    st->set_attrib("connections", 3);
802                    break;
803                case 0x59: st = MakeStone("st-puzzle");
804                    st->set_attrib("connections", 2);
805                    break;
806                case 0x5a: st = MakeStone("st-puzzle");
807                    st->set_attrib("connections", 5);
808                    break;
809                case 0x5b: st = MakeStone("st-puzzle");
810                    st->set_attrib("connections", 16);
811                    break;
812                case 0x5c: st = MakeStone("st-puzzle");
813                    st->set_attrib("connections", 1);
814                    break;
815                default: ;
816                }
817                break;
818            case OxydVersion_OxydExtra:
819                switch( type) {
820                default: ;
821                }
822                break;
823            case OxydVersion_OxydMagnum:
824            case OxydVersion_OxydMagnumGold:
825                switch( type) {
826                case 0x2c: st = MakeStone("st-switch");
827                    snprintf( buf, sizeof(buf), "O_%d_%d", x, y);
828                    NameObject(st, buf);
829                    break;
830                case 0x2d: st = MakeStone("st-floppy");
831                    snprintf( buf, sizeof(buf), "O_%d_%d", x, y);
832                    NameObject(st, buf);
833                    break;
834                case 0x30: st = MakeStone("st-key_a");
835                    snprintf( buf, sizeof(buf), "O_%d_%d", x, y);
836                    NameObject(st, buf);
837                    break;
838                case 0x46:
839                    st = MakeStone("st-laser-e");
840                    snprintf( buf, sizeof(buf), "O_%d_%d", x, y);
841                    NameObject(st, buf);
842                    break;
843                case 0x47: st = MakeStone("st-pmirror");
844                    st->set_attrib("movable", "0");
845                    st->set_attrib("transparent", "0");
846                    st->set_attrib("orientation", 3);
847                    break;
848                case 0x49: st = MakeStone("st-pmirror");
849                    st->set_attrib("movable", "0");
850                    st->set_attrib("transparent", "0");
851                    st->set_attrib("orientation", 1);
852                    break;
853                case 0x4c: st = MakeStone("st-pmirror");
854                    st->set_attrib("movable", "1");
855                    st->set_attrib("transparent", "1");
856                    st->set_attrib("orientation", 4);
857                    break;
858                case 0x4f: st = MakeStone("st-pmirror");
859                    st->set_attrib("movable", "0");
860                    st->set_attrib("transparent", "1");
861                    st->set_attrib("orientation", 3);
862                    break;
863                case 0x51: st = MakeStone("st-pmirror");
864                    st->set_attrib("movable", "0");
865                    st->set_attrib("transparent", "1");
866                    st->set_attrib("orientation", 1);
867                    break;
868                case 0x52: st = MakeStone("st-pmirror");
869                    st->set_attrib("movable", "0");
870                    st->set_attrib("transparent", "1");
871                    st->set_attrib("orientation", 2);
872                    break;
873                case 0x54: st = MakeStone("st-3mirror");
874                    st->set_attrib("movable", "0");
875                    st->set_attrib("transparent", "0");
876                    st->set_attrib("orientation", 3);
877                    break;
878                case 0x56: st = MakeStone("st-3mirror");
879                    st->set_attrib("movable", "0");
880                    st->set_attrib("transparent", "0");
881                    st->set_attrib("orientation", 1);
882                    break;
883                case 0x5d: st = MakeStone("st-puzzle");
884                    st->set_attrib("connections", 9);
885                    break;
886                case 0x5e: st = MakeStone("st-puzzle");
887                    st->set_attrib("connections", 3);
888                    break;
889                case 0x44: st = MakeStone("st-laser-n");
890                    snprintf( buf, sizeof(buf), "O_%d_%d", x, y);
891                    NameObject(st, buf);
892                    break;
893                default: ;
894                }
895                break;
896          }          }
897      }      }
898    
899        if (st == 0) { // No special programming -> get Stone from map
900            const char *name = stone_map[type];
901            if( name == 0)
902                fprintf(stderr, "Unknown stone %X\n",type);
903            st = MakeStone (name ? name : "st-dummy");
904        }
905        
906      if (st)      if (st)
907          SetStone (GridPos(x, y), st);          SetStone (GridPos(x, y), st);
908  }  }
# Line 869  LevelPack_Oxyd::connect_signals (const L Line 981  LevelPack_Oxyd::connect_signals (const L
981              const SignalLocation &recipient =              const SignalLocation &recipient =
982                  level.getRecipient(sender, 0);                  level.getRecipient(sender, 0);
983    
984              Object *s_o = GetNamedObject( sender_name);              GridPos p = GridPos(sender.getX(), sender.getY());
985                Object *s_o = GetStone(p);//GetNamedObject( sender_name);
986    
987              char recipient_name[9];              char recipient_name[9];
988              char *signalname = "trigger";              char *signalname = "trigger";

Legend:
Removed from v.1.25  
changed lines
  Added in v.1.26

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