Skip to content

Commit

Permalink
Fix xrGameLA, part 3
Browse files Browse the repository at this point in the history
  • Loading branch information
St4lker0k765 committed Dec 8, 2024
1 parent 43b4d1e commit 07fb07d
Show file tree
Hide file tree
Showing 117 changed files with 902 additions and 4,524 deletions.
2 changes: 1 addition & 1 deletion src/xrEngine/xrLevel.h
Original file line number Diff line number Diff line change
Expand Up @@ -342,5 +342,5 @@ const u32 XRCL_PRODUCTION_VERSION = 14; // output
const u32 CFORM_CURRENT_VERSION = 4;
const u32 MAX_NODE_BIT_COUNT = 23;
const u32 XRAI_CURRENT_VERSION = 10;

const u32 XRAI_SOC_CURRENT_VERSION = 8;
#endif // xrLevelH
14 changes: 8 additions & 6 deletions src/xrGameLA/AI_PhraseDialogManager.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
///////////////////////////////////////////////////////////////
// AI_PhraseDialogManager.h
// Êëàññ, îò êîòîðîãî íàñëåäóþòñÿ NPC ïåðñîíàæè, âåäóùèå äèàëîã
// ñ àêòåðîì
// Класс, от которого наследуются NPC персонажи, ведущие диалог
// с актером
//
///////////////////////////////////////////////////////////////

Expand All @@ -28,12 +28,14 @@ class CAI_PhraseDialogManager: public CPhraseDialogManager
virtual shared_str GetStartDialog () {return m_sStartDialog;}
virtual void RestoreDefaultStartDialog ();
protected:
//äèàëîã, åñëè íå NULL, òî åãî ïåðñîíàæ çàïóñòèò
//ïðè âñòðå÷å ñ àêòåðîì
//диалог, если не NULL, то его персонаж запустит
//при встрече с актером
shared_str m_sStartDialog;
shared_str m_sDefaultStartDialog;

DEFINE_VECTOR(DIALOG_SHARED_PTR, DIALOG_SHARED_VECTOR, DIALOG_SHARED_IT);
//ñïèñîê äèàëîãîâ, íà êîòîðûå íóæíî îòâåòèòü
using DIALOG_SHARED_VECTOR = xr_vector<DIALOG_SHARED_PTR>;
using DIALOG_SHARED_IT = DIALOG_SHARED_VECTOR::iterator;

//список диалогов, на которые нужно ответить
DIALOG_SHARED_VECTOR m_PendingDialogs;
};
24 changes: 12 additions & 12 deletions src/xrGameLA/BastArtifact.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
///////////////////////////////////////////////////////////////
// BastArtifact.h
// BastArtefact - àðòåôàêò ìî÷àëêà
// BastArtefact - артефакт мочалка
///////////////////////////////////////////////////////////////

#pragma once
Expand All @@ -12,8 +12,8 @@
struct SGameMtl;
struct dContact;

DEFINE_VECTOR (CEntityAlive*, ALIVE_LIST, ALIVE_LIST_it);

using ALIVE_LIST = xr_vector<CEntityAlive*>;
using ALIVE_LIST_it = ALIVE_LIST::iterator;

class CBastArtefact : public CArtefact,
public Feel::Touch
Expand Down Expand Up @@ -45,14 +45,14 @@ class CBastArtefact : public CArtefact,
virtual void UpdateCLChild ();

static void ObjectContactCallback(bool& do_colide,bool bo1,dContact& c,SGameMtl * /*material_1*/,SGameMtl * /*material_2*/);
//ñòîëêíîâåíèå ìî÷àëêè ñ ñóùíîñòüþ
//столкновение мочалки с сущностью
void BastCollision(CEntityAlive* pEntityAlive);


//ïàðàìåòðû àðòåôàêòà
//параметры артефакта

//ïîðîãîâîå çíà÷åíèå èìïóëüñà ïîñëå ïîëó÷åíèÿ
//êîòîðîãî àðòåôàêò àêòèâèçèðóåòñÿ
//пороговое значение импульса после получения
//которого артефакт активизируется
float m_fImpulseThreshold;

float m_fEnergy;
Expand All @@ -64,15 +64,15 @@ class CBastArtefact : public CArtefact,
float m_fRadius;
float m_fStrikeImpulse;

//ôëàã, òîãî ÷òî àðòåôàêò ïîëó÷èë õèò
//è òåïåðü ìîæåò ñîâåðøèòü áðîñîê
//флаг, того что артефакт получил хит
//и теперь может совершить бросок
bool m_bStrike;

