summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c47
1 files changed, 42 insertions, 5 deletions
diff --git a/main.c b/main.c
index 1dcdc1f..0b7a639 100644
--- a/main.c
+++ b/main.c
@@ -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;
}
}