author | Medo <smaxein@googlemail.com> |
Mon, 11 Jun 2012 00:02:17 +0200 | |
changeset 7182 | 076aba32abd3 |
parent 7179 | f84805e6df03 |
child 7224 | 5143861c83bd |
permissions | -rw-r--r-- |
7155
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
1 |
#include "frontlib.h" |
7179
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
2 |
#include "util/logging.h" |
7177
bf6cf4dd847a
Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
7175
diff
changeset
|
3 |
#include "model/map.h" |
bf6cf4dd847a
Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
7175
diff
changeset
|
4 |
#include "ipc/mapconn.h" |
7179
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
5 |
#include "ipc/gameconn.h" |
7155
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
6 |
|
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
7 |
#include <SDL.h> |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
8 |
#include <SDL_net.h> |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
9 |
#include <stdio.h> |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
10 |
#include <stdint.h> |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
11 |
#include <stdlib.h> |
7173
7c2eb284f9f1
Frontlib: Work on the callback mechanisms for IPC
Medo <smaxein@googlemail.com>
parents:
7171
diff
changeset
|
12 |
#include <assert.h> |
7155
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
13 |
|
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
14 |
static int flib_initflags; |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
15 |
|
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
16 |
int flib_init(int flags) { |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
17 |
flib_initflags = flags; |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
18 |
|
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
19 |
if(!(flib_initflags | FRONTLIB_SDL_ALREADY_INITIALIZED)) { |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
20 |
if(SDL_Init(0)==-1) { |
7158
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
7155
diff
changeset
|
21 |
flib_log_e("Error in SDL_Init: %s", SDL_GetError()); |
7155
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
22 |
return -1; |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
23 |
} |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
24 |
} |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
25 |
|
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
26 |
if(SDLNet_Init()==-1) { |
7158
a0573014ff4f
Further work on the frontend library, restructuring, ...
Medo <smaxein@googlemail.com>
parents:
7155
diff
changeset
|
27 |
flib_log_e("Error in SDLNet_Init: %s", SDLNet_GetError()); |
7155
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
28 |
if(!(flib_initflags | FRONTLIB_SDL_ALREADY_INITIALIZED)) { |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
29 |
SDL_Quit(); |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
30 |
} |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
31 |
return -1; |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
32 |
} |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
33 |
|
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
34 |
return 0; |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
35 |
} |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
36 |
|
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
37 |
void flib_quit() { |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
38 |
SDLNet_Quit(); |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
39 |
if(!(flib_initflags | FRONTLIB_SDL_ALREADY_INITIALIZED)) { |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
40 |
SDL_Quit(); |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
41 |
} |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
42 |
} |
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
43 |
|
7179
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
44 |
static void onDisconnect(void *context, int reason) { |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
45 |
flib_log_i("Connection closed. Reason: %i", reason); |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
46 |
flib_gameconn **connptr = context; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
47 |
flib_gameconn_destroy(*connptr); |
7177
bf6cf4dd847a
Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
7175
diff
changeset
|
48 |
*connptr = NULL; |
bf6cf4dd847a
Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
7175
diff
changeset
|
49 |
} |
bf6cf4dd847a
Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
7175
diff
changeset
|
50 |
|
7179
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
51 |
static void onGameRecorded(void *context, const uint8_t *record, int size, bool isSavegame) { |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
52 |
flib_log_i("Writing %s (%i bytes)...", isSavegame ? "savegame" : "demo", size); |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
53 |
FILE *file = fopen(isSavegame ? "testsave.42.hws" : "testdemo.42.hwd", "wb"); |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
54 |
fwrite(record, 1, size, file); |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
55 |
fclose(file); |
7177
bf6cf4dd847a
Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
7175
diff
changeset
|
56 |
} |
bf6cf4dd847a
Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
7175
diff
changeset
|
57 |
|
7155
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
58 |
int main(int argc, char *argv[]) { |
7179
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
59 |
flib_init(0); |
7177
bf6cf4dd847a
Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
7175
diff
changeset
|
60 |
|
7179
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
61 |
flib_cfg_meta *metaconf = flib_cfg_meta_from_ini("basicsettings.ini", "gamemods.ini"); |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
62 |
assert(metaconf); |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
63 |
flib_gamesetup setup; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
64 |
setup.gamescheme = flib_cfg_from_ini(metaconf, "scheme_shoppa.ini"); |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
65 |
setup.map = flib_map_create_maze("Jungle", MAZE_SIZE_MEDIUM_TUNNELS); |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
66 |
setup.seed = "apsfooasdgnds"; |
7182
076aba32abd3
Small improvements to the frontend lib for better debugging
Medo <smaxein@googlemail.com>
parents:
7179
diff
changeset
|
67 |
setup.script = NULL; |
7179
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
68 |
setup.teamcount = 2; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
69 |
setup.teams = calloc(2, sizeof(flib_team)); |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
70 |
setup.teams[0].color = 0xffff0000; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
71 |
setup.teams[0].flag = "australia"; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
72 |
setup.teams[0].fort = "Plane"; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
73 |
setup.teams[0].grave = "Bone"; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
74 |
setup.teams[0].hogsInGame = 2; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
75 |
setup.teams[0].name = "Team Awesome"; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
76 |
setup.teams[0].voicepack = "British"; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
77 |
setup.teams[0].weaponset = flib_weaponset_create("Defaultweaps"); |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
78 |
setup.teams[0].hogs[0].difficulty = 2; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
79 |
setup.teams[0].hogs[0].hat = "NoHat"; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
80 |
setup.teams[0].hogs[0].initialHealth = 100; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
81 |
setup.teams[0].hogs[0].name = "Harry 120"; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
82 |
setup.teams[0].hogs[1].difficulty = 2; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
83 |
setup.teams[0].hogs[1].hat = "chef"; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
84 |
setup.teams[0].hogs[1].initialHealth = 100; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
85 |
setup.teams[0].hogs[1].name = "Chefkoch"; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
86 |
setup.teams[1].color = 0xff0000ff; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
87 |
setup.teams[1].flag = "germany"; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
88 |
setup.teams[1].fort = "Cake"; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
89 |
setup.teams[1].grave = "Cherry"; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
90 |
setup.teams[1].hogsInGame = 2; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
91 |
setup.teams[1].name = "The Krauts"; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
92 |
setup.teams[1].voicepack = "Pirate"; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
93 |
setup.teams[1].weaponset = flib_weaponset_create("Defaultweaps"); |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
94 |
setup.teams[1].hogs[0].difficulty = 0; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
95 |
setup.teams[1].hogs[0].hat = "quotecap"; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
96 |
setup.teams[1].hogs[0].initialHealth = 100; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
97 |
setup.teams[1].hogs[0].name = "Quote"; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
98 |
setup.teams[1].hogs[1].difficulty = 0; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
99 |
setup.teams[1].hogs[1].hat = "chef"; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
100 |
setup.teams[1].hogs[1].initialHealth = 100; |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
101 |
setup.teams[1].hogs[1].name = "Chefkoch2"; |
7173
7c2eb284f9f1
Frontlib: Work on the callback mechanisms for IPC
Medo <smaxein@googlemail.com>
parents:
7171
diff
changeset
|
102 |
|
7179
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
103 |
flib_gameconn *gameconn = flib_gameconn_create("Medo42", metaconf, &setup, false); |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
104 |
assert(gameconn); |
7177
bf6cf4dd847a
Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
7175
diff
changeset
|
105 |
|
7179
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
106 |
flib_gameconn_onDisconnect(gameconn, &onDisconnect, &gameconn); |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
107 |
flib_gameconn_onGameRecorded(gameconn, &onGameRecorded, &gameconn); |
7177
bf6cf4dd847a
Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
7175
diff
changeset
|
108 |
|
7179
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
109 |
while(gameconn) { |
f84805e6df03
Implemented game launching API for the frontlib.
Medo <smaxein@googlemail.com>
parents:
7177
diff
changeset
|
110 |
flib_gameconn_tick(gameconn); |
7155
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
111 |
} |
7173
7c2eb284f9f1
Frontlib: Work on the callback mechanisms for IPC
Medo <smaxein@googlemail.com>
parents:
7171
diff
changeset
|
112 |
flib_log_i("Shutting down..."); |
7162
fe76d24a25d7
Demo recording for the frontend library
Medo <smaxein@googlemail.com>
parents:
7160
diff
changeset
|
113 |
flib_quit(); |
7177
bf6cf4dd847a
Implemented public API for letting the engine render maps
Medo <smaxein@googlemail.com>
parents:
7175
diff
changeset
|
114 |
return 0; |
7155
273ad375d64e
Started work on the frontend networking library
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
115 |
} |