void PossessorPlayer::update(float dt) {
	//update aiming direction:
	InputMethod* method = player->getInputMethod();
	if (method->getAction(InputMethod::AIM)) {
		auto result = method->getAimDir(aim_dir);
		aiming = true;
		if (result.first) {
			float a = result.second.getAngle();
			if (a>PI)
				a+=-TAU;
			aim_dir = aim_dir.addAngle(a*dt*4);
		} else {
			aim_dir = result.second.normalize();
		}
	} else {
		aiming=false;
	}

	//update HUD ui state:
	if (getHUD() && getHUD()->getUIState()) {
		//open menu:
		if (player->getInputMethod()->getAction(InputMethod::OPTION_OPEN_MENU)) {
			getHUD()->getUIState()->ui_active^=1;
			return;
		}
		//update menu:
		getHUD()->getUIState()->update(player->getInputMethod(),dt);
		return;
	}
}
order PossessorPlayer::getOrder() {
	if (getHUD() != nullptr && getHUD()->getUIState() != nullptr
			&& getHUD()->getUIState()->ui_active) {
		//do nothing
		return order();
	}
	assert(player);
	order o;
	auto method = player->getInputMethod();
	vector2F v = method->getMovementVector();
	if (v.getMagnitude() > 1)
		v.setMagnitude(1);
	o.movement = v;
	o.movement_magnitude_procuntual = true;
	if (method->getAction(InputMethod::AIM)) {
		o.movement=aim_dir;
		o.aim=aim_dir;
		o.stand_in_place=true;
	} else if (!o.movement.isZero()&&!o.stand_in_place) {
		aim_dir={0,0};
		aiming=false;
	}
	if (method->getAction(InputMethod::ATTACK_0)) {
		o.attack_type=0;
		o.do_attack=true;
	}
	if (method->getAction(InputMethod::ATTACK_1)) {
		o.attack_type=1;
		o.do_attack=true;
	}
	if (method->getAction(InputMethod::ATTACK_2)) {
		o.attack_type = 2;
		o.do_attack = true;
	}
	o.do_context_sensitive = method->getAction(InputMethod::CONTEXT_SENSITIVE);
	o.dash = method->getAction(InputMethod::DASH);
	return o;
}
Exemple #3
0
void MyGame::update() {
    getMonster().update(*this);
    helicopters.update();
    missiles.update();
    getHUD().update(*this);
//    me->get<MyEntity>().update();
//    shuttle->get<Shuttle>().update(*this);

#ifndef WEB
    updateDesktopShortcuts_();
#endif
    //updateCameraMotion_();


}