library=
[dependencies]
-git://onyxlang.io/repo/openal=0.0.2
-git://onyxlang.io/repo/ogre=0.0.15
+git://onyxlang.io/repo/openal=0.0.3
+git://onyxlang.io/repo/ogre=0.0.19
[dependency_folders]
git://onyxlang.io/repo/openal=openal
dest=game.wasm
case "$1" in
- build) shift; onyx -V -I ../src build -o $dest $@ ;;
+ build) shift; onyx build -V -I ../src build -o $dest $@ ;;
check) shift; onyx check -V -I ../src build $@ ;;
- run) onyx-run $dest ;;
+ run) onyx run $dest ;;
debug) shift; onyx run -V -I ../src build --debug $@ ;;
*) onyx run -V -I ../src build $@ ;;
esac
package runtime.vars
+use runtime
+
MAJOR_VERSION :: 0
MINOR_VERSION :: 1
-use core
-use ogre
+use core {*}
+use ogre {*}
BackgroundComponent :: struct {
use component: Component;
-use core
-use ogre
+use core {*}
+use ogre {*}
CollisionMaskComponent :: struct {
use component: Component;
-use core
-use ogre
+use core {*}
+use ogre {*}
//
// Currently, DispenserComponents only dispense Item_Entity's, and no
-use core
-use ogre
+use core {*}
+use ogre {*}
EntrywayComponent :: struct {
use component: Component;
-use core
-use ogre
+use core {*}
+use ogre {*}
#local Transaction :: struct {
amount: i32;
-use core
-use ogre
+use core {*}
+use ogre {*}
Facing :: enum {
-use core
-use ogre
+use core {*}
+use ogre {*}
#local Patron_State :: enum {
Walking_To_Seat;
-use core
-use ogre
+use core {*}
+use ogre {*}
PlayerComponent :: struct {
use base: Component;
// - [x] Serialize / Deserialize a scene
//
-use core
-use ogre
-use ogre.ui
+use core {*}
+use ogre {*}
+use ogre.ui {*}
use runtime {type_info :: info}
use core.misc {as_any}
i += 1;
y += Field_Height;
- member_any := any.{cast(^u8) v.data + it.offset, it.type};
+ member_any := any.{cast([&] u8) v.data + it.offset, it.type};
if is_button_just_down(GLFW_MOUSE_BUTTON_LEFT) {
is_disabled := false;
-use core
-use ogre
+use core {*}
+use ogre {*}
@Entity_Schematic.{ "Wall" }
(scene: ^Scene) => wall_create(scene, .{0,0}, .{0,0})
-use core
-use ogre
-use ogre.ui
+use core {*}
+use ogre {*}
+use ogre.ui {*}
use core.misc {as_any, any_nested_selector}
item_store_load_items_from_file :: (use this: ^Item_Store, path: str) {
// @CopyNPaste // from entity/store.onyx
- err, input_file := os.open(path, .Read);
- if err != .None {
+ input_file_res := os.open(path, .Read);
+ if !input_file_res {
logf(.Error, "Failed to open file: {}", path);
return;
}
+ input_file := input_file_res->unwrap();
+
defer os.close(^input_file);
reader := io.reader_make(^input_file);
- use type_info;
+ use runtime.info {*};
current_item: ^Item;
-use core
-use ogre
+use core {*}
+use ogre {*}
+use runtime
Entity_Nothing :: cast(Entity_ID) 0
Entity_ID :: #distinct u32
}
#local scene_load_schematics :: (use this: ^Scene) {
- use runtime.info;
+ use runtime.info { * };
index := 0;
for type_table {
-use core
-use ogre
+use core {*}
+use ogre {*}
@Entity_Schematic.{ "Patron" }
(scene: ^Scene) -> ^Entity {
-use core
-use ogre
+use core {*}
+use ogre {*}
Player_Controls :: struct {
up : Keys;
-use core
+use core {*}
use core.misc {any_nested_selector}
// Flags to control how a field of a structure is being stored
}
scene_save_to_file :: (use this: ^Scene, filename: str) {
- err, output_file := os.open(filename, .Write);
+ output_file_res := os.open(filename, .Write);
+ if !output_file_res {
+ logf(.Error, "Failed to open file: {}", filename);
+ return;
+ }
+ output_file := output_file_res->unwrap();
defer os.close(^output_file);
writer_ := io.writer_make(^output_file);
// writer := ^stdio.print_writer;
- use runtime.info;
+ use runtime.info {*};
for entities {
name := it.schematic;
}
emit_struct_fields :: (v: any, dest: ^io.Writer, parent_name: str) {
- use runtime.info;
+ use runtime.info {*};
info := cast(^Type_Info_Struct) get_type_info(v.type);
assert(info.kind == .Struct, "Expected type to be a structure.");
}
member_info := get_type_info(it.type);
- member_any := any.{cast(^u8) v.data + it.offset, it.type};
+ member_any := any.{cast([&] u8) v.data + it.offset, it.type};
name := conv.format(name_buffer, "{}{}{}",
parent_name,
}
scene_load_from_file :: (use this: ^Scene, filename: str, reset_scene := true) {
- err, input_file := os.open(filename, .Read);
- if err != .None {
+ input_file_res := os.open(filename, .Read);
+ if !input_file_res {
logf(.Error, "Failed to open file: {}", filename);
return;
}
+ input_file := input_file_res->unwrap();
+
defer os.close(^input_file);
reader := io.reader_make(^input_file);
next_entity_id = 0;
}
- use runtime.info;
+ use runtime.info {*};
current_entity: ^Entity;
current_component: ^Component;
-use core
-use ogre
+use core {*}
+use ogre {*}
//
// Game Global Variables
// This process of queueing the asset bucket should
// be made automatic somehow...
- Spritesheet', _ := texture_lookup(#cstr "./assets/images/spritesheet.png");
+ Spritesheet~, _ := texture_lookup(#cstr "./assets/images/spritesheet.png");
load_assets();
}
game_draw :: () {
- canvas_use(^scene_canvas);
+ canvas_use(&scene_canvas);
immediate_clear(.{0.15, 0.15, 0.2});
scene->draw();
immediate_flush();
immediate_clear(.{0.04, 0.04, 0.06});
immediate_set_color(.{1, 1, 1});
- texture := canvas_to_texture(^scene_canvas);
- texture_wrap(^texture, .Clamp);
+ texture := canvas_to_texture(&scene_canvas);
+ texture_wrap(&texture, .Clamp);
view_rect: Rect;
if !editor_shown() {
view_rect = Rect.{0, 0, ~~window.width, ~~window.height};
use opengles { glDisable, glEnable, GL_CULL_FACE }
glDisable(GL_CULL_FACE);
- immediate_image(^texture, view_rect.x, ~~window.height - view_rect.y, view_rect.w, -view_rect.h);
+ immediate_image(&texture, view_rect.x, ~~window.height - view_rect.y, view_rect.w, -view_rect.h);
if distortion_enabled {
shader_use(distortion_shader);
shader_set_uniform(distortion_shader, #cstr "u_texture", 0);
// #inject runtime.vars.Onyx_Enable_Operator_Methods :: true
-use core
-use ogre
+use core {*}
+use ogre {*}
DEBUG :: #defined(runtime.vars.DEBUG)
-use core
-use openal
+use core {*}
+use openal {*}
Sound :: struct {
buffer: u32;
-use core
+use core {*}
WAV_File :: struct {
Format :: enum {
defer pos += n;
return data[pos .. pos+n];
}
-}
\ No newline at end of file
+}
-use core
-use ogre
+use core {*}
+use ogre {*}
queue_assets :: (store: ^$T, callsite := #callsite) {
assets_to_load << .{ T, store, callsite };
}
load_asset_bucket :: (bucket: ^Asset_Bucket_To_Load) {
- use package runtime.info
+ use package runtime.info {*}
struct_info := cast(^Type_Info_Struct) get_type_info(bucket.type);
if struct_info.kind != .Struct do return;
for struct_info.members {
- load_asset(cast(^u8) bucket.dest + it.offset, it.type, bucket.location, it.tags);
+ load_asset(cast([&] u8) bucket.dest + it.offset, it.type, bucket.location, it.tags);
}
}
// but for now this is just for logging to the command line.
//
+use core
+
logf :: (level: Log_Level, format: str, args: ..any) {
buf: [2048] u8;
log(level, core.conv.format_va(buf, format, args));