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];
|
||||
//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,
|
||||
"testtesttesttesttesttesttest a", "test b", "test c");
|
||||
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,
|
||||
"Now turn to the left!", "Now turn to the right!", "Uh oh");
|
||||
|
||||
/*int a = 0;
|
||||
while(a != KEY_LF)
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include <stdio.h>
|
||||
#include <locale.h>
|
||||
#include <ncurses.h>
|
||||
#include "common.h"
|
||||
#include "sock.h"
|
||||
#include "packet.h"
|
||||
#include "screen.h"
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
|
||||
#define WORK
|
||||
|
||||
#define MAHOU_PORT "6770"
|
||||
|
||||
#define FALSE 0
|
||||
#define TRUE 1
|
||||
#define BOOL char
|
||||
|
|
|
@ -149,6 +149,12 @@ void* list_remove_back(list_t *list) {
|
|||
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) {
|
||||
list->iterator = 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_front(list_t*);
|
||||
void* list_remove_back(list_t*);
|
||||
void* list_remove_item(list_t*, void*);
|
||||
|
||||
void list_iter_reset(list_t*);
|
||||
void* list_iter_next(list_t*);
|
||||
|
|
17
src/main.c
17
src/main.c
|
@ -4,6 +4,12 @@
|
|||
#include "server/server.h"
|
||||
|
||||
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_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_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_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);
|
||||
|
||||
if(argc == 2 && strcmp(argv[1], "server") == 0) {
|
||||
register_spawn_type(SPAWN_SERVER);
|
||||
if(spawn_type == SPAWN_SERVER)
|
||||
server();
|
||||
} else {
|
||||
register_spawn_type(SPAWN_CLIENT);
|
||||
else
|
||||
client();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
#include "server.h"
|
||||
|
||||
void server() {
|
||||
BOOL running = TRUE;
|
||||
socket_t *conn;
|
||||
|
||||
user_context_init();
|
||||
server_context_start();
|
||||
|
||||
|
@ -9,15 +12,33 @@ void server() {
|
|||
sock_set_nonblocking(sock);
|
||||
|
||||
flimit_t vsync;
|
||||
for(;;) {
|
||||
while(running) {
|
||||
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);
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
printf("connected\r\n");
|
||||
|
@ -26,11 +47,5 @@ void server() {
|
|||
|
||||
char in[10];
|
||||
sock_recv(conn, in, 10);
|
||||
printf("got %s\r\n", in);
|
||||
|
||||
server_context_stop();
|
||||
user_context_free();
|
||||
|
||||
sock_stop(sock);
|
||||
sock_free(sock);
|
||||
printf("got %s\r\n", in);*/
|
||||
}
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
#include "user.h"
|
||||
|
||||
struct {
|
||||
pthread_mutex_t mx_ctx;
|
||||
list_t *active_users;
|
||||
user_t **users;
|
||||
} static ctx;
|
||||
|
||||
void user_context_init() {
|
||||
ctx.mx_ctx = PTHREAD_MUTEX_INITIALIZER;
|
||||
ctx.active_users = list_init();
|
||||
ctx.users = (user_t**)malloc(MAX_CONNS * sizeof(user_t*));
|
||||
|
||||
|
@ -14,6 +16,26 @@ void user_context_init() {
|
|||
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() {
|
||||
list_free(ctx.active_users);
|
||||
|
||||
|
@ -23,3 +45,25 @@ void user_context_free() {
|
|||
|
||||
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 <stdint.h>
|
||||
#include <pthread.h>
|
||||
#include "list.h"
|
||||
#include "queue.h"
|
||||
#include "sock.h"
|
||||
#include "common.h"
|
||||
|
||||
#define USER_FLAG_LOGGED 1
|
||||
#define USER_FLAG_DELETING 2
|
||||
|
||||
typedef struct user_t user_t;
|
||||
struct user_t {
|
||||
queue_t *in_packets;
|
||||
pthread_mutex_t mx_in_packets;
|
||||
pthread_mutex_t mx_user;
|
||||
|
||||
queue_t *in_packets;
|
||||
queue_t *out_packets;
|
||||
pthread_mutex_t mx_out_packets;
|
||||
|
||||
socket_t *sock;
|
||||
uint64_t flags;
|
||||
uint16_t user_id, context_id;
|
||||
uint16_t x, y;
|
||||
};
|
||||
|
||||
void user_context_init();
|
||||
|
||||
|
||||
|
||||
void user_context_add(user_t*);
|
||||
void user_context_remove(user_t*);
|
||||
void user_context_free();
|
||||
|
||||
user_t* user_init(socket_t*);
|
||||
BOOL user_check_flag(user_t*, uint64_t);
|
||||
void user_free(user_t*);
|
||||
|
||||
#endif
|
Loading…
Reference in a new issue