Script.cpp
资源名称:XLT.rar [点击查看]
上传用户:yunyi28
上传日期:2021-04-25
资源大小:6978k
文件大小:5k
源码类别:
分形几何
开发平台:
Visual C++
- #include "Script.h"
- #include "Data.h"
- bool LoadTreeTypes(char *tree_path)
- {
- FILE *pTree = NULL;
- char line[MAX_LINE_SIZE]; //当前行
- char *token = NULL; //用于字符串处理
- pTree = fopen(tree_path,"r");
- if(pTree == NULL)
- {
- MessageBox(NULL,NULL,"Open ini file Failed",NULL);
- return false;
- }
- while (!feof(pTree)) //文件结束,退出处理
- {
- fgets(line,MAX_LINE_SIZE,pTree);
- if(strstr(line,"#End")) //读到"#End",退出处理
- {
- break;
- }
- //忽略注释行
- else if(strstr(line,"//"))
- {continue;}
- else if(strstr(line,"@TreeType"))
- {
- TreeType t;
- while(!strstr(line,"@/TreeType"))
- {
- fgets(line,MAX_LINE_SIZE,pTree);
- if(strstr(line,"Name"))
- {
- token=strtok(line," ");
- token=strtok(NULL," ");
- strcpy(t.name,token);
- }
- if(strstr(line,"base0"))
- {
- token=strtok(line," ");
- token=strtok(NULL," ");
- t.ti.base[0] = token;
- }
- else if(strstr(line,"base1"))
- {
- token=strtok(line," ");
- token=strtok(NULL," ");
- t.ti.base[1] = token;
- }
- else if(strstr(line,"base2"))
- {
- token=strtok(line," ");
- token=strtok(NULL," ");
- t.ti.base[2] = token;
- }
- else if(strstr(line,"numBase"))
- {
- token=strtok(line," ");
- token=strtok(NULL," ");
- t.ti.numBase = atoi(token);
- }
- else if(strstr(line,"maxAlpha"))
- {
- token=strtok(line," ");
- token=strtok(NULL," ");
- t.ti.maxAlpha = atoi(token);
- }
- else if(strstr(line,"minAlpha"))
- {
- token=strtok(line," ");
- token=strtok(NULL," ");
- t.ti.minAlpha = atoi(token);
- }
- else if(strstr(line,"maxBeta"))
- {
- token=strtok(line," ");
- token=strtok(NULL," ");
- t.ti.maxBeta = atoi(token);
- }
- else if(strstr(line,"minBeta"))
- {
- token=strtok(line," ");
- token=strtok(NULL," ");
- t.ti.minBeta = atoi(token);
- }
- else if(strstr(line,"depth"))
- {
- token=strtok(line," ");
- token=strtok(NULL," ");
- t.ti.depth = atoi(token);
- }
- else if(strstr(line,"radius"))
- {
- token=strtok(line," ");
- token=strtok(NULL," ");
- t.ti.r= atof(token);
- }
- else if(strstr(line,"rfade"))
- {
- token=strtok(line," ");
- token=strtok(NULL," ");
- t.ti.rfade= atof(token);
- }
- else if(strstr(line,"length"))
- {
- token=strtok(line," ");
- token=strtok(NULL," ");
- t.ti.l = atof(token);
- }
- else if(strstr(line,"lfade"))
- {
- token=strtok(line," ");
- token=strtok(NULL," ");
- t.ti.lfade = atof(token);
- }
- else if(strstr(line,"bfade"))
- {
- token=strtok(line," ");
- token=strtok(NULL," ");
- t.ti.bfade = atof(token);
- }
- else if(strstr(line,"sizeleaf"))
- {
- token=strtok(line," ");
- token=strtok(NULL," ");
- t.ti.sizeleaf = atof(token);
- }
- else{continue;}
- }
- treeType.push_back(t);
- continue;
- }
- }
- fclose(pTree);
- return true;
- }
- bool LoadTreePos(char *treePos_path)
- {
- FILE *pTreePos = NULL;
- char line[MAX_LINE_SIZE]; //当前行
- char *token = NULL; //用于字符串处理
- int x,y,z; //坐标
- pTreePos = fopen(treePos_path,"r");
- if(pTreePos == NULL)
- {
- MessageBox(NULL,NULL,"Open ini file Failed",NULL);
- return false;
- }
- while (!feof(pTreePos)) //文件结束,退出处理
- {
- fgets(line,MAX_LINE_SIZE,pTreePos);
- if(strstr(line,"#End")) //读到"#End",退出处理
- {
- break;
- }
- //忽略注释行
- else if(strstr(line,"//"))
- {continue;}
- else if(strstr(line,"@Tree"))
- {
- TreeInfo *ti;
- while(!strstr(line,"@/Tree"))
- {
- fgets(line,MAX_LINE_SIZE,pTreePos);
- if(strstr(line,"Position"))
- {
- token=strtok(line," ");
- token=strtok(NULL," ");
- x = atoi(token);
- token = strtok(NULL," ");
- z = atoi(token);
- y = 0;
- }
- else if(strstr(line,"Type"))
- {
- token=strtok(line," ");
- token=strtok(NULL," ");
- list<TreeType>::iterator i=treeType.begin();
- while(i!=treeType.end())
- {
- if(strstr(i->name,token))
- {
- ti = &(i->ti);
- Tree *tr = new Tree();
- tr->center.x = x;
- tr->center.y = y;
- tr->center.z = z;
- tr->InitTree(ti);
- tr->InitTreeInfo();
- tr->BuildTree();
- trees.push_back(*tr);
- break;
- }
- i++;
- }
- if(strstr(i->name,token))
- {
- ti = &(i->ti);
- Tree *tr = new Tree();
- tr->center.x = x;
- tr->center.y = y;
- tr->center.z = z;
- tr->InitTree(ti);
- tr->InitTreeInfo();
- tr->BuildTree();
- trees.push_back(*tr);
- break;
- }
- }
- else {continue;}
- }
- continue;
- }
- }
- fclose(pTreePos);
- return true;
- }