// 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{
/* 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; }
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; }
ObjType function() { return ObjType(10, 10); }