PageRenderTime 49ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 1ms

/ParamConfig.cpp

https://github.com/ZhuZhengyi/BillardGL
C++ | 356 lines | 250 code | 18 blank | 88 comment | 88 complexity | 78f911fd15e9801b5256a5b937174d0b MD5 | raw file
  1. #include <GL/glut.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include "Namen.h"
  6. #include "ParamConfig.h"
  7. void WriteConfig(){
  8. FILE *f;
  9. #ifndef _WIN32
  10. char dateiname[40];
  11. sprintf(dateiname,"%s/.BillardGL.conf.v7",getenv("HOME"));
  12. f=fopen(dateiname,"w+");
  13. #endif
  14. #ifdef _WIN32
  15. f=fopen("BillardGL.conf.v7","wb+");
  16. #endif
  17. if (f) {
  18. char Player1temp[10];
  19. char Player2temp[10];
  20. char NetworkPlayertemp[10];
  21. for (int i=0;i<10;i++) {
  22. if (Player1[i]==' ') {
  23. Player1temp[i]='%';
  24. } else {
  25. Player1temp[i]=Player1[i];
  26. }
  27. if (Player2[i]==' ') {
  28. Player2temp[i]='%';
  29. } else {
  30. Player2temp[i]=Player2[i];
  31. }
  32. if (NetworkPlayer[i]==' ') {
  33. NetworkPlayertemp[i]='%';
  34. } else {
  35. NetworkPlayertemp[i]=NetworkPlayer[i];
  36. }
  37. }
  38. fprintf(f,"%i\n",TextureSize);
  39. fprintf(f,"%i\n",DisplayTextureSize);
  40. fprintf(f,"%i\n",TableTextureSize);
  41. fprintf(f,"%i\n",BallResolution);
  42. fprintf(f,"%f\n",MouseSpeed);
  43. fprintf(f,"%i\n",InvertX);
  44. fprintf(f,"%i\n",InvertY);
  45. fprintf(f,"%i\n",ScreenResolution);
  46. fprintf(f,"%i\n",ColorDepth);
  47. fprintf(f,"%i\n",Reflections);
  48. fprintf(f,"%i\n",Shadow);
  49. fprintf(f,"%i\n",TexMMM);
  50. fprintf(f,"%i\n",Language);
  51. fprintf(f,"%i\n",ShowFPS);
  52. fprintf(f,"%i\n",AmbientLighting);
  53. fprintf(f,"%i\n",TableLamps);
  54. fprintf(f,"%i\n",GreenLamp);
  55. fprintf(f,"%f\n",EffectVolumeDown);
  56. fprintf(f,"%f\n",MusicVolumeDown);
  57. fprintf(f,"%s\n",Player1temp);
  58. fprintf(f,"%s\n",Player2temp);
  59. fprintf(f,"%s\n",NetworkPlayertemp);
  60. fclose(f);
  61. }
  62. }
  63. void LoadConfig(){
  64. FILE *f;
  65. #ifndef _WIN32
  66. char filename[40]; //filename
  67. sprintf(filename,"%s/.BillardGL.conf.v7",getenv("HOME"));
  68. f=fopen(filename,"r");
  69. #endif
  70. #ifdef _WIN32
  71. f=fopen("BillardGL.conf.v7","rb");
  72. #endif
  73. if (f) {
  74. char Player1temp[10]; //player1temp
  75. char Player2temp[10]; //player2temp
  76. char NetworkPlayertemp[10]; //network_player_temp
  77. fscanf(f,"%i",&TextureSize);
  78. fscanf(f,"%i",&DisplayTextureSize);
  79. fscanf(f,"%i",&TableTextureSize);
  80. fscanf(f,"%i",&BallResolution);
  81. fscanf(f,"%f",&MouseSpeed);
  82. fscanf(f,"%i",&InvertX);
  83. fscanf(f,"%i",&InvertY);
  84. fscanf(f,"%i",&ScreenResolution);
  85. fscanf(f,"%i",&ColorDepth);
  86. fscanf(f,"%i",&Reflections);
  87. fscanf(f,"%i",&Shadow);
  88. fscanf(f,"%i",&TexMMM);
  89. fscanf(f,"%i",&Language);
  90. fscanf(f,"%i",&ShowFPS);
  91. fscanf(f,"%i",&AmbientLighting);
  92. fscanf(f,"%i",&TableLamps);
  93. fscanf(f,"%i",&GreenLamp);
  94. fscanf(f,"%f",&EffectVolumeDown);
  95. fscanf(f,"%f",&MusicVolumeDown);
  96. fscanf(f,"%s",Player1temp);
  97. fscanf(f,"%s",Player2temp);
  98. fscanf(f,"%s",NetworkPlayertemp);
  99. for (int i=0;i<10;i++) {
  100. if (Player1temp[i]=='%') {
  101. Player1[i]=' ';
  102. } else {
  103. Player1[i]=Player1temp[i];
  104. }
  105. if (Player2temp[i]=='%') {
  106. Player2[i]=' ';
  107. } else {
  108. Player2[i]=Player2temp[i];
  109. }
  110. if (NetworkPlayer[i]=='%') {
  111. NetworkPlayer[i]=' ';
  112. } else {
  113. NetworkPlayer[i]=NetworkPlayertemp[i];
  114. }
  115. }
  116. }
  117. }
  118. void GetCommandParam(int argc,char **argv) {
  119. // Titeltext
  120. //#ifndef _WIN32
  121. printf("\n BillardGL (C) 2001, 2002 Tobias Nopper, Stefan Disch, Martina Welte\n\n");
  122. //#endif
  123. //Defaultwerte
  124. TextureSize = 2;
  125. DisplayTextureSize = 1;
  126. TableTextureSize = 2;
  127. BallResolution = 7;
  128. InvertX = 0;
  129. InvertY = 0;
  130. GameType = EIGHT_BALL;
  131. Shadow = 1;
  132. TexMMM = 3;
  133. Epsilon = 0.05;
  134. MouseSpeed = 0.4;
  135. PhysicsFrequenz = 400;
  136. FrictionFactor = 1.2;
  137. GangsFactor = 0.4;
  138. CollisionFactor = 0.95;
  139. ZBufferDelete = 1;
  140. ScreenResolution = 800;
  141. ColorDepth = 16;
  142. Reflections = 0;
  143. Language = 0;
  144. ShowFPS = 0;
  145. AmbientLighting = 1;
  146. TableLamps = 2;
  147. GreenLamp = 0;
  148. FullScreen = 0;
  149. EffectVolumeDown = .5;
  150. MusicVolumeDown = .5;
  151. sprintf(Player1,"Name 1");
  152. sprintf(Player2,"Name 2");
  153. sprintf(NetworkPlayer,"Name");
  154. LoadConfig();
  155. // Einlesen der Kommandozeilenparameter
  156. int i=1;
  157. while (i<argc) {
  158. if (!strcmp(argv[i],"-y")||!strcmp(argv[i],"-inverty")) {
  159. InvertY = 1;
  160. } else if (!strcmp(argv[i],"-x")||!strcmp(argv[i],"-invertx")) {
  161. InvertX = 1;
  162. } else if (!strcmp(argv[i],"-z")||!strcmp(argv[i],"-zbuffer")) {
  163. ZBufferDelete = 0;
  164. } else if (!strcmp(argv[i],"-f")||!strcmp(argv[i],"-fullscreen")) {
  165. FullScreen = 1;
  166. } else if (!strcmp(argv[i],"-w")||!strcmp(argv[i],"-windowed")) {
  167. FullScreen = 0;
  168. } else if (!strcmp(argv[i],"-hq")||!strcmp(argv[i],"-highquality")) {
  169. TextureSize=2;
  170. DisplayTextureSize = 2;
  171. TableTextureSize = 1;
  172. BallResolution = 9;
  173. ScreenResolution = 1024;
  174. ColorDepth = 32;
  175. Reflections = 1;
  176. } else if (!strcmp(argv[i],"-t")||!strcmp(argv[i],"-texturen")) {
  177. i++;
  178. if (!strcmp(argv[i],"1")||!strcmp(argv[i],"voll")) {
  179. TextureSize=1;
  180. } else if (!strcmp(argv[i],"2")||!strcmp(argv[i],"halb")) {
  181. TextureSize=2;
  182. } else if (!strcmp(argv[i],"4")||!strcmp(argv[i],"viertel")) {
  183. TextureSize=4;
  184. } else if (!strcmp(argv[i],"8")||!strcmp(argv[i],"achtel")) {
  185. TextureSize=8;
  186. } else if (!strcmp(argv[i],"0")||!strcmp(argv[i],"aus")) {
  187. TextureSize=0;
  188. }
  189. } else if (!strcmp(argv[i],"-at")||!strcmp(argv[i],"-atexturen")) {
  190. i++;
  191. if (!strcmp(argv[i],"1")||!strcmp(argv[i],"voll")) {
  192. DisplayTextureSize=1;
  193. } else if (!strcmp(argv[i],"2")||!strcmp(argv[i],"halb")) {
  194. DisplayTextureSize=2;
  195. } else if (!strcmp(argv[i],"4")||!strcmp(argv[i],"viertel")) {
  196. DisplayTextureSize=4;
  197. } else if (!strcmp(argv[i],"8")||!strcmp(argv[i],"achtel")) {
  198. DisplayTextureSize=8;
  199. } else if (!strcmp(argv[i],"0")||!strcmp(argv[i],"aus")) {
  200. DisplayTextureSize=0;
  201. }
  202. } else if (!strcmp(argv[i],"-tt")||!strcmp(argv[i],"-ttexturen")) {
  203. i++;
  204. if (!strcmp(argv[i],"1")||!strcmp(argv[i],"voll")) {
  205. TableTextureSize=1;
  206. } else if (!strcmp(argv[i],"2")||!strcmp(argv[i],"halb")) {
  207. TableTextureSize=2;
  208. } else if (!strcmp(argv[i],"4")||!strcmp(argv[i],"viertel")) {
  209. TableTextureSize=4;
  210. } else if (!strcmp(argv[i],"8")||!strcmp(argv[i],"achtel")) {
  211. TableTextureSize=8;
  212. } else if (!strcmp(argv[i],"0")||!strcmp(argv[i],"aus")) {
  213. TableTextureSize=0;
  214. }
  215. } else if (!strcmp(argv[i],"-a")||!strcmp(argv[i],"-aufstellung")) {
  216. i++;
  217. if (!strcmp(argv[i],"2")||!strcmp(argv[i],"s")||!strcmp(argv[i],"simpel")||!strcmp(argv[i],"zweibaelle")) {
  218. GameType=TWO_BALLS;
  219. } else if (!strcmp(argv[i],"8")||!strcmp(argv[i],"a")||!strcmp(argv[i],"EIGHT_BALL")||!strcmp(argv[i],"8ball")||!strcmp(argv[i],"8-ball")) {
  220. GameType=EIGHT_BALL;
  221. } else if (!strcmp(argv[i],"9")||!strcmp(argv[i],"n")||!strcmp(argv[i],"neunball")||!strcmp(argv[i],"9ball")||!strcmp(argv[i],"9-ball")) {
  222. GameType=NINE_BALL;
  223. } else if (!strcmp(argv[i],"0")||!strcmp(argv[i],"l")||!strcmp(argv[i],"leer")) {
  224. GameType=GT_EMPTY;
  225. } else if (!strcmp(argv[i],"z")||!strcmp(argv[i],"zufall")) {
  226. GameType=GT_RANDOM;
  227. }
  228. } else if (!strcmp(argv[i],"-s")||!strcmp(argv[i],"-schatten")) {
  229. Shadow=0;
  230. } else if (!strcmp(argv[i],"-g")||!strcmp(argv[i],"-geometrie")) {
  231. i++;
  232. BallResolution=atoi(argv[i]);
  233. } else if (!strcmp(argv[i],"-ep")||!strcmp(argv[i],"-epsilon")) {
  234. i++;
  235. Epsilon=atof(argv[i]);
  236. } else if (!strcmp(argv[i],"-m")||!strcmp(argv[i],"-mousespeed")) {
  237. i++;
  238. MouseSpeed=atof(argv[i]);
  239. } else if (!strcmp(argv[i],"-p")||!strcmp(argv[i],"-physik")) {
  240. i++;
  241. PhysicsFrequenz=atoi(argv[i]);
  242. } else if (!strcmp(argv[i],"-r")||!strcmp(argv[i],"-reibung")) {
  243. i++;
  244. FrictionFactor=atof(argv[i]);
  245. } else if (!strcmp(argv[i],"-k")||!strcmp(argv[i],"-kollision")) {
  246. i++;
  247. CollisionFactor=atof(argv[i]);
  248. } else if (!strcmp(argv[i],"-b")||!strcmp(argv[i],"-banden")) {
  249. i++;
  250. GangsFactor=atof(argv[i]);
  251. }
  252. i++;
  253. }
  254. WriteConfig();
  255. //#ifndef _WIN32
  256. //Ausgabe der Parameter
  257. /*
  258. printf(" Ball textures : ");
  259. switch (Texturgroesse) {
  260. case 1: printf("High");break;
  261. case 2: printf("Normal");break;
  262. case 4: printf("Low");break;
  263. case 8: printf("Very low");break;
  264. case 0: printf("Off");break;
  265. }
  266. printf("\n Menu textures : ");
  267. switch (AnzeigeTexturgroesse) {
  268. case 1: printf("Normal");break;
  269. case 2: printf("Low");break;
  270. case 4: printf("Groesse 4 - Viertel");break;
  271. case 8: printf("Groesse 8 - Achtel");break;
  272. case 0: printf("Aus");break;
  273. }
  274. printf("\n Table texture : ");
  275. switch (TischTexturgroesse) {
  276. case 1: printf("High");break;
  277. case 2: printf("Normal");break;
  278. case 4: printf("Low");break;
  279. case 8: printf("Very Low");break;
  280. case 0: printf("Off");break;
  281. }
  282. printf("\n");
  283. if (ZBufferLoeschen) {
  284. printf(" ZBufferLoesch.: Ein\n");
  285. } else {
  286. printf(" ZBufferLoesch.: Aus\n");
  287. AnzeigeTexturgroesse=0;
  288. Schatten=0;
  289. }
  290. printf(" Ball Res. : %i\n",Kugelresol_size);
  291. printf(" Shadows : ");
  292. switch (Schatten) {
  293. case 1: printf("On");break;
  294. case 0: printf("Off");break;
  295. }
  296. // printf(" Epsilon : %f\n",Epsilon);
  297. printf("\n Mousespeed : %f\n",MouseSpeed);
  298. if (InvertX) {
  299. printf(" InvertX : On\n");
  300. } else {
  301. printf(" InvertX : Off\n");
  302. }
  303. if (InvertY) {
  304. printf(" InvertY : On\n");
  305. } else {
  306. printf(" InvertY : Off\n");
  307. }
  308. printf(" Spiel : ");
  309. switch (Spiel) {
  310. case TWO_BALLS: printf("Zwei Kugeln");break;
  311. case EIGHT_BALL: printf("8-Ball");break;
  312. case NINE_BALL: printf("9-Ball");break;
  313. case GT_RANDOM: printf("Zufall");break;
  314. case GT_EMPTY: printf("Aus");break;
  315. }
  316. //printf("\n Physikfrequenz: %i\n",PhysikFrequenz);
  317. //printf(" Reibungsfaktor: %f\n",ReibungsFaktor);
  318. //printf(" Bandenfaktor : %f\n",BandenFaktor);
  319. //printf(" Koll.faktor : %f\n",KollisionsFaktor);
  320. //printf(" Bildschirmaufl: %i\n",Bildschirmresol_size);
  321. printf("\n");
  322. //#endif
  323. */
  324. }