bool Save::readLine(Ship* mShip, vector<Planet*>& mPlanets) { string line = ""; if (std::getline(*getLoadFile(), line)) { string objectName = line.substr(line.find_first_of("[")+1, line.find_first_of("-") - line.find_first_of("[") - 1); string property = line.substr(line.find_first_of("-") + 1, line.find_first_of("]") - line.find_first_of("-") - 1); line = line.substr(line.find_first_of("=")+1); string value = line.substr(line.find_first_of("=") + 2, line.find_first_of("]") - line.find_first_of("[") - 1); if (!objectName.compare(0, 4, "ship") ) { readShip(mShip, property, value); } else { int id = std::stoi(objectName.substr(objectName.find_first_of("t") + 1)); if (mPlanets.size() <= id) { mPlanets.push_back(new Planet()); mPlanets.back()->setMI(getMI()); } readPlanet(mPlanets.back(), property, value); } return true; } else { return false; } }
GLuint ParserLy::setTexture(char **cp) { GLuint texName; int w = getLoadFile().getInt(cp); int h = getLoadFile().getInt(cp); int imgLength = getLoadFile().getInt(cp); glGenTextures(1, &texName); glBindTexture(GL_TEXTURE_2D, texName); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); // glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, *cp); //glGenerateMipmap (GL_TEXTURE_2D); return texName; }
void Save::loadSave(CIndieLib* mI, Ship*& mShip, vector<Planet*>& mPlanets) { setMI(mI); getLoadFile()->open("../SpaceGame/Saves/quickSave.txt", ios::in); if (!getLoadFile()->is_open()) { writeError(1000, 200, "Save", "Can't open file for reading!"); return; } mShip = new Ship(); mShip->setMI(getMI()); while (readLine(mShip, mPlanets)); getLoadFile()->close(); getMI()->_input->update(); getMI()->_render->beginScene(); getMI()->_entity2dManager->renderEntities2d(); getMI()->_render->endScene(); }
Animation *Movement::loadAnimation(char * fileName) { LOGI("loadAnimation 0"); char folder[]="./sdcard/animationFile/"; char * filePath=getLoadFile().combineChars(folder,fileName); LOGI("aniFile:%s",filePath); char * chars=getLoadFile().getCharsofFile(filePath); Animation *pA=(Animation*)malloc(sizeof(*pA)); pA->frameNum=*(int*)chars; //LOGI("frameNum %d\n", *(ep->pA->frameNum)); chars+=4; pA->frameTime=(float*)chars; //LOGI("frameTime %f\n", *(ep->pA->frameTime)); chars+=4*(pA->frameNum); pA->jointNum=*(int*)chars; //LOGI("jointNum %d\n", *(ep->pA->jointNum)); chars+=4; pA->joints=(Joint*)malloc(sizeof(Joint)*(pA->jointNum)); for(int i=0;i<(pA->jointNum);i++){ pA->joints[i].sn=i; pA->joints[i].posf[0]=(*((float*)chars)); chars+=4; pA->joints[i].posf[1]=(*((float*)chars)); chars+=4; pA->joints[i].posf[2]=(*((float*)chars)); chars+=4; pA->joints[i].Matrix=(float*)chars; chars+=16*4*(pA->frameNum); } //ep->pA->jointMatrixs=(float*)chars; pA->frame=1; pA->direction=1; pA->change_stay=1; LOGI("loadAnimation done"); return pA; }
bool Movement::load() { LOGI("loadAnimation"); char folder[]="./sdcard/animationFile/"; //char * filePath=combineChars(aniPath,fileName); //LOGI("aniFile:%s",filePath); char * chars=getLoadFile().getDataOfAniFile(fileName);//getCharsofFile(filePath); pA=new Animation();//(Animation*)malloc(sizeof(*pA)); pA->id=code; pA->frameNum=*(int*)chars; //LOGI("frameNum %d\n", *(ep->pA->frameNum)); chars+=4; pA->frameTime=(float*)chars; //LOGI("frameTime %f\n", *(ep->pA->frameTime)); chars+=4*(pA->frameNum); pA->jointNum=*(int*)chars; //LOGI("jointNum %d\n", *(ep->pA->jointNum)); chars+=4; pA->joints=(Joint*)malloc(sizeof(Joint)*(pA->jointNum)); pA->joints[0].sn=0; pA->joints[0].posf[0]=(*((float*)chars)); chars+=4; pA->joints[0].posf[1]=(*((float*)chars)); chars+=4; pA->joints[0].posf[2]=(*((float*)chars)); chars+=4; pA->joints[0].Matrix=(float*)chars; chars+=16*4*(pA->frameNum); pA->joints[0].Matrix_1=(float*)chars; chars+=16*4*(pA->frameNum); for(int i=1;i<(pA->jointNum);i++){ pA->joints[i].sn=i; pA->joints[i].posf[0]=(*((float*)chars)); chars+=4; pA->joints[i].posf[1]=(*((float*)chars)); chars+=4; pA->joints[i].posf[2]=(*((float*)chars)); chars+=4; pA->joints[i].Matrix=(float*)chars; chars+=16*4*(pA->frameNum); } //ep->pA->jointMatrixs=(float*)chars; pA->frame=0; pA->direction=1; pA->change_stay=0; LOGI("loadAnimation done"); }
void ParserLy::parse() { if (!gp) return; char folder[]="./sdcard/lyfile/"; //char * filgpath=combineChars(lyPath,pfileName); LOGI("Graph:%s",pfileName); char *data=getLoadFile().getDataOfLyFile(pfileName); //gp->fileData=data;//getCharsofFile(filgpath); //gp->fileData=getCharsofFile(pfileName); //gp->fileData=chars; if(*(data)++!=76) return; //getMtls(&(gp->fileData),gp); getMtls(&(data)); //delete[] data; //gp->fileData=0; data=0; }
void SetScene::onCreate(){ char filgpath[] = "choose7.lyout";//"fight7.lyout";//combineChars(layoutPath, pSceneName); LOGI("Graph2:%s", filgpath); char *data = getLoadFile().getDataOfLyoutFile(filgpath);//getCharsofFile(filgpath); //pGRG->clear(); int dataPos = 0; int NumGraphRace = 0; int NumEntity = 0; int entityNum = 0; int LfileName = 0; dataPos++; dataPos+=sizeof(int);//version NumGraphRace = data[dataPos]; dataPos++; for (int h=0; h<NumGraphRace; h++) { NumEntity=data[dataPos]; dataPos++; LfileName=data[dataPos]; dataPos++; char *strFN=(char*)malloc(LfileName+1); for (int j=0; j<LfileName; j++) { strFN[j]=data[dataPos]; dataPos++; } strFN[LfileName]=0; GraphData *pGD=GraphData::getInstance(strFN);//new GraphData(); //pGD->setFileName(strFN); //pGD->load(); pGD->setBatchs(1); for(int i=0; i<NumEntity; i++) { MyButton *pGTemp = new MyButton(); //MessageBox(_T(chars)); pGTemp->setFileName(strFN); pGTemp->gp=pGD; //pGMain->pGRG->add(gdata2); //gdata2->load(); for (int j=0; j<16; j++) { float f_=*(float*)(data+dataPos); dataPos+=4; pGTemp->pTransform->pTOmatrix->mMatrixQueue[0][j]=f_; } for (int j=0; j<16; j++) { float f_=*(float*)(data+dataPos); dataPos+=4; pGTemp->pTransform->pSOmatrix->mMatrixQueue[0][j]=f_; } for (int j=0; j<16; j++) { float f_=*(float*)(data+dataPos); dataPos+=4; pGTemp->pTransform->pROmatrix->mMatrixQueue[0][j]=f_; } pGTemp->calculateMatrix(); // read type of the role pGTemp->roleType=*(int*)(data+dataPos); dataPos+=4; if(pGTemp->roleType==Graph::ROLE_FIXED0)// bg { pgBackground=pGTemp; } else if(pGTemp->roleType==Graph::ROLE_FIXED1) vButtonAll.push_back(pGTemp); //pGMain->graphList.push_back(gdata2); //dataPos=onShapeRead(gdata2,data,dataPos); } free(strFN); //dataPos+=64; } float *pfca=(float *)(data+dataPos); pCamera=new Camera(); //pCamera->setCamera(pfca[0],pfca[1],pfca[2], pfca[3],pfca[4],pfca[5], pfca[6],pfca[7],pfca[8]); pCamera->setCamera(0.0f,5.0f,13.5f, 0.0f, 1.2f,-3.5f, 0.0f,1.0f,0.0f); //LOGI("c0:%f,%f,%f",pfca[0],pfca[1],pfca[2]); //LOGI("c1:%f,%f,%f",pfca[3],pfca[4],pfca[5]); //LOGI("c2:%f,%f,%f",pfca[6],pfca[7],pfca[8]); pCamera->m_PointVector = pCamera->m_View - pCamera->m_Position; inOutVec1=pCamera->m_PointVector*(1.0f/(float)frameAllGetIn); inOutVec2=-inOutVec1; //for(int i=0;i<6;i++) //{ // vMyButton.push_back(vButtonAll[i]); //} invX=vButtonAll[3]->pTransform->pTOmatrix->mMatrixQueue.back()[12] - vButtonAll[0]->pTransform->pTOmatrix->mMatrixQueue.back()[12]; invY=vButtonAll[3]->pTransform->pTOmatrix->mMatrixQueue.back()[13] - vButtonAll[0]->pTransform->pTOmatrix->mMatrixQueue.back()[13]; invZ=vButtonAll[3]->pTransform->pTOmatrix->mMatrixQueue.back()[14] - vButtonAll[0]->pTransform->pTOmatrix->mMatrixQueue.back()[14]; //pCamera->setCamera(0.5,50,-100, 0,0,0, 0, 1, 0); //dataPos+=9*sizeof(float); sceneNum=vButtonAll.size(); }
void SceneTutorial::onCreate(){ //pg_background=new Graph(); //char fileName[]="skybox3.ly"; //pg_background->setFileName(fileName); //pg_background->load(); //Square* pSquare=new Square(); //vSquare.push_back(pSquare); char filgpath[] = "choose3.lyout";//"fight7.lyout";//combineChars(layoutPath, pSceneName); LOGI("Graph2:%s", filgpath); char *data = getLoadFile().getDataOfLyoutFile(filgpath);//getCharsofFile(filgpath); //pGRG->clear(); int dataPos = 0; int NumGraphRace = 0; int NumEntity = 0; int entityNum = 0; int LfileName = 0; dataPos++; dataPos+=sizeof(int);//version NumGraphRace = data[dataPos]; dataPos++; for (int h=0; h<NumGraphRace; h++) { NumEntity=data[dataPos]; dataPos++; LfileName=data[dataPos]; dataPos++; char *strFN=(char*)malloc(LfileName+1); for (int j=0; j<LfileName; j++) { strFN[j]=data[dataPos]; dataPos++; } strFN[LfileName]=0; GraphData *pGD=GraphData::getInstance(strFN);//new GraphData(); //pGD->setFileName(strFN); //pGD->load(); for(int i=0; i<NumEntity; i++) { OptionGraph *pGTemp = new OptionGraph(); //MessageBox(_T(chars)); pGTemp->setFileName(strFN); pGTemp->gp=pGD; //pGMain->pGRG->add(gdata2); //gdata2->load(); for (int j=0; j<16; j++) { float f_=*(float*)(data+dataPos); dataPos+=4; pGTemp->pTransform->pTOmatrix->mMatrixQueue[0][j]=f_; } for (int j=0; j<16; j++) { float f_=*(float*)(data+dataPos); dataPos+=4; pGTemp->pTransform->pSOmatrix->mMatrixQueue[0][j]=f_; } for (int j=0; j<16; j++) { float f_=*(float*)(data+dataPos); dataPos+=4; pGTemp->pTransform->pROmatrix->mMatrixQueue[0][j]=f_; } pGTemp->calculateMatrix(); // read type of the role pGTemp->roleType=*(int*)(data+dataPos); dataPos+=4; if(pGTemp->roleType==Graph::ROLE_FIXED0)// bg pgBackground=pGTemp; else if(pGTemp->roleType==Graph::ROLE_FIXED1) vgPlanes.push_back(pGTemp); //pGMain->graphList.push_back(gdata2); //dataPos=onShapeRead(gdata2,data,dataPos); } free(strFN); //dataPos+=64; } float *pfca=(float *)(data+dataPos); pCamera=new Camera(); pCamera->setCamera(pfca[0],pfca[1],pfca[2], pfca[3],pfca[4],pfca[5], pfca[6],pfca[7],pfca[8]); //pCamera->setCamera(0.5,50,-100, 0,0,0, 0, 1, 0); dataPos+=9*sizeof(float); LOGI("setCamera 1"); }