//ñïèñîê æèâûõ ñóùåñòâ â çîíå äîñÿãàåìîñòè àðòåôàêòà
//список живых существ в зоне досягаемости артефакта
ALIVE_LIST m_AliveList;
//òî, ÷òî ìû óäàðèëè
//то, что мы ударили
CEntityAlive* m_pHitedEntity;
//òî ÷òî àòàêóåì
//то что атакуем
CEntityAlive* m_AttakingEntity;

public:
Expand Down
8 changes: 4 additions & 4 deletions src/xrGameLA/BlackGraviArtifact.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
///////////////////////////////////////////////////////////////
// BlackGraviArtifact.cpp
// BlackGraviArtefact - ãðàâèòàöèîííûé àðòåôàêò,
// òàêîé æå êàê è îáû÷íûé, íî ïðè ïîëó÷åíèè õèòà
// BlackGraviArtefact - гравитационный артефакт,
// такой же как и обычный, но при получении хита
///////////////////////////////////////////////////////////////

#include "stdafx.h"
Expand All @@ -13,7 +13,7 @@
#include "xrmessages.h"
#include "physicsshellholder.h"
#include "explosive.h"
#include "../../xrNetServer/net_utils.h"
#include "../../xrCore/net_utils.h"
#include "PHWorld.h"
#include "CharacterPhysicsSupport.h"
extern CPHWorld* ph_world;
Expand Down Expand Up @@ -127,7 +127,7 @@ void CBlackGraviArtefact::Hit (SHit* pHDS)
if(HDS.impulse>m_fImpulseThreshold)
{
m_bStrike = true;
//÷òîá âûñòðåë íå ïîâëèÿë íà òðàåêòîðèþ ïîëåòà àðòåôàêòà
//чтоб выстрел не повлиял на траекторию полета артефакта
HDS.impulse = 0;
}

Expand Down
20 changes: 11 additions & 9 deletions src/xrGameLA/BlackGraviArtifact.h
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
///////////////////////////////////////////////////////////////
// BlackGraviArtifact.h
// BlackGraviArtefact - ãðàâèòàöèîííûé àðòåôàêò,
// òàêîé æå êàê è îáû÷íûé, íî ïðè ïîëó÷åíèè õèòà
// BlackGraviArtefact - гравитационный артефакт,
// такой же как и обычный, но при получении хита
///////////////////////////////////////////////////////////////

#pragma once
#include "GraviArtifact.h"
#include "../feel_touch.h"
#include "PhysicsShellHolder.h"
DEFINE_VECTOR (CPhysicsShellHolder*, GAME_OBJECT_LIST, GAME_OBJECT_LIST_it);

using GAME_OBJECT_LIST = xr_vector<CPhysicsShellHolder*>;
using GAME_OBJECT_LIST_it = GAME_OBJECT_LIST::iterator;

class CBlackGraviArtefact: public CGraviArtefact,
public Feel::Touch
Expand Down Expand Up @@ -36,21 +38,21 @@ class CBlackGraviArtefact: public CGraviArtefact,
virtual void net_Relcase (CObject* O );
virtual void UpdateCLChild ();

//ãðàâèòàöèîííûé óäàð ïî âñåì îáúåêòàì â çîíå äîñÿãàåìîñòè
//гравитационный удар по всем объектам в зоне досягаемости
void GraviStrike();

GAME_OBJECT_LIST m_GameObjectList;


//êîòîðîãî àðòåôàêò àêòèâèçèðóåòñÿ
//которого артефакт активизируется
float m_fImpulseThreshold;
//ðàäèóñ äåéñòâèÿ àðòåôàêòà
//радиус действия артефакта
float m_fRadius;
//èìïóëüñ ïåðåäàâàåìûé îêðóæàþùèì ïðåäìåòàì
//импульс передаваемый окружающим предметам
float m_fStrikeImpulse;

//ôëàã, òîãî ÷òî àðòåôàêò ïîëó÷èë õèò
//è òåïåðü ìîæåò ñîâåðøèòü áðîñîê
//флаг, того что артефакт получил хит
//и теперь может совершить бросок
bool m_bStrike;

shared_str m_sParticleName;
Expand Down
12 changes: 6 additions & 6 deletions src/xrGameLA/BottleItem.cpp
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
///////////////////////////////////////////////////////////////
// BottleItem.cpp
// BottleItem - áóòûëêà ñ íàïèòêîì, êîòîðóþ ìîæíî ðàçáèòü
// BottleItem - бутылка с напитком, которую можно разбить
///////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "BottleItem.h"
#include "xrmessages.h"
#include "../../xrNetServer/net_utils.h"
#include "../../xrCore/net_utils.h"
#include "entity_alive.h"
#include "EntityCondition.h"

