diff --git a/Makefile b/Makefile index 8ff3baf..1474002 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ TARGET = quest -LIBS = -lm -luiohook -lcjson +LIBS = -lm -luiohook -lcjson -lxcb -lXinerama -lX11 CC = gcc CFLAGS = -g -Wall INSTALL_PATH = /usr/local diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..9cd95df --- /dev/null +++ b/default.nix @@ -0,0 +1,2 @@ +{pkgs ? import {} }: +pkgs.callPackage ./derivation.nix {} diff --git a/derivation.nix b/derivation.nix new file mode 100644 index 0000000..edf7be0 --- /dev/null +++ b/derivation.nix @@ -0,0 +1,23 @@ +{ stdenv }: +stdenv.mkDerivation rec { + name = "quest-${version}"; + version = "0.7"; + + src = ./src2/.; + + nativeBuildInputs = [ ]; + buildInputs = [ ]; + + buildPhase = '' + gcc server.c -o quest-daemon + gcc client.c -o quest-log + gcc tui.c -o quest + ''; + + installPhase = '' + mkdir -p $out/bin + cp quest-daemon $out/bin + cp quest-log $out/bin + cp quest $out/bin + ''; +} diff --git a/formatspec.md b/formatspec.md index da98e18..9a9b899 100644 --- a/formatspec.md +++ b/formatspec.md @@ -102,9 +102,9 @@ Runs by themselves are simply a list of events that occured to this data, these more complicated directives are used to define segments that are played between splits and routes made up of these segments. Define all your possible segments first, followed by all routes. -If no segments are defined, a single unnamed segment is assumed. +If no segments are defined, a single unnamed segment is to be assumed. If no routes are defined, a single unnamed route that passes through all -segments in the order of their definition is assumed. +segments in the order of their definition is to be assumed. Segment Shortname @@ -141,7 +141,7 @@ Run Directives These directives are much more complicated and are not intended to be written by a human but rather by the timer software, they will make up the majority of a file as they are the run history which may be quite long. -These data passed by these directives exists agnostic of segments, route, games, +The data passed by these directives exists agnostic of segments, route, games, or categories, rather they are either explicitly matched with metadata that is applicable, or by default is matched with the last set of metadata declared by the time of the run directive diff --git a/src/timer.c b/src/timer.c index 854e87f..a7abf0d 100644 --- a/src/timer.c +++ b/src/timer.c @@ -22,6 +22,7 @@ struct pastseg *pastRuns; int segCount; int currSeg = -1; char currentTime[10]; +int *route; void sub_timespec(struct timespec t1, struct timespec t2, struct timespec* td) { diff --git a/src/timer.h b/src/timer.h index a7b3aaf..38aa946 100644 --- a/src/timer.h +++ b/src/timer.h @@ -24,6 +24,7 @@ struct segment { + int id; char *name; int ms; bool isSkipped; @@ -49,6 +50,7 @@ extern struct segment *bestsegs; extern struct segment *wrrun; extern struct segment *segments; extern struct timespec notif; +extern int *route; void sub_timespec(struct timespec t1, struct timespec t2, struct timespec* td); void add_timespec(struct timespec t1, struct timespec t2, struct timespec* td); diff --git a/src2/server.c b/src2/server.c index 30f70ef..7b9c600 100644 --- a/src2/server.c +++ b/src2/server.c @@ -220,10 +220,12 @@ void loadFiles() fgets(buff2, 255, fp); if (buff2[0] == '\t') { valuecount++; + names = realloc(names, sizeof(char*) * valuecount); names[valuecount - 1] = malloc(strlen(buff) - 1); strncpy(names[valuecount - 1], buff, strlen(buff) - 1); names[valuecount - 1][strlen(buff)] = '\0'; + values = realloc(values, sizeof(char*) * valuecount); values[valuecount - 1] = malloc(strlen(buff2) - 2); strncpy(values[valuecount - 1], buff2 + 1, strlen(buff2) - 1); @@ -373,43 +375,18 @@ int main(int argc, char *argv[]) exit(1); } - /* Now start listening for the clients, here - * process will go in sleep mode and will wait - * for the incoming connection - */ - listen(sockfd,5); clilen = sizeof(cli_addr); while (alive) { newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen); - if (newsockfd < 0) { perror("ERROR on accept"); exit(1); } - - /* Create child process */ - //pid = fork(); - pid = 1; - - if (pid < 0) { - perror("ERROR on fork"); - exit(1); - } - - if (pid == 0) { - /* This is the child process */ - //close(sockfd); - //doprocessing(newsockfd); - //exit(0); - } - else { - doprocessing(newsockfd); - close(newsockfd); - } - - } /* end of while */ + doprocessing(newsockfd); + close(newsockfd); + } free(run); close(sockfd); } diff --git a/src2/tui.c b/src2/tui.c index e531e47..6a78b40 100644 --- a/src2/tui.c +++ b/src2/tui.c @@ -67,30 +67,19 @@ void printbig(int x, int y, int ms) printf("\033[%d;%dH", y + sy, x); //go to position for (int cc = 0; cc < 12; cc++) { //then, for every character int c = small[cc]; //check what character we're on - if (c >= 48 && c <= 57) { //if its a number, print 4 pixels - for (int xx = 0; xx < 4; xx++) { - int xxx = c - 48; - if (numbermap[sy][(xxx * 4) + xx] == 'x') - printf("\033[48;2;%d;%d;%dm ", f.r, f.g, f.b); - if (numbermap[sy][(xxx * 4) + xx] == '.') - printf("\033[48;2;%d;%d;%dm ", b.r, b.g, b.b); - } - } - if (c == 46 || c == 58) { //if its punctuation, print 2 pixels - for (int xx = 0; xx < 2; xx++) { - if (c == 46) { - if (numbermap[sy][42 + xx] == 'x') - printf("\033[48;2;%d;%d;%dm ", f.r, f.g, f.b); - if (numbermap[sy][42 + xx] == '.') - printf("\033[48;2;%d;%d;%dm ", b.r, b.g, b.b); - } - if (c == 58) { - if (numbermap[sy][40 + xx] == 'x') - printf("\033[48;2;%d;%d;%dm ", f.r, f.g, f.b); - if (numbermap[sy][40 + xx] == '.') - printf("\033[48;2;%d;%d;%dm ", b.r, b.g, b.b); - } - } + int mapcharacterwidth = (c >= 48 && c <= 57) ? 4 : 2;//if its a number, print 4 pixels, if its punctuation, print 2 pixels + int mapoffset; + if (c >= 48 && c <= 57) + mapoffset = (c - 48) * 4; + else if (c == 46) + mapoffset = 42; + else + mapoffset = 40; + for (int xx = 0; xx < mapcharacterwidth; xx++) { + if (numbermap[sy][mapoffset + xx] == 'x') + printf("\033[48;2;%d;%d;%dm ", f.r, f.g, f.b); + if (numbermap[sy][mapoffset + xx] == '.') + printf("\033[48;2;%d;%d;%dm ", b.r, b.g, b.b); } } }