aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/skin/SkinElementAlias.h
blob: 1957825c608e27522432bb4f409d01299b1e0372 (plain) (blame)
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#pragma once
#include <api/skin/skinitem.h>
#include <api/xml/xmlparamsi.h>
struct SkinElementAlias : public SkinItemI
{
public:

	SkinElementAlias(const wchar_t *_aliasname, const wchar_t *_idtarget, int _scriptid = -1, int _secondarycounter = 0)
			: aliasname(_aliasname), idtarget(_idtarget), scriptid(_scriptid), seccount(_secondarycounter) //, rootpath(path)
	{
		params = NULL;
		/*
		if (p != NULL) {
		  params = new XmlReaderParamsI();
		  for (int i=0;i<p->getNbItems();i++) {
		    params->addItem(p->getItemName(i), p->getItemValue(i));
		  }
		}
		*/
	}
	virtual ~SkinElementAlias()
	{
		delete params;
	}

	const wchar_t *getAliasName() { return aliasname; }
	const wchar_t *getTargetId() { return idtarget; }
	int getSecCount() { return seccount; }

	virtual const wchar_t *getXmlRootPath() { return rootpath; }
	virtual const wchar_t *getName() { return L"elementalias"; }
	virtual ifc_xmlreaderparams *getParams() { return params; }
	virtual int getSkinPartId() { return scriptid; }
	virtual SkinItem *getAncestor();

private:
	StringW aliasname;
	StringW idtarget;
	int scriptid;
	int seccount;
	XmlReaderParamsI *params;
	StringW rootpath;
};

class SortSkinElementAlias
{
public:
	static int compareItem(SkinElementAlias *p1, SkinElementAlias *p2)
	{
		int r = WCSICMP(p1->getAliasName(), p2->getAliasName());
		if (!r)
		{
			if (p1->getSkinPartId() < p2->getSkinPartId()) return -1;
			if (p1->getSkinPartId() > p2->getSkinPartId()) return 1;
			if (p1->getSecCount() < p2->getSecCount()) return -1;
			if (p1->getSecCount() > p2->getSecCount()) return 1;
			return 0;
		}
		return r;
	}
	static int compareAttrib(const wchar_t *attrib, SkinElementAlias *item)
	{
		return WCSICMP(attrib, item->getAliasName());
	}
};