Expand Down Expand Up @@ -47,19 +47,19 @@ void CBottleItem::OnEvent(NET_Packet& P, u16 type)

void CBottleItem::BreakToPieces()
{
//èãðàåì çâóê
//играем звук
sndBreaking.play_at_pos(0, Position(), false);

//îòûãðàòü ïàðòèêëû ðàçáèâàíèÿ
//отыграть партиклы разбивания
if(*m_sBreakParticles)
{
//ïîêàçûâàåì ýôôåêòû
//показываем эффекты
CParticlesObject* pStaticPG;
pStaticPG = CParticlesObject::Create(*m_sBreakParticles,TRUE);
pStaticPG->play_at_pos(Position());
}

//ëèêâèäèðîâàòü ñàì îáúåêò
//ликвидировать сам объект
if (Local())
{
DestroyObject ();
Expand Down
2 changes: 1 addition & 1 deletion src/xrGameLA/BreakableObject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
#include "PhysicsShell.h"
#include "Physics.h"
#include "../xr_collide_form.h"
#include "../../xrNetServer/net_utils.h"
#include "../../xrCore/net_utils.h"
#include "clsid_game.h"
#include "../../Include/xrRender/Kinematics.h"

Expand Down
5 changes: 4 additions & 1 deletion src/xrGameLA/CarDamageParticles.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
#pragma once
class CCar;
DEFINE_VECTOR(u16,BIDS,BIDS_I);

using BIDS = xr_vector<u16>;
using BIDS_I = BIDS::iterator;

struct CCarDamageParticles
{
BIDS bones1;
Expand Down
2 changes: 1 addition & 1 deletion src/xrGameLA/CarDoors.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
#include "hit.h"
#include "PHDestroyable.h"
#include "car.h"
#include "../../xrNetServer/net_utils.h"
#include "../../xrCore/net_utils.h"
#include "../Include/xrRender/Kinematics.h"
#include "MathUtils.h"
#include "game_object_space.h"
Expand Down
4 changes: 3 additions & 1 deletion src/xrGameLA/CarLights.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@ struct SCarLight

};

DEFINE_VECTOR(SCarLight*,LIGHTS_STORAGE,LIGHTS_I)
using LIGHTS_STORAGE = xr_vector<SCarLight*>;
using LIGHTS_I = LIGHTS_STORAGE::iterator;

class CCarLights
{
public:
Expand Down
4 changes: 3 additions & 1 deletion src/xrGameLA/CustomTimersManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
class CTimersManager : public IPureSerializeObject<IReader, IWriter>
{
private:
DEFINE_VECTOR(CTimerCustom*, TIMERS_STORAGE, TIMERS_IT);
using TIMERS_STORAGE = xr_vector<CTimerCustom*>;
using TIMERS_IT = TIMERS_STORAGE::iterator;

public:
CTimersManager ();
virtual ~CTimersManager ();
Expand Down
7 changes: 5 additions & 2 deletions src/xrGameLA/CustomZone.h
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,8 @@ class CCustomZone :
virtual BOOL AlwaysTheCrow ();

protected:
DEFINE_VECTOR(CArtefact*, ARTEFACT_VECTOR, ARTEFACT_VECTOR_IT);
using ARTEFACT_VECTOR = xr_vector<CArtefact*>;
using ARTEFACT_VECTOR_IT = ARTEFACT_VECTOR::iterator;
ARTEFACT_VECTOR m_SpawnedArtefacts;

//есть ли вообще функция выбрасывания артефактов во время срабатывания
Expand Down Expand Up @@ -366,7 +367,9 @@ class CCustomZone :
float probability;
};

DEFINE_VECTOR(ARTEFACT_SPAWN, ARTEFACT_SPAWN_VECTOR, ARTEFACT_SPAWN_IT);
using ARTEFACT_SPAWN_VECTOR = xr_vector<ARTEFACT_SPAWN>;
using ARTEFACT_SPAWN_IT = ARTEFACT_SPAWN_VECTOR::iterator;

ARTEFACT_SPAWN_VECTOR m_ArtefactSpawn;

//расстояние от зоны до текущего актера
Expand Down
46 changes: 24 additions & 22 deletions src/xrGameLA/EntityCondition.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,14 +71,14 @@ class CEntityCondition: public CEntityConditionSimple, public CHitImmunity
void ChangeEntityMorale (const float value);

virtual CWound* ConditionHit (SHit* pHDS);
//îáíîâëåíèÿ ñîñòîÿíèÿ ñ òå÷åíèåì âðåìåíè
//обновления состояния с течением времени
virtual void UpdateCondition ();
void UpdateWounds ();
void UpdateConditionTime ();
IC void SetConditionDeltaTime (float DeltaTime) { m_fDeltaTime = DeltaTime; };


//ñêîðîñòü ïîòåðè êðîâè èç âñåõ îòêðûòûõ ðàí
//скорость потери крови из всех открытых ран
float BleedingSpeed ();

CObject* GetWhoHitLastTime () {return m_pWho;}
Expand All @@ -101,34 +101,36 @@ class CEntityCondition: public CEntityConditionSimple, public CHitImmunity
void UpdateEntityMorale ();


//èçìåíåíèå ñèëû õèòà â çàâèñèìîñòè îò íàäåòîãî êîñòþìà
//(òîëüêî äëÿ InventoryOwner)
//изменение силы хита в зависимости от надетого костюма
//(только для InventoryOwner)
float HitOutfitEffect(float hit_power, ALife::EHitType hit_type, s16 element, float AP, bool& add_wound);
//èçìåíåíèå ïîòåðè ñèë â çàâèñèìîñòè îò íàäåòîãî êîñòþìà
//изменение потери сил в зависимости от надетого костюма
float HitPowerEffect (float power_loss);

//äëÿ ïîäñ÷åòà ñîñòîÿíèÿ îòêðûòûõ ðàí,
//çàïîìèíàåòñÿ êîñòü êóäà áûë íàíåñåí õèò
//è ñêîðîñòü ïîòåðè êðîâè èç ðàíû
DEFINE_VECTOR(CWound*, WOUND_VECTOR, WOUND_VECTOR_IT);
//для подсчета состояния открытых ран,
//запоминается кость куда был нанесен хит
//и скорость потери крови из раны
using WOUND_VECTOR = xr_vector<CWound*>;
using WOUND_VECTOR_IT = WOUND_VECTOR::iterator;

WOUND_VECTOR m_WoundVector;
//î÷èñòêà ìàññèâà ðàí
//очистка массива ран


//âñå âåëè÷èíû îò 0 äî 1
float m_fPower; //ñèëà
float m_fRadiation; //äîçà ðàäèàêòèâíîãî îáëó÷åíèÿ
float m_fPsyHealth; //çäîðîâüå
float m_fEntityMorale; //ìîðàëü
//все величины от 0 до 1
float m_fPower; //сила
float m_fRadiation; //доза радиактивного облучения
float m_fPsyHealth; //здоровье
float m_fEntityMorale; //мораль

//ìàêñèìàëüíûå âåëè÷èíû
//максимальные величины
float m_fPowerMax;
float m_fRadiationMax;
float m_fPsyHealthMax;

float m_fEntityMoraleMax;

//âåëè÷èíû èçìåíåíèÿ ïàðàìåòðîâ íà êàæäîì îáíîâëåíèè
//величины изменения параметров на каждом обновлении
float m_fDeltaHealth;
float m_fDeltaPower;
float m_fDeltaRadiation;
Expand All @@ -155,24 +157,24 @@ class CEntityCondition: public CEntityConditionSimple, public CHitImmunity
float m_fMinWoundSize;
bool m_bIsBleeding;

//÷àñòè õèòà, çàòðà÷èâàåìûå íà óìåíüøåíèå çäîðîâüÿ è ñèëû
//части хита, затрачиваемые на уменьшение здоровья и силы
float m_fHealthHitPart;
float m_fPowerHitPart;



//ïîòåðÿ çäîðîâüÿ îò ïîñëåäíåãî õèòà
//потеря здоровья от последнего хита
float m_fHealthLost;


//äëÿ îòñëåæèâàíèÿ âðåìåíè
//для отслеживания времени
u64 m_iLastTimeCalled;
float m_fDeltaTime;
//êòî íàíåñ ïîñëåäíèé õèò
//кто нанес последний хит
CObject* m_pWho;
u16 m_iWhoID;

//äëÿ ïåðåäà÷è ïàðàìåòðîâ èç DamageManager
//для передачи параметров из DamageManager
float m_fHitBoneScale;
float m_fWoundBoneScale;

Expand Down
Loading

0 comments on commit 07fb07d

Please sign in to comment.