Beispiel #1
0
MyML GameEngine::Action(MyML& ge,MyML &player, string team, bool invert_pos)
{
    invert_positions=invert_pos;


    if(invert_pos){
        //hier müssen jetzt alle Positionen aus ge vom anderen Team invertiert werden!!!
        //außerdem der Ball
        for(int i=0;i<INT(ge.A("Team1.Player.size"));i++){
            MyML& player=ge.E("Team1.Player").E(STR(i));
            player.E("Pos",invert(player.E("Pos")));
            player.E("InitPos",invert(player.E("InitPos")));

        }
        ge.E("Ball.Pos",invert(ge.E("Ball.Pos")));

    }


    MyML pa=PlayerAction(ge,player);
    pa.AddA("id",player.A("id"));
    pa.AddE("OnPos",INV(player.E("Pos")));

    return pa;
}
void ControllerPlayer::ccdbut()
{
	PlayerAction("stoplistener");

	attack->setEnabled(false);

	skill->setEnabled(false);

	bigskill->setEnabled(false);

	shangxian->setEnabled(false);


}
void ControllerPlayer::obscdbut(float dt)
{
	PlayerAction("startlistener");

	if (!attackisCD)
	{
		attack->setEnabled(true);
	}


	if (!skillisCD)
	{
		skill->setEnabled(true);
	}

	if (!sxisCD)
	{
		shangxian->setEnabled(true);
	}
}
void ControllerPlayer::sxEvent(Ref*, TouchEventType type)
{
	switch (type)
	{
	case TouchEventType::TOUCH_EVENT_BEGAN:
	{
											  PlayerAction("stop");

											  cdImg(3, "500303001.png", "CD4.png", shangxian, 0.74, shangxiancd);

											  break;
	}
	case TouchEventType::TOUCH_EVENT_ENDED:
	{

											  break;
	}

	}
}
void ControllerPlayer::osxcdbut(float dt)
{
	PlayerAction("startlistener");

	if (!attackisCD)
	{
		attack->setEnabled(true);
	}


	if (!skillisCD)
	{
		skill->setEnabled(true);
	}

	if (!bigisCD)
	{
		bigskill->setEnabled(true);
	}

}
void ControllerPlayer::cdImg(float time, std::string name1, std::string name2, Button* but, float scale, MyEnum type)
{
	CallFunc* cding;
	CallFunc* cded;

	ccdbut();
	switch (type)
	{
	case attackcd:
	{
					 cding = CallFunc::create([&](){attackisCD = true; });
					 cded = CallFunc::create([&](){attackisCD = false; });
					 this->scheduleOnce(schedule_selector(ControllerPlayer::oscdbut), 1.0f);
					 PlayerAction(StringUtils::toString(attackType));
					 this->scheduleOnce(schedule_selector(ControllerPlayer::Cdskill), 0.8f);
					 break;
	}
	case skillcd:
	{
					cding = CallFunc::create([&](){skillisCD = true; });
					cded = CallFunc::create([&](){skillisCD = false; });
					this->scheduleOnce(schedule_selector(ControllerPlayer::oacdbut), 1.2f);
					PlayerAction(StringUtils::toString(skillType));
					this->scheduleOnce(schedule_selector(ControllerPlayer::Cdskill), 1.2f);
					break;
	}
	case bigskillcd:
	{
					   cding = CallFunc::create([&](){ bigisCD = true; });
					   cded = CallFunc::create([&](){ bigisCD = false; });
					   this->scheduleOnce(schedule_selector(ControllerPlayer::obscdbut), 2.0f);
					   PlayerAction(StringUtils::toString(skillType));
					   this->scheduleOnce(schedule_selector(ControllerPlayer::Cdskill), 1.2f);
					   break;
	}
	case shangxiancd:
	{
						cding = CallFunc::create([&](){ sxisCD = true; });
						cded = CallFunc::create([&](){ sxisCD = false; });
						this->scheduleOnce(schedule_selector(ControllerPlayer::osxcdbut), 0.6f);
						m_player->sxskill();
						this->scheduleOnce(schedule_selector(ControllerPlayer::Cdskill), 0.6f);
						break;
	}
	}


	SpriteFrameCache* frameCache = SpriteFrameCache::getInstance();
	frameCache->addSpriteFramesWithFile("fight0.plist", "fight0.png");

	Point thepoint = but->getPosition();

	auto cds = Sprite::createWithSpriteFrameName(name2);
	cds->setPosition(thepoint);
	cds->setScale(scale, scale);
	addChild(cds, 3);


	auto funk = [cds, but]()
	{
		cds->setVisible(false);
		but->setEnabled(true);
	};

	CallFunc* func = CallFunc::create(funk);



	auto cd = ProgressTimer::create(Sprite::createWithSpriteFrameName(name1));
	cd->setType(ProgressTimer::Type::RADIAL);
	cd->setPosition(thepoint);
	cd->setScale(0.74, 0.74);
	auto to1 = Sequence::create(cding, ProgressTo::create(time, 100), ProgressTo::create(0, 0), func, cded, nullptr);
	cd->runAction(to1);
	addChild(cd, 4);
}
void ControllerPlayer::Cdskill(float dt)
{
	PlayerAction(StringUtils::toString(standType));
	PlayerAction("stop");
}