73 .text = "Score: 0" |
73 .text = "Score: 0" |
74 ); |
74 ); |
75 asc_add_ui_node(node); |
75 asc_add_ui_node(node); |
76 } |
76 } |
77 |
77 |
|
78 static void free_spaceship(AscSceneNode *node) { |
|
79 asc_texture_destroy(&((AscSprite*)node)->tex); |
|
80 free(node); |
|
81 } |
|
82 |
|
83 static void create_spaceship(void) { |
|
84 // TODO: textures should be passed by pointers (and probably ref-counted) |
|
85 AscTexture texture; |
|
86 asc_texture_init_2d(&texture); |
|
87 asc_texture_from_file(&texture, "ship.png"); |
|
88 AscSceneNode *sprite = asc_sprite( |
|
89 .texture = texture, |
|
90 .x = 250, |
|
91 .y = 300, |
|
92 .width = 64, |
|
93 .height = 64 |
|
94 ); |
|
95 |
|
96 // TODO: add to 2D scene instead of UI scene, once we have one |
|
97 asc_add_ui_node(sprite); |
|
98 |
|
99 // TODO: remove this hack by refactoring how textures work |
|
100 sprite->free_func = free_spaceship; |
|
101 |
|
102 // TODO: return something |
|
103 } |
|
104 |
78 int main(int argc, char** argv) { |
105 int main(int argc, char** argv) { |
79 asc_context_initialize(); |
106 asc_context_initialize(); |
80 if (asc_has_error()) { |
107 if (asc_has_error()) { |
81 SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, |
108 SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, |
82 "Fatal Error",asc_get_error(),NULL); |
109 "Fatal Error",asc_get_error(),NULL); |
98 |
125 |
99 // create UI elements |
126 // create UI elements |
100 create_fps_counter(); |
127 create_fps_counter(); |
101 create_score_counter(); |
128 create_score_counter(); |
102 |
129 |
|
130 // create spaceship |
|
131 create_spaceship(); |
|
132 |
103 // Main Loop |
133 // Main Loop |
104 do { |
134 do { |
105 // quit application on any error |
135 // quit application on any error |
106 if (asc_has_error()) { |
136 if (asc_has_error()) { |
107 SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, |
137 SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, |