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; }
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()); } } } }