*/ REBSER *List_Func_Types(REBVAL *func) /* ** Return a block of function arg types. ** Note: skips 0th entry. ** ***********************************************************************/ { REBSER *block; REBSER *words = VAL_FUNC_WORDS(func); REBCNT n; REBVAL *value; REBVAL *word; block = Make_Block(SERIES_TAIL(words)); word = BLK_SKIP(words, 1); for (n = 1; n < SERIES_TAIL(words); word++, n++) { value = Alloc_Tail_Blk(block); VAL_SET(value, VAL_TYPE(word)); VAL_WORD_SYM(value) = VAL_BIND_SYM(word); UNBIND(value); } return block; }
void Battle::playActionOver(cocostudio::Armature *armature, cocostudio::MovementEventType type, const char *name) { if (armature == m_pReadygo) { if (type == COMPLETE) { removeChild(armature); m_pReadygo = NULL; unmask(); BIND(BUND_ID_GLOBAL_TOUCH_MOVED, this, Battle::globalTouchMoved); g_pEventEngine->BundlerCall(BUND_ID_PLANE_FIRE, this, sizeof(this)); } } if (armature == m_pBossIn) { if (type == COMPLETE) { removeChild(armature); m_pBossIn = NULL; unmask(); const BossConfig * pconfig = g_pGameConfig->getBossConfig(m_pConfig->boss); m_pBoss = Boss::create(pconfig); addChild(m_pBoss, GRADE_ENEMY); if (m_pConfig->boss != "chisezhilang") { m_pBoss->setScale(g_pGameConfig->scaleEleMin); } else { m_pBoss->setScale(g_pGameConfig->scaleEleMin * 1.5); } m_pBoss->setPosition(Vec2(pconfig->pos.x * g_pGameConfig->scaleEleX, pconfig->pos.y * g_pGameConfig->scaleEleY)); m_pBoss->setRotation(pconfig->rotate); ActionInterval * action = MoveBy::create(2, Vec2(0, -500 * g_pGameConfig->scaleEleY)); m_pBoss->runAction(Sequence::create(action, CallFuncN::create(this, callfuncN_selector(Battle::playbossAi)), NULL)); } } if (armature == m_pMissionVictory) { if (type == COMPLETE) { Node * icon = g_pGameConfig->getIcon(m_equip.model, m_equip.type); icon->setPosition(Vec2(-200, -275)); icon->setScale(g_pGameConfig->scaleEleMin * 5); m_pMissionVictory->addChild(icon, GRADE_UI); icon->setOpacity(0); ActionInterval * scale = ScaleTo::create(.5f, g_pGameConfig->scaleEleMin * 1.5); ActionInterval * fadein = FadeIn::create(.5f); icon->runAction(Spawn::create(scale, fadein, NULL)); UNBIND(BUND_ID_GLOBAL_TOUCH_MOVED, this, Battle::globalTouchMoved); scheduleOnce(schedule_selector(Battle::returnMission), 2.0f); } } if (armature == m_pMissionFaild) { if (type == COMPLETE) { UNBIND(BUND_ID_GLOBAL_TOUCH_MOVED, this, Battle::globalTouchMoved); scheduleOnce(schedule_selector(Battle::returnMission), 2.0f); } } }
void Battle::planedisappear(void *context, const s32 size) { CCASSERT(m_pPlane == context, "where r u from"); UNBIND(BUND_ID_GLOBAL_TOUCH_BEGAN, this, Battle::globalTouchBegan); UNBIND(BUND_ID_GLOBAL_TOUCH_MOVED, this, Battle::globalTouchMoved); UNBIND(BUND_ID_PLANE_DISAPPEAR, this, Battle::planedisappear); m_pPlane = NULL; unschedule(schedule_selector(Battle::collidtion)); scheduleOnce(schedule_selector(Battle::pve_failed), 2.0f); planeinjured(NULL, 0); }
void Battle::onExit() { PublicUI::onExit(); s_mission_name = ""; UNBIND(BUND_ID_BULLET_FIRED, this, Battle::bulletFired); UNBIND(BUND_ID_BULLET_DISAPPEARED, this, Battle::bulletDisappear); UNBIND(BUND_ID_BATTLE_EVENT, this, Battle::event_exec); UNBIND(BUND_ID_ENEMY_EVENT, this, Battle::enemy_event); UNBIND(BUND_ID_ENEMY_DISAPPEAR, this, Battle::enemydisappear); UNBIND(BUND_ID_PLANE_DISAPPEAR, this, Battle::planedisappear); UNBIND(BUND_ID_PLANE_INJURED, this, Battle::planeinjured); UNBIND(BUND_ID_BOSS_DISAPPEAR, this, Battle::bossdisappear); }
*/ void Unbind_Block(REBVAL *val, REBCNT deep) /* ***********************************************************************/ { for (; NOT_END(val); val++) { if (ANY_WORD(val)) { UNBIND(val); } if (ANY_BLOCK(val) && deep) { Unbind_Block(VAL_BLK_DATA(val), TRUE); } } }
static void framesource_test(void *p1, void *p2) { IMP_LOG_DBG(TAG, "IMP_Framesource_Init\n"); int ret; ret = IMP_System_Init(); if (ret < 0) { IMP_LOG_ERR(TAG, "IMP_System_Init() failed:%d\n", ret); CU_FAIL(); return; } IMP_LOG_DBG(TAG, "Create EmuFake groups\n"); IMP_EmuFakedev_CreateGroup(0, 0, p1); IMP_EmuFakedev_CreateGroup(1, 0, p2); IMP_LOG_DBG(TAG, "Define DGCs...\n"); IMPChannel framesource0 = { DEV_ID_FS, 0, 0 }; IMPChannel framesource1 = { DEV_ID_FS, 0, 1 }; IMPChannel dev0_chn0 = { DEV_ID_EMU_FAKE(0), 0, 0 }; IMPChannel dev1_chn0 = { DEV_ID_EMU_FAKE(1), 0, 0 }; /* Configure Dev attr */ IMPFSDevAttr imp_dev_attr; imp_dev_attr.inFrmRate = FRAME_RATE_IN; imp_dev_attr.nrVBs = 4; ret = IMP_FrameSource_SetDevAttr(&imp_dev_attr); if (ret < 0) { IMP_LOG_ERR(TAG, "IMP_EmuFrameSource_SetDevAttr() error: %d\n", ret); return ; } /* Check Dev attr */ IMPFSDevAttr imp_dev_attr_check; ret =IMP_FrameSource_GetDevAttr(&imp_dev_attr_check); if (ret < 0) { IMP_LOG_ERR(TAG, "IMP_EmuFrameSource_GetDevAttr() error: %d\n", ret); return ; } if(imp_dev_attr_check.inFrmRate != imp_dev_attr.inFrmRate) CU_FAIL("IMP_FrameSource_GetDevAttr"); IMP_LOG_DBG(TAG, "Bind...\n"); #define BIND(A, B) \ ret = IMP_System_Bind(&A, &B); \ if (ret < 0) { \ IMP_LOG_ERR(TAG, "Bind src(%d,%d,%d) dst(%d,%d,%d) error\n", \ A.devID, A.grpID, A.chnID, \ B.devID, B.grpID, B.chnID); \ goto out; \ } BIND(framesource0, dev0_chn0); BIND(framesource1, dev1_chn0); #undef BIND IMP_LOG_DBG(TAG, "Dump...\n"); ret = system_bind_dump(); if (ret < 0) { IMP_LOG_ERR(TAG, "Dump error\n"); CU_FAIL(); return; } /* Configure channel 0 attr */ IMPFSChnAttr imp_chn_attr; imp_chn_attr.picWidth = FRAME_W_1; imp_chn_attr.picHeight = FRAME_H_1; imp_chn_attr.pixFmt = FRAME_FORMAT_1; imp_chn_attr.outFrmRate = FRAME_RATE_OUT_1; ret = IMP_FrameSource_SetChnAttr(0, &imp_chn_attr); if (ret < 0) { IMP_LOG_ERR(TAG, "IMP_EmuFrameSource_SetChnAttr(0) error: %d\n", ret); return ; } /* Check channel 0 attr */ IMPFSChnAttr imp_chn_attr_check; ret = IMP_FrameSource_GetChnAttr(0, &imp_chn_attr_check); if (ret < 0) { IMP_LOG_ERR(TAG, "IMP_EmuFrameSource_GetChnAttr(1) error: %d\n", ret); return ; } IMP_LOG_DBG(TAG, "FS Chn0 ChnAttr.picWidth=%d\n", imp_chn_attr_check.picWidth); IMP_LOG_DBG(TAG, "FS Chn0 ChnAttr.picHeight=%d\n", imp_chn_attr_check.picHeight); IMP_LOG_DBG(TAG, "FS Chn0 ChnAttr.pixFmt=%d\n", imp_chn_attr_check.pixFmt); IMP_LOG_DBG(TAG, "FS Chn0 ChnAttr.outFrmRate=%d\n", imp_chn_attr_check.outFrmRate); /* Configure channel 1 attr */ imp_chn_attr.picWidth = FRAME_W_2; imp_chn_attr.picHeight = FRAME_H_2; imp_chn_attr.pixFmt = FRAME_FORMAT_2; imp_chn_attr.outFrmRate = FRAME_RATE_OUT_2; ret = IMP_FrameSource_SetChnAttr(1, &imp_chn_attr); if (ret < 0) { IMP_LOG_ERR(TAG, "IMP_EmuFrameSource_SetChnAttr(0) error: %d\n", ret); return ; } /* Check channel 0 attr */ ret = IMP_FrameSource_GetChnAttr(1, &imp_chn_attr_check); if (ret < 0) { IMP_LOG_ERR(TAG, "IMP_EmuFrameSource_GetChnAttr(1) error: %d\n", ret); return ; } IMP_LOG_DBG(TAG, "FS Chn1 ChnAttr.picWidth=%d\n", imp_chn_attr_check.picWidth); IMP_LOG_DBG(TAG, "FS Chn1 ChnAttr.picHeight=%d\n", imp_chn_attr_check.picHeight); IMP_LOG_DBG(TAG, "FS Chn1 ChnAttr.pixFmt=%d\n", imp_chn_attr_check.pixFmt); IMP_LOG_DBG(TAG, "FS Chn1 ChnAttr.outFrmRate=%d\n", imp_chn_attr_check.outFrmRate); /* Enable channels */ ret = IMP_FrameSource_EnableChn(0); if (ret < 0) { IMP_LOG_ERR(TAG, "IMP_EmuFrameSource_EnableChn(0) error: %d\n", ret); return ; } ret = IMP_FrameSource_EnableChn(1); if (ret < 0) { IMP_LOG_ERR(TAG, "IMP_EmuFrameSource_EnableChn(1) error: %d\n", ret); return ; } /* Enable Device */ ret = IMP_FrameSource_EnableDev(); if (ret < 0) { IMP_LOG_ERR(TAG, "IMP_EmuFrameSource_EnableDev error: %d\n", ret); return ; } IMP_LOG_DBG(TAG, "%s(): OK.\n", __func__); IMP_FrameSource_StreamOn(); struct timeval tv = {6, 0}; select(0, NULL, NULL, NULL, &tv); IMP_FrameSource_StreamOff(); IMP_FrameSource_DisableDev(); IMP_FrameSource_DisableChn(1); IMP_FrameSource_DisableChn(0); IMP_LOG_DBG(TAG, "Unbind...\n"); #define UNBIND(A, B) \ ret = IMP_System_UnBind(&A, &B); \ if (ret < 0) { \ IMP_LOG_ERR(TAG, "UnBind src(%d,%d,%d) dst(%d,%d,%d) error\n", \ A.devID, A.grpID, A.chnID, \ B.devID, B.grpID, B.chnID); \ goto out; \ } UNBIND(framesource0, dev0_chn0); UNBIND(framesource1, dev1_chn0); #undef UNBIND out: IMP_LOG_DBG(TAG, "IMP_System_Exit\n"); ret = IMP_System_Exit(); if (ret < 0) { IMP_LOG_ERR(TAG, "IMP_System_Exit() failed:%d\n", ret); CU_FAIL(); return; } CU_PASS(); }
Weapon::~Weapon() { UNBIND(BUND_ID_WEAPON_FIRE, this, Weapon::OnCmdFire); UNBIND(BUND_ID_BULLET_LEVEL_UP, this, Weapon::OnCmdBulletUp); }
CBox::~CBox() { UNBIND(BUND_ID_CBOX_UNSELECTED, this, CBox::OnCmdUnSelected); }