]> icculus.org git repositories - btb/d2x.git/blob - main/segment.c
remove rcs tags
[btb/d2x.git] / main / segment.c
1
2 /*
3  *
4  * Segment Loading Stuff
5  *
6  */
7
8
9 #ifdef HAVE_CONFIG_H
10 #include <conf.h>
11 #endif
12
13 #include "segment.h"
14 #include "cfile.h"
15
16 #ifndef FAST_FILE_IO
17 /*
18  * reads a segment2 structure from a CFILE
19  */
20 void segment2_read(segment2 *s2, CFILE *fp)
21 {
22         s2->special = cfile_read_byte(fp);
23         s2->matcen_num = cfile_read_byte(fp);
24         s2->value = cfile_read_byte(fp);
25         s2->s2_flags = cfile_read_byte(fp);
26         s2->static_light = cfile_read_fix(fp);
27 }
28
29 /*
30  * reads a delta_light structure from a CFILE
31  */
32 void delta_light_read(delta_light *dl, CFILE *fp)
33 {
34         dl->segnum = cfile_read_short(fp);
35         dl->sidenum = cfile_read_byte(fp);
36         dl->dummy = cfile_read_byte(fp);
37         dl->vert_light[0] = cfile_read_byte(fp);
38         dl->vert_light[1] = cfile_read_byte(fp);
39         dl->vert_light[2] = cfile_read_byte(fp);
40         dl->vert_light[3] = cfile_read_byte(fp);
41 }
42
43
44 /*
45  * reads a dl_index structure from a CFILE
46  */
47 void dl_index_read(dl_index *di, CFILE *fp)
48 {
49         di->segnum = cfile_read_short(fp);
50         di->sidenum = cfile_read_byte(fp);
51         di->count = cfile_read_byte(fp);
52         di->index = cfile_read_short(fp);
53 }
54 #endif
55
56 void segment2_write(segment2 *s2, PHYSFS_file *fp)
57 {
58         PHYSFSX_writeU8(fp, s2->special);
59         PHYSFSX_writeU8(fp, s2->matcen_num);
60         PHYSFSX_writeU8(fp, s2->value);
61         PHYSFSX_writeU8(fp, s2->s2_flags);
62         PHYSFSX_writeFix(fp, s2->static_light);
63 }
64
65 void delta_light_write(delta_light *dl, PHYSFS_file *fp)
66 {
67         PHYSFS_writeSLE16(fp, dl->segnum);
68         PHYSFSX_writeU8(fp, dl->sidenum);
69         PHYSFSX_writeU8(fp, dl->dummy);
70         PHYSFSX_writeU8(fp, dl->vert_light[0]);
71         PHYSFSX_writeU8(fp, dl->vert_light[1]);
72         PHYSFSX_writeU8(fp, dl->vert_light[2]);
73         PHYSFSX_writeU8(fp, dl->vert_light[3]);
74 }
75
76 void dl_index_write(dl_index *di, PHYSFS_file *fp)
77 {
78         PHYSFS_writeSLE16(fp, di->segnum);
79         PHYSFSX_writeU8(fp, di->sidenum);
80         PHYSFSX_writeU8(fp, di->count);
81         PHYSFS_writeSLE16(fp, di->index);
82 }