summaryrefslogtreecommitdiff
path: root/src/T2DLL/T2MatterArray.cpp
blob: 5ac7a8d20f1414a37ecf26c6b930d1665a690cfb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include "StdAfx.h"
#include "T2MatterArray.h"

T2MatterArray::T2MatterArray(unsigned int jobType, unsigned int validRange, unsigned int startID)
	: T2ObjectArray(startID)
{
	mJobType = jobType;
	mValidRange = validRange;

	for (unsigned int i = 0; i < kGroupSize; i++)
		mMatter[i].mMatterID = mStartID + i;
}

void T2MatterArray::SetValidRange(unsigned int validRange) {
	if (validRange <= kGroupSize)
		mValidRange = validRange;
}

T2Matter* T2MatterArray::FindUnusedMatter(unsigned int arg) {
	for (unsigned int i = 0; i < mValidRange; i++) {
		if (!mMatter[i].IsUsed())
			return &mMatter[i];
	}

	if (arg > 0) {
		unsigned int start = mValidRange;
		unsigned int end = mValidRange + arg;
		if (end > kGroupSize)
			end = kGroupSize;
		mValidRange = end;

		for (unsigned int i = start; i < mValidRange; i++) {
			if (!mMatter[i].IsUsed())
				return &mMatter[i];
		}
	}

	return NULL;
}