#ifndef LEGOPLANTS_H
#define LEGOPLANTS_H

#include "decomp.h"
#include "mxtypes.h"

class LegoEntity;
class LegoPathBoundary;

// SIZE 0x54
struct LegoPlantInfo {
	// See LegoOmni::RegisterWorlds for IDs
	enum World {
		c_act1 = 1 << 0,
		c_imain = 1 << 1,
		c_ielev = 1 << 4,
		c_iisle = 1 << 5,
		c_act2 = 1 << 15,
		c_act3 = 1 << 16
	};

	enum Variant {
		e_flower = 0,
		e_tree,
		e_bush,
		e_palm
	};

	enum Color {
		e_white = 0,
		e_black,
		e_yellow,
		e_red,
		e_green
	};

	LegoEntity* m_entity;         // 0x00
	MxU32 m_worlds;               // 0x04 - see enum for possible bit flags
	MxU8 m_variant;               // 0x08 - see enum for possible values
	MxU32 m_sound;                // 0x0c
	MxU32 m_move;                 // 0x10
	MxU8 m_mood;                  // 0x14
	MxU8 m_color;                 // 0x15 - see enum for possible values
	MxS8 m_unk0x16;               // 0x16
	MxS8 m_initialUnk0x16;        // 0x17 - initial value loaded to m_unk0x16
	const char* m_name;           // 0x18
	undefined4 m_unk0x1c;         // 0x1c
	float m_x;                    // 0x20
	float m_y;                    // 0x24
	float m_z;                    // 0x28
	LegoPathBoundary* m_boundary; // 0x2c
	float m_position[3];          // 0x30
	float m_direction[3];         // 0x3c
	float m_up[3];                // 0x48
};

extern LegoPlantInfo g_plantInfoInit[81];

#endif // LEGOPLANTS_H