1 #include "globals.h"
2 #include "input.h"
3 #include "fileutils.h"
4 
5 
6 int ScreenWidth, ScreenHeight;
7 char ServerIP[16];
8 int ServerPort;
9 char PlayerName[MAX_PLAYERNAME_LENGTH];
10 char ConfigFileName[80];
11 
12 
13 void ReadConfig();
14 void SetDefaults();
15 int GetWord(FILE *fileptr, char *Word, char EndOfWord, int MaxSize);
16 void AssignValue(char *VariableName, char *Value);
17 int IgnoreCommentsAndSpaces(FILE *fileptr, char *c);
18 void TerminateVariable(char *variable);
19 int GoToEndOfLine(FILE *fileptr);
20 
21 
22 // Function to read the configuration file
ReadConfig()23 void ReadConfig()
24 {
25   FILE *ConfigFile;
26 
27   SetDefaults();
28 
29   if (!(ConfigFile=fopen(ConfigFileName, "r"))) {
30     return;
31   }
32 
33   ReadVariables(ConfigFile, &AssignValue);
34 
35   fclose(ConfigFile);
36 }
37 
38 
SetDefaults()39 void SetDefaults()
40 {
41   ScreenWidth=640;
42   ScreenHeight=480;
43   strcpy(ServerIP, "127.0.0.1");
44   ServerPort=12345;
45   strcpy(PlayerName, "UnNamedPlayer");
46   volume=MAX_VOLUME;
47 }
48 
49 
AssignValue(char * VariableName,char * Value)50 void AssignValue(char *VariableName, char *Value)
51 {
52   int temp;
53 
54   if (!strcmp(VariableName, "SCREEN_WIDTH")) {
55     temp=atoi(Value);
56     if (temp >= 320 && temp <= 1600) {
57       ScreenWidth=temp;
58     }
59   } else if (!strcmp(VariableName, "SCREEN_HEIGHT")) {
60     temp=atoi(Value);
61     if (temp >= 240 && temp <= 1200) {
62       ScreenHeight=temp;
63     }
64   } else if (!strcmp(VariableName, "PLAYER_NAME")) {
65     if (strlen(Value) < MAX_PLAYERNAME_LENGTH && strlen(Value)) {
66       strcpy(PlayerName, Value);
67     }
68   } else if (!strcmp(VariableName, "SERVER_IP")) {
69     strcpy(ServerIP, Value);
70   } else if (!strcmp(VariableName, "SERVER_PORT")) {
71     ServerPort=atoi(Value);
72   } else if (!strcmp(VariableName, "VOLUME")) {
73     volume=atoi(Value);
74   } else if (!strcmp(VariableName, "SCORE_KEY")) {
75     controls.Score=*Value;
76   } else if (!strcmp(VariableName, "FIRE_KEY")) {
77     controls.Fire=*Value;
78   } else if (!strcmp(VariableName, "SHIELD_KEY")) {
79     controls.Shield=*Value;
80   } else if (!strcmp(VariableName, "WARP_KEY")) {
81     controls.Warp=*Value;
82   } else if (!strcmp(VariableName, "NUKE_KEY")) {
83     controls.Nuke=*Value;
84     /*
85       } else if (!strcmp(VariableName, "X_FORWARD_KEY")) {
86       controls.xForward=*Value;
87       } else if (!strcmp(VariableName, "X_BACKWARD_KEY")) {
88       controls.xBackward=*Value;
89       } else if (!strcmp(VariableName, "Y_FORWARD_KEY")) {
90       controls.yForward=*Value;
91       } else if (!strcmp(VariableName, "Y_BACKWARD_KEY")) {
92       controls.yBackward=*Value;
93     */
94   } else if (!strcmp(VariableName, "Z_FORWARD_KEY")) {
95     controls.zForward=*Value;
96   } else if (!strcmp(VariableName, "Z_BACKWARD_KEY")) {
97     controls.zBackward=*Value;
98   } else if (!strcmp(VariableName, "X_FORWARD_ROTATE_KEY")) {
99     controls.xFRotate=*Value;
100   } else if (!strcmp(VariableName, "X_BACKWARD_ROTATE_KEY")) {
101     controls.xBRotate=*Value;
102   } else if (!strcmp(VariableName, "Y_FORWARD_ROTATE_KEY")) {
103     controls.yFRotate=*Value;
104   } else if (!strcmp(VariableName, "Y_BACKWARD_ROTATE_KEY")) {
105     controls.yBRotate=*Value;
106   } else if (!strcmp(VariableName, "Z_FORWARD_ROTATE_KEY")) {
107     controls.zFRotate=*Value;
108   } else if (!strcmp(VariableName, "Z_BACKWARD_ROTATE_KEY")) {
109     controls.zBRotate=*Value;
110   } else if (!strcmp(VariableName, "REVERSE_VIEW_KEY")) {
111     controls.rView=*Value;
112   } else if (!strcmp(VariableName, "QUIT_KEY")) {
113     controls.Quit=*Value;
114   }
115 }
116 
117 
118 // Save Configuration to a file
SaveConfig()119 void SaveConfig()
120 {
121   FILE *ConfigFile;
122 
123   if (!(ConfigFile=fopen(ConfigFileName, "w"))) {
124     return;
125   }
126 
127   fprintf(ConfigFile, "SERVER_IP=%s\n", ServerIP);
128   fprintf(ConfigFile, "SERVER_PORT=%d\n", ServerPort);
129   fprintf(ConfigFile, "PLAYER_NAME=%s\n", PlayerName);
130   fprintf(ConfigFile, "SCREEN_WIDTH=%d\n", ScreenWidth);
131   fprintf(ConfigFile, "SCREEN_HEIGHT=%d\n", ScreenHeight);
132   fprintf(ConfigFile, "VOLUME=%d\n", volume);
133   fprintf(ConfigFile, "SCORE_KEY=%c\n", controls.Score);
134   fprintf(ConfigFile, "FIRE_KEY=%c\n", controls.Fire);
135   fprintf(ConfigFile, "SHIELD_KEY=%c\n", controls.Shield);
136   fprintf(ConfigFile, "WARP_KEY=%c\n", controls.Warp);
137   fprintf(ConfigFile, "NUKE_KEY=%c\n", controls.Nuke);
138   fprintf(ConfigFile, "QUIT_KEY=%c\n", controls.Quit);
139   /*
140     fprintf(ConfigFile, "X_FORWARD_KEY=%c\n", controls.xForward);
141     fprintf(ConfigFile, "X_BACKWARD_KEY=%c\n", controls.xBackward);
142     fprintf(ConfigFile, "Y_FORWARD_KEY=%c\n", controls.yForward);
143     fprintf(ConfigFile, "Y_BACKWARD_KEY=%c\n", controls.yBackward);
144   */
145   fprintf(ConfigFile, "Z_FORWARD_KEY=%c\n", controls.zForward);
146   fprintf(ConfigFile, "Z_BACKWARD_KEY=%c\n", controls.zBackward);
147   fprintf(ConfigFile, "X_FORWARD_ROTATE_KEY=%c\n", controls.xFRotate);
148   fprintf(ConfigFile, "X_BACKWARD_ROTATE_KEY=%c\n", controls.xBRotate);
149   fprintf(ConfigFile, "Y_FORWARD_ROTATE_KEY=%c\n", controls.yFRotate);
150   fprintf(ConfigFile, "Y_BACKWARD_ROTATE_KEY=%c\n", controls.yBRotate);
151   fprintf(ConfigFile, "Z_FORWARD_ROTATE_KEY=%c\n", controls.zFRotate);
152   fprintf(ConfigFile, "Z_BACKWARD_ROTATE_KEY=%c\n", controls.zBRotate);
153   fprintf(ConfigFile, "REVERSE_VIEW_KEY=%c\n", controls.rView);
154 
155   fclose(ConfigFile);
156 }
157