📄 chars.h
字号:
sCharacter *m_CharacterParent; // List of characters
long m_NumMeshes; // # meshes in use
sCharacterMeshList *m_Meshes; // Meshes list
char m_MeshPath[MAX_PATH]; // Weapon mesh path
char m_TexturePath[MAX_PATH]; // Mesh texture path
long m_NumAnimations; // # animations
sCharAnimationInfo *m_Animations; // Animation data
// Function to overide for playing sounds
virtual BOOL ActionSound(sCharacter *Character)
{ return TRUE; }
// Move function for player characters (need to override)
virtual BOOL PCUpdate( \
sCharacter *Character, long Elapsed, \
float *XMove, float *YMove, float *ZMove) \
{ return TRUE; }
// Character update function for all non-PC characters
BOOL CharUpdate(sCharacter *Character, long Elapsed, \
float *XMove, float *YMove, float *ZMove);
// Check for valid movements. Bounds check to other
// characters and call ValidateMove (overidden).
BOOL CheckMove(sCharacter *Character, \
float *XMove, float *YMove, float *ZMove);
// Virtual ValidateMove for outside bounds checking
// against character movements.
virtual BOOL ValidateMove(sCharacter *Character, \
float *XMove, float *YMove, float *ZMove) \
{ return TRUE; }
// Finish movement by setting direction, animation, etc
BOOL ProcessUpdate(sCharacter *Character, \
float XMove, float YMove, float ZMove);
// Process death of a player character
virtual BOOL PCDeath(sCharacter *Character) \
{ return TRUE; }
// Process death of a non-player character
virtual BOOL NPCDeath(sCharacter *Character) \
{ return TRUE; }
// Functions to drop money and item when character dies
virtual BOOL DropMoney(float XPos,float YPos,float ZPos, \
long Quantity)
{ return TRUE; }
virtual BOOL DropItem(float XPos, float YPos, float ZPos, \
long ItemNum)
{ return TRUE; }
public:
deque<sMessage> m_Messages;
CRITICAL_SECTION m_UpdateCS; // Critical sections
long Latency; // Half of round trip latency in ms
sItem *m_MIL; // Master item list
cFont *m_Font; // Font object to use
cCharacterController(); // Constructor
~cCharacterController(); // Destructor
// Functions to init/shutdown controller class
BOOL Init(cGraphics *Graphics, cFont *Font, \
char *DefinitionFile, sItem *MIL, sSpell *MSL, \
long NumCharacterMeshes, char **MeshNames, \
char *MeshPath, char *TexturePath, \
long NumAnimations, sCharAnimationInfo *Anims, \
cSpellController *SpellController);
BOOL Shutdown();
// Free class
BOOL Free();
// Add a character to the list
BOOL Add(long IDNum, long dpnidPlayer, long Definition, long Type, long AI, \
float XPos, float YPos, float ZPos, \
float Direction , long Action, char *Name);
// Remove a character from list
BOOL Remove(long IDNum);
BOOL Remove(sCharacter *Character);
// Save or load an individual character
BOOL Save(long IDNum, char *Filename);
BOOL Load(sCharacter *CharPtr, char *Filename);
// Update all characters based on elapsed time
BOOL Update();
// Render all objects within viewing frustum
BOOL Render(cFrustum *Frustum = NULL, \
float ZDistance = 0.0f);
// Retrieve an sCharacter structure
sCharacter *GetParentCharacter();
sCharacter *GetCharacter(long IDNum);
// Return X/Z radius of character
float GetXZRadius(sCharacter *Character);
// Make sure there's a line of sight between characters
virtual BOOL LineOfSight( \
sCharacter *Source, sCharacter *Target, \
float SourceX, float SourceY, float SourceZ, \
float TargetX, float TargetY, float TargetZ)
{ return TRUE; }
// Function to retrieve adjusted ability/other info
float GetSpeed(sCharacter *Character);
long GetAttack(sCharacter *Character);
long GetDefense(sCharacter *Character);
long GetAgility(sCharacter *Character);
long GetResistance(sCharacter *Character);
long GetMental(sCharacter *Character);
long GetToHit(sCharacter *Character);
float GetCharge(sCharacter *Character);
// Get pointer to the character ICS
cCharICS *GetICS(long IDNum);
// Set lock and action timer
BOOL SetLock(long IDNum, BOOL State);
BOOL SetActionTimer(long IDNum, long Timer);
// Set evade/follow distance
BOOL SetDistance(long IDNum, float Distance);
float GetDistance(long IDNum);
// Set route points
BOOL SetRoute(long IDNum, \
long NumPoints, sRoutePoint *Route);
// Set script
BOOL SetScript(long IDNum, char *ScriptFilename);
char *GetScript(long IDNum);
// Set enable flags
BOOL SetEnable(long IDNum, BOOL Enable);
BOOL GetEnable(long IDNum);
// Functions to move and get character coordinates
BOOL Move(long IDNum, float XPos, float YPos, float ZPos);
BOOL GetPosition(long IDNum, \
float *XPos, float *YPos, float *ZPos);
// Functions to Set/Get character bounds
BOOL SetBounds(long IDNum, \
float MinX, float MinY, float MinZ, \
float MaxX, float MaxY, float MaxZ);
BOOL GetBounds(long IDNum, \
float *MinX, float *MinY, float *MinZ, \
float *MaxX, float *MaxY, float *MaxZ);
// Functions to Set/Get character type
BOOL SetType(long IDNum, long Type);
long GetType(long IDNum);
// Functions to Set/Get character AI
BOOL SetAI(long IDNum, long Type);
long GetAI(long IDNum);
// Set a target character
BOOL SetTargetCharacter(long IDNum, long TargetNum);
// Set text messages to float up from character
BOOL SetMessage(sCharacter *Character, char *Text, \
long Timer, D3DCOLOR Color=0xFFFFFFFF);
// Process attack damage from spells and physical attacks
BOOL Damage(sCharacter *Victim, \
BOOL PhysicalAttack, long Amount, \
long DmgClass, long CureClass);
// Process death of an NPC/Monster
BOOL Death(sCharacter *Attacker, sCharacter *Victim);
// Process experience up
virtual BOOL Experience(sCharacter *Character, \
long Amount) \
{ Character->Def.Experience += Amount; return TRUE; }
// Resolve a physical attack from attacker to victim
BOOL Attack(sCharacter *Attacker, sCharacter *Victim);
// Process spell ailments when spell completed
BOOL Spell(sCharacter *Caster, \
sSpellTracker *SpellTracker, sSpell *Spells);
// Apply spell effects
BOOL SpellEffect(sCharacter *Caster, sCharacter *Target, \
sSpell *Spell);
// Process equipping/unequipping of item
BOOL Equip(sCharacter *Character, long ItemNum, \
long Type, BOOL Equip);
// Process item being used on character
BOOL Item(sCharacter *Owner, sCharacter *Target, \
long ItemNum, sCharItem *CharItem = NULL);
// Process dropping an item
BOOL Drop(sCharacter *Character, \
sCharItem *Item, long Quantity);
// Process a PC teleport spell
virtual BOOL PCTeleport(sCharacter *Character, \
sSpell *Spell) \
{ return TRUE; }
// Set action (w/timer)
BOOL SetAction(sCharacter *Character, \
long Action, long AddTime = 0);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -