Пример #1
0
enum Process::ProcessResult AttackProc::Update(unsigned long aElapsedTime)
{
	mProgress += int(100*double(aElapsedTime)/mTimeScale);
	mProgress = std::min(mProgress,100);

	std::cout << p_gGame->GetActorName(mAttacker);
	for (int i = 0; i < mProgress; ++i)
	{
		std::cout << ".";
	}
	for (int i = mProgress; i < 100; ++i)
	{
		std::cout << " ";
	}
	std::cout << p_gGame->GetActorName(mTarget);
	std::cout << std::endl;

	std::this_thread::sleep_for(std::chrono::milliseconds(1000));

	if (mProgress == 100)
	{
		StrongActorPtr attacker = p_gGame->GetActor(mAttacker);
		StrongActorPtr target = p_gGame->GetActor(mTarget);
		this->Attack(attacker,target);
		attacker->GET_COMPONENT(BattleTimer)->ResetBattleTimer();
		attacker->GET_COMPONENT(BattleTimer)->SetActorState(BattleTimerState::ATTACKING, false);
		target->GET_COMPONENT(BattleTimer)->SetActorState(BattleTimerState::BEING_ATTACKED,false);
		return SUCCESS;
	}


	return STALL;
}
Пример #2
0
AttackProc::~AttackProc()
{
	//Set target to busy so they can not mutally attack
	StrongActorPtr attacker = p_gGame->GetActor(mAttacker);
	StrongActorPtr target = p_gGame->GetActor(mTarget);
	attacker->GET_COMPONENT(BattleTimer)->SetActorState(BattleTimerState::ATTACKING, false);
	target->GET_COMPONENT(BattleTimer)->SetActorState(BattleTimerState::BEING_ATTACKED, false);
}
Пример #3
0
void AttackProc::Attack(StrongActorPtr aAttacker, StrongActorPtr aTarget)
{
	int attackerDamage = -1;
	int targetDamage = -10;

	HydrusActorStats* attackerStats = aAttacker->GET_COMPONENT(HydrusActorStats);
	HydrusActorStats* targetStats = aTarget->GET_COMPONENT(HydrusActorStats);

	tempAttackFunc(attackerStats, targetStats, attackerDamage, targetDamage);

	attackerStats->ModifyStats(attackerDamage,"health",aTarget->GetName(),COUNTER_ATTACK_DAMAGE);
	targetStats->ModifyStats(targetDamage,"health",aAttacker->GetName(),ATTACK_DAMAGE);

}
Пример #4
0
AttackProc::AttackProc(ActorId aAttacker,
					   ActorId aTarget)
					   : Process(),
						 mAttacker(aAttacker),
					     mTarget(aTarget),
						 mTimeScale(2000),
						 mProgress(0)
{
	//Set target to busy so they can not mutally attack
	StrongActorPtr attacker = p_gGame->GetActor(mAttacker);
	StrongActorPtr target = p_gGame->GetActor(mTarget);
	attacker->GET_COMPONENT(BattleTimer)->SetActorState(BattleTimerState::ATTACKING, true);
	target->GET_COMPONENT(BattleTimer)->SetActorState(BattleTimerState::BEING_ATTACKED,true);
}
Пример #5
0
void HydrusConsoleView::ActorReadyDelegate(EventData* aEventData)
{
	EventData_ActorReady* eventData = static_cast<EventData_ActorReady*> (aEventData);
	ActorId actorId = eventData->GetActorId();
	HydrusEncounter* encounter = eventData->GetEncounter();

	StrongActorPtr actor = p_gGame->GetActor(actorId);
	Brain* actorBrain = actor->GET_COMPONENT(Brain);
	actorBrain->DetermineAction(encounter);

}
Пример #6
0
void HydrusConsoleView::TargetingDelegate(EventData* aEventData)
{
	EventData_Targeting* eventData = static_cast<EventData_Targeting*> (aEventData);
	ActorId actorId = eventData->GetActorId();
	HydrusEncounter* encounter = eventData->GetEncounter();
	enum ActionType action = eventData->GetActionType();

	StrongActorPtr actor = p_gGame->GetActor(actorId);
	Brain* actorBrain = actor->GET_COMPONENT(Brain);

	ActorId attackTargetId = actorBrain->SelectTarget(actor->GetActorId(), encounter, action);

	encounter->CreateTargetedProc(actorId, attackTargetId, action);
}