MCPcopy Create free account
hub / github.com/OGSR/OGSR-Engine / CanTrade

Method CanTrade

ogsr_engine/xrGame/trade2.cpp:17–64  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15#include "trade_parameters.h"
16
17bool CTrade::CanTrade()
18{
19 CEntity* pEntity;
20
21 m_nearest.clear();
22 Level().ObjectSpace.GetNearest(m_nearest, pThis.base->Position(), 2.f, NULL);
23 if (!m_nearest.empty())
24 {
25 for (u32 i = 0, n = m_nearest.size(); i < n; ++i)
26 {
27 // Может ли объект торговать
28 pEntity = smart_cast<CEntity*>(m_nearest[i]);
29 if (pEntity && !pEntity->g_Alive())
30 return false;
31 if (SetPartner(pEntity))
32 break;
33 }
34 }
35
36 if (!pPartner.base)
37 return false;
38
39 // Объект рядом
40 float dist = pPartner.base->Position().distance_to(pThis.base->Position());
41 if (dist < 0.5f || dist > 4.5f)
42 {
43 RemovePartner();
44 return false;
45 }
46
47 // Объект смотрит на меня
48 float yaw, pitch;
49 float yaw2, pitch2;
50
51 pThis.base->Direction().getHP(yaw, pitch);
52 pPartner.base->Direction().getHP(yaw2, pitch2);
53 yaw = angle_normalize(yaw);
54 yaw2 = angle_normalize(yaw2);
55
56 float Res = rad2deg(_abs(yaw - yaw2) < PI ? _abs(yaw - yaw2) : PI_MUL_2 - _abs(yaw - yaw2));
57 if (Res < 165.f || Res > 195.f)
58 {
59 RemovePartner();
60 return false;
61 }
62
63 return true;
64}
65
66void CTrade::TransferItem(CInventoryItem* pItem, bool bBuying, bool change_money)
67{

Callers 1

AddAvailableItemsMethod · 0.45

Calls 12

angle_normalizeFunction · 0.85
rad2degFunction · 0.85
GetNearestMethod · 0.80
PositionMethod · 0.80
g_AliveMethod · 0.80
getHPMethod · 0.80
DirectionMethod · 0.80
_absFunction · 0.50
clearMethod · 0.45
emptyMethod · 0.45
sizeMethod · 0.45
distance_toMethod · 0.45

Tested by

no test coverage detected