void State::kill() { disable(); setCamTarget(NULL); setControlledObject(NULL); setHud(NULL); switchMap(NULL); script()->reset(); }
GameMap* State::loadMap(VFS::File* xmlFile) { ScriptableObject* obj = load(xmlFile); GameMap* m = scriptable_object_cast<GameMap*> (obj); if(m != NULL) { // Object is a map. switchMap(m); } else { // Object is not a map. if(obj != NULL) { // Destroy it. xwarn(obj, "Trying to load a non-map object as a map."); delete obj; } } return m; }
//AVS // rewrited to support multiple keymaps const char *KeyTranslator::TranslateKey(WORD wVirtualKeyCode, DWORD dwControlKeyState) { if ( mapArray.IsEmpty() ) return NULL; TKeyDef ask(NULL, dwControlKeyState, wVirtualKeyCode); // if a keymap switch pressed if ( switchMap(ask) > 0 ) return ""; int i = mapArray[currentKeyMap].map.Find(ask); if ( i != INT_MAX) return mapArray[currentKeyMap].map[i].GetszKey(); // if not found in current keymap if ( currentKeyMap != mainKeyMap ) { i = mapArray[mainKeyMap].map.Find(ask); if ( i != INT_MAX) return mapArray[mainKeyMap].map[i].GetszKey(); }; return NULL; };
/*What will happen when pressed ENTER while standing on chosen area*/ void pMAction(int aChar) { if (strcmp(mapName, "menu") == 0) { switch (aChar) { case 1: break; case 0: useDoor(E, UP); useDoor(F, DOWN); useDoor(H, LEFT); useDoor(G, RIGHT); break; } } else if (strcmp(mapName, "sorting") == 0) { switch (aChar) { case 1: sortData(1, v_order); break; case 2: sortData(2, v_order); break; case 3: sortData(3, v_order); break; case 4: sortData(4, v_order); break; case 5: sortData(5, v_order); break; case O: initializeData(); break; case U: v_order = UP; break; case D: v_order = DOWN; break; /*@*/ case (64-48): switchMap("menu"); break; } } else if (strcmp(mapName, "filtering") == 0) { switch (aChar) { case O: loadGlobalActions(mapName); activateDatabase(movies_database); initializeData(); cMAppearance(U, 0, 0, ' '); cMAppearance(I, 0, 0, ' '); break; case Z: if (action1 == 1 && action2 == FALSE) break; if (action1 != FALSE) { passValue(column1, &action2); teleport (U); openDoor(Q, DOWN); if (action2 != FALSE) cMAppearance(U, 0, 0, '*'); } else { passValue(column1, &action1); teleport (I); openDoor(W, UP); if (action1 != FALSE) cMAppearance(I, 0, 0, '*'); } break; case X: if (action1 == 2 && action2 == FALSE) break; if (action1 != FALSE) { passValue(column2, &action2); teleport (U); openDoor(Q, DOWN); if (action2 != FALSE) cMAppearance(U, 0, 0, '*'); } else { passValue(column2, &action1); teleport (I); openDoor(W, UP); if (action1 != FALSE) cMAppearance(I, 0, 0, '*'); } break; case C: if (action1 == 3 && action2 == FALSE) break; if (action1 != FALSE) { passValue(column3, &action2); teleport (U); openDoor(Q, DOWN); if (action2 != FALSE) cMAppearance(U, 0, 0, '*'); } else { passValue(column3, &action1); teleport (I); openDoor(W, UP); if (action1 != FALSE) cMAppearance(I, 0, 0, '*'); } break; case V: if (action1 == 4 && action2 == FALSE) break; if (action1 == TRUE) { passValue(column4, &action2); teleport (U); openDoor(Q, DOWN); if (action2 != FALSE) cMAppearance(U, 0, 0, '*'); } else { passValue(column4, &action1); teleport (I); openDoor(W, UP); if (action1 != FALSE) cMAppearance(I, 0, 0, '*'); } break; case B: if (action1 == 5 && action2 == FALSE) break; if (action1 != FALSE) { passValue(column5, &action2); teleport (U); openDoor(Q, DOWN); if (action2 != FALSE) cMAppearance(U, 0, 0, '*'); } else { passValue(column5, &action1); teleport (I); openDoor(W, UP); if (action1 != FALSE) cMAppearance(I, 0, 0, '*'); } break; case 6: useDoor(E, RIGHT); break; case 9: switch (action1) { case 1: switch (action2) { case 2: filterData(action1, v_column1, action2, v_column2); break; case 3: filterData(action1, v_column1, action2, v_column3); break; case 4: filterData(action1, v_column1, action2, v_column4); break; case 5: filterData(action1, v_column1, action2, v_column5); break; } break; case 2: switch (action2) { case 1: filterData(action1, v_column2, action2, v_column1); break; case 3: filterData(action1, v_column2, action2, v_column3); break; case 4: filterData(action1, v_column2, action2, v_column4); break; case 5: filterData(action1, v_column2, action2, v_column5); break; } break; case 3: switch (action2) { case 1: filterData(action1, v_column3, action2, v_column1); break; case 2: filterData(action1, v_column3, action2, v_column2); break; case 4: filterData(action1, v_column3, action2, v_column4); break; case 5: filterData(action1, v_column3, action2, v_column5); break; } break; case 4: switch (action2) { case 1: filterData(action1, v_column4, action2, v_column1); break; case 2: filterData(action1, v_column4, action2, v_column2); break; case 3: filterData(action1, v_column4, action2, v_column3); break; case 5: filterData(action1, v_column4, action2, v_column5); break; } break; case 5: switch (action2) { case 1: filterData(action1, v_column5, action2, v_column1); break; case 2: filterData(action1, v_column5, action2, v_column2); break; case 3: filterData(action1, v_column5, action2, v_column3); break; case 4: filterData(action1, v_column5, action2, v_column4); break; } break; } break; /*@*/ case (64-48): switchMap("menu"); break; } } else { perror ("'mapName' out of speck"); SC(mapName); assert(!TRUE); } mapConditions(); }
/*Define here what the action characters on the map will do when entered on their area*/ void pAAction(int aChar) { if (strcmp(mapName, "menu") == 0) { switch (aChar) { case 1: initializeSort(); switchMap("filtering"); break; case 2: initializeSort(); switchMap("sorting"); break; case 3: teleport(aChar); break; case 4: closeProg(); break; } } else if (strcmp(mapName, "sorting") == 0) { switch (aChar) { case A: teleport(B); scrollData(UP); break; case C: teleport(B); scrollData(DOWN); break; } } else if (strcmp(mapName, "filtering") == 0) { switch (aChar) { case 1: teleport(2); scrollData(UP); break; case 3: teleport(2); scrollData(DOWN); break; case 7: closeDoor(Q, DOWN); break; case 8: closeDoor(W, UP); break; } } else { perror ("'mapName' out of speck"); SC(mapName); assert(!TRUE); } }