示例#1
0
void State::kill() {
	disable();
	setCamTarget(NULL);
	setControlledObject(NULL);
	setHud(NULL);
	switchMap(NULL);
	script()->reset();
}
示例#2
0
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;
}
示例#3
0
//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);
    }
}