// DEBUG :: true
-#if (package runtime).arch == .X86_64 { #library_path "./lib" }
-#if (package runtime).arch == .AARCH64 { #library_path "./lib/aarch64" }
+#if runtime.arch == .X86_64 { #library_path "./lib" }
+#if runtime.arch == .AARCH64 { #library_path "./lib/aarch64" }
#load "core/std"
-use package core
+use core
BackgroundComponent :: struct {
use component: Component;
-use package core
+use core
CollisionMaskComponent :: struct {
use component: Component;
-use package core
+use core
//
// Currently, DispenserComponents only dispense Item_Entity's, and no
-use package core
+use core
EntrywayComponent :: struct {
use component: Component;
-use package core
+use core
#local Furniture_Type :: enum {
Seat;
-use package core
+use core
#local Transaction :: struct {
amount: i32;
-use package core
-use package glfw3
+use core
+use glfw3
Facing :: enum {
-use package core
+use core
#local Patron_State :: enum {
Walking_To_Seat;
-use package core
-use package glfw3
+use core
+use glfw3
PlayerComponent :: struct {
use base: Component;
// - [x] Serialize / Deserialize a scene
//
-use package core
-use package opengles
-use package glfw3
-#local type_info :: package runtime.info
+use core
+use opengles
+use glfw3
+#local type_info :: runtime.info
Editor_Range :: struct {min, max: f32;}
Editor_Disabled :: struct {}
-use package core
-use package glfw3
+use core
+use glfw3
#tag Entity_Schematic.{
(scene) => wall_create(scene, .{0,0}, .{0,0})
-use package core
+use core
Item :: struct {
-use package core
-use package glfw3
+use core
+use glfw3
Entity_Nothing :: cast(Entity_ID) 0
Entity_ID :: #distinct u32
-#match hash.to_u32 macro (e: Entity_ID) => (package core.hash).to_u32(cast(u32) e);
+#match hash.to_u32 macro (e: Entity_ID) => core.hash.to_u32(cast(u32) e);
#operator == (a, b: Entity_ID) => cast(u32) a == cast(u32) b;
#operator != (a, b: Entity_ID) => cast(u32) a != cast(u32) b;
}
#local scene_load_schematics :: (use this: ^Scene) {
- use package runtime.info;
+ use runtime.info;
index := 0;
for type_table {
comp_type := cast(type_expr) index;
if !component_vtables->has(comp_type) {
vtable := new(Component_Vtable, allocator=entity_allocator);
- (package runtime.info).populate_struct_vtable(vtable, comp_type, safe=false);
+ runtime.info.populate_struct_vtable(vtable, comp_type, safe=false);
component_vtables[comp_type] = vtable;
}
}
}
scene_duplicate :: (use this: ^Scene, entity: ^Entity) -> ^Entity {
- type_info :: package runtime.info
+ type_info :: runtime.info
new_entity := this->make();
new_entity.flags = entity.flags;
}
scene_create_component :: (use this: ^Scene, component_type: type_expr) -> ^Component {
- type_info :: package runtime.info
+ type_info :: runtime.info
comp := cast(^Component) new(component_type, allocator=entity_allocator);
comp.type = component_type;
}
scene_modify_component :: macro (this: ^Scene, entity: ^Entity, $component_type: type_expr, init_block: Code) where IsComponent(^component_type) {
- use package core.intrinsics.onyx {__initialize}
+ use core.intrinsics.onyx {__initialize}
comp: ^component_type;
if !entity->has(component_type) {
-use package core
+use core
// #local background_texture: Texture;
-use package core
+use core
#tag Entity_Schematic.{ Entryway.create }
Entryway :: struct {
-use package core
+use core
#tag Entity_Schematic.{
(scene) => Furniture.create(scene, .{0, 0})
-use package core
+use core
#tag Entity_Schematic.{
(scene) => Patron.create(scene, .{0,0})
-use package core
-use package glfw3
+use core
+use glfw3
Player_Controls :: struct {
up : i32;
-use package core
+use core
// Flags to control how a field of a structure is being stored
// in the level file.
// writer := ^stdio.print_writer;
- use package runtime.info;
+ use runtime.info;
for entities {
info := cast(^Type_Info_Struct) get_type_info(it.schematic);
}
emit_struct_fields :: (v: any, dest: ^io.Writer, parent_name: str) {
- use package 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.");
next_entity_id = 0;
}
- use package runtime.info;
+ use runtime.info;
current_entity: ^Entity;
current_component: ^Component;
-use package core
-use package glfw3
-use package opengles
+use core
+use glfw3
+use opengles
//
// Game Global Variables
-use package core
-use package opengles
+use core
+use opengles
Canvas :: struct {
-use package core
-use package core.intrinsics.onyx {__zero_value}
-use package stb_truetype
-use package opengles
+use core
+use core.intrinsics.onyx {__zero_value}
+use stb_truetype
+use opengles
#local {
font_registry: Map(FontDescriptor, Font);
-use package core
-use package opengles
-use package glfw3
+use core
+use opengles
+use glfw3
immediate_init :: () {
memory.alloc_slice(^vertex_data, Maximum_Vertex_Count);
-use package core
-use package opengles
+use core
+use opengles
Mesh :: struct (Vertex_Type: type_expr) {
handle: GLint;
glBindBuffer(GL_ARRAY_BUFFER, mesh.vertex_handle);
glBufferData(GL_ARRAY_BUFFER, sizeof T * verticies.count, verticies.data, gl_hint);
- type_info :: package runtime.info
+ type_info :: runtime.info
vertex_info := cast(^type_info.Type_Info_Struct) type_info.get_type_info(T);
vertex_attr := 0;
for attr: vertex_info.members {
-use package core
-use package opengles
+use core
+use opengles
Shader :: struct {
vs, fs: GLuint;
-use package core
-use package core.intrinsics.onyx { __zero_value as Zero }
-use package opengles
-use package stb_image
+use core
+use core.intrinsics.onyx { __zero_value as Zero }
+use opengles
+use stb_image
#local texture_cache: Map(str, Texture);
// Very simple immediate mode UI
//
-use package core
-use package opengles
-use package glfw3
+use core
+use opengles
+use glfw3
UI_Id :: u32
scroll_states : Map(UI_Id, Scroll_State);
get_site_hash :: macro (site: CallSite, increment := 0) -> UI_Id {
- hash :: package core.hash
- file_hash := hash.to_u32(site.file);
- line_hash := hash.to_u32(site.line);
- column_hash := hash.to_u32(site.column);
+ file_hash := core.hash.to_u32(site.file);
+ line_hash := core.hash.to_u32(site.line);
+ column_hash := core.hash.to_u32(site.column);
return ~~ (file_hash * 0x472839 + line_hash * 0x6849210 + column_hash * 0x1248382 + increment);
}
-use package core
-use package opengles
-use package glfw3
-#local runtime :: package runtime
+use core
+use opengles
+use glfw3
DEBUG :: #defined(runtime.vars.DEBUG)
-use package core
-use package openal
+use core
+use openal
Sound :: struct {
buffer: u32;
-use package core
+use core
WAV_File :: struct {
Format :: enum {