@@ -80,7 +80,7 @@ static void ScoreState(ScoreMenu *menu);
8080static void PlayState (Camera3D camera , Clock * clock , Snake * snake , Food * food );
8181// static void IntroState(Camera3D camera, Clock *clock, Snake *snake, Food *food);
8282// static void OutroState(Camera3D camera, Clock *clock, Snake *snake, Food *food);
83- static void UpdateDrawFrame (GameData * data );
83+ static void UpdateDrawFrame (void * dataPtr );
8484
8585//------------------------------------------------------------------------------------
8686// Program main entry point
@@ -137,7 +137,15 @@ int main(void)
137137 // movement clock
138138 Clock clock = InitClock (clockStartRate );
139139
140- GameData * gameData = & (GameData ){
140+ void * dataPtr ;
141+ dataPtr = malloc (sizeof (GameData ));
142+ if (dataPtr == NULL )
143+ {
144+ printf ("memory allocation of data pointer failed!\n" );
145+ return 1 ;
146+ }
147+
148+ dataPtr = & (GameData ){
141149 .camera = camera ,
142150 .clock = & clock ,
143151 .snake = & snake ,
@@ -147,13 +155,23 @@ int main(void)
147155 .score = & scoreMenu ,
148156 };
149157
158+ // GameData *gameData = &(GameData){
159+ // .camera = camera,
160+ // .clock = &clock,
161+ // .snake = &snake,
162+ // .food = &food,
163+ // .main = &mainMenu,
164+ // .credits = &creditsMenu,
165+ // .score = &scoreMenu,
166+ // };
167+
150168 // Render texture to draw full screen, enables screen scaling
151169 // NOTE: If screen is scaled, mouse input should be scaled proportionally
152170 target = LoadRenderTexture (screenWidth , screenHeight );
153171 SetTextureFilter (target .texture , TEXTURE_FILTER_BILINEAR );
154172
155173#if defined(PLATFORM_WEB )
156- emscripten_set_main_loop_arg (UpdateDrawFrame , gameData , 60 , 1 );
174+ emscripten_set_main_loop_arg (UpdateDrawFrame , dataPtr , 60 , 1 );
157175#else
158176 SetTargetFPS (60 ); // Set our game frames-per-second
159177 //--------------------------------------------------------------------------------------
@@ -162,7 +180,7 @@ int main(void)
162180 bool exitWindow = false;
163181 while (!exitWindow )
164182 {
165- UpdateDrawFrame (gameData );
183+ UpdateDrawFrame (dataPtr );
166184
167185 if (activeState == GAME_EXIT || WindowShouldClose ())
168186 exitWindow = true;
@@ -191,8 +209,11 @@ int main(void)
191209// Module functions definition
192210//--------------------------------------------------------------------------------------------
193211// Update and draw frame
194- void UpdateDrawFrame (GameData * data )
212+ void UpdateDrawFrame (void * dataPtr )
195213{
214+ GameData * data = {0 };
215+ data = (GameData * )data ;
216+
196217 switch (activeState )
197218 {
198219 case GAME_MENU :
0 commit comments