From 49740803e8c091b29f5f52a8be893967e4498bf0 Mon Sep 17 00:00:00 2001 From: vilayat-ali Date: Sun, 17 Mar 2024 21:51:49 +0530 Subject: [PATCH] Added WASM code and fixed lifetime fuckery --- src/game.rs | 56 +++++++++++++++++++++------------- src/lib.rs | 33 ++++++++++++++++++++ src/snake.rs | 2 ++ web/index.html | 1 + web/static/snake.d.ts | 10 ------ web/static/snake.js | 38 ++++------------------- web/static/snake_bg.wasm | Bin 41786 -> 44635 bytes web/static/snake_bg.wasm.d.ts | 4 --- 8 files changed, 77 insertions(+), 67 deletions(-) diff --git a/src/game.rs b/src/game.rs index 4458041..a0a79fb 100644 --- a/src/game.rs +++ b/src/game.rs @@ -1,18 +1,23 @@ +use std::borrow::BorrowMut; +use std::cell::RefCell; +use std::rc::Rc; + use wasm_bindgen::prelude::*; use wasm_bindgen::JsCast; +use web_sys::{console, HtmlElement}; +use crate::Coord; +use crate::{snake::Snake, food::Food, ROW_BOUND, COL_BOUND}; -use crate::{food::Food, snake::Snake, COL_BOUND, ROW_BOUND}; -use web_sys::{console, HtmlElement}; +const TICK_RATE: i32 = 500; #[wasm_bindgen] -#[derive(Debug)] pub struct Game { - pub is_running: bool, - pub score: u32, + is_running: bool, + score: u32, bounds: (u32, u32), - snake: Snake, - food_vec: Vec + snake: Rc>, + food_vec: Vec, } #[wasm_bindgen] @@ -38,29 +43,38 @@ impl Game { is_running: true, score: 0, bounds: (ROW_BOUND, COL_BOUND), - snake: Snake::new(), + snake: Rc::new(RefCell::new(Snake::new())), food_vec: Vec::with_capacity(5) } } - #[wasm_bindgen] pub fn play(&mut self) { - let window = web_sys::window().expect("Wndow not found"); + let snake = self.snake.clone(); + let window = web_sys::window().expect("Failed to load WINDOW"); + let document = window.document().expect("Failed to fetch Document"); - let game_loop = Closure::wrap(Box::new(|| { - console::log_1(&"Snake moving...".into()); - // let window = web_sys::window().expect("Wndow not found"); - // let document = window.document().unwrap(); - // let snake_node_vec = self.snake.get_snake_body().clone(); - // for node in snake_node_vec { - // let cell_element = document.get_element_by_id(&format!("cell-{}-{}", node.coord.x, node.coord.y)).unwrap().dyn_into::().unwrap(); - // cell_element.set_class_name("bg-white"); - // } + let game_loop = Closure::wrap(Box::new(move || { + let snake_instance = snake.borrow(); + let snake_vec = snake_instance.clone().get_snake_body().clone(); + + for node in snake_vec { + let Coord {x, y} = node.coord; + console::log_1(&format!("{:#?}", node.coord).into()); + let body_cell = document.clone().get_element_by_id(&format!("cell-{}-{}", x, y)).unwrap().dyn_into::().unwrap(); + body_cell.set_class_name("bg-green-700"); + } }) as Box); - // running game loop - window.set_interval_with_callback_and_timeout_and_arguments_0(game_loop.as_ref().unchecked_ref(), 500).unwrap(); + // Run game loop + let window = web_sys::window().expect("Window Object not found!"); + window + .set_interval_with_callback_and_timeout_and_arguments_0( + game_loop.as_ref().unchecked_ref(), + TICK_RATE, + ) + .expect("Failed to set gameloop"); game_loop.forget(); } + } \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index 5857a60..21e8171 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -34,3 +34,36 @@ impl Coord { } } } + +use std::rc::Rc; +use std::cell::RefCell; + +struct MyType { + value: i32, +} + +impl MyType { + fn new(value: i32) -> Self { + MyType { value } + } + + fn update(&mut self, new_value: i32) { + self.value = new_value; + } +} + +fn main() { + let my_type = Rc::new(RefCell::new(MyType::new(5))); + + // Clone the Rc to create a new reference + let my_type_clone = my_type.clone(); + + // Borrow the RefCell mutably + let mut my_type_instance = my_type.borrow_mut(); + + // Call a method on the struct + my_type_instance.update(10); + + // Access the value inside the RefCell using dereference + println!("{}", my_type_clone.borrow().value); // Output: 10 +} \ No newline at end of file diff --git a/src/snake.rs b/src/snake.rs index be92f38..a2ae1f2 100644 --- a/src/snake.rs +++ b/src/snake.rs @@ -1,4 +1,5 @@ use wasm_bindgen::prelude::*; +use web_sys::console; use crate::{COL_BOUND, ROW_BOUND}; use super::Coord; @@ -97,6 +98,7 @@ impl Snake { } }; let new_node = Node::new(new_x, new_y, node.direction); + console::log_1(&format!("New Node Appended:\n {:#?}", &new_node.coord).into()); node.next = Some(Box::new(new_node)); self.size += 1; break; diff --git a/web/index.html b/web/index.html index aaacfbc..3dfb27a 100644 --- a/web/index.html +++ b/web/index.html @@ -127,6 +127,7 @@

