wip
This commit is contained in:
parent
edd75c58f6
commit
b9b549afcd
9 changed files with 160 additions and 7 deletions
|
|
@ -15,8 +15,8 @@ file(GLOB CLIENT_SRC client/*.c)
|
|||
add_executable(af_server ${SERVER_SRC})
|
||||
add_executable(af_client ${CLIENT_SRC})
|
||||
|
||||
target_include_directories(af_server PRIVATE include)
|
||||
target_include_directories(af_client PRIVATE include)
|
||||
target_include_directories(af_server PRIVATE include ${CMAKE_CURRENT_BINARY_DIR})
|
||||
target_include_directories(af_client PRIVATE include ${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
target_compile_definitions(af_server PRIVATE AF_SERVER)
|
||||
target_compile_definitions(af_client PRIVATE AF_CLIENT)
|
||||
|
|
@ -24,9 +24,16 @@ target_compile_definitions(af_client PRIVATE AF_CLIENT)
|
|||
target_link_libraries(af_server PRIVATE fishsoup)
|
||||
target_link_libraries(af_client PRIVATE fishsoup Mw glad)
|
||||
|
||||
configure_file(include/af_config.h.in af_config.h)
|
||||
|
||||
install(
|
||||
TARGETS af_server af_client
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
)
|
||||
|
||||
install(
|
||||
FILES logo.png
|
||||
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/assaultfish
|
||||
)
|
||||
|
|
|
|||
8
client/gl.c
Normal file
8
client/gl.c
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#include <af_common.h>
|
||||
|
||||
void gl_init(void){
|
||||
}
|
||||
|
||||
void gl_render(void){
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
}
|
||||
|
|
@ -2,6 +2,13 @@
|
|||
|
||||
MwWidget root, window, opengl;
|
||||
|
||||
static const MwRect sizes[] ={
|
||||
{0, 0, 640, 480},
|
||||
{0, 0, 800, 600},
|
||||
{0, 0, 1024, 768},
|
||||
{0, 0, 1280, 1024},
|
||||
};
|
||||
|
||||
static void resize(MwWidget handle, void* user, void* client) {
|
||||
int ww = MwGetInteger(window, MwNwidth);
|
||||
int wh = MwGetInteger(window, MwNheight);
|
||||
|
|
@ -15,7 +22,7 @@ static void resize(MwWidget handle, void* user, void* client) {
|
|||
}
|
||||
|
||||
static void tick(MwWidget handle, void* user, void* client) {
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
gl_render();
|
||||
|
||||
MwOpenGLSwapBuffer(opengl);
|
||||
}
|
||||
|
|
@ -24,18 +31,48 @@ static void* gl_load(const char* name) {
|
|||
return MwOpenGLGetProcAddress(opengl, name);
|
||||
}
|
||||
|
||||
int main() {
|
||||
int main(int argc, char** argv) {
|
||||
MwSizeHints sh;
|
||||
MwRect rc;
|
||||
int i;
|
||||
|
||||
MwLibraryInit();
|
||||
|
||||
root = MwVaCreateWidget(NULL, "root", NULL, 0, 0, 0, 0,
|
||||
MwNwaitMS, 15,
|
||||
NULL);
|
||||
|
||||
window = MwVaCreateWidget(MwWindowClass, "main", root, MwDEFAULT, MwDEFAULT, 800, 600,
|
||||
window = MwVaCreateWidget(MwWindowClass, "main", root, 0, 0, 640, 480,
|
||||
MwNtitle, "AssaultFish",
|
||||
NULL);
|
||||
|
||||
opengl = MwCreateWidget(MwOpenGLClass, "opengl", window, 0, 0, 800, 600);
|
||||
MwGetScreenSize(window, &rc);
|
||||
|
||||
for(i = sizeof(sizes) / sizeof(sizes[0]) - 1; i >= 0; i--){
|
||||
if(sizes[i].width < rc.width && sizes[i].height < rc.height){
|
||||
sh.min_width = sh.max_width = sizes[i].width;
|
||||
sh.min_height = sh.max_height = sizes[i].height;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for(i = 1; i < argc; i++){
|
||||
if(strcmp(argv[i], "--width") == 0 && (i + 1) < argc){
|
||||
sh.min_width = sh.max_width = atoi(argv[i + 1]);
|
||||
}else if(strcmp(argv[i], "--height") == 0 && (i + 1) < argc){
|
||||
sh.min_height = sh.max_height = atoi(argv[i + 1]);
|
||||
}
|
||||
}
|
||||
|
||||
MwVaApply(window,
|
||||
MwNsizeHints, &sh,
|
||||
MwNx, (rc.width - sh.max_width) / 2,
|
||||
MwNy, (rc.height - sh.max_height) / 2,
|
||||
MwNwidth, sh.max_width,
|
||||
MwNheight, sh.max_height,
|
||||
NULL);
|
||||
|
||||
opengl = MwCreateWidget(MwOpenGLClass, "opengl", window, 0, 0, sh.max_width, sh.max_height);
|
||||
|
||||
MwOpenGLMakeCurrent(opengl);
|
||||
|
||||
|
|
@ -43,6 +80,9 @@ int main() {
|
|||
|
||||
resize(window, NULL, NULL);
|
||||
|
||||
gl_init();
|
||||
ui_init();
|
||||
|
||||
MwAddUserHandler(window, MwNresizeHandler, resize, NULL);
|
||||
MwAddUserHandler(root, MwNtickHandler, tick, NULL);
|
||||
|
||||
|
|
|
|||
78
client/ui.c
Normal file
78
client/ui.c
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
#include <af_common.h>
|
||||
|
||||
MwWidget ui_notice(int width, int height){
|
||||
if(width == 0 && height == 0){
|
||||
width = 400;
|
||||
height = 300;
|
||||
}
|
||||
|
||||
return MwVaCreateWidget(MwFrameClass, "notice", window, (MwGetInteger(window, MwNwidth) - width) / 2, (MwGetInteger(window, MwNheight) - height) / 2, width, height,
|
||||
MwNhasBorder, 1,
|
||||
MwNinverted, 0,
|
||||
NULL);
|
||||
}
|
||||
|
||||
void ui_notice_destroy(MwWidget widget){
|
||||
MwDestroyWidget(widget);
|
||||
}
|
||||
|
||||
static void ui_login(void){
|
||||
MwWidget wnd = ui_notice(0, 0);
|
||||
int bw = MwDefaultBorderWidth(wnd);
|
||||
MwWidget join = MwVaCreateWidget(MwButtonClass, "join", wnd, MwGetInteger(wnd, MwNwidth) - bw - 10 - 96, MwGetInteger(wnd, MwNheight) - bw - 10 - 24, 96, 24,
|
||||
MwNtext, "Join",
|
||||
NULL);
|
||||
MwWidget box = MwVaCreateWidget(MwBoxClass, "box", wnd, bw, bw, MwGetInteger(wnd, MwNwidth) - bw * 2, MwGetInteger(wnd, MwNheight) - bw * 2 - 10 - 24,
|
||||
MwNorientation, MwVERTICAL,
|
||||
MwNmargin, 10,
|
||||
MwNpadding, 10,
|
||||
NULL);
|
||||
MwWidget icon = MwVaCreateWidget(MwImageClass, "icon", box, 0, 0, 0, 0,
|
||||
MwNfillArea, 0,
|
||||
MwNfixedSize, 100,
|
||||
NULL);
|
||||
MwWidget entrybox[3];
|
||||
MwLLPixmap px = MwLoadImage(wnd, DATAROOTDIR "/assaultfish/logo.png");
|
||||
const char* labels[3] = {
|
||||
"Username",
|
||||
"Hostname",
|
||||
"Port"
|
||||
};
|
||||
const char* entries[3] = {
|
||||
"JohnDoe",
|
||||
"127.0.0.1",
|
||||
"",
|
||||
};
|
||||
int i;
|
||||
char buf[16];
|
||||
|
||||
sprintf(buf, "%d", AF_DEFAULT_PORT);
|
||||
|
||||
entries[2] = buf;
|
||||
|
||||
for(i = 0; i < 3; i++){
|
||||
entrybox[i] = MwVaCreateWidget(MwBoxClass, "entrybox", box, 0, 0, 0, 0,
|
||||
MwNfixedSize, 24,
|
||||
MwNmargin, 10,
|
||||
NULL);
|
||||
MwVaCreateWidget(MwLabelClass, "label", entrybox[i], 0, 0, 0, 0,
|
||||
MwNfixedSize, 100,
|
||||
MwNtext, labels[i],
|
||||
MwNalignment, MwALIGNMENT_END,
|
||||
NULL);
|
||||
MwVaCreateWidget(MwEntryClass, "entry", entrybox[i], 0, 0, 0, 0,
|
||||
MwNtext, entries[i],
|
||||
NULL);
|
||||
}
|
||||
|
||||
MwVaApply(icon,
|
||||
MwNpixmap, px,
|
||||
NULL);
|
||||
|
||||
}
|
||||
|
||||
void ui_init(void){
|
||||
MwToggleDarkTheme(root, 1);
|
||||
|
||||
ui_login();
|
||||
}
|
||||
2
external/milsko
vendored
2
external/milsko
vendored
|
|
@ -1 +1 @@
|
|||
Subproject commit 75749697ba25330127fdca110fda9098d65719e3
|
||||
Subproject commit bfa0a5811ec066be64f756e88f8ba1ee4553e5a7
|
||||
|
|
@ -5,4 +5,16 @@
|
|||
#include <Mw/Milsko.h>
|
||||
#include <Mw/Widget/OpenGL.h>
|
||||
|
||||
/* main.c */
|
||||
extern MwWidget root, window, opengl;
|
||||
|
||||
/* gl.c */
|
||||
void gl_init(void);
|
||||
void gl_render(void);
|
||||
|
||||
/* ui.c */
|
||||
MwWidget ui_notice(int width, int height);
|
||||
void ui_notice_destroy(MwWidget widget);
|
||||
void ui_init(void);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@
|
|||
|
||||
#include <fishsoup.h>
|
||||
|
||||
#include <af_config.h>
|
||||
|
||||
#ifdef AF_SERVER
|
||||
#include <af_server.h>
|
||||
#endif
|
||||
|
|
|
|||
6
include/af_config.h.in
Normal file
6
include/af_config.h.in
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
#ifndef __AF_CONFIG_H__
|
||||
#define __AF_CONFIG_H__
|
||||
|
||||
#define DATAROOTDIR "@CMAKE_INSTALL_FULL_DATAROOTDIR@"
|
||||
|
||||
#endif
|
||||
BIN
logo.png
Normal file
BIN
logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.7 KiB |
Loading…
Add table
Add a link
Reference in a new issue