aboutsummaryrefslogtreecommitdiff
path: root/laichzeit/brlan.h
blob: ea1a67be559147919f12f7c24053912164c90759 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/*****************************************************************************
 *  Laichzeit                                                                *
 *  Part of the Benzin Project                                               *
 *  Copyright (C)2009 SquidMan (Alex Marshall)       <SquidMan72@gmail.com>  *
 *  Copyright (C)2009 megazig  (Stephen Simpson)      <megazig@hotmail.com>  *
 *  Copyright (C)2009 Matt_P   (Matthew Parlane)                             *
 *  Copyright (C)2009 comex                                                  *
 *  Copyright (C)2009 booto                                                  *
 *  All Rights Reserved, HACKERCHANNEL.                                      *
 * ------------------------------------------------------------------------- *
 *  brlan.h                                                                  *
 *  The header file for all the BRLAN stuff. Include this!                   *
 * ------------------------------------------------------------------------- *
 *  Most code contributed by:                                                *
 *          SquidMan                                                         *
 *****************************************************************************/

#ifndef BRLAN_H
#define BRLAN_H

#include "types.h"

#define USE_BRLAN

typedef enum {
	BRLAN_TAG_RLPA = 0,		// Pane Animation (All the transforms)
	BRLAN_TAG_RLVC = 1,		// Vertex Color (Changes colors)
	BRLAN_TAG_RLTP = 2,		// Texture Picture (Changes TPL frame)
	BRLAN_TAG_RLMC = 3,		// Material Color
	BRLAN_TAG_RLTS = 4,		// Texture Shader (Defines RLTPs)
	BRLAN_TAG_RLVI = 5		// Vertex (I?)
	// TODO: Figure out the rest of the names.
} LANTagType;

typedef enum {
	BRLAN_RLPA_X_TRANSLATION = 0,
	BRLAN_RLPA_Y_TRANSLATION = 1,
	BRLAN_RLPA_Z_TRANSLATION = 2,
	BRLAN_RLPA_ROTATE	 = 3,
	BRLAN_RLPA_X_ZOOM	 = 4,
	BRLAN_RLPA_Y_ZOOM	 = 5,
	BRLAN_RLPA_WIDTH	 = 6,
	BRLAN_RLPA_HEIGHT	 = 7,
	BRLAN_RLVC_ALPHA	 = 8,
	BRLAN_RLTS_RANGE	 = 9,
	BRLAN_RLTP_CHANGE_FRAME	 = 10
	// TODO: Add moar.
} LANAnimType;

typedef struct {
	f32	frame;			// The frame.
	f32	value;			// The value.
	f32	interpolation;		// The interpolation.
} LANTriplet;

typedef struct {
	LANAnimType type;		// Type of animation.
	int	    tripletcnt;		// How many triplets.
	LANTriplet* triplets;		// The triplets.
	int	    done;		// Did we end it? (Security measure)
} LANAnim;

typedef struct {
	char	   name[20];		// Name of tag.
	u32	   flags;		// Flags.
	LANTagType type;		// Type of tag.
	int	   animcnt;		// How many animations.
	LANAnim*   anims;		// The animations.
	int	   done;		// Did we end it? (Security measure)
} LANTag;

typedef struct {
	char	name[256];		// Name of texture. Using 256 because
					// the actual size is arbitrary.
} LANTex;

typedef struct {
	int	framesize;		// How many frames to be displayed.
	int	tagcnt;			// How many tags there are.
	int	texcnt;			// How many textures there are.
	LANTag*	tags;			// The tags.
	LANTex*	texs;			// The textures.
	int	done;			// Did we end it? (Security measure)
} BRLAN;

BRLAN*	LaichAnim_Start();
void	LaichAnim_AddTexture(BRLAN* brlan, char* name);
int	LaichAnim_StartTag(BRLAN* brlan, char* name, LANTagType type);
int	LaichAnim_StartAnim(BRLAN* brlan, int tag, LANAnimType type);
void	LaichAnim_AddTriplet(BRLAN* brlan, int tag, int anim, \
			      f32 frame, f32 value, f32 interpolation);
void	LaichAnim_EndAnim(BRLAN* brlan, int tag, int anim);
void	LaichAnim_EndTag(BRLAN* brlan, int tag);
u8*	LaichAnim_Compile(BRLAN* brlan, u32* size);

#endif //BRLAN_H