void PlotScript::dispatchAll(const char* str) { // 脚本初始化 ValueVector triggerOn; ValueVector vec1; stringToValueVector(std::string(str),"###",vec1); for (auto i:vec1) { ValueVector vec2; stringToValueVector(i.asString(),"~~~",vec2); if(vec2.size() < 2) { vec2.push_back(cocos2d::Value("")); } triggerOn.push_back(cocos2d::Value(vec2)); } for(auto trigger:triggerOn) { auto vec = trigger.asValueVector(); ValueMap map; stringToValueMap(vec.at(0).asString(),map); if(map["target"].asString() == "player") { map["target"] = Detect::shareDetect()->getPlayer()->getName(); } EventHelper::getInstance()->dispatchByStr(valueMapToString(map),vec.at(1).asString()); } }
int PlotScript::addCellWithTrigger(lua_State* ls) { const char *cellName = lua_tostring(ls, 1); const char *cellType = lua_tostring(ls, 2); const char *trigger = lua_tostring(ls, 3); const char *effectStr = lua_tostring(ls, 4); ValueMap effect; stringToValueMap(effectStr, effect); ValueMap map; map["typeId"] = cellType; map["name"] = cellName; map["triggerL"] = trigger; auto cell = CellFactory::getInstance()->createCell(map); auto site = PointFromString(effect["site"].asString()); int layerId = 0; if(!effect["layerId"].isNull()) layerId = effect["layerId"].asInt(); int floorId = Detect::shareDetect()->getCurFloor()->getId(); if(!effect["floorId"].isNull()) floorId = effect["floorId"].asInt(); Detect::shareDetect()->addCell(cell,site,layerId,floorId); lua_pushstring(ls, "OK"); return 1; }
bool Buff::init() { int typeId = _typeId; if(DATA_MODE == 1) { rapidjson::Document &datas = Model::shareModel()->buffDatas; auto &data = Model::GetDataFromCol1(datas,typeId); Model::JsonAddModel(data,_model); } else if(DATA_MODE == 2) { auto model = Model::shareModel()->buffCsv->getModelById(typeId); Model::modelAddModel(model,_model); } _duration = -1; if(!_model["duration"].isNull()) { _duration = _model["duration"].asFloat(); } if(_duration != -1) { if(!_model["initTime"].isNull()) { _initTime = _model["initTime"].asDouble(); } else { _initTime = getTime(); } Director::getInstance()->getScheduler()->schedule(schedule_selector(Buff::buffUpdate),this,1.0f,-1,0.0,false); } stringToValueMap(_model["effectStr"].asString(),_effectMap); _buffPanel = nullptr; _buffUnit = nullptr; return true; }
void Tower::initModel() { if(DATA_MODE == 1) { // 初始化数据 rapidjson::Document &datas = Model::shareModel()->towerDatas; auto &data = Model::GetDataFromCol1(datas,_model["id"].asInt()); Model::JsonAddModel(data,_model); } else if(DATA_MODE == 2) { auto model = Model::shareModel()->towerCsv->getModelById(_model["id"].asInt()); Model::modelAddModel(model,_model); } stringToValueMap(_model["floors"].asString(),_floorUrls); _floorsNum = (int)_floorUrls.size(); //_floors = Map<int, Floor*>(_floorUrls.size()); if(_model["name"].isNull()) { _model["name"] = "tower"; } setName(_model["name"].asString()); shake = RepeatForever::create(Shake::create(1000,2,2)); /*shake = RepeatForever::create( Sequence::create( MoveBy::create(0.05f, Vec2(10,10)), MoveBy::create(0.05f, Vec2(-10,-10)), nullptr));*/ shake->retain(); _canConvey = true; if(!_model["canConvey"].isNull()) { _canConvey = bool(_model["canConvey"].asInt()); } }
void User::getShareReward(int index) { if(getShareRewardsLock(index - 1) == 1) { PopPanel::getInstance()->note("shareReward","type:Text---text:"+ a2u("已经获得该奖励"),1.0f,false,true); return; } auto name = "shareReward" + cocos2d::Value(index).asString(); ValueVector rewards; ValueVector rewardVec; stringToValueVector(PlotScript::sharedHD()->getLuaVarString("script/Test.lua", name.c_str()),"###",rewardVec); for(auto pair:rewardVec) { ValueMap rewardMap; stringToValueMap(pair.asString(), rewardMap); rewards.push_back(cocos2d::Value(rewardMap)); } // 默认只有一个奖品 auto rewardMap = rewards.at(0).asValueMap(); int typeId = rewardMap["typeId"].asInt(); int num = rewardMap["num"].asInt(); for(int i = 0; i < num; i ++) { auto prop = Prop::create(typeId); // 获得奖励 auto player = Detect::shareDetect()->getPlayer(); player->addProp(prop); } auto prop = Prop::create(typeId); PopPanel::getInstance()->note("cantEquip","type:Text---text:"+ a2u("恭喜获得 ###") + "type:Text---text:"+ prop->getNickName() + "|color:{255,0,0}"); setShareRewardsLock(index - 1, 1); }
bool ShopPanel::init() { /*for(auto node:_buttons->getChildren()) { auto button = static_cast<Button*>(node); button->addTouchEventListener(CC_CALLBACK_2(ShopPanel::onButtonClicked, this)); }*/ //_container->setTouchEnabled(true); _container->setAnchorPoint(Vec2(0,0)); _listView = static_cast<ListView*>(Helper::seekWidgetByName(_root, "ListView_content")); _goodPan = static_cast<Layout*>(Helper::seekWidgetByName(_root, "Panel_good")); _goodPan->retain(); _goodPan->removeFromParent(); _listView->addEventListener((ui::ListView::ccListViewCallback)CC_CALLBACK_2(ShopPanel::selectedItemEvent, this)); _listView->addEventListener((ui::ListView::ccScrollViewCallback)CC_CALLBACK_2(ShopPanel::selectedItemEventScrollView,this)); //_title = Label::create("","Arial",20); //_title->setColor(Color3B::BLACK); //_title->setPosition(0, _container->getSize().height / 2 - 30); //_container->addChild(_title); //_label = Label::create("","Arial",17); //_label->setColor(Color3B::BLACK); //_label->setLineBreakWithoutSpace(true); //_label->setAnchorPoint(Vec2(0,0)); //_label->setDimensions(_scrollView->getSize().width,0); ////_label->setPositionY(_scrollView->getSize().height / 2); ////_label->setPositionX(_scrollView->getSize().width / 2); //_scrollView->addChild(_label); //auto clipper = ClippingNode::create(); //clipper->setContentSize(_scrollView->getSize()); ////clipper->setPositionY(_scrollView->getSize().height / 2 + _scrollView->getPosition().y); ////clipper->setAnchorPoint(Vec2(0.5, 0.5)); //_container->addChild(clipper); //auto stencil = DrawNode::create(); //Vec2 rectangle[4]; //rectangle[0] = Vec2(-clipper->getContentSize().width / 2, -clipper->getContentSize().height / 2); //rectangle[1] = Vec2(-clipper->getContentSize().width / 2, clipper->getContentSize().height / 2); //rectangle[2] = Vec2(clipper->getContentSize().width / 2, clipper->getContentSize().height / 2); //rectangle[3] = Vec2(clipper->getContentSize().width / 2, -clipper->getContentSize().height / 2); //Color4F white(1, 1, 1, 1); //stencil->drawPolygon(rectangle, 4, white, 1, white); //clipper->setStencil(stencil); //_scrollView->retain(); //_scrollView->removeFromParent(); //clipper->addChild(_scrollView); //_scrollView->release(); auto goodNum = cocos2d::Value(PlotScript::sharedHD()->getLuaVarString("script/Test.lua", "goodsNum")).asInt(); for(int i = 1; i <= goodNum; i++) { auto goodName = "good" + cocos2d::Value(i).asString(); auto content = PlotScript::sharedHD()->getLuaVarString("script/Test.lua", goodName.c_str()); ValueMap valueMap; stringToValueMap(std::string(content), valueMap); int lock = valueMap["lock"].asInt(); if(conditions[goodName+"_unlock"].intValue() == 1) lock = 0; if(lock == 0) { auto goodPan = _goodPan->clone(); auto goodUnit = GoodUnit::create(i); ValueMap model; model["typeId"] = valueMap["typeId"]; auto good = CellFactory::getInstance()->createCell(model); goodUnit->setGood(good); goodUnit->setPrice(valueMap["price"].asInt()); goodUnit->setNum(valueMap["num"].asInt()); goodUnit->setView(goodPan); _goodsUnit.pushBack(goodUnit); goodPan->setTag(i); _listView->pushBackCustomItem(goodPan); } } _container->setScale(0.85f); _container->setOpacity(200); _container->runAction(FadeIn::create(0.2)); _container->runAction(ScaleTo::create(0.2,1.0f,1.0f,1.0f)); _root->setTouchEnabled(true); _container->setTouchEnabled(false); _root->addTouchEventListener(CC_CALLBACK_2(ShopPanel::onButtonClicked, this)); setKeyboardEnabled(true); return true; }