diff options
Diffstat (limited to 'src/T2DLL/T2PeopleAnimeDef.cpp')
-rw-r--r-- | src/T2DLL/T2PeopleAnimeDef.cpp | 48 |
1 files changed, 44 insertions, 4 deletions
diff --git a/src/T2DLL/T2PeopleAnimeDef.cpp b/src/T2DLL/T2PeopleAnimeDef.cpp index 59e8ace..7297df0 100644 --- a/src/T2DLL/T2PeopleAnimeDef.cpp +++ b/src/T2DLL/T2PeopleAnimeDef.cpp @@ -1,25 +1,65 @@ +#include "CResFile.h" +#include "T2People.h" #include "T2PeopleAnimeDef.h" +#include "UT2Utils.h" -T2PeopleAnimeDef::T2PeopleAnimeDef(CResFile&) { +T2PeopleAnimeDef::T2PeopleAnimeDef(CResFile& resFile) { + Init(); + + resFile >> m4; + resFile >> m8; + resFile >> mNumOfElems; + + mElems = new T2PeopleAnimeDefElem[mNumOfElems]; + for (int i = 0; i < mNumOfElems; i++) + mElems[i].Initialize(resFile); } void T2PeopleAnimeDef::Init() { + m4 = 0; + m8 = 0; + mNumOfElems = 0; + mElems = NULL; } /*virtual*/ T2PeopleAnimeDef::~T2PeopleAnimeDef() { + if (mElems) + delete[] mElems; } -void T2PeopleAnimeDef::Set(T2People*, int, int) { +void T2PeopleAnimeDef::Set(T2People* people, int h, int inIndex) { + if (inIndex < mNumOfElems) { + int index = inIndex; + if (inIndex < 0) + index = UT2Utils::Randomize(mNumOfElems); + mElems[index].Set(people, h); + } } + + T2PeopleAnimeDefElem::T2PeopleAnimeDefElem() { + mFillerStart = 0; + mFillerRange = 0; + mHStart = 0; + mHRange = 0; } /*virtual*/ T2PeopleAnimeDefElem::~T2PeopleAnimeDefElem() { } -void T2PeopleAnimeDefElem::Initialize(CResFile&) { +void T2PeopleAnimeDefElem::Initialize(CResFile& resFile) { + resFile >> mFillerStart; + resFile >> mFillerRange; + resFile >> mHStart; + resFile >> mHRange; } -void T2PeopleAnimeDefElem::Set(T2People*, int) { +void T2PeopleAnimeDefElem::Set(T2People* people, int h) { + if (mFillerStart >= 0) { + people->SetFiller(mFillerStart + UT2Utils::Randomize(mFillerRange)); + people->MoveHTo(h + mHStart + UT2Utils::Randomize(mHRange)); + } else { + people->SetFiller(-1); + } } |