THE ORIGINAL TOP THE TATER SOUR CREAM DIP
This commit is contained in:
parent
e3171c9494
commit
5e3fb97a12
10 changed files with 104 additions and 23 deletions
BIN
core
BIN
core
Binary file not shown.
|
@ -167,8 +167,8 @@ void create_account() {
|
||||||
char input[9];
|
char input[9];
|
||||||
//scr_prompt_string(20, "this prompt box is a test of a prompt box is a test of a prompt box is a test of a prompt box is a test of a prompt box is a test of a prompt box is a test of a prompt box is a test of a prompt box is a test of a prompt box is a test", input, 8);
|
//scr_prompt_string(20, "this prompt box is a test of a prompt box is a test of a prompt box is a test of a prompt box is a test of a prompt box is a test of a prompt box is a test of a prompt box is a test of a prompt box is a test of a prompt box is a test", input, 8);
|
||||||
|
|
||||||
scr_prompt_voptions(40, "test of a prompt box of a prompt box of a prompt box of a prompt\n \nbox of a prompt box of a prompt box\n \nthis is a test of a prompt box", 3,
|
scr_prompt_voptions(30, "I'm glad you know which way to go, but that ain't gunna stop me, here we go!\n \nCheck and turn the signals to the left.\n \nNow turn to the left.", 3,
|
||||||
"testtesttesttesttesttesttest a", "test b", "test c");
|
"Now turn to the left!", "Now turn to the right!", "Uh oh");
|
||||||
|
|
||||||
/*int a = 0;
|
/*int a = 0;
|
||||||
while(a != KEY_LF)
|
while(a != KEY_LF)
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <ncurses.h>
|
#include <ncurses.h>
|
||||||
|
#include "common.h"
|
||||||
#include "sock.h"
|
#include "sock.h"
|
||||||
#include "packet.h"
|
#include "packet.h"
|
||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
|
|
|
@ -7,6 +7,8 @@
|
||||||
|
|
||||||
#define WORK
|
#define WORK
|
||||||
|
|
||||||
|
#define MAHOU_PORT "6770"
|
||||||
|
|
||||||
#define FALSE 0
|
#define FALSE 0
|
||||||
#define TRUE 1
|
#define TRUE 1
|
||||||
#define BOOL char
|
#define BOOL char
|
||||||
|
|
|
@ -149,6 +149,12 @@ void* list_remove_back(list_t *list) {
|
||||||
return list_remove(list, list->size - 1);
|
return list_remove(list, list->size - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void list_remove_item(list_t *list, void *item) {
|
||||||
|
int pos;
|
||||||
|
if((pos = list_find(list, item)) != -1)
|
||||||
|
list_remove(list, pos);
|
||||||
|
}
|
||||||
|
|
||||||
void list_iter_reset(list_t *list) {
|
void list_iter_reset(list_t *list) {
|
||||||
list->iterator = NULL;
|
list->iterator = NULL;
|
||||||
list->iter_prev = NULL;
|
list->iter_prev = NULL;
|
||||||
|
|
|
@ -40,6 +40,7 @@ int list_func_find(list_t*, listfindfptr);
|
||||||
void* list_remove(list_t*, int);
|
void* list_remove(list_t*, int);
|
||||||
void* list_remove_front(list_t*);
|
void* list_remove_front(list_t*);
|
||||||
void* list_remove_back(list_t*);
|
void* list_remove_back(list_t*);
|
||||||
|
void* list_remove_item(list_t*, void*);
|
||||||
|
|
||||||
void list_iter_reset(list_t*);
|
void list_iter_reset(list_t*);
|
||||||
void* list_iter_next(list_t*);
|
void* list_iter_next(list_t*);
|
||||||
|
|
17
src/main.c
17
src/main.c
|
@ -4,6 +4,12 @@
|
||||||
#include "server/server.h"
|
#include "server/server.h"
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
|
uint8_t spawn_type =
|
||||||
|
argc == 2 && strcmp(argv[1], "server") == 0
|
||||||
|
? SPAWN_SERVER
|
||||||
|
: SPAWN_CLIENT;
|
||||||
|
|
||||||
|
register_spawn_type(spawn_type);
|
||||||
packet_context_init(5);
|
packet_context_init(5);
|
||||||
|
|
||||||
packet_context_register(PCK_CTX_C2S, PCK_ID_CLERIC_REQ, 0, 1, 1);
|
packet_context_register(PCK_CTX_C2S, PCK_ID_CLERIC_REQ, 0, 1, 1);
|
||||||
|
@ -17,14 +23,13 @@ int main(int argc, char **argv) {
|
||||||
packet_context_register(PCK_CTX_S2C, PCK_ID_ALERT, 0, 4, 1, 1, 2, 512);
|
packet_context_register(PCK_CTX_S2C, PCK_ID_ALERT, 0, 4, 1, 1, 2, 512);
|
||||||
packet_context_register(PCK_CTX_S2C, PCK_ID_PROMPT_BOOL, 0, 4, 1, 1, 2, 512);
|
packet_context_register(PCK_CTX_S2C, PCK_ID_PROMPT_BOOL, 0, 4, 1, 1, 2, 512);
|
||||||
packet_context_register(PCK_CTX_S2C, PCK_ID_PROMPT_STR, 0, 5, 1, 1, 2, 512, 1);
|
packet_context_register(PCK_CTX_S2C, PCK_ID_PROMPT_STR, 0, 5, 1, 1, 2, 512, 1);
|
||||||
packet_context_register(PCK_CTX_S2C, PCK_ID_PROMPT_LIST, 0, 6, 1, 1, 2, 512, 1, 256);
|
packet_context_register(PCK_CTX_S2C, PCK_ID_PROMPT_LIST, 5, 6, 1, 1, 2, 512, 2, 256);
|
||||||
packet_context_register(PCK_CTX_S2C, PCK_ID_CHANGE_CTX, 0, 1, 2);
|
packet_context_register(PCK_CTX_S2C, PCK_ID_CHANGE_CTX, 0, 1, 2);
|
||||||
|
|
||||||
if(argc == 2 && strcmp(argv[1], "server") == 0) {
|
if(spawn_type == SPAWN_SERVER)
|
||||||
register_spawn_type(SPAWN_SERVER);
|
|
||||||
server();
|
server();
|
||||||
} else {
|
else
|
||||||
register_spawn_type(SPAWN_CLIENT);
|
|
||||||
client();
|
client();
|
||||||
}
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
#include "server.h"
|
#include "server.h"
|
||||||
|
|
||||||
void server() {
|
void server() {
|
||||||
|
BOOL running = TRUE;
|
||||||
|
socket_t *conn;
|
||||||
|
|
||||||
user_context_init();
|
user_context_init();
|
||||||
server_context_start();
|
server_context_start();
|
||||||
|
|
||||||
|
@ -9,15 +12,33 @@ void server() {
|
||||||
sock_set_nonblocking(sock);
|
sock_set_nonblocking(sock);
|
||||||
|
|
||||||
flimit_t vsync;
|
flimit_t vsync;
|
||||||
for(;;) {
|
while(running) {
|
||||||
frame_limit_tick(&vsync);
|
frame_limit_tick(&vsync);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
for(;;) {
|
||||||
|
conn = sock_accept(sock);
|
||||||
|
if(conn == NULL)
|
||||||
|
break;
|
||||||
|
else if(conn == -1) {
|
||||||
|
running = FALSE;
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
frame_limit_wait(&vsync, 1000);
|
frame_limit_wait(&vsync, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("awaiting connection...\r\n");
|
server_context_stop();
|
||||||
|
user_context_free();
|
||||||
|
|
||||||
|
sock_stop(sock);
|
||||||
|
sock_free(sock);
|
||||||
|
|
||||||
|
/*printf("awaiting connection...\r\n");
|
||||||
socket_t *conn = sock_accept(sock);
|
socket_t *conn = sock_accept(sock);
|
||||||
|
|
||||||
printf("connected\r\n");
|
printf("connected\r\n");
|
||||||
|
@ -26,11 +47,5 @@ void server() {
|
||||||
|
|
||||||
char in[10];
|
char in[10];
|
||||||
sock_recv(conn, in, 10);
|
sock_recv(conn, in, 10);
|
||||||
printf("got %s\r\n", in);
|
printf("got %s\r\n", in);*/
|
||||||
|
|
||||||
server_context_stop();
|
|
||||||
user_context_free();
|
|
||||||
|
|
||||||
sock_stop(sock);
|
|
||||||
sock_free(sock);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
#include "user.h"
|
#include "user.h"
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
|
pthread_mutex_t mx_ctx;
|
||||||
list_t *active_users;
|
list_t *active_users;
|
||||||
user_t **users;
|
user_t **users;
|
||||||
} static ctx;
|
} static ctx;
|
||||||
|
|
||||||
void user_context_init() {
|
void user_context_init() {
|
||||||
|
ctx.mx_ctx = PTHREAD_MUTEX_INITIALIZER;
|
||||||
ctx.active_users = list_init();
|
ctx.active_users = list_init();
|
||||||
ctx.users = (user_t**)malloc(MAX_CONNS * sizeof(user_t*));
|
ctx.users = (user_t**)malloc(MAX_CONNS * sizeof(user_t*));
|
||||||
|
|
||||||
|
@ -14,6 +16,26 @@ void user_context_init() {
|
||||||
ctx.users[i] = NULL;
|
ctx.users[i] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL user_context_add(socket_t *sock) {
|
||||||
|
int i;
|
||||||
|
for(i = 0; i < MAX_CONNS && ctx.users[i] != NULL; ++i);
|
||||||
|
if(i >= MAX_CONNS)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void user_context_remove(user_t *user) {
|
||||||
|
if(user_check_flag(user, USER_FLAG_DELETING))
|
||||||
|
return;
|
||||||
|
|
||||||
|
pthread_mutex_lock(&user->mx_user);
|
||||||
|
user->flags |= USER_FLAG_DELETING;
|
||||||
|
list_remove_item(ctx.active_users, user);
|
||||||
|
users[user->user_id] = NULL;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void user_context_free() {
|
void user_context_free() {
|
||||||
list_free(ctx.active_users);
|
list_free(ctx.active_users);
|
||||||
|
|
||||||
|
@ -23,3 +45,25 @@ void user_context_free() {
|
||||||
|
|
||||||
free(ctx.users);
|
free(ctx.users);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
user_t* user_init(socket_t *sock) {
|
||||||
|
user_t *user = (user_t*)malloc(sizeof(user_t));
|
||||||
|
user->mx_user = PTHREAD_MUTEX_INITIALIZER;
|
||||||
|
|
||||||
|
|
||||||
|
return user;
|
||||||
|
}
|
||||||
|
|
||||||
|
void user_free(user_t *user) {
|
||||||
|
packet_t *pck = NULL;
|
||||||
|
|
||||||
|
while((pck = (packet_t*)queue_pop(user->in_packets) != NULL)
|
||||||
|
packet_free(pck);
|
||||||
|
queue_free(user->in_packets);
|
||||||
|
|
||||||
|
while((pck = (packet_t*)queue_pop(user->out_packets) != NULL)
|
||||||
|
packet_free(pck);
|
||||||
|
queue_free(user->out_packets);
|
||||||
|
|
||||||
|
free(user);
|
||||||
|
}
|
|
@ -3,28 +3,35 @@
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <pthread.h>
|
||||||
#include "list.h"
|
#include "list.h"
|
||||||
#include "queue.h"
|
#include "queue.h"
|
||||||
#include "sock.h"
|
#include "sock.h"
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
|
#define USER_FLAG_LOGGED 1
|
||||||
|
#define USER_FLAG_DELETING 2
|
||||||
|
|
||||||
typedef struct user_t user_t;
|
typedef struct user_t user_t;
|
||||||
struct user_t {
|
struct user_t {
|
||||||
queue_t *in_packets;
|
pthread_mutex_t mx_user;
|
||||||
pthread_mutex_t mx_in_packets;
|
|
||||||
|
|
||||||
|
queue_t *in_packets;
|
||||||
queue_t *out_packets;
|
queue_t *out_packets;
|
||||||
pthread_mutex_t mx_out_packets;
|
|
||||||
|
|
||||||
socket_t *sock;
|
socket_t *sock;
|
||||||
|
uint64_t flags;
|
||||||
uint16_t user_id, context_id;
|
uint16_t user_id, context_id;
|
||||||
uint16_t x, y;
|
uint16_t x, y;
|
||||||
};
|
};
|
||||||
|
|
||||||
void user_context_init();
|
void user_context_init();
|
||||||
|
void user_context_add(user_t*);
|
||||||
|
void user_context_remove(user_t*);
|
||||||
|
|
||||||
void user_context_free();
|
void user_context_free();
|
||||||
|
|
||||||
|
user_t* user_init(socket_t*);
|
||||||
|
BOOL user_check_flag(user_t*, uint64_t);
|
||||||
|
void user_free(user_t*);
|
||||||
|
|
||||||
#endif
|
#endif
|
Loading…
Reference in a new issue