#ifndef F_PC_LAYER_H #define F_PC_LAYER_H #include "global.h" #include "SComponent/c_node.h" #include "SComponent/c_tree.h" #include "SComponent/c_tag.h" struct process_method_tag_class; struct process_node_class; struct layer_class { node_class mNode; // generates different asm for struct copy if using inheritance u32 mLayerID; node_lists_tree_class mNodeListTree; process_node_class *mpPcNode; node_list_class mCancelList; s32 mCreatingCount:16;// for some reason, the compiler only optimized these into a single word load/store instead of 2 halfword load/store, but only if they are written like this s32 mDeletingCount:16; }; extern "C" { void fpcLy_SetCurrentLayer(layer_class *pLayer); layer_class * fpcLy_CurrentLayer(void); layer_class * fpcLy_RootLayer(void); layer_class * fpcLy_Layer(unsigned int id); layer_class * fpcLy_Search(unsigned int id); void fpcLy_Regist(layer_class *pLayer); void fpcLy_CreatedMesg(layer_class *pLayer); void fpcLy_CreatingMesg(layer_class *pLayer); void fpcLy_DeletedMesg(layer_class *pLayer); void fpcLy_DeletingMesg(layer_class *pLayer); bool fpcLy_IsCreatingMesg(layer_class *pLayer); bool fpcLy_IsDeletingMesg(layer_class *pLayer); int fpcLy_IntoQueue(layer_class *pLayer, int treeListIdx, create_tag_class *pTag, int idx); int fpcLy_ToQueue(layer_class *pLayer, int treeListIdx, create_tag_class *pTag); int fpcLy_QueueTo(layer_class *pLayer, create_tag_class *pTag); void fpcLy_Cancel(layer_class *pLayer); bool fpcLy_CancelMethod(process_method_tag_class *pLayer); void fpcLy_CancelQTo(process_method_tag_class *pMthd); int fpcLy_ToCancelQ(layer_class *pLayer, process_method_tag_class *pMthd); void fpcLy_Create(layer_class *pLayer, process_node_class *pPcNode, node_list_class *pLists, int listNum); int fpcLy_Delete(layer_class *pLayer); }; #endif