Skip to content
3 changes: 2 additions & 1 deletion Mammoth/Include/TSE.h
Original file line number Diff line number Diff line change
Expand Up @@ -1254,7 +1254,7 @@ class CSpaceObject
virtual CString GetObjClassName (void) const { return CONSTLIT("unknown"); }
virtual Metric GetParallaxDist (void) { return 0.0; }
virtual EDamageResults GetPassthroughDefault (void) { return damageNoDamage; }
virtual int GetPlanetarySize (void) const { return 0; }
virtual int GetPlanetarySize (void) const { return 0; }
virtual ScaleTypes GetScale (void) const { return scaleFlotsam; }
virtual CSovereign *GetSovereign (void) const { return NULL; }
virtual Metric GetStellarMass (void) const { return 0.0; }
Expand Down Expand Up @@ -1315,6 +1315,7 @@ class CSpaceObject
virtual int GetMaxLightDistance (void) const { return 0; }
virtual Metric GetMaxWeaponRange (void) const { return 0.0; }
virtual int GetPerception (void) const { return perceptNormal; }
virtual int GetRelativeHealth () const { return INT_MAX; }
virtual int GetScore (void) { return 0; }
virtual CG32bitPixel GetSpaceColor (void) { return 0; }
virtual int GetStealth (void) const { return stealthNormal; }
Expand Down
2 changes: 1 addition & 1 deletion Mammoth/Include/TSEPhysics.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ class CPhysicsForceResolver
struct SForceDesc
{
CSpaceObject *pObj = NULL;
CVector vForce; // Absolute acceleration
CVector vForce; // Force to apply
CVector vLimitedForce; // Accelerate only if below max speed.
Metric rDragFactor = 1.0; // Final velocity gets multiplied by this.
};
Expand Down
24 changes: 14 additions & 10 deletions Mammoth/Include/TSEShipSystems.h
Original file line number Diff line number Diff line change
Expand Up @@ -521,21 +521,25 @@ class CIntegralRotationDesc

static constexpr int ROTATION_FRACTION = 1080;

CIntegralRotationDesc (void) { }
CIntegralRotationDesc () { }
explicit CIntegralRotationDesc (const CRotationDesc &Desc) { InitFromDesc(Desc); }

