diff options
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 47 |
1 files changed, 42 insertions, 5 deletions
@@ -42,6 +42,22 @@ static void exit_cleanup(void){ } } +char* show_prompt(int x,int y,int w,const char *title){ + Promptwidget *prw=prw_make(x,y,w,title); + char *line=NULL; + while(line==NULL){ + redraw(); + int key=tgetkey(); + if(key==KEY_ESC)break; + line=prw_handlekey(prw,key); + } + prw_destroy(prw); + return line; +} + +static void room_create(const char *name){} +static void room_join(const char *name){} + int main(void){ int sock=tcp_connect(HOSTNAME,PORT); if(sock==-1){ @@ -66,10 +82,10 @@ int main(void){ while(true){ i64 sel=showmenu("REGEXBATTLE", - "List public rooms","Create a room","Join a room", + "List open public games","Create a new game","Join an open game", "Quit",NULL); switch(sel){ - case 0:{ + case 0: { tcp_send_line(sock,"room_list " GAMENAME); TcpList *list=tcp_read_list(sock,"room_list"); if(list==NULL)die("Protocol error: receiving list"); @@ -77,13 +93,34 @@ int main(void){ fillrect(0,7,termsize.w,termsize.h-7,' '); moveto(0,7); for(i64 i=0;i<list->nitems&&i+7<termsize.h;i++){ - tprintf("Room: %s\n",list->items[i]); + tprintf("Public games: %s\n",list->items[i]); + } + tcp_list_destroy(list); + break; + } + + case 1: { + char *line=show_prompt(2,8,20,"Game name to create"); + Size termsize=gettermsize(); + fillrect(0,7,termsize.w,termsize.h-7,' '); + if(line!=NULL){ + room_create(line); + free(line); + } + break; + } + + case 2: { + char *line=show_prompt(2,8,20,"Game name to join"); + Size termsize=gettermsize(); + fillrect(0,7,termsize.w,termsize.h-7,' '); + if(line!=NULL){ + room_join(line); + free(line); } break; } - case 1: break; - case 2: break; case 3: return 0; } } |