1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- Voxelands - rewritten in C
- What to do with this repo:
- clone it
- pick some functionality from the current tree
- rewrite it in C(89)
- commit it here
- if something needs a bit of boilerplate, darkrose probably already has it - ask
- libs included here already:
- array.h - gives dynamic arrays
- crypto.h - some some basic hashes, base64, etc
- file.h - interact with files as memory buffers, use this to load/read/write/save files, also useful for replacing stream buffers in cpp
- list.h - linked list code, any struct with the four prev/next/first/last pointers can use this
- nvp.h - name/value pair, basic hash table on top of a linked list, use for config, or to replace cpp std::map
- path.h - path resolution, use this to get the path of a file
- thread.h - threads and mutexes, can safely lock a mutex twice from the same thread without locking up
- common.h - includes some 3D maths, logging, and config functions, as well as some string functions (including cross-arch strdup)
- - also has some macros for exposing functions in headers
- - and some common/useful structs (vectors, positions, colours, quaternions, rectangles, collision boxes, etc)
- SOME TODO:
- collision.c is waiting on content*.c/h for getting block data
- log.c is waiting on ui and in-game console
- Makefile.mingw-cross/other-platform need writting
- crypto needs sha1
- content can probably start going in, very little graphics support in content features at the moment though
- help system in command system needs implementing, also help function should list all commands
- COMMANDS:
- commands will eventually work the same from the in-game console (prefixed with /), from the system console, in config files, and on the command line when starting the client or server:
- so far only config files and command line are implemented.
- bind <name> [<modifier>+[...]]<key-or-button>
- - bind a key or mouse button, with optional modifiers (ctlr,alt,shift,super)
- - to a command or event, <name> must be a single-word command or event
- - a key is typically a single character (eg: k,Ä,w), or key-name (eg: space, up)
- - a mouse button is one of mouse-left, mouse-centre, mouse-right, scroll-up, scroll-down
- alias [name] [command]
- - alias a command to another command, helps with keybindings, as multi-word
- - commands can be aliased to a single word,
- - eg: alias fullscreen set wm.fullscreen true
- - if no command is given, will unalias (delete) the <name> command
- - if no arguments are given, will list all aliases
- set <name> <value>
- - set config setting <name> to <value>
- get <name>
- - prints the value of config setting <name> to console (not yet implemented)
- unset <name>
- - unset config setting <name>, this restores the default value
- exec <file>
- - execute the commands in <file>
- ignore <file>
- - set the ignore flag for <file>, this will prevent a file from being loaded
- - such as automatically loaded files (default.cfg) or files loaded from exec in
- - other config files
- - will also prevent a file from having config saved to it
- - note that `exec <file>` removes this flag when used after initial config loading
- help [command]
- - shows a list of commands, or help for a command (not fully implemented)
|