1 #include "lc_global.h"
2 #include <stdlib.h>
3 #include "group.h"
4 #include "lc_file.h"
5 
lcGroup()6 lcGroup::lcGroup()
7 {
8 	mGroup = nullptr;
9 }
10 
FileLoad(lcFile * File)11 void lcGroup::FileLoad(lcFile* File)
12 {
13 	qint32 GroupIndex;
14 	char Name[LC_MAX_GROUP_NAME + 1];
15 
16 	File->ReadU8();
17 	File->ReadBuffer(Name, sizeof(Name));
18 	mName = QString::fromUtf8(Name);
19 	File->ReadVector3();
20 	File->ReadS32(&GroupIndex, 1);
21 	mGroup = (lcGroup*)(quintptr)GroupIndex;
22 }
23 
CreateName(const lcArray<lcGroup * > & Groups)24 void lcGroup::CreateName(const lcArray<lcGroup*>& Groups)
25 {
26 	if (!mName.isEmpty())
27 	{
28 		bool Found = false;
29 		for (const lcGroup* const Group : Groups)
30 		{
31 			if (Group->mName == mName)
32 			{
33 				Found = true;
34 				break;
35 			}
36 		}
37 
38 		if (!Found)
39 			return;
40 	}
41 
42 	int Max = 0;
43 	QString Prefix = QApplication::tr("Group #");
44 	const int Length = Prefix.length();
45 
46 	for (const lcGroup* const Group : Groups)
47 	{
48 		const QString& Name = Group->mName;
49 
50 		if (Name.startsWith(Prefix))
51 		{
52 			bool Ok = false;
53 			int GroupNumber = Name.mid(Length).toInt(&Ok);
54 			if (Ok && GroupNumber > Max)
55 				Max = GroupNumber;
56 		}
57 	}
58 
59 	mName = Prefix + QString::number(Max + 1);
60 }
61