/////////////////////////////////////////////////////////// // MobSurgeon // // Редактор mob-ов для Проклятых Земель // // Copyright (C) 2005-2007 Gipat Group // // Распространяется на условиях // // Gipat Group's opened EI-editor-utility license // // версии 1.0 // // // // www.gipatgroup.org // /////////////////////////////////////////////////////////// //К работе над данным файлом приложили руки, ноги.... короче аффтары: // 1) Sagrer (sagrer@yandex.ru) //////////////////////////////////////////////////////////////////////// //--------------------------------------------------------------------------- #ifndef MainFormH #define MainFormH //--------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include "SynEdit.hpp" #include "SynEditHighlighter.hpp" #include "SynHighlighterPas.hpp" #include "SynHighlighterEIScript.hpp" #include #include #include //Инклуды с кодом для разных типов объектов... #include "MobUnitObj.h" #include "MobObjectObj.h" #include "MobLeverObj.h" #include "MobTrapObj.h" #include "MobFlameObj.h" #include "MobParticle1Obj.h" #include "MobParticle2Obj.h" #include "MobParticle3Obj.h" #include "OrientatorFrame.h" #include "SynEditMiscClasses.hpp" #include "SynEditSearch.hpp" //--------------------------------------------------------------------------- class TMainF : public TForm { __published: // IDE-managed Components TMainMenu *MainMenu1; TMenuItem *FileMenu; TMenuItem *HelpMenu; TMenuItem *OpenMobMenu; TMenuItem *ExitMenu; TMenuItem *AboutMenu; TMenuItem *N3; TMenuItem *N4; TMenuItem *TestMenuMenu; TPageControl *MainF_PK; TTabSheet *LogSh; TStatusBar *StatusBar1; TToolBar *ToolBar1; TRichEdit *LogEd; TOpenDialog *OpenDialog1; TMenuItem *N5; TMenuItem *SaveMob_menu; TMenuItem *SaveAsMobMenu; TSaveDialog *SaveDialog1; TTabSheet *ScriptSh; TTabSheet *BlocksSh; TTabSheet *ObjectsSh; TTabSheet *DiplomacySh; TTabSheet *MassChangesSh; TMenuItem *N6; TMenuItem *ProgSettsMenu; TMenuItem *N1; TMenuItem *BackupMobMenu; TSynEdit *ScriptEd; TSynEIScriptSyn *SynEIScriptSyn1; TMenuItem *EditMenu; TMenuItem *SearchRepMenu; TMenuItem *N2; TMenuItem *CopyMenu; TMenuItem *CutMenu; TMenuItem *PasteMenu; TMenuItem *N7; TMenuItem *SelectAllMenu; TMenuItem *UndoMenu; TMenuItem *RedoMenu; TMenuItem *SearchNextMenu; TMenuItem *ReplaceNextMenu; TPageControl *MassChangePK; TTabSheet *MC_KriteriasSh; TTabSheet *MC_ActionsSh; TPanel *MC_DownPanel; TButton *MC_GoBut; TGroupBox *MC_KR_ParamGB; TCheckBox *MC_KR_Param_Name1CB; TEdit *MC_KR_Param_Name1Ed; TEdit *MC_KR_Param_Name2Ed; TEdit *MC_KR_Param_ScriptVariableNameEd; TEdit *MC_KR_Param_Model3dEd; TEdit *MC_KR_Param_FirstTextureEd; TEdit *MC_KR_Param_SecondTextureEd; TCheckBox *MC_KR_Param_Name2CB; TCheckBox *MC_KR_Param_ScriptVariableNameCB; TCheckBox *MC_KR_Param_Model3dCB; TCheckBox *MC_KR_Param_FirstTextureCB; TCheckBox *MC_KR_Param_SecondTextureCB; TGroupBox *MC_KR_CoordsGB; TCheckBox *MC_KR_Coords_PramouglCB; TLabel *Label1; TEdit *MC_KR_Coords_Pramougl_X1Ed; TLabel *Label2; TEdit *MC_KR_Coords_Pramougl_Y1Ed; TLabel *Label3; TEdit *MC_KR_Coords_Pramougl_X2Ed; TLabel *Label4; TEdit *MC_KR_Coords_Pramougl_Y2Ed; TCheckBox *MC_KR_Coords_KrugCB; TLabel *Label5; TEdit *MC_KR_Coords_Krug_XEd; TEdit *MC_KR_Coords_Krug_YEd; TLabel *Label6; TLabel *Label7; TEdit *MC_KR_Coords_Krug_RadEd; TGroupBox *MC_KR_TypeGB; TCheckBox *MC_KR_Type_UnitCB; TCheckBox *MC_KR_Type_ObjectCB; TCheckBox *MC_KR_Type_LeverCB; TCheckBox *MC_KR_Type_TrapCB; TCheckBox *MC_KR_Type_FlameCB; TCheckBox *MC_KR_Type_Particle1CB; TCheckBox *MC_KR_Type_Particle2CB; TCheckBox *MC_KR_Type_Particle3CB; TGroupBox *MC_AS_ObjGB; TLabel *Label8; TEdit *MC_AS_Obj_TargetMobEd; TButton *MC_AS_Obj_TargetMobSelBut; TRadioButton *MC_AS_Obj_DelRB; TRadioButton *MC_AS_Obj_CopyRB; TRadioButton *MC_AS_Obj_MoveRB; TCheckBox *MC_AS_Obj_ReplaceCB; TGroupBox *MC_AS_ParamsGB; TCheckBox *MC_AS_Params_Name1CB; TEdit *MC_AS_Params_Name1Ed; TCheckBox *MC_AS_Params_Name2CB; TEdit *MC_AS_Params_Name2Ed; TCheckBox *MC_AS_Params_ScriptVariableNameCB; TEdit *MC_AS_Params_ScriptVariableNameEd; TEdit *MC_AS_Params_Model3dEd; TCheckBox *MC_AS_Params_Model3dCB; TCheckBox *MC_AS_Params_FirstTextureCB; TEdit *MC_AS_Params_FirstTextureEd; TCheckBox *MC_AS_Params_SecondTextureCB; TEdit *MC_AS_Params_SecondTextureEd; TCheckBox *MC_AS_Params_OffsetCB; TLabel *Label9; TEdit *MC_AS_Params_OffsetXEd; TLabel *Label10; TEdit *MC_AS_Params_OffsetYEd; TButton *MC_ResetBut; TRadioButton *MC_AS_Obj_OnlyParamsRB; TTreeView *ObjectsTree; TValueListEditor *ValuesEditor; TOrientatorFr *ObjectOrientator; TMemo *OrientatorHelpMemo; TCheckBox *MC_KR_Param_PlayerNumberCB; TEdit *MC_KR_Param_PlayerNumberEd; TCheckBox *MC_AS_Params_PlayerNumberCB; TEdit *MC_AS_Params_PlayerNumberEd; TMenuItem *ReadmeMenu; TSynEditSearch *SynEditSearchEngine; TMenuItem *N8; TMenuItem *CloseMobMenu; void __fastcall FormShow(TObject *Sender); void __fastcall ExitMenuClick(TObject *Sender); void __fastcall AboutMenuClick(TObject *Sender); void __fastcall TestMenuMenuClick(TObject *Sender); void __fastcall OpenMobMenuClick(TObject *Sender); void __fastcall SaveMob_menuClick(TObject *Sender); void __fastcall SaveAsMobMenuClick(TObject *Sender); void __fastcall LogShShow(TObject *Sender); void __fastcall FormClose(TObject *Sender, TCloseAction &Action); void __fastcall ProgSettsMenuClick(TObject *Sender); void __fastcall ScriptEdEnter(TObject *Sender); void __fastcall ScriptEdExit(TObject *Sender); void __fastcall FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift); void __fastcall BackupMobMenuClick(TObject *Sender); void __fastcall SearchRepMenuClick(TObject *Sender); void __fastcall UndoMenuClick(TObject *Sender); void __fastcall RedoMenuClick(TObject *Sender); void __fastcall CopyMenuClick(TObject *Sender); void __fastcall CutMenuClick(TObject *Sender); void __fastcall PasteMenuClick(TObject *Sender); void __fastcall SelectAllMenuClick(TObject *Sender); void __fastcall SearchNextMenuClick(TObject *Sender); void __fastcall ReplaceNextMenuClick(TObject *Sender); void __fastcall MC_KR_Param_Name1EdChange(TObject *Sender); void __fastcall MC_KR_Param_Name2EdChange(TObject *Sender); void __fastcall MC_KR_Param_ScriptVariableNameEdChange( TObject *Sender); void __fastcall MC_KR_Param_Model3dEdChange(TObject *Sender); void __fastcall MC_KR_Param_FirstTextureEdChange(TObject *Sender); void __fastcall MC_KR_Param_SecondTextureEdChange(TObject *Sender); void __fastcall MC_KR_Coords_Pramougl_X1EdChange(TObject *Sender); void __fastcall MC_KR_Coords_Pramougl_Y1EdChange(TObject *Sender); void __fastcall MC_KR_Coords_Pramougl_X2EdChange(TObject *Sender); void __fastcall MC_KR_Coords_Pramougl_Y2EdChange(TObject *Sender); void __fastcall MC_KR_Coords_Krug_XEdChange(TObject *Sender); void __fastcall MC_KR_Coords_Krug_YEdChange(TObject *Sender); void __fastcall MC_KR_Coords_Krug_RadEdChange(TObject *Sender); void __fastcall MC_AS_Params_Name1EdChange(TObject *Sender); void __fastcall MC_AS_Params_Name2EdChange(TObject *Sender); void __fastcall MC_AS_Params_ScriptVariableNameEdChange( TObject *Sender); void __fastcall MC_AS_Params_Model3dEdChange(TObject *Sender); void __fastcall MC_AS_Params_FirstTextureEdChange(TObject *Sender); void __fastcall MC_AS_Params_SecondTextureEdChange( TObject *Sender); void __fastcall MC_AS_Params_OffsetXEdChange(TObject *Sender); void __fastcall MC_AS_Params_OffsetYEdChange(TObject *Sender); void __fastcall MC_AS_Obj_DelRBClick(TObject *Sender); void __fastcall MC_AS_Obj_CopyRBClick(TObject *Sender); void __fastcall MC_AS_Obj_MoveRBClick(TObject *Sender); void __fastcall MC_ResetButClick(TObject *Sender); void __fastcall MC_AS_Obj_TargetMobSelButClick(TObject *Sender); void __fastcall MC_GoButClick(TObject *Sender); void __fastcall MC_AS_Obj_OnlyParamsRBClick(TObject *Sender); void __fastcall ObjectsShResize(TObject *Sender); void __fastcall ObjectsShShow(TObject *Sender); void __fastcall ObjectsTreeChange(TObject *Sender, TTreeNode *Node); void __fastcall ValuesEditorValidate(TObject *Sender, int ACol, int ARow, const AnsiString KeyName, const AnsiString KeyValue); void __fastcall ValuesEditorExit(TObject *Sender); void __fastcall ValuesEditorEnter(TObject *Sender); void __fastcall FormCreate(TObject *Sender); void __fastcall FormPaint(TObject *Sender); void __fastcall FormDestroy(TObject *Sender); void __fastcall MC_KR_Param_PlayerNumberEdChange(TObject *Sender); void __fastcall MC_AS_Params_PlayerNumberEdChange(TObject *Sender); void __fastcall ReadmeMenuClick(TObject *Sender); void __fastcall CloseMobMenuClick(TObject *Sender); void __fastcall ScriptEdChange(TObject *Sender); private: // User declarations bool FirstShowed; bool ObjEditorChanging; bool ObjEditorActive; public: // User declarations byte ObjTree_UnitsNode; //Эти byte ObjTree_ObjectsNode; //хрени byte ObjTree_LeversNode; //нужны byte ObjTree_TrapsNode; //чтоб byte ObjTree_FlamesNode; //различать byte ObjTree_Particles1Node; //ноды - корни byte ObjTree_Particles2Node; //групп byte ObjTree_Particles3Node; //объектов. Главное не их значение а их адрес %). TWinControl *PLastFocus; //Ссылка на последний фокусировавшийся элемент. TQuaternion *OldQuat; //Тут типо инфа о "старой" ориентации - для отменялки. bool BlockingInterfNow; //Индикатор что выполняется блокировка интерфейса... __fastcall TMainF(TComponent* Owner); void BlockInterf(); //Типа заблокировать интерфейс... void UnBlockInterf(); //Типа разблокировать интерфейс... void ReturnFocus(); //Возвращает фокус последнему фокусировавшемуся элементу :). void UpdateMainInterf(); //Обновляет основную часть интерфейса в соотв. с изменившимися условиями :). void UpdateEditMenu(); //Обновляет интерфейс менюхи редактирования :). void MakeASearch(); //Выполняет поиск по уже лежащим в памяти переменным void MakeAReplace(); //Выполняет замену по уже лежащим в памяти переменным void MC_AS_UpdDel(); //В зависимости от того удаляются или нет объекты в действиях при массовом изменении - блокирует \ разблокирует интерфейс. void Set_MC_Interf(); //В соотв. с переменными из ini выставляет интерфейс массовых изменений. void Save_MC_Interf(); //Савит настройки интерфейса массовых изменений в ini void Reset_MC_Interf(); //Ставит умолчальные значения интерфейсу массовых изменений. void SetMobModified(); //Ставит отметку что моб модифицирован (с последнего save\load) и обновляет интерфейс. void SetMobNotModified(); //Ставит отметку что моб не модифицирован (с последнего save\load) и обновляет интерфейс. //Редактор объектов... void MobObjectsChanged(); //Эта функция должна вызываться если были изменены объекты в мобе... //Читалка... void TreeMobObject2Editor(TTreeNode *Node); //Типа закинуть инфу из объекта, привязанную к дереву в редактор объектов для редактирования... void UnitObject2Editor(TUnitObjBlock *MobObject); //Типа закинуть инфу юнита, указанного по ссылке... void ObjectObject2Editor(TObjectObjBlock *MobObject); //Типа закинуть инфу объекта, указанного по ссылке... void LeverObject2Editor(TLeverObjBlock *MobObject); //Типа закинуть инфу левера, указанного по ссылке... void TrapObject2Editor(TTrapObjBlock *MobObject); //Типа закинуть инфу ловушки, указанной по ссылке... void FlameObject2Editor(TFlameObjBlock *MobObject); //Типа закинуть инфу флейма, указанного по ссылке... void Particle1Object2Editor(TParticle1ObjBlock *MobObject); //Типа закинуть инфу партикла 1 типа, указанного по ссылке... void Particle2Object2Editor(TParticle2ObjBlock *MobObject); //Типа закинуть инфу партикла 2 типа, указанного по ссылке... void Particle3Object2Editor(TParticle3ObjBlock *MobObject); //Типа закинуть инфу партикла 3 типа, указанного по ссылке... //Савилка.... void Editor2MobObjectObj(const AnsiString KeyName, TObjectObjBlock *MobObject); //Типа засавить инфу типа "объект" обратно в объект класса... void Editor2MobUnitObj(const AnsiString KeyName, TUnitObjBlock *MobObject); //Типа засавить инфу типа "юнит" обратно в объект класса... void Editor2MobLeverObj(const AnsiString KeyName, TLeverObjBlock *MobObject); //Типа засавить инфу типа "рычаг" обратно в объект класса... void Editor2MobTrapObj(const AnsiString KeyName, TTrapObjBlock *MobObject); //Типа засавить инфу типа "ловушка" обратно в объект класса... void Editor2MobFlameObj(const AnsiString KeyName, TFlameObjBlock *MobObject); //Типа засавить инфу типа "флейм" обратно в объект класса... void Editor2MobParticle1Obj(const AnsiString KeyName, TParticle1ObjBlock *MobObject); //Типа засавить инфу типа "партикл 1 типа" обратно в объект класса... void Editor2MobParticle2Obj(const AnsiString KeyName, TParticle2ObjBlock *MobObject); //Типа засавить инфу типа "партикл 2 типа" обратно в объект класса... void Editor2MobParticle3Obj(const AnsiString KeyName, TParticle3ObjBlock *MobObject); //Типа засавить инфу типа "партикл 3 типа" обратно в объект класса... //Ориентатор. void FillOrientator(TObjectObjBlock *MobObject); //Закидывает значения ориентации объекта в ориентатор. }; //--------------------------------------------------------------------------- extern PACKAGE TMainF *MainF; //--------------------------------------------------------------------------- #endif