void U8SDKInterface::loginCustom(const std::string& customData)
{
	ValueMap params;
	params["customData"] = customData;
	Value v = Value(params);
	sendMessageWithParams("loginCustom", v);
}
void U8SDKInterface::pay(U8PayParams* data)
{
	if (data == nullptr)
	{
		CCLOG("U8SDKInterface::pay data is null.");
		return;
	}

	ValueMap params;
	params["productId"] = data->productId;
	params["productName"] = data->productName;
	params["productDesc"] = data->productDesc;
	params["price"] = data->price;
	params["buyNum"] = data->buyNum;
	params["coinNum"] = data->coinNum;
	params["serverId"] = data->serverId;
	params["serverName"] = data->serverName;
	params["roleId"] = data->roleId;
	params["roleName"] = data->roleName;
	params["roleLevel"] = data->roleLevel;
	params["vip"] = data->vip;
	params["orderID"] = data->roleId;
	params["extension"] = data->extension;

	Value v = Value(params);
	sendMessageWithParams("pay", v);
}
void U8SDKInterface::submitGameData(U8ExtraGameData* data)
{
	ValueMap params;
	params["dataType"] = data->dataType;
	params["roleID"] = data->roleId;
	params["roleName"] = data->roleName;
	params["roleLevel"] = data->roleLevel;
	params["serverID"] = data->serverId;
	params["serverName"] = data->serverName;
	params["moneyNum"] = data->moneyNum;
	Value v = Value(params);
	sendMessageWithParams("submitExtraData", v);
}
// on "init" you need to initialize your instance
bool HelloWorld::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(HelloWorld::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);
    
    /////////////////////////////
    // 3. add your codes below...
    
    // add a label shows "Hello World"
    // create and initialize a label
    
    auto label = LabelTTF::create("Hello World", "Arial", 24);
    
    // position the label on the center of the screen
    label->setPosition(Point(origin.x + visibleSize.width/2,
                             origin.y + visibleSize.height - label->getContentSize().height));
    
    // add the label as a child to this layer
    this->addChild(label, 1);
    
    // add "HelloWorld" splash screen"
    auto sprite = Sprite::create("HelloWorld.png");
    
    // position the sprite on the center of the screen
    sprite->setPosition(Point(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
    
    // add the sprite as a child to this layer
    this->addChild(sprite, 0);
    
    /*
     * Register selectors in a global space so the native environment can
     * respond to the selector when the specified method is called
     * NOTE: Group name is used to easily remove selectors
     */
    NDKHelper::addSelector("HelloWorldSelectors",
                           "gameTestMethod",
                           CC_CALLBACK_2(HelloWorld::gameTestMethod, this),
                           this);
    
    /* Let's send some parameters to the native environment that
     has a method named "nativeTestMethod" */
    ValueMap valueMap;
    valueMap["test_message"] = "Hello from your game!";
    valueMap["test_double"] = 3.14;
    
    Value parameters = Value(valueMap);
    
    sendMessageWithParams("nativeTestMethod", parameters);
    
    return true;
}
void U8SDKInterface::sdkExit()
{
	Value v;
	sendMessageWithParams("exit", v);
}
void U8SDKInterface::showAccoutCenter()
{
	Value v;
	sendMessageWithParams("showAccountCenter", v);
}
void U8SDKInterface::logout()
{
	Value v;
	sendMessageWithParams("logout", v);
}
void U8SDKInterface::switchLogin()
{
	Value v;
	sendMessageWithParams("switchLogin", v);
}