| 313 | // STANDARD OVERLOADED METHODS // |
| 314 | |
| 315 | bool afxEffectron::onNewDataBlock(GameBaseData* dptr, bool reload) |
| 316 | { |
| 317 | datablock = dynamic_cast<afxEffectronData*>(dptr); |
| 318 | if (!datablock || !Parent::onNewDataBlock(dptr, reload)) |
| 319 | return false; |
| 320 | |
| 321 | if (isServerObject() && started_with_newop) |
| 322 | { |
| 323 | // copy dynamic fields from the datablock but |
| 324 | // don't replace fields with a value |
| 325 | assignDynamicFieldsFrom(dptr, arcaneFX::sParameterFieldPrefix, true); |
| 326 | } |
| 327 | |
| 328 | exeblock = datablock; |
| 329 | |
| 330 | if (isClientObject()) |
| 331 | { |
| 332 | // make a temp datablock clone if there are substitutions |
| 333 | if (datablock->getSubstitutionCount() > 0) |
| 334 | { |
| 335 | afxEffectronData* orig_db = datablock; |
| 336 | datablock = new afxEffectronData(*orig_db, true); |
| 337 | exeblock = orig_db; |
| 338 | // Don't perform substitutions yet, the effectrons's dynamic fields haven't |
| 339 | // arrived yet and the substitutions may refer to them. Hold off and do |
| 340 | // in in the onAdd() method. |
| 341 | } |
| 342 | } |
| 343 | else if (started_with_newop) |
| 344 | { |
| 345 | // make a temp datablock clone if there are substitutions |
| 346 | if (datablock->getSubstitutionCount() > 0) |
| 347 | { |
| 348 | afxEffectronData* orig_db = datablock; |
| 349 | datablock = new afxEffectronData(*orig_db, true); |
| 350 | exeblock = orig_db; |
| 351 | orig_db->performSubstitutions(datablock, this, ranking); |
| 352 | } |
| 353 | } |
| 354 | |
| 355 | return true; |
| 356 | } |
| 357 | |
| 358 | void afxEffectron::processTick(const Move* m) |
| 359 | { |
nothing calls this directly
no test coverage detected