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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128 | #include "fsCNativeTextEntry.h"
#if !defined fsDesktop
#include <base/CCDirector.h>
#include <renderer/CCRenderer.h>
#include <fsCore/fsStr.h>
#include <fsCore/fsPoint.h>
#include <fsCore/fsIFile.h>
#include <fsCore/src/fsCResourceName.h>
#include <fsAppCore/fsIDisplay.h>
fsStr fsCNativeTextEntry::fontNameGet() const<--- The member function 'fsCNativeTextEntry::fontNameGet' can be static.
{
const auto candidates = {
fsCResourceName("gui/mainStyles.txt", fsCResourceName::eRES_LOCATION_ASSETS),
fsCResourceName("gui/fontStyles.txt", fsCResourceName::eRES_LOCATION_ASSETS)
};
for (auto candidate: candidates) {
if (fsIFile::fileExistsGet(candidate))
{
const fsStr fontExt(".ttf");
fsStr styleData = fsIFile::strGetFromFile(candidate);
if (styleData.find("style sansTitleFont") != fsStr::npos)
{
styleData.chomp("style sansTitleFont");
styleData.erase(styleData.find(fontExt) + fontExt.dataSizeGet());
styleData.erase(0, styleData.find("=") + 1);
styleData.leadingWhitespaceTrim();
return styleData;
}
}
}
return "fonts/arial.ttf";
}
void fsCNativeTextEntry::matrixApplyDo(const fsAffineMtx2d& pRenderMatrix)
{
}
cocos2d::Node* fsCNativeTextEntry::implGet() const
{
return mImpl;
}
void fsCNativeTextEntry::virtualKeyboardActivate(const fsStr& pPrompt, fsS32 pMaxStingLength, const fsPoint& pPos, std::function<void(const fsStr&)> pFinalise)
{
if (!mImpl)
{
mFinalise = pFinalise;
mImpl = cocos2d::ui::EditBox::create(cocos2d::Size(270 * fsIDisplay::instanceGet()->scaleGet().x,
54 * fsIDisplay::instanceGet()->scaleGet().y),
"gui/newplayer/textfield.png",
cocos2d::ui::Widget::TextureResType::LOCAL),
mImpl->retain();
// mImpl->setTextHorizontalAlignment(cocos2d::TextHAlignment::CENTER);
mImpl->setPosition(cocos2d::Vec2(pPos.x, pPos.y));
fsChar const* const fontName = fontNameGet().utf8Get();
#if CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID
const auto fontSize(22);
#elif CC_TARGET_PLATFORM == CC_PLATFORM_IOS
const auto fontSize(52);
#endif
mImpl->setFont(fontName, fontSize);
mImpl->setFontColor(cocos2d::Color3B::WHITE);
mImpl->setPlaceholderFont(fontName, fontSize);
mImpl->setPlaceholderFontColor(cocos2d::Color3B::WHITE);
mImpl->setPlaceHolder(pPrompt.utf8Get());
mImpl->setMaxLength(12);
mImpl->setReturnType(cocos2d::ui::EditBox::KeyboardReturnType::DONE);
mImpl->setInputMode(cocos2d::ui::EditBox::InputMode::SINGLE_LINE);
mImpl->setInputFlag(cocos2d::ui::EditBox::InputFlag::INITIAL_CAPS_WORD);
mImpl->setDelegate(new fsTextEntry(const_cast<fsCNativeTextEntry*>(this)));
mImpl->openKeyboard();
}
}
void fsCNativeTextEntry::update(fsS32 pDeltaMs)
{
if (mImpl)
{
mImpl->update(pDeltaMs);
}
}
void fsCNativeTextEntry::renderDo()
{
if (mImpl)
{
mImpl->cocos2d::Node::visit();
cocos2d::Director::getInstance()->getRenderer()->render();
}
}
fsCNativeTextEntry::fsCNativeTextEntry():
fsINative(),
mImpl(nullptr)
{
}
fsCNativeTextEntry::~fsCNativeTextEntry()
{
if (mImpl)
{
mImpl->removeFromParentAndCleanup(true);
}
}
void fsCNativeTextEntry::fsTextEntry::editBoxReturn(cocos2d::ui::EditBox* editBox)
{
mParent->mFinalise(editBox->getText());
};
#endif
|