Пример #1
0
void processKeyboardEvent(SDL_Event *event, Console *console) {
    char currentChar = (char)event->key.keysym.sym;

    switch(currentChar) {
        case SDLK_RETURN: consoleNewLine(console); break;
        case SDLK_BACKSPACE: consoleDeleteChar(console); break;
        default: consoleAddChar(console, currentChar, true); break;
    }
}
Пример #2
0
void consoleAddsCharProperly() {
    printf("* Console adds char properly...");
    Console *console = (Console *) malloc(sizeof(Console));
    memset(console, 0, sizeof(Console));

    console->buffer = (char *) malloc(100 * sizeof(char));
    memset(console->buffer, 0, 100 * sizeof(char));

    consoleAddChar(console, 'a');

    assert(*(console->buffer + 0) == 'a');
    assert(console->offset == 1);

    free(console->buffer);
    free(console);
    printf(" [OK]\n");
}
Пример #3
0
//=========================================================
void UInterface::keyboardFunc(unsigned char key, int x, int y, int console)
{
    cout << "Key: " << key << endl;

    if (console == DOWN)
    {
		if (key == con->conChar)
			if (!con->conAni)
				con->conAni = 1;

		consoleAddChar (con, (char)key);
		glutPostRedisplay ();
		return;
    }

    //TODO all these will be replaced by a toolbar later in life
    switch (key) {
	case C_CONSOLECHAR:
		con->conAni = !con->conAni;
		break;
	case 'u': //Raise terrain
		keymode = 1;
		break;
	case 'r': //Zone residential
		keymode = 2; zone_type = 1;
		break;
	case 'c': //Zone commercial
		keymode = 2; zone_type = 2;
		break;
	case 'i': //Zone industrial
		keymode = 2; zone_type = 3;
		break;
	case 'x': //Dezone
		keymode = 2; zone_type = 0;
		break;
	case 'p': //Place power line
		keymode = 3;
		break;
	case 'd': //Lower terrain
		keymode = 4;
		break;
	case 'l': //Level terrain
		keymode = 5;
		break;
	case 'k': //Blow up	
		keymode = 6;
		break;
	case 't': //Road
		keymode = 7;
		break;
	case 'g': //Grid lines
		  lines = !lines;
		  break;
	case 'f': //Ground
		  ground = !ground;
		break;

	case 's': //Structures
		  structs = !structs;
		break;

	case 'q': //Last Cell
		  lastSquare = !lastSquare;
		  break;

	case 'z': //Intermediete Runs
		  interM = !interM;
		  cout << "Turning off intermediete!" << endl;
		  break;		  

	//Movement stuff
	case '[':
		parent->setRotate(parent->getRotate()-4);
		if (parent->getRotate()<0) parent->setRotate(360);
		break;
	case ']':
		parent->setRotate(parent->getRotate()+4);
		if (parent->getRotate()>360) parent->setRotate(0);
		break;
	case '-':
		if (parent->getCamY() >= 4.0f) {
			parent->setCamY(parent->getCamY()- 0.3f);
			parent->setLookY(parent->getLookY() - 0.3f);
			parent->setRotate(parent->getRotate()); //Update positions
		}
		break;
	case '=':
		if (parent->getCamY() <= 15.0f) {
			parent->setCamY(parent->getCamY() + 0.3f);
			parent->setLookY(parent->getLookY() + 0.3f);
			parent->setRotate(parent->getRotate()); //Update positions
		}
		
		break;
	case '8': //"Forward"
		parent->setLookX( parent->getLookX() - (float)sin(parent->getRotate()*PI/180) *0.3f);
        	parent->setLookZ( parent->getLookZ() - (float)cos(parent->getRotate()*PI/180) *0.3f);
		parent->setRotate(parent->getRotate()); //Update positions
		break;
	case '2': //"Back"
		parent->setLookX( parent->getLookX() + (float)sin(parent->getRotate()*PI/180) *0.3f);
        	parent->setLookZ( parent->getLookZ() + (float)cos(parent->getRotate()*PI/180) *0.3f);
		parent->setRotate(parent->getRotate()); //Update positions
		break;

	case '4': //Left
		parent->setLookX( parent->getLookX() + (float)sin(parent->getRotate()*PI/180) *0.3f);
        	parent->setLookZ( parent->getLookZ() - (float)cos(parent->getRotate()*PI/180) *0.3f);
		parent->setRotate(parent->getRotate()); //Update positions
		break;
   }
}