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