void CALLBACK CPlayer::Move(float fTime) { float fDist = fTime * PLAYER_SPEED; if (_position.x < _nextPosition.x) { _position.x += fDist; if (_position.x >= _nextPosition.x) Stand(); } else if (_position.x > _nextPosition.x) { _position.x -= fDist; if (_position.x <= _nextPosition.x) Stand(); } else if (_position.y < _nextPosition.y) { _position.y += fDist; if (_position.y >= _nextPosition.y) Stand(); } else if (_position.y > _nextPosition.y) { _position.y -= fDist; if (_position.y <= _nextPosition.y) Stand(); } }
void KeyControlledTransitionBarbarian_cl::ProcessKeyboardEvents() { bool bUp = VAppImpl::GetInputMap()->GetTrigger(CHARACTER_MOVE_FORWARD)!=0; bool bRotLeft = VAppImpl::GetInputMap()->GetTrigger(CHARACTER_ROTATE_LEFT)!=0; bool bRotRight = VAppImpl::GetInputMap()->GetTrigger(CHARACTER_ROTATE_RIGHT)!=0; bool bShift = VAppImpl::GetInputMap()->GetTrigger(CHARACTER_RUN)!=0; if (bUp) { // Trigger the run/walk actions when CURSOR UP is pressed. // Allow rotating the entity while walking/running if (bShift) Run(); else Walk(); if (bRotLeft) RotateLeft(); else if (bRotRight) RotateRight(); } else { if (bRotLeft) RotateLeft(); else if (bRotRight) RotateRight(); else Stand(); } }
NonLiving::NonLiving(int x, int y, ActorType NewType):Actor(x,y) { setScriptSource(NewType.Script); Action Stand("Stand",""); Animation Main(NewType.Source,"0,",0,0,1,true); //Main.setRotation(270,90,0); Stand.setMainAnimation(0); Stand.addAnimation(Main); addAction(Stand); };
void Bird::HandleUpdate(StringHash eventType, VariantMap &eventData) { if (dead_ && GetPosition().y_ < -5.0f) Disable(); float timeStep = eventData[SceneUpdate::P_TIMESTEP].GetFloat(); if (sinceSpeciesSet_ < morphTime_){ Morph(); } sinceSpeciesSet_ += timeStep; if (sinceStateChange_ > stateDuration_){ switch (state_) { case BirdState::Flying: { SetState(BirdState::Landing); } break; case BirdState::Standing: { SetState(BirdState::Flying); } break; default: break; } } if(!(first_ && state_ == BirdState::Standing)) sinceStateChange_ += timeStep; switch (state_) { case BirdState::Flying: { Fly(timeStep); } break; case BirdState::Landing: { Land(timeStep); } break; case BirdState::Standing: { Stand(timeStep); } break; default: break; } //Move bird rootNode_->Translate(velocity_*timeStep, TS_WORLD); //Update rotation in accordance with the birds movement. if (velocity_.Length() > 0.01f){ Quaternion rotation = rootNode_->GetWorldRotation(); Quaternion aimRotation = rotation; aimRotation.FromLookRotation(velocity_); rootNode_->SetRotation(rotation.Slerp(aimRotation, 2.0f * timeStep * velocity_.Length())); } }
void ComCharacter::CheckMonDeath() { // 공격 상대가 죽었으면 if (pAttackTarget && pAttackTarget->IsDeath() == true) { // 몬스터 죽음 처리 pAttackTarget->Death(); // 캐릭터 레벨업 처리 if (Status->GetEXPAndCheckLevelUp()) Status->LevelUP(0.05f); CancleAttackTarget(); Stand(); } }
void KeyControlledTransitionCharacter_cl::ProcessKeyboardEvents() { if(!m_bKeyboardInputAllowed) return; bool bLeft = m_pInputMap->GetTrigger(CHARACTER_MOVE_LEFT)!=0; bool bRight = m_pInputMap->GetTrigger(CHARACTER_MOVE_RIGHT)!=0; bool bUp = m_pInputMap->GetTrigger(CHARACTER_MOVE_FORWARD)!=0; bool bDown = m_pInputMap->GetTrigger(CHARACTER_MOVE_BACKWARD)!=0; bool bShift = m_pInputMap->GetTrigger(CHARACTER_RUN)!=0; if (bUp) { // Trigger the run/walk actions when CURSOR UP is pressed. // Allow rotating the entity while walking/running if (bShift) Run(); else Walk(); if (bLeft) RotateLeft(); else if (bRight) RotateRight(); } else if (bDown) { // Trigger the walk backward action when CURSOR DOWN is pressed. // Allow rotating the entity while walking backwards WalkBackwards(); if (bLeft) RotateLeft(); else if (bRight) RotateRight(); } else { if (bLeft) RotateLeft(); else if (bRight) RotateRight(); else Stand(); } }
bool MonsterAI::RandomRun() { CMonster *monster = static_cast<CMonster*>(GetOwner()); if (monster == NULL) { LogError(AI_MODULE, "MosterAI has no owner object..."); } assert(monster); if(random(10000) < monster->GetMoveRandomValue()) { long dir = 0; long curX = monster->GetTileX(); long curY = monster->GetTileY(); long dis = monster->Distance(curX, curY, m_BornPos.x, m_BornPos.y); if(dis > monster->GetPeaceMoveRange()) { dir = GetLineDir(curX, curY, m_BornPos.x, m_BornPos.y); long gdir = (8 - dir) % 8; if(gdir >= 2 || gdir <= 6) { dir = (dir + random(3) - 1 + 8) % 8; } } else { dir = random(8); } long maxRunTimes = monster->GetMaxRunTimes(); long minRunTimes = monster->GetMinRunTimes(); AI_EVENT_SENDER(this).MoveByStep(dir, random(maxRunTimes - minRunTimes) + minRunTimes); // drive the ai Resume(0); } else { Stand(monster->GetStopFrame()); } return true; }
/** * Checks that all non-moving actors are playing the same reel as when * the scene was saved. * Also 'stand' all the moving actors at their saved positions. */ void sortActors(SAVED_DATA *sd) { assert(!TinselV2); for (int i = 0; i < sd->NumSavedActors; i++) { ActorsLife(sd->SavedActorInfo[i].actorID, sd->SavedActorInfo[i].bAlive); // Should be playing the same reel. if (sd->SavedActorInfo[i].presFilm != 0) { if (!actorAlive(sd->SavedActorInfo[i].actorID)) continue; RestoreActorReels(sd->SavedActorInfo[i].presFilm, sd->SavedActorInfo[i].presRnum, sd->SavedActorInfo[i].zFactor, sd->SavedActorInfo[i].presPlayX, sd->SavedActorInfo[i].presPlayY); } } RestoreAuxScales(sd->SavedMoverInfo); for (int i = 0; i < MAX_MOVERS; i++) { if (sd->SavedMoverInfo[i].bActive) Stand(nullContext, sd->SavedMoverInfo[i].actorID, sd->SavedMoverInfo[i].objX, sd->SavedMoverInfo[i].objY, sd->SavedMoverInfo[i].hLastfilm); } }
void CBuildings::RenderTurret(const CNetObj_Turret *pCurrent, const CNetObj_Turret *pPrev) { vec2 Pos = mix(vec2(pPrev->m_X, pPrev->m_Y), vec2(pCurrent->m_X, pCurrent->m_Y), Client()->IntraGameTick()); float Scale = 0.8f; int s = pCurrent->m_Status; bool Flip = s & (1<<BSTATUS_MIRROR); int FlipY = Flip ? -1 : 1; // stand Graphics()->TextureSet(g_pData->m_aImages[IMAGE_BUILDINGS].m_Id); Graphics()->QuadsBegin(); RenderTools()->SelectSprite(SPRITE_STAND, Flip ? SPRITE_FLAG_FLIP_Y : 0); Graphics()->SetColor(1, 1, 1, 1); Graphics()->QuadsSetRotation(0); //RenderTools()->DrawSprite(pCurrent->m_X, pCurrent->m_Y-24-9, 96*1.3f); IGraphics::CQuadItem Stand(Pos.x, Pos.y-25*FlipY, 96*Scale, 128*Scale); // -37 Graphics()->QuadsDraw(&Stand, 1); Graphics()->QuadsEnd(); int Weapon = pCurrent->m_Weapon; float Angle = (pCurrent->m_Angle+90) / (180/pi); vec2 p = Pos + vec2(cosf(Angle)*12, sinf(Angle)*12+(-40-9)*FlipY); //+ vec2(cosf(Angle)*90, sinf(Angle)*90-71); vec2 Dir = GetDirection((int)(Angle*256)); // render weapon RenderTools()->SetShadersForWeapon(Weapon); Graphics()->TextureSet(g_pData->m_aImages[IMAGE_WEAPONS].m_Id); Graphics()->QuadsBegin(); Graphics()->QuadsSetRotation(Angle); RenderTools()->RenderWeapon(Weapon, p, Dir, WEAPON_GAME_SIZE); Graphics()->QuadsEnd(); // render muzzle if (GetWeaponFiringType(Weapon) != WFT_HOLD) { CustomStuff()->SetTurretMuzzle(ivec2(Pos.x, Pos.y), pCurrent->m_AttackTick, pCurrent->m_Weapon); CTurretMuzzle Muzzle = CustomStuff()->GetTurretMuzzle(ivec2(Pos.x, Pos.y)); if (Muzzle.m_Weapon) { Graphics()->TextureSet(g_pData->m_aImages[IMAGE_MUZZLE].m_Id); Graphics()->QuadsBegin(); Graphics()->QuadsSetRotation(Angle); vec2 Moff = GetMuzzleRenderOffset(Muzzle.m_Weapon)+vec2(-3, -6); RenderTools()->SelectSprite(SPRITE_MUZZLE1_1 + Muzzle.m_Muzzle*4 + Muzzle.m_Time*4, SPRITE_FLAG_FLIP_X); vec2 DirY(-Dir.y,Dir.x); vec2 MuzzlePos = p + Dir * Moff.x + DirY * Moff.y; RenderTools()->DrawSprite(MuzzlePos.x, MuzzlePos.y, 60); Graphics()->QuadsEnd(); } } Graphics()->ShaderEnd(); vec2 Offset = vec2(0, 0); // fastener Graphics()->TextureSet(g_pData->m_aImages[IMAGE_BUILDINGS].m_Id); Graphics()->QuadsBegin(); RenderTools()->SelectSprite(SPRITE_TURRET_FASTENER, Dir.x < 0 ? SPRITE_FLAG_FLIP_Y : 0); Graphics()->SetColor(1, 1, 1, 1); if (m_pClient->m_Snap.m_pGameInfoObj) { int Flags = m_pClient->m_Snap.m_pGameInfoObj->m_GameFlags; int Team = pCurrent->m_Team; if ((Flags & GAMEFLAG_TEAMS) && !(Flags & GAMEFLAG_INFECTION)) { if (Team == TEAM_RED) Graphics()->SetColor(1.0f, 0.8f, 0.0f, 1.0f); else if (Team == TEAM_BLUE) Graphics()->SetColor(0.3f, 0.5f, 1.0f, 1.0f); } } // local player's turret else if (pCurrent->m_Team == TEAM_BLUE) { vec4 c = CustomStuff()->m_LocalColor; Graphics()->SetColor(c.r, c.g, c.b, 1); } Graphics()->QuadsSetRotation(Angle); RenderTools()->DrawSprite(Pos.x+Offset.x, Pos.y+(-40-9)*FlipY+Offset.y, 64*1.3f); Graphics()->QuadsEnd(); // no ammo & low health status s = pCurrent->m_Status; bool Repair = s & (1<<BSTATUS_REPAIR); //s = pCurrent->m_Status; //bool NoAmmo = s & (1<<BSTATUS_NOPE); bool NoAmmo = false; if (Repair && int(CustomStuff()->LocalTick()/12+(Pos.x/8 + Pos.y/32))%8 < 4) { Graphics()->TextureSet(g_pData->m_aImages[IMAGE_BUILDINGS].m_Id); Graphics()->QuadsBegin(); RenderTools()->SelectSprite(SPRITE_STATUS_REPAIR); Graphics()->SetColor(1, 1, 1, 1); Graphics()->QuadsSetRotation(0); RenderTools()->DrawSprite(Pos.x - (NoAmmo ? 24 : 0), Pos.y-50-52*FlipY, 52); Graphics()->QuadsEnd(); } }
int KHero::LuaStand(Lua_State* L) { Stand(true); return 0; }
BOOL CFixedPositionArcher::RandomRun() { Stand(1000); return FALSE; }
INT CFixedPositionArcher::Tracing(CMoveShape*pTarget) { SearchSkill(pTarget); CBaseModule* basemodule=0; stStaticModuParam* moduparam=0; BOOL HasSkill=TRUE; INT MinAtkDistance=0; INT MaxAtkDistance=0; if (HasChoiceSkill()) { basemodule=dynamic_cast<CMonster*>(m_pOwner)->GetActiveSkill(0);//GetSearchedSkillKey() } else { Stand(dynamic_cast<CMonster*>(m_pOwner)->GetStopFrame()); WhenLoseTarget(); return TRACE_RESULT_TRACE; } if (basemodule!=NULL) { moduparam=basemodule->GetStaticParam(); MinAtkDistance=moduparam->lMinAtkDistance; MaxAtkDistance=moduparam->lMaxAtkDistance; } else { Stand(dynamic_cast<CMonster*>(m_pOwner)->GetStopFrame()); WhenLoseTarget(); return TRACE_RESULT_TRACE; } //##合乎距离要求。 LONG lDistance = m_pOwner -> RealDistance( pTarget ); //如果在技能的距离内, 则使用技能 if(lDistance >= MinAtkDistance && lDistance <= MaxAtkDistance ) { if (HasSkill) { return TRACE_RESULT_SUCCESS; } else { Stand(dynamic_cast<CMonster*>(m_pOwner)->GetStopFrame()); WhenLoseTarget(); return TRACE_RESULT_TRACE; } } //##如果依然在追击范围内,就开始跟随玩家。 else { Stand(dynamic_cast<CMonster*>(m_pOwner)->GetStopFrame()); return TRACE_RESULT_TRACE; } }
void BattleCharacter::RefreshTurnStatus() { Stand(); }
void KeyControlledAnimatedCharacter_cl::ProcessKeyboardEvents() { bool bLeft = m_pInputMap->GetTrigger(CHARACTER_MOVE_LEFT)!=0; bool bRight = m_pInputMap->GetTrigger(CHARACTER_MOVE_RIGHT)!=0; bool bUp = m_pInputMap->GetTrigger(CHARACTER_MOVE_FORWARD)!=0; bool bDown = m_pInputMap->GetTrigger(CHARACTER_MOVE_BACKWARD)!=0; bool bShift = m_pInputMap->GetTrigger(CHARACTER_RUN)!=0; bool bRaiseLowerWeapon = m_pInputMap->GetTrigger(CHARACTER_TOGGLE_WEAPON)!=0; bool bAttack = m_pInputMap->GetTrigger(CHARACTER_ATTACK)!=0; if (bUp) { // trigger the run/walk actions when CURSOR UP is pressed. // allow rotating the entity while walking/running if ( bShift ) Run(); else Walk(); if (bLeft) RotateLeft(); else if (bRight) RotateRight(); } else if(bDown) { // trigger the walk backward action when CURSOR DOWN is pressed. // allow rotating the entity while walking backwards WalkBackwards(); if(bLeft) RotateLeft(); else if(bRight) RotateRight(); } else { // switch to stand action if character is not rotating ??????????? if ( !IsInRotateState() && !IsInRotateArmedState() ) Stand(); // trigger rotate actions if CURSOR LEFT/RIGHT is pressed, otherwise trigger stand action if(bLeft) RotateLeft(); else if(bRight) RotateRight(); else Stand(); } // raise or lower weapon on SPACE key if(bRaiseLowerWeapon) { if(IsInUpperBodyIdleState()||IsInUpperBodyLowerWeaponState()) Arm(); else if(IsInUpperBodyIdleArmedState()||IsInUpperBodyDrawWeaponState()) DisArm(); } // attack on ENTER key if ( bAttack ) GetUpperBodyState()->Attack(); }
bool LookUpGate::RunLookUpGate(){ switch (mLookUpState) { case STOP: stop(); break; case SETTLE: lean(); break; case LEAN: lean(); break; case THROGHGATE: ThroughLookUpGate(); break; case BACKTOGATE: BackLookUpGate(); break; case STAND: Stand(); break; case BALANCE: StartBalance(); break; default: break; } if(SettleCompleteFlag == true) { mLookUpState = LEAN; SettleCompleteFlag = false; } if(LeanCompleteFlag == true) { mLookUpState = THROGHGATE; LeanCompleteFlag = false; } if(ThroghGateCompleteFlag == true) { #ifdef LOOKUPGATEDOUBLE if(SecondFlag == true) { //★★★ダブル用フラグ初期化 mLookUpState = STAND; // mbalancingwalker->init(); //★★★前倒防止制御 うまくいくかわからない } else { mLookUpState = BACKTOGATE;//★★★ダブル用フラグ初期化 ev3_led_set_color(LED_ORANGE); } #else // if(SecondFlag == true) { //★★★ダブル用フラグ初期化 mLookUpState = STAND; // mbalancingwalker->init(); //★★★前倒防止制御 うまくいくかわからない // } else { // mLookUpState = BACKTOGATE;//★★★ダブル用フラグ初期化 // } #endif ThroghGateCompleteFlag = false; } if(BackGateCompleteFlag == true) { mLookUpState = THROGHGATE; BackGateCompleteFlag = false; SecondFlag = true; } if(StandCompleteFlag == true) { mLookUpState = BALANCE; StandCompleteFlag = false; } return(LookUpCompFlag); }