Game Stats

async function run() { await init(); + // initiating game const game = new Game(); game.play(); } diff --git a/web/static/snake.d.ts b/web/static/snake.d.ts index c3c9ef3..5c8d982 100644 --- a/web/static/snake.d.ts +++ b/web/static/snake.d.ts @@ -43,12 +43,6 @@ export class Game { /** */ play(): void; -/** -*/ - is_running: boolean; -/** -*/ - score: number; } /** */ @@ -96,8 +90,6 @@ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembl export interface InitOutput { readonly memory: WebAssembly.Memory; readonly __wbg_game_free: (a: number) => void; - readonly __wbg_get_game_is_running: (a: number) => number; - readonly __wbg_set_game_is_running: (a: number, b: number) => void; readonly game_new: () => number; readonly game_play: (a: number) => void; readonly __wbg_food_free: (a: number) => void; @@ -106,8 +98,6 @@ export interface InitOutput { readonly __wbg_get_food_y: (a: number) => number; readonly __wbg_set_food_y: (a: number, b: number) => void; readonly food_get_color: (a: number, b: number) => void; - readonly __wbg_set_game_score: (a: number, b: number) => void; - readonly __wbg_get_game_score: (a: number) => number; readonly __wbg_coord_free: (a: number) => void; readonly __wbg_get_coord_x: (a: number) => number; readonly __wbg_set_coord_x: (a: number, b: number) => void; diff --git a/web/static/snake.js b/web/static/snake.js index 1b44daa..a313eb5 100644 --- a/web/static/snake.js +++ b/web/static/snake.js @@ -391,32 +391,6 @@ export class Game { wasm.__wbg_game_free(ptr); } /** - * @returns {boolean} - */ - get is_running() { - const ret = wasm.__wbg_get_game_is_running(this.__wbg_ptr); - return ret !== 0; - } - /** - * @param {boolean} arg0 - */ - set is_running(arg0) { - wasm.__wbg_set_game_is_running(this.__wbg_ptr, arg0); - } - /** - * @returns {number} - */ - get score() { - const ret = wasm.__wbg_get_food_x(this.__wbg_ptr); - return ret >>> 0; - } - /** - * @param {number} arg0 - */ - set score(arg0) { - wasm.__wbg_set_food_x(this.__wbg_ptr, arg0); - } - /** */ constructor() { const ret = wasm.game_new(); @@ -610,6 +584,10 @@ function __wbg_get_imports() { const ret = getStringFromWasm0(arg0, arg1); return addHeapObject(ret); }; + imports.wbg.__wbindgen_object_clone_ref = function(arg0) { + const ret = getObject(arg0); + return addHeapObject(ret); + }; imports.wbg.__wbg_instanceof_Window_cee7a886d55e7df5 = function(arg0) { let result; try { @@ -760,10 +738,6 @@ function __wbg_get_imports() { const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); return addHeapObject(ret); }; - imports.wbg.__wbindgen_object_clone_ref = function(arg0) { - const ret = getObject(arg0); - return addHeapObject(ret); - }; imports.wbg.__wbindgen_debug_string = function(arg0, arg1) { const ret = debugString(getObject(arg1)); const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); @@ -778,8 +752,8 @@ function __wbg_get_imports() { const ret = wasm.memory; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper59 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_22); + imports.wbg.__wbindgen_closure_wrapper146 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 22, __wbg_adapter_22); return addHeapObject(ret); }; diff --git a/web/static/snake_bg.wasm b/web/static/snake_bg.wasm index b6b915cf1ca34e074fe78d8e9ef96d1f728581df..8054f4993fe3984b5809c37bcfc251c04bcd9a98 100644 GIT binary patch delta 17378 zcmc(Ge{@yVo$ucJoO^SVdv9`rfrKQ$xz`8*!fyz_B4ks3h=ACNf(QmA5x9W_LJ+Xj zixm`=D!3z}P{o#MZ3nF_SgExw?W0y5T4~35%bEIo_C2~5GmAHmuEn&j8T$G@pMB1~ zxdH9G{~oM+_OI{W`@6sU`}>@{@s|4Shw6HPdtS!(Gt0X!O zT)(s^hCci|uyuUZ8;J&I+dXSbTUzjJ>F8{2Yw2j)CY%F5(Pl|>kaP}Q87&<%Qr;k) zuYX=j)W4vftaUi4f|J&Fw61OIXj#9drSqOl+nR3Sm_MsJfTbNwF*i9WJTp!;o_m~| z@jT~@l*(Lj8t@$M)}m*w`w5;iBXbB7S%&9Fkp*~;h>obPEZC#9?Vhb`Tefs}t?yVX zl-VC0kX6K^yZ~ln+s4kW9U{v9K?VJ5Hgs;;+SS&wt!wqBO>JG{CN>J`d_x|SjudXB z#FbJBRjOj5OrWBQL^2X7@=6qlsa#d8oJb_1T#-a0;y5md9CfA2O66eOaYYP(BCdq% zVuB+Qt|MHflVY$6ed9cJ;=#mV3L}+Qhvv zTjzZ~EsJe^(}vYM#Qh=Uy`7z{0pypZ7fx>LZn53l#pAiYExmmY=la$LeKT5Hc8Gns z&OG1_@rW$7%Mfl&=Z4NMadWuCn$FIyaM!PzS7Q~~r=-0}lyN=7X(|;jwM-n{UP!sn z7hgXu>XlfObX2oy_T?P6SzieH(qc|B>Wg(+b!#lPD*5+ZQ}?Sgcb0lZ1OlYlRJ!t0 z7yol<)39*ywBt7Wj^4gmTP#viUk-LiDV5bgWL4P!;>}H|yMjgBaFLI^X~es_e51mWkCuNwIK{;L33m2NmFISm z3xH}wUwYlV(r^9TD?}z%uVQIOvkpRK(t_*mI)&5ofv&Xj1^%n~H5efk^(O&rT7j5n zUo$JOtIzHYVTC5FTvS6sv(uND71#T?;9rJt?GJEO0SV5r=CJQ9YlPGnP_uMo;}RR^ z@nC~xe&iE2E`}o)U&|K2?fO0%m%|~JdAPkCxe|`B%!BRc$ZkBi5z9Q-AvX4fBP{b^ zN7?8JMzXe&hkJ=bM}i?+=HT?P!jV_mU=MdaUf4Lr275SivaoTQ4fb&4&0HhP*4u2c zi;XjdjdN_Uha+bT8y~R29*(?U*!Y+Y_Hg9G!o~$Q*u#-aY@E-At@DLLpRjQ;9AT+B z%t^bzK>BjnV3`No%aJSL2+KU!eva(MgA1_CgB^PPbQX6M4zbL`9c7~@9ATLUdx?!B z;Rwq-*sE+D3rASy!A`MpJRD(}2g{yj>tr~@G7tAQ8*hdqEc0OJ*fJ=V>aFoM_2}6!$A{Dr7v|^21+C?bgVtC?9~;{fZz|SY*4#TncFMJ7g0VTq~?jr zY6Us|cI8wSzporS@Y=Pky213(Rd)J{su5Obv2m)zceR(%??a%_oUDZJ`X!T9>_3t8 z_g^!=sJeUfj6^K%i(bVSsJlS(xLRV!xvx7dHdCQM4c<0zM;Wn$Vw#(Dpms06Zhkv3 zC8wG{51fg`qH*ZAUR7*$XYXPWyO@((EK@ysz$KDR_>uOs)jwPtq%^NrkFL8M?304l z^CcmaE?WdN*sm=gLgNji7FJafN zUEDq4#Di-LL@R{4R8v#VE&Xsyz+>M_HI-&UZS@UYi&`2-Sd>&)m4KgeoRQ|MwL3r{ z74KuKt|E|gHGw9c*ghyyl>K(Gif82m*9-ls1f}XglHk8@H@8Ma>A&D#(R`Sgn6I?V zG^&^%(}@hwODRw=1~&298`Ub*L9G?w*2}Os7}6h#j0Ym?SSD4BP5kz>QwNgPD>oGZ zzS&rYjaWMFE%lvxl}JSuY%Y7;IZ5Hiwc8CojA9!%Rpd1LB{ZiF_VXj&7k~`rJGv?} z+_C(rd}p}hkyA^w*N%w_keC}`5%G&O&RCR$)9n}gah@VuOpE2BNjbn$eg^2tdbK?j zWwA5u;?z;1udq8%6=*B(85z&54PI_fyLM4b=q9)~K8_=QjH4fxTqTxrK^asMq)EN< z(nUB|CLL|eDnFoEEefDe6|^e+qB%*-(ar6cikom##c2IpWKzIR56xIwNIf=_c7R8W zH$nW1&?w7{5@MPFoUbUhPCaX5L~^>U^VKMkNJq3gm!|+xvZ-hy0x|XF7+E(RlUx$t zt|hd}_(l1(JhNP$RU}r=d8yet~wlN=_??8J!0fhMt0uj%`m1NP&P{&5{%*!JG3?eDW-blR)j~DC@yDLf7Hk z6}C18wL0`9GWra*^|r%5-232Z_!Mkq1PM;G^%-`K7xV zRzTrU1wq6ptrAKK@_Axs-72Y$zHC0aVF`k7NGrm>8nUuJPe>Qi4w`7_6xV!k>WB5)hjWb)f>Np=oBD~D&AatW{(o*ht{O&1>Joj0R9wQ_ z%QsH+8!=PLF7t(vBk=svNR8)DM*a^xzt(V6!JK|HaR39G6{8xaOpU8%Wwomd4pp?` zIAY!#P-uiEdu}q~L&?(?G0-Rvgr&#|O52|f%8+1K3_TH7y0?@f(z(ASbg^+iC}>-DKTj(YV~4pir7i&6ZiY_H#2<%>)mM&UV#XYv`cF)W zY@61b68YY=aYg4TiwG$GW!e)(PaZ~n-(i!TK1F@_ocY1@QR={9b7A^$b?G^CT~kZL zMEIBy8mteW1EliUcFsU+%42%l%%w-#s^|ES z@fgWXKMmK68&1HYd%rZDdn?V~&se73I&4PG^jR#PX{^`Q~HgbJgNKqMJmIV@tBOF0BOsR++n>_-Su zY$abm2)b;iqD-*cMPdC`7kVojXv-kCCb139L=UU~e>qeQ>1+ zaBS!UK^gAA*#}-cWHKMXAxeN7S?kBW@qP&@XJf|_a#1XKJ#{5`Ww@#c{8CI+5LUqP z015$7o%!+SX2%Xa4W;FH6HLkM6{$Rd5eQCp5V&fWTF>T;T{y?@nnz|2QfCgDZ_Hja zqZiofMoUrN8}Nd9!@cnw%vs2k#9;63DZ-m^b2=K2KL(MFc>ASlrcMxPp~WqrlA>L! z0G7}<-z5yA>57bg6LoKz`G+~f%Z~4dFk%WW3Zcl8COLO@_5wkZ_MG|?3tH{NS70wt z;Q}87y%x2CJ@!5hkU(B?6FDJ~@oq!GNH@M)AuSV#QM3-3M(6_jAl8VMaT8(~xEs7n z%Yj_lDQh{xnwE$&^?vl>Vg59CM0OvH1w)0XzSzTBLZ8BtTulWFu!+s>%63ej4glON z1OsG7bX*Q{NByW}i9~K3OERtqfT0=ylv^9#9lSy^xdQ~v*XKP6E&YFPnqC@cX)vI} z)0*$jdr;2eKu&$noIhs}Zd6ecaj8jBU2vU{(i7&z`OC6Dlv0M?0@V;s1D&QLKI0>t zjAlZL6u4g_>`ub4gDMFWI6l)PmPHZx_^vk%N(Vyj7kSfCLS_9Jqj9OlJl2wSf9Xr0 z5wguFQLA0kadXM|X96pL&8mX^c-O>4ALNK+JsgQ+PY9p+)BJ^Unwfp`#M-|$+4S6e z->j>6J{__C0P-c^_+LsUYUm8aXc?`-v91Bg)@$|6!Udh)cpwE-Vz??C!~2f;y9Eof zyAAn(oc{4s0dFXfM1O#828cASG0?y&ow+c!p(;Uls7jc-=~X2zh>j$Wawj`f9moSg zp;hrw>zzajh2%!V7EBh;Bt-=&Uib5@(ZO;2Que23>fvRIzz*!FAaPbCrRX zjzTnXTQGTWRjpyeEy41nN-z*8xKs?LmRIAKfHPcf-JOm=lci(O+BW*6?u18*yUi^d z+5{%X_)-hUp}MdNMw`gO^6W8~&fr>UL<3sjT0cR0n=EO zlC+Su)~x6J3R*usfrvzbjsuV5?sf4Tuwu3ZNNXw8igNaKbPliOA5Kva+G}#bvAQ%s;826t?uK|T_j+N19T{~Sn&JMljQMr5NKW{L=L6Ps{;U&ks&#N z4%fF9nR!XvY>W>(1tq7TKZM4Gpvv?zp{S%1e8p z@q8Q%_TUif@8c2Xj&NfMeGR~Q3t-;3y}&Vu-Z8H7%t5lQ3q-Jej>+R$bITo5s^1DP z3vyly>V1s(fa%$Y{)KtrjuBa?t_Nf!Gz)Zr$tJYgJR0bVgQX&1G*n{gDE$SP2y**D ziIXGUhU_)D2NViiU`ubEX15J@w5J!MU$G;%g8$O?j1L(XAYac|jC~{0XBdN1y*{Aff0mk1ic5x0_d&j=BowtUVP}24MbZVFoR`8s=0OjfLy* zh<3~8W)_dG6 z-2%drK;GhB!)zH3lm@3Eudcm5&YTBl?ww@|7Tic9N=Ba*ycb{slb+Bi#E*g6V%!C_ zrGac<(5*2C2zHxbO)%sX9Dk!}xwAI*C-`N0y!V!Q=*~2S0PYDH8V@kEdF{?o^?Tu& zj1mHpSeQ4pRsvx%+)*MRKb$9Ot<5@L{2#RjlEg+~*PXdWp6i`hRX(&1?(kOw| zH6pDj(#nc7<}k!UAz*yWjmvB017`X13E8|Ltq6P==vBUdvC_$Oq$P#}4?0NnI;2wt z*kPAt3=g$m0Hgts4x%;+0BbSS>QTb_Djwr@Tv))^#2^hiB#`Jp-JDxqDO=2i<hOU9bgclzScKG50uNV+8dg#FGq)v0&T`LF8%e!9owUKs_yVtp; z%okUrWv6+5MFX=}XIG5K_JZ4})Di^Vw+nm|Sauh2*n8+fmcCGl`LGY+yZyKw24NKT?t zmcMhX0AIf&&_Vd7gB3R=U>OA88DL*Tu{?jCkEpgnxZoWY-R5&EhsZhR(#rm~5lg@$ zPXQUyBEA@B>lIA9I(QXpq`)J6+`AZYMd#t*2 z$V|CAO)WDI8BX~?aEDgSAeTWd17$z~>e_(MEH|~Ma3Eg=N)t>B_uF@Dj2NGl=b?}( z^8B#(VcgVL@Bk|NSwG4;FD0pup_*d|bJyLYttjPL&pMQN%)r_qm)U}(q%Bb(HoOX? z7&G1x30%NF_C+BEaefYg!0|blo+qHL=tHuKkYtn&9ND~c_b3SUpYHbMAyd^-KQQmK zV=xG3>CMTqxH;6)6rY?!EG5i?t=0X0iUFV@y@g@9z$8}HRG!2sbyUBB!k$~7M$MaV zW~@qAp5vHXF!p}$*m;h{3&t)5W7}2@A9T^ifK1;V38O(~0rh1xyzS;ktLhVbL+zq8 zZu<|b2FDpJ>XTH88B@LbHg&Pbbgmw)&L1={tgfw|Z4II|YeK{C*|nV%K}OvUPs8w} ztFJhe_b+4FBK-)8;B@;?^X8*&rTjn4N3Av4W;jDoiPREQz|e1CU<9c4D~rI&g|^O$ z5QNlwOp?p1f}{s(we(J{xJrnt_f0$O!Ojt^0!Au#S2?MG4TJ%+#yv}U3cQbxcLUuD zZzNe;vq3FuMWzk~fEv&b%^7SD@12r_9TJUdEJh|GNgVjN)*pdBz(LU8z*1j!yeOPQ z#RYn3ZfHMYyt8mjT%TzmEm1*lB2M=-d?6mVrUAjY*F?O4LD7&#GT6RIRrWjKaT0l{O; zvSE%*>am3SurU^@ARc%S7lLJ`&aXjsBd<5%bqLs3Yd7it^QAr&AHN5n0q3RH=WEwB zD!j92zwhId;twAoU%~34uL*j5B5R;0ns7P!0vj&pvfxept!P2)ZVHNKJEz%xegsZL z=S0j0YeJfANLw4egtsZ*D!hcJLkB~HfTdA2!&UfI7L9t-ML*LmkiF!3wNQl zbDDF0UT`mT6`HBtc|-i>!x~J|CC#uIxgyJ41J1xH-3EnTkO7)n3S-Z4h7_CZ!nLoYp=S@FbocmqlX}!`6wDkn3DXwNv=ZvAVY*ud%6or5}7@25!clY2l6Wh4(F7zFDw-cv0xkn8oXB$}8ZLel zlly@`7=mH{s1!u`~kkm;iIx%TUvUq*_D}6W|QLuo4lB*G#_t@_t(G2~Y_ zKiE8M6&!|XSW@={p$6V@v&O6=JXzGNTClaiXTSyb##r$m6suV9rC0C~7BJfnZzVu& zEUk+9L#B>qdkRgM8QWfYI~vfgZ_|tx^V<|`;nS>v8R}IXzvh8&j4xe&Vu#kHki2s+ zh`VTpCbj#|28E&M6wFM-_C?Hh+WU`x^dYS2cty|=)~5Af1(?<}QYO^4MG#?B5=h-x z&4-++`D6P~`4cl}!@x1FKF;Y){Hz5b6+a8Yt9o=W8HU;=^bFN3<^XK~fE(fI(pFhQ z&ylGuU4cL3BEOJ=xjzrvXZ=M;fxRk3;hOmcx&SVQLp=zkiWC|@uG6r$knLG?z4jv= z#jp@L?pl~Q(4M&lYywapNL#XArQmVkrrd$ychF%#*OXjW*aL2)E-nhc8G4DX8on6{ zz92f)r}ci=3h-a2&(Qpj3}_I1PIR6S))yc%7C>Y{rodg;2Y&ff5JK2*l8*c}2%s01&!EPTaHzU2Or$iT}@tib9R+D<@2O zcgwQX@M2)M5FFqm6A-#A?RrRR@%v5}0-f_#F;Wh*iVyHXA`m0QQE3s0K)TSu0p;LcjT)ngvm`t8U7E@(#G zcSm+8-M)gaEHyqri345x5qYXe?}DXb-U;7vpf8Ah=-cSsfeGUXt3d#Q#PVc^FO3m) ztwzBlN3dG_MMp-ndS5ULd`;in7e;NXE2*`J*Awxv+bT;2*(M^h9`pHagG&b6CKl{5 zJJ1}`d&(EL)lKqABly-hMj_#SxZH7l5s4u9GS#?~UDAVd50oG)J?7uH-8p!FfJzF6 zmH0z9;^UK`52e|>ec%KR#LIDh2nO{pu9u=zYx$%?pL>?e+tUI7_786s&C%`SWTW}b z_MN@o$1_!qPv}&;li{HO1_%kBB&9R@8KXd=|qDlDJ0NRYS1#P+kkwW^I>LSBh`oiKZ+%Ninrvw6w5gV;R&*hCjXi}#c91D^Tsk3MRidu&9x za0GJp1wV7r!K4(MQ#>L?({cwu5R_0&c9{$;-v*}ji?jBUbuVPy4S4pXLqjI%9G}Hp9~lx zUW^|POH!5K^`|}MQv88w=Qe+_{fltFqqEz;w{vSpYbrOHr|P>2{wCKa4K{RkZtA7Z zLco>cmz#%p#?IR-Jk)yon^C{VwzC15*|CS6Ye%icpF($xnml&w=lGY$+xuQq0x&!9 zE4;cS+5zVFRxJWKMkvGBE%+mOB9-eSDs%1wX_l<+THDmt-Dg5M26G!1PU?q#Zd}-x zG*w@zt-Ymfo6jwLjXzZHXl-kqR^kKj=Z+^TOzUHlfI=nOx!tSG*?nXDn_N%uEL@g^ z&9$q-wrM*suT%^~i~q|-MbSZqiy9-0`A$8UmJZzd#v2)O=e zokN*4zc$yIH%&}kDlu=F5!tG^CrF>&N{GQId8phn6s}45H7{tMA#c!@tK4fdPHY`z_{Iquhj&|8BO=V50@*#iu7vtxDpC&^rYs`H<6c z&@0f#-527QJJ2H3Z^3V|DL*(yJ)1PM4*pX=P9R53f?f%>GozoGHR9FMV9lSQOk)^- zf4{cPhj{qVG;Q1c%jhRwKPxrQJu{-DqRbNm&>T@_e)Y`g>P2W$(C$J>vbUflbZ40v zaA9|g5)fcfb85d&7Co1kP6qOxM^7saXp RCkDTeaTNUd$G-OJ{{_mV$|wK; delta 14406 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 diff --git a/web/static/snake_bg.wasm.d.ts b/web/static/snake_bg.wasm.d.ts index a62594e..caf6add 100644 --- a/web/static/snake_bg.wasm.d.ts +++ b/web/static/snake_bg.wasm.d.ts @@ -2,8 +2,6 @@ /* eslint-disable */ export const memory: WebAssembly.Memory; export function __wbg_game_free(a: number): void; -export function __wbg_get_game_is_running(a: number): number; -export function __wbg_set_game_is_running(a: number, b: number): void; export function game_new(): number; export function game_play(a: number): void; export function __wbg_food_free(a: number): void; @@ -12,8 +10,6 @@ export function __wbg_set_food_x(a: number, b: number): void; export function __wbg_get_food_y(a: number): number; export function __wbg_set_food_y(a: number, b: number): void; export function food_get_color(a: number, b: number): void; -export function __wbg_set_game_score(a: number, b: number): void; -export function __wbg_get_game_score(a: number): number; export function __wbg_coord_free(a: number): void; export function __wbg_get_coord_x(a: number): number; export function __wbg_set_coord_x(a: number, b: number): void;