View difference between Paste ID: XdyMnStu and Su4tarNh
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
}