Esempio n. 1
0
JSBool js_fygui_FYPropCell_getOrgPosition(JSContext *cx, uint32_t argc, jsval *vp)
{
	JSObject *obj = JS_THIS_OBJECT(cx, vp);
	js_proxy_t *proxy; JS_GET_NATIVE_PROXY(proxy, obj);
	FYPropCell* cobj = (FYPropCell *)(proxy ? proxy->ptr : NULL);
	JSB_PRECONDITION2( cobj, cx, JS_FALSE, "Invalid Native Object");
	if (argc == 0) {
		CCPoint ret = cobj->getOrgPosition();
		jsval jsret;
		jsret = ccpoint_to_jsval(cx, ret);
		JS_SET_RVAL(cx, vp, jsret);
		return JS_TRUE;
	}

	JS_ReportError(cx, "wrong number of arguments: %d, was expecting %d", argc, 0);
	return JS_FALSE;
}
Esempio n. 2
0
void CharacterNetwork::CharacterCmd(NetworkID id, RakNet::RakString cmd, int characterState)
{
    const char* idstr = RakNet::RakNetGUID(id).ToString();
    printf("CharacterCmd %s %s\n", cmd.C_String(), idstr);
    
    jsval networkObjects = CharacterNetwork::getNetworkObjects();
    jsval jsCharacterNetwork = CharacterNetwork::getNetworkObjectById(idstr);

    if (jsCharacterNetwork != JSVAL_VOID)
    {
        jsval jsCharacter;
        JS_GetProperty(_cx(), &jsCharacterNetwork.toObject(), "delegate", &jsCharacter);
        if (jsCharacter == JSVAL_VOID)
            printf("CharacterCmd can't get js object 'NetworkObject.delegate'\n");
        else
        {
            //jsval jsState = int32_to_jsval(cx, characterState);
            //printf("js get s: %d\n", characterState);
            // update Character State first
            //sc->executeFunctionWithOwner(jsCharacter, "updateStateByIndex", 1, &jsState);
            // then execute cmd
            if (!strcmp(cmd.C_String(), "run"))
            {
                cocos2d::CCPoint direction = ccp(CharacterNetwork::_floatParameters[0], CharacterNetwork::_floatParameters[1]);
                //printf("js get d: %f %f\n", direction.x, direction.y);
                jsval jsPoint = ccpoint_to_jsval(_cx(), direction);
                _sc()->executeFunctionWithOwner(jsCharacter, cmd.C_String(), 1, &jsPoint);
            }
            else if (!strcmp(cmd.C_String(), "cast"))
            {
                jsval castIndex;
                castIndex.setInt32(CharacterNetwork::_intParameters[0]);
                _sc()->executeFunctionWithOwner(jsCharacter, cmd.C_String(), 1, &castIndex);
            }
            else if (!strcmp(cmd.C_String(), "hurt"))
            {
                NetworkID attackerId = CharacterNetwork::_idParameters[0];
                const char* attackerIdstr = RakNet::RakNetGUID(attackerId).ToString();
                
                jsval jsAttackerNetwork;
                JS_GetProperty(_cx(), &networkObjects.toObject(), attackerIdstr, &jsAttackerNetwork);
                if (jsAttackerNetwork == JSVAL_VOID)
                    printf("CharacterCmd can't get js attacker network object %s", attackerIdstr);
                else
                {
                    //CCLog("sc->hurt");
                    jsval jsAttacker = CharacterNetwork::getCharacterById(attackerIdstr);
                    JS_GetProperty(_cx(), &jsAttackerNetwork.toObject(), "delegate", &jsAttacker);
                    if (jsAttacker != JSVAL_VOID)
                    {
                        jsval knockDown;
                        knockDown.setBoolean(CharacterNetwork::_boolParameters[0]);
                        jsval knockFly;
                        knockFly.setBoolean(CharacterNetwork::_boolParameters[1]);
                        jsval knockUp;
                        knockUp.setBoolean(CharacterNetwork::_boolParameters[2]);
                        jsval hurtIndex;
                        hurtIndex.setInt32(CharacterNetwork::_intParameters[0]);
                        
                        JS_SetProperty(_cx(), &jsAttacker.toObject(), "_knockDown", &knockDown);
                        JS_SetProperty(_cx(), &jsAttacker.toObject(), "_knockFly", &knockFly);
                        JS_SetProperty(_cx(), &jsAttacker.toObject(), "_knockUp", &knockUp);
                        
                        jsval argv[2] = {
                            jsAttacker,
                            hurtIndex
                        };
                        
                        _sc()->executeFunctionWithOwner(jsCharacter, cmd.C_String(), 2, argv);
                    }
                }
            }
            // attack stop jump
            else
            {
                _sc()->executeFunctionWithOwner(jsCharacter, cmd.C_String());
            }
        }
    }

}