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;
}
Exemple #3
0
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;
}
Exemple #4
0
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());
	}
}
Exemple #5
0
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;
}