Subversion Repositories spk

Rev

Rev 197 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 197 Rev 299
Line 2... Line 2...
2
 
2
 
3
#include <stdarg.h>
3
#include <stdarg.h>
-
 
4
#include "SpkFile.h"
4
 
5
 
5
CLanguages *CLanguages::_pInstance = NULL;
6
CLanguages *CLanguages::_pInstance = NULL;
6
 
7
 
7
 
8
 
8
void CLanguages::DEBUG_AddDefaultTexts()
9
void CLanguages::DEBUG_AddDefaultTexts()
Line 21... Line 22...
21
		}
22
		}
22
 
23
 
23
		{
24
		{
24
			LangPage &page = (*_pDefaultLang)[LS_DIRECTORY];
25
			LangPage &page = (*_pDefaultLang)[LS_DIRECTORY];
25
			page[LANGDIR_TITLE] = L"Directory Control";
26
			page[LANGDIR_TITLE] = L"Directory Control";
-
 
27
		}
-
 
28
 
-
 
29
		{
-
 
30
			LangPage& page = (*_pDefaultLang)[LS_SCRIPTTYPE];
-
 
31
			page[CSpkFile::SCRIPTTYPE_LIBRARY] = L"Library";
-
 
32
			page[CSpkFile::SCRIPTTYPE_UPDATE] = L"Package Update";
-
 
33
			page[CSpkFile::SCRIPTTYPE_CUSTOMSTART] = L"Custom Start";
-
 
34
			page[CSpkFile::SCRIPTTYPE_PATCH] = L"Patch";
-
 
35
			page[CSpkFile::SCRIPTTYPE_FAKEPATCH] = L"Fake Patch";
-
 
36
			page[CSpkFile::SCRIPTTYPE_CUSTOM] = L"Custom";
-
 
37
			page[CSpkFile::SCRIPTTYPE_NAVIGATION] = L"Navigation";
-
 
38
			page[CSpkFile::SCRIPTTYPE_COMBAT] = L"Combat";
-
 
39
			page[CSpkFile::SCRIPTTYPE_MISSION] = L"Mission";
-
 
40
			page[CSpkFile::SCRIPTTYPE_ALPLUGIN] = L"AL Plugin";
-
 
41
			page[CSpkFile::SCRIPTTYPE_HOTKEY] = L"Hotkey";
-
 
42
			page[CSpkFile::SCRIPTTYPE_SHIPUPGRADE] = L"Ship Upgrade";
-
 
43
			page[CSpkFile::SCRIPTTYPE_SHIPCOMMAND] = L"Ship Command";
-
 
44
			page[CSpkFile::SCRIPTTYPE_STATIONCOMMAND] = L"Station Command";
-
 
45
			page[CSpkFile::SCRIPTTYPE_FLEET] = L"Fleet Management";
-
 
46
			page[CSpkFile::SCRIPTTYPE_TRADE] = L"Trade";
-
 
47
			page[CSpkFile::SCRIPTTYPE_PIRACY] = L"Piracy";
-
 
48
			page[CSpkFile::SCRIPTTYPE_CHEAT] = L"Cheat";
-
 
49
			page[CSpkFile::SCRIPTTYPE_EXTENSION] = L"Extension Mods";
-
 
50
			page[CSpkFile::SCRIPTTYPE_REBALANCE] = L"Rebalance";
-
 
51
			page[CSpkFile::SCRIPTTYPE_FIX] = L"Vanilla Fix";
-
 
52
			page[CSpkFile::SCRIPTTYPE_GENERALMOD] = L"General Mod";
-
 
53
			page[CSpkFile::SCRIPTTYPE_TOTAL] = L"Totel Conversion";
-
 
54
			page[CSpkFile::SCRIPTTYPE_WINGCOMMAND] = L"Wing Command";
-
 
55
			page[CSpkFile::SCRIPTTYPE_OTHER] = L"Other";
26
		}
56
		}
27
	}
57
	}
28
}
58
}
29
 
59
 
30
 
60
 
31
CLanguages::CLanguages() : 
61
CLanguages::CLanguages() : 
32
	_iLanguage(-1),
62
	_iLanguage(-1),
33
	_pDefaultLang(NULL),
63
	_pDefaultLang(nullptr),
34
	_pCurrentLang(NULL)
64
	_pCurrentLang(nullptr),
-
 
65
	_langStack(nullptr)
35
{
66
{
36
	_lTexts = new LangTexts();
67
	_lTexts = new LangTexts();
-
 
68
	_langStack = new std::vector<int>();
37
}
69
}
38
 
70
 
39
CLanguages::~CLanguages()
71
CLanguages::~CLanguages()
40
{
72
{
41
	delete _lTexts;
73
	delete _lTexts;
42
	_pDefaultLang = NULL;
74
	_pDefaultLang = NULL;
43
	_pCurrentLang = NULL;
75
	_pCurrentLang = NULL;
-
 
76
	if (_langStack)
-
 
77
	{
-
 
78
		delete _langStack;
-
 
79
		_langStack = nullptr;
-
 
80
	}
44
}
81
}
45
 
82
 
46
CLanguages *CLanguages::Instance()
83
CLanguages *CLanguages::Instance()
47
{
84
{
48
	if ( !_pInstance ) {
85
	if ( !_pInstance ) {
49
		_pInstance = new CLanguages();
86
		_pInstance = new CLanguages();
50
		_pInstance->DEBUG_AddDefaultTexts();
87
		_pInstance->DEBUG_AddDefaultTexts();
51
	}
88
	}
52
 
89
 
53
	return _pInstance;
90
	return _pInstance;
54
}
91
}
55
 
92
 
56
void CLanguages::Release()
93
void CLanguages::Release()
57
{
94
{
58
	if ( _pInstance ) {
95
	if ( _pInstance ) {
59
		delete _pInstance;
96
		delete _pInstance;
60
		_pInstance = NULL;
97
		_pInstance = NULL;
61
	}
98
	}
62
}
99
}
63
 
100
 
64
void CLanguages::setLanguage(int lang) 
101
void CLanguages::setLanguage(int lang) 
65
{ 
102
{ 
66
	_iLanguage = lang; 
103
	_iLanguage = lang; 
67
	_pCurrentLang = NULL;
104
	_pCurrentLang = NULL;
Line 69... Line 106...
69
	{
106
	{
70
		auto itr = _lTexts->find(lang);
107
		auto itr = _lTexts->find(lang);
71
		if (itr != _lTexts->end())
108
		if (itr != _lTexts->end())
72
			_pCurrentLang = &itr->second;
109
			_pCurrentLang = &itr->second;
73
	}
110
	}
-
 
111
}
-
 
112
 
-
 
113
void CLanguages::pushLanguage(int lang)
-
 
114
{
-
 
115
	if (_iLanguage != lang)
-
 
116
	{	
-
 
117
		if (!_langStack)
-
 
118
			_langStack = new std::vector<int>();	
-
 
119
		_langStack->push_back(_iLanguage);
-
 
120
		setLanguage(lang);
-
 
121
	}
-
 
122
}
-
 
123
void CLanguages::popLanguage()
-
 
124
{
-
 
125
	if (!_langStack ||_langStack->empty())
-
 
126
		return;
-
 
127
	setLanguage(_langStack->back());
-
 
128
	_langStack->pop_back();
74
}
129
}
75
 
130
 
76
 
131
 
77
Utils::WString CLanguages::findText(int section, int id)
132
Utils::WString CLanguages::findText(int section, int id)
78
{
133
{