Compare commits

..

3 Commits

Author SHA1 Message Date
veclavtalica
2c94efb796 /apps/twnlua: add error on attempt to import twnapi.lua 2025-02-02 01:59:27 +03:00
veclavtalica
11ec35bc8a /apps/twnlua: add returns in docgen.py 2025-02-02 01:53:03 +03:00
veclavtalica
2120f6876c camera reset and default state 2025-02-02 01:41:02 +03:00
4 changed files with 20 additions and 9 deletions

View File

@ -7,9 +7,11 @@ with open(sys.argv[1], 'r') if sys.argv[1] != "-" else sys.stdin as f:
api = json.loads(api_source) api = json.loads(api_source)
def to_lua_type_annot(typename): def to_lua_type_annot(typedesc):
basetype = typename.rsplit(' *', 1)[0] if type(typedesc) is dict:
if typename == "char *": return r'{ %s }' % ','.join('%s: %s' % (f["name"], to_lua_type_annot(f["type"])) for f in typedesc["fields"])
basetype = typedesc.rsplit(' *', 1)[0]
if typedesc == "char *":
return "string" return "string"
elif basetype == "float": elif basetype == "float":
return "number" return "number"
@ -27,7 +29,9 @@ def to_lua_type_annot(typename):
return r"{ x: number, y: number, w: number, h: number }" return r"{ x: number, y: number, w: number, h: number }"
else: else:
return "unknown" return "unknown"
# raise BaseException("Unhandled type for annotation: %s" % typename) # raise BaseException("Unhandled type for annotation: %s" % typedesc)
print("error(\"townengine lua api file is not supposed to be imported!\")")
type_annotations, enum_annotations = {}, {} type_annotations, enum_annotations = {}, {}
type_annotations["ctx"] = r"{ %s, udata: table }" % \ type_annotations["ctx"] = r"{ %s, udata: table }" % \
@ -45,9 +49,14 @@ for annot in enum_annotations:
procedure_annotations = {} procedure_annotations = {}
for procedure, procedure_desc in api["procedures"].items(): for procedure, procedure_desc in api["procedures"].items():
procedure_annotations[procedure] = r"{ %s }" % \ procedure_annotations[procedure] = {}
procedure_annotations[procedure]["params"] = r"{ %s }" % \
', '.join("%s: %s" % (p["name"], to_lua_type_annot(p["type"]) + '?' * ("default" in p)) for p in procedure_desc["params"]) ', '.join("%s: %s" % (p["name"], to_lua_type_annot(p["type"]) + '?' * ("default" in p)) for p in procedure_desc["params"])
if "return" in procedure_desc:
procedure_annotations[procedure]["return"] = to_lua_type_annot(procedure_desc["return"])
for annot in procedure_annotations: for annot in procedure_annotations:
print("---@param args " + procedure_annotations[annot]) print("---@param args " + procedure_annotations[annot]["params"])
if "return" in procedure_annotations[annot]:
print("---@return " + procedure_annotations[annot]["return"])
print("function %s(args) end" % annot) print("function %s(args) end" % annot)

View File

@ -25,7 +25,9 @@ Matrix4 camera_look_at_matrix;
double depth_range_low, depth_range_high; double depth_range_low, depth_range_high;
void render_queue_clear(void) { void render_clear(void) {
draw_camera((Vec3){0, 0, 0}, (Vec3){0, 0, 1}, (Vec3){0, 1, 0}, 1.57079632679f, 1);
text_cache_reset_arena(&ctx.text_cache); text_cache_reset_arena(&ctx.text_cache);
/* since i don't intend to free the queues, */ /* since i don't intend to free the queues, */

View File

@ -230,7 +230,7 @@ bool render_init(void);
void render(void); void render(void);
/* clears all render queues */ /* clears all render queues */
void render_queue_clear(void); void render_clear(void);
/* fills two existing arrays with the geometry data of a circle */ /* fills two existing arrays with the geometry data of a circle */
/* the size of indices must be at least 3 times the number of vertices */ /* the size of indices must be at least 3 times the number of vertices */

View File

@ -211,7 +211,7 @@ static void main_loop(void) {
while (ctx.frame_accumulator >= ctx.desired_frametime) { while (ctx.frame_accumulator >= ctx.desired_frametime) {
frames += 1; frames += 1;
/* TODO: disable rendering pushes on not-last ? */ /* TODO: disable rendering pushes on not-last ? */
render_queue_clear(); render_clear();
poll_events(); poll_events();
if (ctx.window_size_has_changed) if (ctx.window_size_has_changed)
update_viewport(); update_viewport();