예제 #1
0
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;
	}
}
예제 #2
0
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;
}
예제 #3
0
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();
}
예제 #4
0
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;
}
예제 #5
0
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");
}
예제 #6
0
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;

}
예제 #7
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();

}
예제 #8
0
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");

}