00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <stdio.h>
00023
00024 #include "BaseActions.h"
00025 #include "BaseClasses.h"
00026 #include "ParseNode.h"
00027 #include "Ingredients.h"
00028 #include "Engine.h"
00029
00030
00031 void MHElemAction::Initialise(MHParseNode *p, MHEngine *engine)
00032 {
00033 m_Target.Initialise(p->GetArgN(0), engine);
00034 }
00035
00036
00037 void MHElemAction::PrintMe(FILE *fd, int nTabs) const
00038 {
00039 PrintTabs(fd, nTabs);
00040 fprintf(fd, "%s (", m_ActionName);
00041 m_Target.PrintMe(fd, nTabs + 1);
00042 PrintArgs(fd, nTabs + 1);
00043 fprintf(fd, ")\n");
00044 }
00045
00046 MHRoot *MHElemAction::Target(MHEngine *engine)
00047 {
00048 MHObjectRef target;
00049 m_Target.GetValue(target, engine);
00050 return engine->FindObject(target);
00051 }
00052
00053 void MHActionInt::Initialise(MHParseNode *p, MHEngine *engine)
00054 {
00055 MHElemAction::Initialise(p, engine);
00056 m_Argument.Initialise(p->GetArgN(1), engine);
00057 }
00058
00059
00060 void MHActionInt::Perform(MHEngine *engine)
00061 {
00062 CallAction(engine, Target(engine), m_Argument.GetValue(engine));
00063 }
00064
00065 void MHActionIntInt::Initialise(MHParseNode *p, MHEngine *engine)
00066 {
00067 MHElemAction::Initialise(p, engine);
00068 m_Argument1.Initialise(p->GetArgN(1), engine);
00069 m_Argument2.Initialise(p->GetArgN(2), engine);
00070 }
00071
00072 void MHActionIntInt::Perform(MHEngine *engine)
00073 {
00074 CallAction(engine, Target(engine), m_Argument1.GetValue(engine), m_Argument2.GetValue(engine));
00075 }
00076
00077 void MHActionObjectRef::Initialise(MHParseNode *p, MHEngine *engine)
00078 {
00079 MHElemAction::Initialise(p, engine);
00080 m_ResultVar.Initialise(p->GetArgN(1), engine);
00081 }
00082
00083 void MHActionObjectRef2::Initialise(MHParseNode *p, MHEngine *engine)
00084 {
00085 MHElemAction::Initialise(p, engine);
00086 m_ResultVar1.Initialise(p->GetArgN(1), engine);
00087 m_ResultVar2.Initialise(p->GetArgN(2), engine);
00088 }
00089
00090 void MHActionInt3::Initialise(MHParseNode *p, MHEngine *engine)
00091 {
00092 MHElemAction::Initialise(p, engine);
00093 m_Argument1.Initialise(p->GetArgN(1), engine);
00094 m_Argument2.Initialise(p->GetArgN(2), engine);
00095 m_Argument3.Initialise(p->GetArgN(3), engine);
00096 }
00097
00098 void MHActionInt3::PrintArgs(FILE *fd, int ) const
00099 {
00100 m_Argument1.PrintMe(fd, 0);
00101 m_Argument2.PrintMe(fd, 0);
00102 m_Argument3.PrintMe(fd, 0);
00103 }
00104
00105 void MHActionInt3::Perform(MHEngine *engine)
00106 {
00107 CallAction(engine, Target(engine), m_Argument1.GetValue(engine), m_Argument2.GetValue(engine), m_Argument3.GetValue(engine));
00108 }
00109
00110 void MHActionInt4::Initialise(MHParseNode *p, MHEngine *engine)
00111 {
00112 MHElemAction::Initialise(p, engine);
00113 m_Argument1.Initialise(p->GetArgN(1), engine);
00114 m_Argument2.Initialise(p->GetArgN(2), engine);
00115 m_Argument3.Initialise(p->GetArgN(3), engine);
00116 m_Argument4.Initialise(p->GetArgN(4), engine);
00117 }
00118
00119 void MHActionInt4::PrintArgs(FILE *fd, int ) const
00120 {
00121 m_Argument1.PrintMe(fd, 0);
00122 m_Argument2.PrintMe(fd, 0);
00123 m_Argument3.PrintMe(fd, 0);
00124 m_Argument4.PrintMe(fd, 0);
00125 }
00126
00127 void MHActionInt4::Perform(MHEngine *engine)
00128 {
00129 CallAction(engine, Target(engine), m_Argument1.GetValue(engine), m_Argument2.GetValue(engine), m_Argument3.GetValue(engine), m_Argument4.GetValue(engine));
00130 }
00131
00132 void MHActionInt6::Initialise(MHParseNode *p, MHEngine *engine)
00133 {
00134 MHElemAction::Initialise(p, engine);
00135 m_Argument1.Initialise(p->GetArgN(1), engine);
00136 m_Argument2.Initialise(p->GetArgN(2), engine);
00137 m_Argument3.Initialise(p->GetArgN(3), engine);
00138 m_Argument4.Initialise(p->GetArgN(4), engine);
00139 m_Argument5.Initialise(p->GetArgN(5), engine);
00140 m_Argument6.Initialise(p->GetArgN(6), engine);
00141 }
00142
00143 void MHActionInt6::PrintArgs(FILE *fd, int ) const
00144 {
00145 m_Argument1.PrintMe(fd, 0);
00146 m_Argument2.PrintMe(fd, 0);
00147 m_Argument3.PrintMe(fd, 0);
00148 m_Argument4.PrintMe(fd, 0);
00149 m_Argument5.PrintMe(fd, 0);
00150 m_Argument6.PrintMe(fd, 0);
00151 }
00152
00153 void MHActionInt6::Perform(MHEngine *engine)
00154 {
00155 CallAction(engine, Target(engine), m_Argument1.GetValue(engine), m_Argument2.GetValue(engine), m_Argument3.GetValue(engine),
00156 m_Argument4.GetValue(engine), m_Argument5.GetValue(engine), m_Argument6.GetValue(engine));
00157 }
00158
00159
00160 void MHActionGenericObjectRef::Initialise(MHParseNode *p, MHEngine *engine)
00161 {
00162 MHElemAction::Initialise(p, engine);
00163 m_RefObject.Initialise(p->GetArgN(1), engine);
00164 }
00165
00166 void MHActionGenericObjectRef::Perform(MHEngine *engine)
00167 {
00168 MHObjectRef reference;
00169 m_RefObject.GetValue(reference, engine);
00170 CallAction(engine, Target(engine), engine->FindObject(reference));
00171 }
00172
00173 void MHActionObjectRef::Perform(MHEngine *engine)
00174 {
00175 CallAction(engine, Target(engine), engine->FindObject(m_ResultVar));
00176 }
00177
00178
00179 void MHActionObjectRef2::Perform(MHEngine *engine)
00180 {
00181 CallAction(engine, Target(engine), engine->FindObject(m_ResultVar1), engine->FindObject(m_ResultVar2));
00182 }
00183
00184 void MHActionBool::Initialise(MHParseNode *p, MHEngine *engine)
00185 {
00186 MHElemAction::Initialise(p, engine);
00187 m_Argument.Initialise(p->GetArgN(1), engine);
00188 }
00189
00190
00191 void MHActionBool::Perform(MHEngine *engine)
00192 {
00193 CallAction(engine, Target(engine), m_Argument.GetValue(engine));
00194 }