#include "NameEntryScene.h"
#include "ChatScene.h"
USING_NS_CC;
std::string NameEntry::m_MyName = "";
Scene* NameEntry::createScene()
{
// 'scene' is an autorelease object
auto scene = Scene::create();
// 'layer' is an autorelease object
auto layer = NameEntry::create();
// add layer as a child to scene
scene->addChild(layer);
// return the scene
return scene;
}
// on "init" you need to initialize your instance
bool NameEntry::init()
{
//////////////////////////////
// 1. super init first
if ( !Layer::init() )
{
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Point origin = Director::getInstance()->getVisibleOrigin();
/////////////////////////////
// 2. add a menu item with "X" image, which is clicked to quit the program
// you may modify it.
// add a "close" icon to exit the progress. it's an autorelease object
auto closeItem = MenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
CC_CALLBACK_1(NameEntry::menuCloseCallback, this));
closeItem->setPosition(Point(origin.x + visibleSize.width - closeItem->getContentSize().width/2 ,
origin.y + closeItem->getContentSize().height/2));
// create menu, it's an autorelease object
auto menu = Menu::create(closeItem, NULL);
menu->setPosition(Point::ZERO);
this->addChild(menu, 1);
// GUI
// 文字列ラベル
auto label = Label::createWithSystemFont("名前", "arial", 24);
label->setAnchorPoint(Point(0.0f, 1.0f));
label->setPosition(Point(0, visibleSize.height));
label->setHorizontalAlignment(cocos2d::TextHAlignment::LEFT);
label->setVerticalAlignment(cocos2d::TextVAlignment::TOP);
this->addChild(label);
// 入力欄(枠)
auto draw = CCDrawNode::create();
draw->setPosition(Point(0,0));
this->addChild(draw);
static Point points1[] = { Point(0,visibleSize.height-32), Point(visibleSize.width, visibleSize.height-32), Point(visibleSize.width, visibleSize.height-64), Point(0, visibleSize.height-64) };
draw->drawPolygon(points1, 4, ccc4FFromccc3B(ccWHITE), 1, ccc4FFromccc3B(ccWHITE));
// 入力欄(テキストボックス)
m_pEditBox = cocos2d::extension::EditBox::create(Size(visibleSize.width, 96), cocos2d::extension::Scale9Sprite::create("image.png"));
m_pEditBox->setAnchorPoint(Point(0.0f, 1.0f));
m_pEditBox->setPosition(Point(0,visibleSize.height));
m_pEditBox->setFont("Arial", 24);
m_pEditBox->setPlaceHolder("名前を入力してください");
m_pEditBox->setPlaceholderFontColor(Color3B::BLACK);
m_pEditBox->setFontColor(Color3B::BLACK);
m_pEditBox->setMaxLength(100);
m_pEditBox->setReturnType(cocos2d::extension::EditBox::KeyboardReturnType::DONE);
m_pEditBox->setInputMode(cocos2d::extension::EditBox::InputMode::ANY);
this->addChild(m_pEditBox);
// チャット開始ボタン(枠)
auto draw2 = CCDrawNode::create();
draw2->setPosition(Point(0,0));
this->addChild(draw2);
static Point points2[] = { Point(visibleSize.width/2-100,visibleSize.height-128), Point(visibleSize.width/2+100, visibleSize.height-128), Point(visibleSize.width/2+100, visibleSize.height-160), Point(visibleSize.width/2-100, visibleSize.height-160) };
draw2->drawPolygon(points2, 4, ccc4FFromccc3B(ccGRAY), 1, ccc4FFromccc3B(ccGRAY));
// チャット開始ボタン(本体)
auto chatStartLabel = Label::createWithSystemFont("チャット開始", "Arial", 24);
chatStartLabel->setColor(Color3B::BLACK);
auto chatStartItem = MenuItemLabel::create(chatStartLabel, CC_CALLBACK_1(NameEntry::menuStartChatCallback, this));
chatStartItem->setPosition(Point(visibleSize.width/2, visibleSize.height-144));
auto menu2 = Menu::create(chatStartItem, NULL);
menu2->setPosition(Point::ZERO);
this->addChild(menu2, 1);
#if defined( _IOS ) || defined( _ANDROID )
// タッチイベントの有効化
auto listener = EventListenerTouchOneByOne::create();
listener->setSwallowTouches( true );
listener->onTouchBegan = CC_CALLBACK_2( NameEntry::onTouchBegan, this );
listener->onTouchEnded = CC_CALLBACK_2( NameEntry::onTouchEnded, this );
auto dispatcher = Director::getInstance()->getEventDispatcher();
dispatcher->addEventListenerWithSceneGraphPriority( listener, this );
#endif
// ゲームループの開始
scheduleUpdate();
return true;
}
/**
* ゲームループです。タイマー割り込みで周期的に実行します。
*
* @param delta 変化時間
*/
void NameEntry::update(float delta)
{
}
void NameEntry::menuCloseCallback(Ref* pSender)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT)
MessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");
return;
#endif
Director::getInstance()->end();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit(0);
#endif
}
void NameEntry::menuStartChatCallback(Ref* pSender)
{
m_MyName = m_pEditBox->getText();
if( m_MyName.length() > 0 )
{
Director::getInstance()->replaceScene(Chat::createScene());
}
}