예제 #1
0
// LOAD
void loadBlockData(ifstream& file, GridBlock* gb)
{
	char cont;
	file >> cont;	
	int v[7];
	file >> v[6];
	gb->setGround(Object::create(ObjType(GROUND), v[6]));
	
	for(file >> cont; !file.eof() && cont != 'g'; file >> cont){
		if(cont == 'o'){
			file >> v[0];		// modelType
			file >> v[1];		// objType
			file >> v[6];		// index
			if(v[0] == CONST_MODEL)
				gb->addObject(Object::create(ObjType(v[1]), v[6]));
			else if(v[0] == SIDE_MODEL){
				file >> v[2];	// side
				gb->addObject(SideObject::create(ObjType(v[1]), Side(v[2]), v[6]));
			}
			else{
예제 #2
0
/* Evaluate a macro and return the resulting parse tree */
VyParseTree* EvalMacro(VyMacro** mac, VyObject* args, int numArgs){
	/* Check the macro arguments */
	char* err = CheckFunctionArguments(mac[0]->args, mac[0]->numArgs, args, numArgs);
	if(err != NULL){
		HandleError(ToObject(CreateError(err, NULL)));	
	}

	/* Evaluate it as a native function */
	VyObject obj = EvalNativeFunctionOrMacro(mac[0]->args, mac[0]->numArgs, mac[0]->code, mac[0]->scp, args, numArgs);
	if(ObjType(obj) == VALERROR){
		HandleError(obj);	
	}
	VyParseTree* tree = ObjToParseTree(obj);

	return tree;
}
예제 #3
0
LevelMap::LevelMap() : BaseScreen(true){
	//--- GENERAL ---//	
	for(GLshort i = 0; i < MAP_BLOCK[X]; ++i){
		for(GLshort j = 0; j < MAP_BLOCK[Y]; ++j){
			gridBlock[i][j] = new GridBlock(Coord2d<GLshort>(i, j));	
			gridBlock[i][j]->setGround(Object::create(ObjType(GROUND), 0));	
		}
	}		
	cursor.setCursorMode(MOVE);
	selectBlock(gridBlock[0][0]);
	
	
	//TEST MATERIAL
	{/*
	  for(GLshort i = 0; i < MAP_BLOCK[X]; ++i){
	  for(GLshort j = 0; j < MAP_BLOCK[Y]; ++j)
	  gridBlock[i][j]->setGround(Object::create(ObjType(GROUND), 0));
	  }
	  
	  // Building 1 - west side
	  gridBlock[4][4]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  gridBlock[3][5]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[3][5]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[3][5]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[3][5]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(LEFT_SIDE), 0));
	  
	  gridBlock[3][6]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[3][6]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[3][6]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[3][6]->setDoor(DoorObject::create(ObjType(DOOR), Side(LEFT_SIDE), Inner(OUTER), Hinge(RIGHT_HINGE), 0));
	  
	  gridBlock[2][7]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[2][7]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[2][7]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[2][7]->setDoor(DoorObject::create(ObjType(DOOR), Side(LEFT_SIDE), Inner(OUTER), Hinge(LEFT_HINGE), 0));
	  
	  gridBlock[2][8]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[2][8]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[2][8]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[2][8]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(LEFT_SIDE), 0));
	  
	  gridBlock[1][9]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  // Building 1 - south side
	  gridBlock[4][4]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[4][5]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[4][5]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[4][5]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[4][5]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[5][6]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[5][7]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[5][7]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[5][7]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[5][7]->setDoor(DoorObject::create(ObjType(DOOR), Side(RIGHT_SIDE), Inner(OUTER), Hinge(LEFT_HINGE), 0));
	  
	  gridBlock[6][8]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[6][9]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[6][9]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[6][9]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[6][9]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(RIGHT_SIDE), 0));		
	  
	  gridBlock[7][10]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  // Building 1 - east side
	  gridBlock[7][11]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  gridBlock[7][12]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[7][12]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[7][12]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[7][12]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(LEFT_SIDE), 0));
	  
	  
	  gridBlock[6][13]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[6][13]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[6][13]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[6][13]->setDoor(DoorObject::create(ObjType(DOOR), Side(LEFT_SIDE), Inner(INNER), Hinge(RIGHT_HINGE), 0));
	  
	  gridBlock[6][14]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[6][14]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[6][14]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[6][14]->setDoor(DoorObject::create(ObjType(DOOR), Side(LEFT_SIDE), Inner(INNER), Hinge(LEFT_HINGE), 0));
	  
	  gridBlock[5][15]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[5][15]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[5][15]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[5][15]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(LEFT_SIDE), 0));
	  
	  gridBlock[5][16]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  // Building 1 - north side
	  gridBlock[1][10]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[1][11]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[1][11]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[1][11]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[1][11]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(RIGHT_SIDE), 0));			
	  
	  gridBlock[2][12]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[2][13]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[2][13]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[2][13]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[2][13]->setDoor(DoorObject::create(ObjType(DOOR), Side(RIGHT_SIDE), Inner(INNER), Hinge(LEFT_HINGE), 0));
	  
	  gridBlock[3][14]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[3][15]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[3][15]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[3][15]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[3][15]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(RIGHT_SIDE), 0));	
	  
	  gridBlock[4][16]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  
	  
	  // Building 2 - west side
	  gridBlock[9][20]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  gridBlock[9][19]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[9][19]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[9][19]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[9][19]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(LEFT_SIDE), 0));
	  
	  gridBlock[10][18]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  gridBlock[10][17]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  gridBlock[8][21]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  gridBlock[8][22]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[8][22]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[8][22]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[8][22]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(LEFT_SIDE), 0));
	  
	  gridBlock[7][23]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  gridBlock[7][24]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  gridBlock[6][25]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[6][25]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[6][25]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[6][25]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(LEFT_SIDE), 0));
	  
	  gridBlock[6][26]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  gridBlock[5][27]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[5][27]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[5][27]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[5][27]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(LEFT_SIDE), 0));
	  
	  gridBlock[5][28]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  // Building 2 - south side - west
	  gridBlock[10][17]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[11][18]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[11][18]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[11][18]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[11][18]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(RIGHT_SIDE), 0));	
	  
	  gridBlock[11][19]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[11][19]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[11][19]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[11][19]->setDoor(DoorObject::create(ObjType(DOOR), Side(RIGHT_SIDE), Inner(OUTER), Hinge(LEFT_HINGE), 0));
	  
	  gridBlock[12][20]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[12][20]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[12][20]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[12][20]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[12][21]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  // Building 2 - inner east side
	  gridBlock[13][22]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  gridBlock[12][23]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  gridBlock[12][24]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[12][24]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[12][24]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[12][24]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(LEFT_SIDE), 0));
	  
	  gridBlock[11][25]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  gridBlock[11][26]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  gridBlock[10][27]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[10][27]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[10][27]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[10][27]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(LEFT_SIDE), 0));
	  
	  gridBlock[10][28]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  gridBlock[9][29]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  // Building 2 - inner south side
	  gridBlock[9][30]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  gridBlock[9][31]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[10][32]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[10][32]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[10][32]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[10][32]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[10][33]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[11][34]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[11][34]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[11][34]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[11][34]->setDoor(DoorObject::create(ObjType(DOOR), Side(RIGHT_SIDE), Inner(OUTER), Hinge(LEFT_HINGE), 0));
	  
	  gridBlock[11][35]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[11][35]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[11][35]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[11][35]->setDoor(DoorObject::create(ObjType(DOOR), Side(RIGHT_SIDE), Inner(OUTER), Hinge(RIGHT_HINGE), 0));
	  
	  gridBlock[12][36]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[12][37]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[12][37]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[12][37]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[12][37]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[13][38]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  gridBlock[13][39]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  // Building 2 - inner west side
	  gridBlock[14][39]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  gridBlock[15][38]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  gridBlock[15][37]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[15][37]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[15][37]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[15][37]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(LEFT_SIDE), 0));
	  
	  gridBlock[16][36]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  gridBlock[16][35]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  gridBlock[17][34]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[17][34]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[17][34]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[17][34]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(LEFT_SIDE), 0));
	  
	  gridBlock[17][33]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  gridBlock[18][32]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  // Building 2 - south side - east
	  gridBlock[18][32]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[18][33]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[18][33]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[18][33]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[18][33]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(RIGHT_SIDE), 0));	
	  
	  gridBlock[19][34]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[19][34]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[19][34]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[19][34]->setDoor(DoorObject::create(ObjType(DOOR), Side(RIGHT_SIDE), Inner(OUTER), Hinge(LEFT_HINGE), 0));
	  
	  gridBlock[19][35]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[19][35]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[19][35]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[19][35]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[20][36]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  // Building 2 - east side
	  gridBlock[20][37]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  gridBlock[20][38]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  gridBlock[19][39]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[19][39]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[19][39]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[19][39]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(LEFT_SIDE), 0));
	  
	  gridBlock[19][40]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  gridBlock[18][41]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  gridBlock[18][42]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[18][42]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[18][42]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[18][42]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(LEFT_SIDE), 0));
	  
	  gridBlock[17][43]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  gridBlock[17][44]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  gridBlock[16][45]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[16][45]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[16][45]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[16][45]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(LEFT_SIDE), 0));
	  
	  gridBlock[16][46]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  gridBlock[15][47]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[15][47]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[15][47]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[15][47]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(LEFT_SIDE), 0));
	  
	  gridBlock[15][48]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  // Building 2 - north side
	  gridBlock[4][29]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  gridBlock[5][30]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[5][31]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[5][31]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[5][31]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[5][31]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[6][32]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  gridBlock[6][33]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[7][34]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[7][34]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[7][34]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[7][34]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[7][35]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  gridBlock[8][36]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[8][37]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[8][37]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[8][37]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[8][37]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[9][38]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  gridBlock[9][39]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[10][40]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[10][40]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[10][40]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[10][40]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[10][41]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  gridBlock[11][42]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[11][43]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[11][43]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[11][43]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[11][43]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[12][44]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  gridBlock[12][45]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[13][46]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[13][46]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[13][46]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[13][46]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[13][47]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  gridBlock[14][48]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  
	  
	  // Building 3 - west side  +14 +6
	  GLshort i3 = 14;
	  GLshort j3 = 6;
	  gridBlock[4+i3][4+j3]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  gridBlock[3+i3][5+j3]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[3+i3][5+j3]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[3+i3][5+j3]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[3+i3][5+j3]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(LEFT_SIDE), 0));
	  
	  gridBlock[3+i3][6+j3]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));		
	  gridBlock[2+i3][7+j3]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  gridBlock[2+i3][8+j3]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[2+i3][8+j3]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[2+i3][8+j3]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[2+i3][8+j3]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(LEFT_SIDE), 0));
	  
	  gridBlock[1+i3][9+j3]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  // Building 3 - south side
	  gridBlock[4+i3][4+j3]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[4+i3][5+j3]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[4+i3][5+j3]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[4+i3][5+j3]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[4+i3][5+j3]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[5+i3][6+j3]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[5+i3][7+j3]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[5+i3][7+j3]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[5+i3][7+j3]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[5+i3][7+j3]->setDoor(DoorObject::create(ObjType(DOOR), Side(RIGHT_SIDE), Inner(OUTER), Hinge(LEFT_HINGE), 0));
	  
	  gridBlock[6+i3][8+j3]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[6+i3][9+j3]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[6+i3][9+j3]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[6+i3][9+j3]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[6+i3][9+j3]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(RIGHT_SIDE), 0));		
	  
	  gridBlock[7+i3][10+j3]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  // Building 3 - east side
	  gridBlock[7+i3][11+j3]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  gridBlock[7+i3][12+j3]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[7+i3][12+j3]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[7+i3][12+j3]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[7+i3][12+j3]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(LEFT_SIDE), 0));
	  
	  gridBlock[6+i3][13+j3]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  gridBlock[6+i3][14+j3]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  gridBlock[5+i3][15+j3]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(LEFT_SIDE), 0));		
	  gridBlock[5+i3][15+j3]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[5+i3][15+j3]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(LEFT_SIDE), 0));
	  gridBlock[5+i3][15+j3]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(LEFT_SIDE), 0));
	  
	  gridBlock[5+i3][16+j3]->addObject(SideObject::create(ObjType(WALL), Side(LEFT_SIDE), 0));
	  
	  // Building 3 - north side
	  gridBlock[1+i3][10+j3]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[1+i3][11+j3]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[1+i3][11+j3]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[1+i3][11+j3]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[1+i3][11+j3]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(RIGHT_SIDE), 0));			
	  
	  gridBlock[2+i3][12+j3]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[2+i3][13+j3]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[2+i3][13+j3]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[2+i3][13+j3]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[2+i3][13+j3]->setDoor(DoorObject::create(ObjType(DOOR), Side(RIGHT_SIDE), Inner(INNER), Hinge(LEFT_HINGE), 0));
	  
	  gridBlock[3+i3][14+j3]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  
	  gridBlock[3+i3][15+j3]->addObject(SideObject::create(ObjType(FRONT_FRAME), Side(RIGHT_SIDE), 0));		
	  gridBlock[3+i3][15+j3]->addObject(SideObject::create(ObjType(SIDE_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[3+i3][15+j3]->addObject(SideObject::create(ObjType(TOP_FRAME), Side(RIGHT_SIDE), 0));
	  gridBlock[3+i3][15+j3]->addObject(SideObject::create(ObjType(BOTTOM_FRAME), Side(RIGHT_SIDE), 0));	
	  
	  gridBlock[4+i3][16+j3]->addObject(SideObject::create(ObjType(WALL), Side(RIGHT_SIDE), 0));
	  // */}
	
	
	
	//---- DRAW ----//		
	// Pixel store variables
	refresh();
	glGenTextures(1, &screenTex);		
	screenData = malloc(512*512*4);
	
	
	//--- TOUCH ---//
	touchCount = 0;
	drag = false;	
	actionDelay = 0.5;
	timePushed = -1;	
}
예제 #4
0
 ObjType function()
 {
     return ObjType(10, 10);
 }