DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ HandleSwimming()

bool DayZPlayerImplementSwimming::HandleSwimming ( int pCurrentCommandID,
HumanCommandMove pCMove,
HumanMovementState pState )
inlineprivate

ha

get water level

now movement

handled !

См. определение в файле DayZPlayerImplementSwimming.c строка 37

38 {
39 if ( pCurrentCommandID == DayZPlayerConstants.COMMANDID_UNCONSCIOUS || pCurrentCommandID == DayZPlayerConstants.COMMANDID_DAMAGE )
40 return false;
41
42 m_bWasSwimming = false;
43
45 if (pCurrentCommandID != DayZPlayerConstants.COMMANDID_SWIM)
46 {
47 vector wl;
48 bool swimmingStart = CheckSwimmingStart(wl);
49 m_pPlayer.SetCurrentWaterLevel(wl[1]);
50
51 if (swimmingStart)
52 {
53 m_pPlayer.StartCommand_Swim();
54 m_bWasSwimming = true;
55 return true;
56 }
57
59 if ((pCurrentCommandID == DayZPlayerConstants.COMMANDID_MOVE) && (pCMove != null))
60 {
61 pCMove.SetCurrentWaterLevel(wl[1]);
62
63 if (wl[1] > m_pSettings.m_fToErectLevel && pState.m_iStanceIdx != DayZPlayerConstants.STANCEIDX_ERECT && pState.m_iStanceIdx != DayZPlayerConstants.STANCEIDX_RAISEDERECT )
64 {
65 if ( DayZPlayerUtils.PlayerCanChangeStance(m_pPlayer, DayZPlayerConstants.STANCEIDX_ERECT) )
66 {
67 pCMove.ForceStanceUp(DayZPlayerConstants.STANCEIDX_ERECT);
68 }
69 else
70 {
71 m_pPlayer.StartCommand_Swim();
72 m_bWasSwimming = true;
73 return true;
74 }
75 }
76 else if (wl[1] > m_pSettings.m_fToCrouchLevel && (pState.m_iStanceIdx == DayZPlayerConstants.STANCEIDX_PRONE || pState.m_iStanceIdx == DayZPlayerConstants.STANCEIDX_RAISEDPRONE))
77 {
78 if ( DayZPlayerUtils.PlayerCanChangeStance(m_pPlayer, DayZPlayerConstants.STANCEIDX_CROUCH) )
79 {
80 pCMove.ForceStanceUp(DayZPlayerConstants.STANCEIDX_CROUCH);
81 }
82 else
83 {
84 m_pPlayer.StartCommand_Swim();
85 m_bWasSwimming = true;
86 return true;
87 }
88 }
89 }
90
91 // not handled
92 return false;
93 }
94 else // if (pCurrentCommandID == DayZPlayerConstants.COMMANDID_SWIM)
95 {
96 if (GetWaterDepth() < m_pSettings.m_fWaterLevelOut)
97 {
98 if (DayZPlayerUtils.PlayerCanChangeStance(m_pPlayer, DayZPlayerConstants.STANCEIDX_ERECT, true))
99 {
100 HumanCommandSwim hcs = m_pPlayer.GetCommand_Swim();
101 hcs.StopSwimming();
102 m_bWasSwimming = false;
103 return true;
104 }
105 }
106
108 m_bWasSwimming = true;
109 return true;
110 }
111 }
void DayZPlayerUtils()
cannot be instantiated
Определения DayZPlayerUtils.c:465
bool CheckSwimmingStart(out vector waterLevel)
Определения DayZPlayerImplementSwimming.c:31
SHumanCommandSwimSettings m_pSettings
Определения DayZPlayerImplementSwimming.c:6
proto native void SetCurrentWaterLevel(float value)
sets water level (depth)
proto native void ForceStanceUp(int pStanceIdx)
int m_iStanceIdx
current command's id
Определения human.c:1183
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
class HumanCommandLadder HumanCommandSwim()
Определения human.c:695

Перекрестные ссылки CheckSwimmingStart(), DayZPlayerUtils(), HumanCommandMove::ForceStanceUp(), GetWaterDepth(), HumanCommandSwim(), m_bWasSwimming, HumanMovementState::m_iStanceIdx, m_pPlayer, m_pSettings и HumanCommandMove::SetCurrentWaterLevel().