int AlignToRotationAngle (int iAngle) const { return GetRotationAngle(GetFrameIndex(iAngle)); }
int CalcFinalRotationFrame (int iRotationFrame, int iRotationSpeed) const;
int GetFrameAngle (void) const { return (m_iCount > 0 ? mathRound(360.0 / m_iCount) : 0); }
int GetFrameCount (void) const { return m_iCount; }
int GetFrameAngle () const { return (m_iCount > 0 ? mathRound(360.0 / m_iCount) : 0); }
int GetFrameCount () const { return m_iCount; }
int GetFrameIndex (int iAngle) const { return (m_iCount > 0 ? (m_FacingsData[m_iCount].AngleToFrameIndex[AngleMod(iAngle)]) : 0); }
int GetManeuverDelay (void) const;
Metric GetManeuverRatio (void) const { return (Metric)m_iMaxRotationRate / ROTATION_FRACTION; }
int GetMaxRotationSpeed (void) const { return m_iMaxRotationRate; }
Metric GetMaxRotationSpeedDegrees (void) const;
int GetMaxRotationTimeTicks (void) const { Metric rSpeed = GetMaxRotationSpeedDegrees(); return (rSpeed > 0.0 ? (int)(360.0 / rSpeed) : 0); }
int GetRotationAccel (void) const { return m_iRotationAccel; }
int GetRotationAccelStop (void) const { return m_iRotationAccelStop; }
int GetManeuverDelay () const;
Metric GetManeuverRatio () const { return (Metric)m_iMaxRotationRate / ROTATION_FRACTION; }
int GetMaxRotationSpeed () const { return m_iMaxRotationRate; }
Metric GetMaxRotationSpeedDegrees () const;
int GetMaxRotationTimeTicks () const { Metric rSpeed = GetMaxRotationSpeedDegrees(); return (rSpeed > 0.0 ? (int)(360.0 / rSpeed) : 0); }
int GetRotationAccel () const { return m_iRotationAccel; }
Metric GetRotationAccelDegrees () const;
int GetRotationAccelStop () const { return m_iRotationAccelStop; }
Metric GetRotationAccelStopDegrees () const;
int GetRotationResponsiveness () const { return min(m_iMaxRotationRate, min(m_iRotationAccel, m_iRotationAccelStop)); }
Metric GetRotationResponsivenessDegrees () const;
int GetRotationAngle (int iIndex) const { return (m_iCount > 0 ? m_FacingsData[m_iCount].FrameIndexToAngle[iIndex % m_iCount] : 0); }
int GetRotationAngleExact (int iRotationFrameExact) const { return (m_iCount > 0 ? GetRotationAngleExact(m_iCount, iRotationFrameExact) : 0); }
int GetRotationFrameExact (int iAngle) const { return (m_iCount > 0 ? GetRotationFrameExact(m_iCount, iAngle) : 0); }
Expand Down
7 changes: 7 additions & 0 deletions Mammoth/Include/TSESpaceObjectsImpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class CAreaDamage : public TSpaceObjectImpl<OBJID_CAREADAMAGE>
virtual CString GetNamePattern (DWORD dwNounPhraseFlags = 0, DWORD *retdwFlags = NULL) const override;
virtual CString GetObjClassName (void) const override { return CONSTLIT("CAreaDamage"); }
virtual CSystem::LayerEnum GetPaintLayer (void) const override { return CSystem::layerEffects; }
virtual int GetRelativeHealth () const override { return IsDestroyed() ? -1 : INT_MAX; }
virtual CSpaceObject *GetSecondarySource (void) const override { return m_Source.GetSecondaryObj(); }
virtual CSovereign *GetSovereign (void) const override { return m_pSovereign; }
virtual CDesignType *GetType (void) const override { return m_pDesc->GetWeaponType(); }
Expand Down Expand Up @@ -80,6 +81,7 @@ class CBeam : public TSpaceObjectImpl<OBJID_CBEAM>
virtual CString GetNamePattern (DWORD dwNounPhraseFlags = 0, DWORD *retdwFlags = NULL) const override;
virtual CString GetObjClassName (void) const override { return CONSTLIT("CBeam"); }
virtual CSystem::LayerEnum GetPaintLayer (void) const override { return CSystem::layerStations; }
virtual int GetRelativeHealth () const override { return IsDestroyed() ? -1 : 100; }
virtual CSpaceObject *GetSecondarySource (void) const override { return m_Source.GetSecondaryObj(); }
virtual CSovereign *GetSovereign (void) const override { return m_pSovereign; }
virtual const CWeaponFireDesc *GetWeaponFireDesc (void) const override { return m_pDesc; }
Expand Down Expand Up @@ -169,6 +171,7 @@ class CContinuousBeam : public TSpaceObjectImpl<OBJID_CCONTINUOUSBEAM>
virtual CString GetNamePattern (DWORD dwNounPhraseFlags = 0, DWORD *retdwFlags = NULL) const override;
virtual CString GetObjClassName (void) const override { return CONSTLIT("CContinuousBeam"); }
virtual CSystem::LayerEnum GetPaintLayer (void) const override { return CSystem::layerEffects; }
virtual int GetRelativeHealth () const override { return IsDestroyed() ? -1 : INT_MAX; }
virtual int GetRotation (void) const override { return m_iLastDirection; }
virtual CSpaceObject *GetSecondarySource (void) const override { return m_Source.GetSecondaryObj(); }
virtual CSovereign *GetSovereign (void) const override { return m_pSovereign; }
Expand Down Expand Up @@ -551,6 +554,7 @@ class CMissile : public TSpaceObjectImpl<OBJID_CMISSILE>
virtual COverlayList *GetOverlays (void) override { return &m_Overlays; }
virtual const COverlayList *GetOverlays (void) const override { return &m_Overlays; }
virtual CSystem::LayerEnum GetPaintLayer (void) const override { return (m_pDesc->GetPassthrough() > 0 ? CSystem::layerEffects : CSystem::layerStations); }
virtual int GetRelativeHealth () const override { return IsDestroyed() ? -1 : (m_pDesc->GetHitPoints() ? min(100, mathRound((Metric)m_iHitPoints / m_pDesc->GetHitPoints())) : 100); }
virtual int GetRotation (void) const override { return m_iRotation; }
virtual CSpaceObject *GetSecondarySource (void) const override { return m_Source.GetSecondaryObj(); }
virtual CSovereign *GetSovereign (void) const override { return m_pSovereign; }
Expand Down Expand Up @@ -654,6 +658,7 @@ class CParticleDamage : public TSpaceObjectImpl<OBJID_CPARTICLEDAMAGE>
virtual CString GetNamePattern (DWORD dwNounPhraseFlags = 0, DWORD *retdwFlags = NULL) const override;
virtual CString GetObjClassName (void) const override { return CONSTLIT("CParticleDamage"); }
virtual CSystem::LayerEnum GetPaintLayer (void) const override { return CSystem::layerEffects; }
virtual int GetRelativeHealth () const override { return IsDestroyed() ? -1 : INT_MAX; }
virtual CSpaceObject *GetSecondarySource (void) const override { return m_Source.GetSecondaryObj(); }
virtual CSovereign *GetSovereign (void) const override { return m_pSovereign; }
virtual CDesignType *GetType (void) const override { return m_pDesc->GetWeaponType(); }
Expand Down Expand Up @@ -935,6 +940,7 @@ class CRadiusDamage : public TSpaceObjectImpl<OBJID_CRADIUSDAMAGE>
virtual CString GetNamePattern (DWORD dwNounPhraseFlags = 0, DWORD *retdwFlags = NULL) const override;
virtual CString GetObjClassName (void) const override { return CONSTLIT("CRadiusDamage"); }
virtual CSystem::LayerEnum GetPaintLayer (void) const override { return CSystem::layerEffects; }
virtual int GetRelativeHealth () const override { return IsDestroyed() ? -1 : INT_MAX; }
virtual CSpaceObject *GetSecondarySource (void) const override { return m_Source.GetSecondaryObj(); }
virtual CSovereign *GetSovereign (void) const override { return m_pSovereign; }
virtual CDesignType *GetType (void) const override { return m_pDesc->GetWeaponType(); }
Expand Down Expand Up @@ -1211,6 +1217,7 @@ class CShip : public TSpaceObjectImpl<OBJID_CSHIP>
virtual CSystem::LayerEnum GetPaintLayer (void) const override { return (m_fShipCompartment ? CSystem::layerOverhang : CSystem::layerShips); }
virtual int GetPerception (void) const override;
virtual ICCItem *GetPropertyCompatible (CCodeChainCtx &Ctx, const CString &sName) const override;
virtual int GetRelativeHealth () const override;
virtual int GetRotation (void) const override { return m_Rotation.GetRotationAngle(m_Perf.GetIntegralRotationDesc()); }
virtual int GetRotationFrameIndex (void) const override { return m_Rotation.GetFrameIndex(); }
virtual ScaleTypes GetScale (void) const override { return scaleShip; }
Expand Down
1 change: 1 addition & 0 deletions Mammoth/Include/TSEStationImpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,7 @@ class CStation : public TSpaceObjectImpl<OBJID_CSTATION>
virtual int GetPlanetarySize (void) const override { return (GetScale() == scaleWorld ? m_pType->GetSize() : 0); }
virtual ICCItem *GetPropertyCompatible (CCodeChainCtx &Ctx, const CString &sName) const override;
virtual IShipGenerator *GetRandomEncounterTable (int *retiFrequency = NULL) const override;
virtual int GetRelativeHealth () const override;
virtual int GetRotation (void) const override;
virtual ScaleTypes GetScale (void) const override { return m_Scale; }
virtual CXMLElement *GetScreen (const CString &sName) override { return m_pType->GetScreen(sName); }
Expand Down
Loading