int LuaEngine::handleEvenCustom(void* data) { if (nullptr == data) return 0; BasicScriptData * basicData = static_cast<BasicScriptData*>(data); if (NULL == basicData->nativeObject || nullptr == basicData->value ) return 0; EventCustom* eventCustom = static_cast<EventCustom*>(basicData->value); int handler = ScriptHandlerMgr::getInstance()->getObjectHandler((void*)basicData->nativeObject, ScriptHandlerMgr::HandlerType::EVENT_CUSTIOM); if (0 == handler) return 0; lua_State* L = _stack->getLuaState(); toluafix_pushusertype_ccobject(L, eventCustom->_ID, &(eventCustom->_luaID), (void*)(eventCustom),"cc.EventCustom"); const std::string &eventName = eventCustom->getEventName(); const void *userData = eventCustom->getUserData(); int ret = 0; if (eventName.compare(AnimationFrameDisplayedNotification) == 0) { AnimationFrame::DisplayedEventInfo *eventInfo = (AnimationFrame::DisplayedEventInfo *)userData; _stack->pushObject(eventInfo->target, "cc.Node"); ccvaluemap_to_luaval(_stack->getLuaState(), *(eventInfo->userInfo)); ret = _stack->executeFunctionByHandler(handler, 3); } else { ret = _stack->executeFunctionByHandler(handler, 1); } _stack->clean(); return ret; }
void HeroEnety::attainBase(RaceEunm race) { ValueMap data; float fractionOffset, humanResOffset, HPOffset; switch (mMentalEnum) { case MentalEnum::Normal: fractionOffset = SacrificeValueWhenNormal; humanResOffset = HumanPowerWhenNormal; HPOffset = HitPointWhenNormal; break; case MentalEnum::Captured: fractionOffset = SacrificeValueWhenCaptured; humanResOffset = HumanPowerWhenCaptured; HPOffset = HitPointWhenCaptured; break; default: break; } data.insert(std::make_pair("fractionOffset", Value(fractionOffset))); data.insert(std::make_pair("humanResOffset", Value(humanResOffset))); data.insert(std::make_pair("HPOffset", Value(HPOffset))); data.insert(std::make_pair("RaceEunm", Value(race))); std::string eventName = "event_arrive_base"; EventCustom event = EventCustom(eventName); event.setUserData((void *)(&data)); Director::getInstance()->getEventDispatcher()->dispatchEvent(&event); }
void HeroEnety::GoDead(){ if(mStateEunm == StateEunm::Dead) { return; } mStateEunm = StateEunm::Dead; HeroManager::getInstance()->del(this); if (SoldierTypeID == 3) { ValueMap data; data.insert(std::make_pair("raid", Value(roadID))); bool isLeft = false; if (mRaceEunm == RaceEunm::Red) { isLeft = true; } data.insert(std::make_pair("isLeft", Value(isLeft))); std::string eventName = "missionary_dead"; EventCustom event = EventCustom(eventName); event.setUserData((void *)(&data)); Director::getInstance()->getEventDispatcher()->dispatchEvent(&event); } return; auto callback = CallFuncN::create( CC_CALLBACK_0(HeroEnety::deadcallback,this)); auto dt = DelayTime::create(1); auto fo = FadeOut::create(1); //auto d = Sequence::create((Animate*)Action_Dead, dt, callback, nullptr); auto d = Sequence::create(fo, dt, callback,nullptr); this->runAction(d); }
EventCustom* EventCustom::create(const std::string& eventName, void* data) { EventCustom* event = new EventCustom(eventName); event->setUserData(data); event->autorelease(); return event; }