From 3f85af5b634130036c202342afe4d2d6f0553d75 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Wed, 2 Mar 2022 11:36:40 -0600 Subject: [PATCH] random changes --- .gitignore | 3 +- .vscode/tasks.json | 8 ++++ run_tree/assets/images/spritesheet.png | Bin 4568 -> 4553 bytes src/entity/components/patron.onyx | 39 ++++++++------- src/entity/editor.onyx | 8 ++-- src/game.onyx | 4 ++ src/main.onyx | 6 ++- src/sfx/wav_file.onyx | 63 ------------------------- 8 files changed, 44 insertions(+), 87 deletions(-) diff --git a/.gitignore b/.gitignore index 2a82e9b..54f6f03 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ *.code-workspace *.sublime-project *.sublime-workspace -src/config.onyx \ No newline at end of file +src/config.onyx +*.wasm \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index c78e890..1b4ee0b 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -12,6 +12,14 @@ "problemMatcher": "$onyx", "command": "./run.sh", "args": ["build"], + "presentation": { + "echo": true, + "reveal": "silent", + "focus": false, + "panel": "shared", + "showReuseMessage": false, + "clear": true, + }, "group": { "kind": "build", "isDefault": true diff --git a/run_tree/assets/images/spritesheet.png b/run_tree/assets/images/spritesheet.png index 170834d4669f652c03141492415243b6ba6040d3..59a315520caabd435f17fc26a11c88c50cf48897 100644 GIT binary patch delta 3697 zcmV-%4vz8IBgrF>G=G3eL_t(|obBCPj9t}z$MNr4`*O|<7@L@+rQD1O4^=BAqEgcE zkcXOvU?44mxHN?}kN^qIRDFmNm6nJ?qbjM?rZtHRO%p00K~BgGY*C2YDpEmhP}Da{ z1HJ{Y!6Aw9*mKUltbZT&obj3QoVgF4@%nwN(abrs|L2@}_<#TQUTg2Y>=?kztSW0# zXS{YK1490d0&DhXGSB_1pGtBPdt_A-Aca8s3z3Npzf4={LnVDgn)lL~c<8*QolC)xI z*vRW)$O4tsqyX__B^eBIjs*mmz)(y@y5 z>pVwa$vHCG<&3w&p|T?F4lz7j0ni;gvDrI2hiSiOjDOBELjaS0?tK@Lm7#wKFfle? zmm0Tz>KOa?m(-^hoOemajh{Zs+TonxwSo1gr2q^M4+C)cp5Z1$e%`!9f1~#YLBEL_ z5jko6l*bOB94i1g^DTj!J~_%y4>gDVYpM9?C*R;z*EI9gvjY8%Keget_ZL}t(&?TY z9d2^rjen!fPWl&bjPZrPT+e}`0>&77JqNlI+h6zaF}_K2G>~7?)C_9);zw?xMnq1o zX#>C?D4Xw9&X?|J(-}?q)6c!mgIhDc{z%T~?#V~*Pd*3l`_-nQdqFTrukoLJ4wn9^ z0uh;yX#>Em^=yA=4WqA=-2ACy{KGxX-h3#}=zn$`>CoiP{r1iG@Z@uM0>^`3kSCuz zUITY7^5cuhVoVzV9Ig4;|8^Mu<>oYBUN%F5cGl*)5C4pB{CzfQ^KH-E2{+#ZFcAcU ze0zMmZO^FrMNYQ<05GPxGH@=Qy8FHGnem1mZ}35SjsMi$?}aTtSjgLn$P$@)1YiK` z&VO3R^&fwozq|W%;27)P+Kl;+*3H~NdhRfAc%ta=^Ut#O?)NqiJ~Q*4{i*To4nO}a zYZw3dMPw0Dn!Wy{S-oF$nulxG75wezbLw@?fx#QE2LSdzH~B@@-g(R&zUNs3jt9X2 zho66TqGr*bUPKn9cLXpg1Wr%jq5IC_z*I}4Y*<%wXn&iBzPg6;u;*L~ z-U}ci5mA#d1Qe675fPKH5fOiEL5p`JNn&+fPdxVC6GB+<>kY8rMM~dHT2Db%v+0)w zAGC3rT2)otcv(#d@aq>}gs0~J_U$F{aNiDZOArLBuAx@*{otyPyMC@i0CUdSpWSc{ zpZW0lO`(H2K$@nc&3_%pU*C2CpS%4c@;o=@*T~lY{l=^3l}jSBK(l{#nsd(n@VA?O zHiKY}s)ocvUDtHVgb<*pz|6n`AGy51JJ|NPw-CZyj|SBIB5$%e9RY*@!N7Y+5=Y{j zBY-pktXV2N@x7OGl$9HQJa=k*kvHFLU1xXPcs>UY?V}vu!snN=eZUujLf8>1b{PI3CvlTy?ClaGsce~yj-4gN?et7UV2_axslILx_ z_jJ1*hKEn5EW7+*-*4bt!p3|rMG37;eJ`?-%@hFk;maL$0Ph?J{qK=_M+lx@3Xf8B zj9FCKp(I7r5)_P_E(uc`M;s`>1#&@D^S1TM}V<;7wPFLXahk~~WPm4hO( zGR!gw=y~_q&+y}Y;0*40U_WV^a@&>1FMti^NW9T49e;j*69~6#1`IAe=f8OR<#)fS z&F`FB)*}s_(U4Qgi~;bLVmsa90v_Jg?D;=-H8?6d1+;&%=1M^4j5~s*^t$2#sCNbilPA5%;0$sILF&B*g#bq4)BSit^?jD?B2hds)jr@ymx?6 zh2{SvS~-k$YpNn8Z$XlJ2!T9xn6C+WLfM79U4wtYXcrQf(CL({U!UP!$?3zMR?9JZ zxMr;Igt{hAQ@RC=9tBcIw=e=J-dl5Nq{u2aV*ot(eYovPsA>Smh39T)LI8&wpA<~I z!vP@#&Oc`Zsdwysc@I@>-2MU2w#SyYQOwMJZD;SWya3?(_vaiwW~@6i!&#uyg;v^Z za?FHbz9dmoX8?R1z@Ud#* zo`44*t7h7MHp|(RlRlHy1CZ5h;1NKYrrdveMMWJT@x8-*PZes61m}|Ry{b`F0i36~ z-pAp6Gcnl8;Nw@rw#OFy`KD{GxrD-u+c@X!hAZ0~=>+Nu&RSbj;LAHSdXD;sF#o}y~T`rdmS2F_1xmuJ1J0-K(F`vn*B(t$m&fH{Eiy+3Dv zb=BmL_ZN>>utX~bRRl6>vX*D`s3!9zP6ICmHZz7=&ClJkW^}9~@lB&-iNm|*sz3`y zD|0xE5R5c+%}qegajfe|62{LC%*~+YpYq(I4!h0FJ+h;qHRNfhfp31l&?!BM(u|X# z2`hh`P1pR>{BF@9@bKd$5ACeg{1UB!0npsQV>pb&1w7U)@?inzn#sR9IDF!1gGistzPc zN>P+#X+oOxRtie6;OLa#T}3NP87pcWwxE9tbEY);B>iU#dc%cPCuCVhx2SpL;9dZ} z`sDnV`s!OA%=LXOxiv%J^5uACk=0>fclPe#FDp2$?HKFU;F_8K=lAUA!gDVGnzeub z%z0ki{~{aC-AGjjhS~|>7|NTo0)78)z+x=fMK{hl`_PpMM~)=mV9VvO{aT_({P z7y!3yHtye1^R@qI@kg7w?0b118_(ZJS=D4o;EwzEk!4wPsW9-zztfxv@Xqo4p51t7 zd}&7uvyzWr75L)!7WDZ(v9LdDc1eHYd309?fZyGe^q#&HczU_sQ)HzXI0R^=aNAYQ z&;PQkg>#OV5ANor1N*t~yp4SR_KPUXvbpQ;)(biB><#>Q-#+%eyoW5YiHm=3+Z-sW z`JD<}2JfN?lTSG3?E1|K4}P!2%tp*?9B-r%fctj(t-U>Z zmZjrEfdsQ^YE#||Y)unLl4Pzc1C31iK9f03+BxU8UUOMS>I2)KnB0H-J!Uqt{fTnx zhpzHmw<+P9yXvjeZ6|UnnM(jb)5tI$1R;cp#wg3?M0!=7a7cbHG>u=?^{mZ5*F*Zg z?e3jvyWTd=IlFdKLXy{P-x;QD{vIjyV^uKg{~qyH9qAuyNs5?OTy2EhG0 zr#(V(c@;~Txrq=6zdXbZ7+9QBLJwDfU{U(}!>gzOT4Qy%%tmgZvRj>Nh zTtDe7K>uF5zuBk!JYxzBZ2m#diO5MaDFFKS%>6s*DL>EN#cF?akyT;ZA;5Ai;VmL7 z%LxI{zlZM~&d+t?Z&nHxkrn0m@;Wo@_NV*ZjG@rmynmC4sR4}-L{^I9H{LH%V>;*D zTu%Xt$jLQn2r%0We~%^tMNSQq0zi9ck+_^N3Aj{O0#13+d6$UD@|*E2z@nH<8V2a- zLS*Hc;cmdmyX}AZH1Nbkp!WPCD_TmkTF$$s{=zvo_0GAecL4qft)C~ds(Geq{vI>i zYGzYc$LX1Ul^o}EHb7(rOKI+Rzl3S-!JpoOfXIrr=-smh`XZ}WYM3qN zeqzx5{Hj;|YOO!1i}j1h$)x}giI@UFBw`8xk%%b(L?V;b4i>Z84(b9FPutigv1d<8 P00000NkvXXu0mjf{`H3M delta 3722 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 diff --git a/src/entity/components/patron.onyx b/src/entity/components/patron.onyx index fd2fb88..6d32f96 100644 --- a/src/entity/components/patron.onyx +++ b/src/entity/components/patron.onyx @@ -20,11 +20,7 @@ PatronComponent :: struct { consume_timeout: f32; init :: (use this: ^PatronComponent) { - printf("{*}\n", ^item_store.items); - items := item_store.items.entries; - r := random.between(0, (items.count - 1)); - order_item = items[r].key; - printf("{} {} {}\n", order_item, r, items.count); + order_item = random.choice(item_store.items.entries).key; } added :: (use this: ^PatronComponent, entity: ^Entity) { @@ -35,22 +31,29 @@ PatronComponent :: struct { } } + find_available_seat :: (use this: ^PatronComponent) -> bool { + seats := scene->query_by_component(.{ 0, 0, 10000, 10000 }, FurnitureComponent); + defer memory.free_slice(^seats); + if seats.count == 0 do return false; + + while seat == Entity_Nothing { + it := random.choice(seats); + furniture := it->get(FurnitureComponent); + if furniture.furniture_type != .Seat do continue; + if furniture->try_take() { + seat = it.id; + break; + } + } + + return true; + } + update :: (use this: ^PatronComponent, entity: ^Entity, dt: f32) { if state == .Walking_To_Seat { if seat == Entity_Nothing { - seats := scene->query_by_component(.{ 0, 0, 10000, 10000 }, FurnitureComponent); - defer memory.free_slice(^seats); - - for seats { - furniture := it->get(FurnitureComponent); - if furniture.furniture_type != .Seat do continue; - if furniture->try_take() { - seat = it.id; - break; - } - } - - if seat == Entity_Nothing { + found_seat := this->find_available_seat(); + if !found_seat { state = .Leaving; return; } diff --git a/src/entity/editor.onyx b/src/entity/editor.onyx index 570f4dd..b6e85aa 100644 --- a/src/entity/editor.onyx +++ b/src/entity/editor.onyx @@ -251,13 +251,11 @@ editor_draw :: () { } draw_textbox(.{x, y + 72.0f, w / 2.0f, 36.0f}, ^test); - - #persist dumb := false; - - draw_checkbox(.{x, y + 150, w, 36.0f}, ^dumb, "Testing checkboxes"); } #local render_entity_list :: (x, y, w, h: f32) { + scrolling_region_start(.{x, y, w, h}); + buf: [256] u8; for scene.entities { msg := conv.format(buf, "{} ({})", it.schematic, cast(u32) it.id); @@ -266,6 +264,8 @@ editor_draw :: () { } y += 32; } + + scrolling_region_stop(); } #local render_entity_fields :: (entity: ^Entity, x, y, w, h: f32) { diff --git a/src/game.onyx b/src/game.onyx index 5a6a959..ff76e24 100644 --- a/src/game.onyx +++ b/src/game.onyx @@ -35,6 +35,10 @@ game_init :: () { item_store->load_items_from_file("scenes/default.items"); } +game_deinit :: () { + Audio_Manager.deinit(); +} + #local quick_save_file := "scenes/quick_save_new.scene"; game_update :: (dt: f32) { diff --git a/src/main.onyx b/src/main.onyx index c464bb3..c3c6c20 100644 --- a/src/main.onyx +++ b/src/main.onyx @@ -39,6 +39,10 @@ init :: () { #if DEBUG { debug_font = font_lookup(.{"./assets/fonts/calibri.ttf", 16}); } } +deinit :: () { + game_deinit(); +} + update :: (dt: f32) { input_update(); @@ -141,7 +145,7 @@ create_window :: () => { } main :: (args) => { - // random.set_seed(os.time()); + random.set_seed(os.time()); debug_set_level(.Debug); if !glfwInit() { diff --git a/src/sfx/wav_file.onyx b/src/sfx/wav_file.onyx index cfc5fc1..ec8ed40 100644 --- a/src/sfx/wav_file.onyx +++ b/src/sfx/wav_file.onyx @@ -64,67 +64,4 @@ load_wav_file :: (path: str) -> WAV_File { defer pos += n; return data[pos .. pos+n]; } -} - - -#if false { -main :: (args) => { - dev := alcOpenDevice(null); - defer alcCloseDevice(dev); - - con := alcCreateContext(dev, null); - alcMakeContextCurrent(con); - defer { - alcMakeContextCurrent(~~ cast(u64) 0); - alcDestroyContext(con); - } - - alGetError(); - buf: u32; - alGenBuffers(1, ^buf); - defer alDeleteBuffers(1, ^buf); - if error := alGetError(); error != AL_NO_ERROR { - printf("AL ERROR: {}\n", error); - return; - } - - sample_rate := 44100; - -/* - wav_data := memory.make_slice(i16, sample_rate * 5); - for i: wav_data.count { - sample := math.sin((math.PI * 2.0f * ~~i * 263.2f) / ~~sample_rate) * 32768; - sample *= 1 - cast(f32) i / ~~wav_data.count; - wav_data[i] = cast(i16) cast(i32) (sample); - } - */ - - wav_file_contents := os.get_contents("/home/brendan/test.wav"); - wav_data := extract_wav_file_data(wav_file_contents); - - alBufferData(buf, AL_FORMAT_STEREO16, wav_data.data, wav_data.count, sample_rate); - - alListener3f(AL_POSITION, 0, 0, 0); - alListener3f(AL_VELOCITY, 0, 0, 0); - alListenerfv(AL_ORIENTATION, ~~ f32.[0, 0, 1, 0, 1, 0]); - - source: u32; - alGenSources(1, ^source); - defer alDeleteSources(1, ^source); - alSourcef(source, AL_PITCH, 1); - alSourcef(source, AL_GAIN, 0.7); - alSource3f(source, AL_POSITION, 0, 0, 0); - alSource3f(source, AL_VELOCITY, 0, 0, 0); - alSourcei(source, AL_LOOPING, AL_FALSE); - - alSourcei(source, AL_BUFFER, buf); - alSourcePlay(source); - - state: i32; - while true { - os.sleep(1000); - alGetSourcei(source, AL_SOURCE_STATE, ^state); - if state != AL_PLAYING do break; - } -} } \ No newline at end of file -- 2.25.1