SHOW:
|
|
- or go back to the newest paste.
| 1 | #include "frontlib.h" | |
| 2 | #include "util/logging.h" | |
| 3 | #include "model/map.h" | |
| 4 | #include "ipc/mapconn.h" | |
| 5 | ||
| 6 | #include <stdlib.h> | |
| 7 | #include <stdbool.h> | |
| 8 | #include <assert.h> | |
| 9 | ||
| 10 | // Callback function that will be called when the map is rendered | |
| 11 | static void handleMapSuccess(void *context, const uint8_t *bitmap, int numHedgehogs) {
| |
| 12 | printf("Drawing map for %i brave little hogs...", numHedgehogs);
| |
| 13 | ||
| 14 | // Draw the map as ASCII art | |
| 15 | for(int y=0; y<MAPIMAGE_HEIGHT; y++) {
| |
| 16 | for(int x=0; x<MAPIMAGE_WIDTH; x++) {
| |
| 17 | int pixelnum = x + y*MAPIMAGE_WIDTH; | |
| 18 | bool pixel = bitmap[pixelnum>>3] & (1<<(7-(pixelnum&7))); | |
| 19 | printf(pixel ? "#" : " "); | |
| 20 | } | |
| 21 | printf("\n");
| |
| 22 | } | |
| 23 | ||
| 24 | // Destroy the connection object (this will end the "tick" loop below) | |
| 25 | flib_mapconn **connptr = context; | |
| 26 | flib_mapconn_destroy(*connptr); | |
| 27 | *connptr = NULL; | |
| 28 | } | |
| 29 | ||
| 30 | // Callback function that will be called on error | |
| 31 | static void handleMapFailure(void *context, const char *errormessage) {
| |
| 32 | flib_log_e("Map rendering failed: %s", errormessage);
| |
| 33 | ||
| 34 | // Destroy the connection object (this will end the "tick" loop below) | |
| 35 | flib_mapconn **connptr = context; | |
| 36 | flib_mapconn_destroy(*connptr); | |
| 37 | *connptr = NULL; | |
| 38 | } | |
| 39 | ||
| 40 | // Helper code to start the engine (Windows) | |
| 41 | static void startEngine(int port) {
| |
| 42 | char commandbuffer[255]; | |
| 43 | const char *enginePath = "C:\\Programmieren\\Hedgewars\\bin"; | |
| 44 | const char *configPath = "C:\\Programmieren\\Hedgewars\\share\\hedgewars"; | |
| 45 | snprintf(commandbuffer, 255, "start %s\\hwengine.exe %s %i landpreview", enginePath, configPath, port); | |
| 46 | system(commandbuffer); | |
| 47 | } | |
| 48 | ||
| 49 | int main(int argc, char *argv[]) {
| |
| 50 | flib_init(0); | |
| 51 | flib_log_setLevel(FLIB_LOGLEVEL_ALL); | |
| 52 | ||
| 53 | // Create a map description and check that there was no error | |
| 54 | flib_map *map = flib_map_create_maze("Jungle", MAZE_SIZE_SMALL_TUNNELS);
| |
| 55 | assert(map); | |
| 56 | ||
| 57 | // Create a new connection to the engine and check that there was no error | |
| 58 | - | flib_mapconn *mapConnection = flib_mapconn_create("This is the reed value", map);
|
| 58 | + | flib_mapconn *mapConnection = flib_mapconn_create("This is the seed value", map);
|
| 59 | assert(mapConnection); | |
| 60 | ||
| 61 | // We don't need the map description anymore | |
| 62 | flib_map_destroy(map); | |
| 63 | map = NULL; | |
| 64 | ||
| 65 | // Register the callback functions | |
| 66 | flib_mapconn_onFailure(mapConnection, &handleMapFailure, &mapConnection); | |
| 67 | flib_mapconn_onSuccess(mapConnection, &handleMapSuccess, &mapConnection); | |
| 68 | ||
| 69 | // Start the engine process and tell it which port the frontlib is listening on | |
| 70 | startEngine(flib_mapconn_getport(mapConnection)); | |
| 71 | ||
| 72 | // Usually, flib_mapconn_tick will be called in an event loop that runs several | |
| 73 | // times per second. It handles I/O operations and progress, and calls | |
| 74 | // callbacks when something interesting happens. | |
| 75 | while(mapConnection) {
| |
| 76 | flib_mapconn_tick(mapConnection); | |
| 77 | } | |
| 78 | ||
| 79 | flib_quit(); | |
| 80 | return 0; | |
| 81 | } |