1 #include <string.h>
2 #include <shadowdive/shadowdive.h>
3 #include "resources/af.h"
4 
af_create(af * a,void * src)5 void af_create(af *a, void *src) {
6     sd_af_file *sdaf = (sd_af_file*)src;
7 
8     // Trivial stuff
9     a->id = sdaf->file_id;
10     a->endurance = sdaf->endurance;
11     a->health = sdaf->health;
12     a->forward_speed = sdaf->forward_speed;
13     a->reverse_speed = sdaf->reverse_speed;
14     a->jump_speed = sdaf->jump_speed;
15     a->fall_speed = sdaf->fall_speed;
16 
17     // Sound translation table
18     memcpy(a->sound_translation_table, sdaf->soundtable, 30);
19 
20     // Set defaults like master.dat
21     // TODO: These may change according to pilot and HAR... Find out how.
22     a->sound_translation_table[25] = 0;
23     a->sound_translation_table[26] = 0;
24     a->sound_translation_table[27] = 0;
25 
26     // Moves
27     for(int i = 0; i < 70; i++) {
28         if(sdaf->moves[i] != NULL) {
29             af_move_create(&a->moves[i], (void*)sdaf->moves[i], i);
30         } else {
31             a->moves[i].id = -1;
32         }
33     }
34 }
35 
af_get_move(af * a,int id)36 af_move* af_get_move(af *a, int id) {
37     if(a->moves[id].id == -1) {
38         return NULL;
39     }
40     return &a->moves[id];
41 }
42 
af_free(af * a)43 void af_free(af *a) {
44     for(int i = 0; i < 70; i++) {
45         if(a->moves[i].id != -1) {
46             af_move_free(&a->moves[i]);
47         }
48     }
49 }
50