Open source Star Ruler 2 source code!
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
#pragma once
|
||||
#include "design/effector.h"
|
||||
#include "design/design.h"
|
||||
#include "util/basic_type.h"
|
||||
#include "util/hex_grid.h"
|
||||
|
||||
class SaveMessage;
|
||||
|
||||
enum HexFlags {
|
||||
HF_Active = 0x1,
|
||||
HF_Destroyed = 0x2,
|
||||
HF_NoHP = 0x4,
|
||||
HF_Gone = 0x8,
|
||||
HF_NoRepair = 0x10,
|
||||
};
|
||||
|
||||
enum DamageFlags {
|
||||
DF_DestroyedObject = 0x40000000,
|
||||
};
|
||||
|
||||
namespace net {
|
||||
struct Message;
|
||||
};
|
||||
|
||||
class CScriptAny;
|
||||
class Blueprint {
|
||||
public:
|
||||
struct HexStatus {
|
||||
unsigned char flags;
|
||||
unsigned char hp;
|
||||
};
|
||||
|
||||
struct SysStatus {
|
||||
unsigned short workingHexes;
|
||||
EffectStatus status;
|
||||
};
|
||||
|
||||
const Design* design;
|
||||
HexStatus* hexes;
|
||||
SysStatus* subsystems;
|
||||
BasicType* states;
|
||||
double* effectorStates;
|
||||
EffectorTarget* effectorTargets;
|
||||
double currentHP;
|
||||
double quadrantHP[4];
|
||||
float removedHP;
|
||||
double shipEffectiveness;
|
||||
unsigned statusID;
|
||||
unsigned short destroyedHexes;
|
||||
bool designChanged;
|
||||
bool hpDelta;
|
||||
bool holdFire;
|
||||
float hpFactor;
|
||||
vec2i repairingHex;
|
||||
CScriptAny** data;
|
||||
|
||||
HexStatus* getHexStatus(unsigned index);
|
||||
HexStatus* getHexStatus(unsigned x, unsigned y);
|
||||
SysStatus* getSysStatus(unsigned index);
|
||||
SysStatus* getSysStatus(unsigned x, unsigned y);
|
||||
CScriptAny* getHookData(unsigned index);
|
||||
|
||||
Blueprint();
|
||||
|
||||
void destroy(Object* obj);
|
||||
void preClear();
|
||||
~Blueprint();
|
||||
|
||||
void init(Object* obj);
|
||||
float think(Object* obj, double time);
|
||||
void ownerChange(Object* obj, Empire* prevEmpire, Empire* newEmpire);
|
||||
|
||||
bool hasTagActive(int index);
|
||||
double getTagEfficiency(int index, bool ignoreInactive = true);
|
||||
double getEfficiencySum(int variable, int tag = -1, bool ignoreInactive = true);
|
||||
double getEfficiencyFactor(int variable, int tag = -1, bool ignoreInactive = true);
|
||||
|
||||
bool doesAutoTarget(Object* obj, Object* target);
|
||||
bool canTarget(Object* obj, Object* target);
|
||||
|
||||
void target(Object* obj, Object* target, TargetFlags flags = TF_Target);
|
||||
void target(Object* obj, unsigned efftrIndex, Object* target, TargetFlags flags = TF_Target);
|
||||
void target(Object* obj, const Subsystem* sys, Object* target, TargetFlags flags = TF_Target);
|
||||
void clearTracking(Object* obj);
|
||||
Object* getCombatTarget();
|
||||
|
||||
vec3d getOptimalFacing(int sysVariable, int tag = -1, bool ignoreInactive = true);
|
||||
|
||||
void damage(Object* obj, DamageEvent& evt, const vec2u& hex);
|
||||
void damage_internal(Object* obj, DamageEvent& evt, const vec2u& hex);
|
||||
|
||||
void damage(Object* obj, DamageEvent& evt, const vec2u& hex, HexGridAdjacency dir, bool runGlobal);
|
||||
void damage(Object* obj, DamageEvent& evt, const vec2u& hex, bool runGlobal);
|
||||
bool globalDamage(Object* obj, DamageEvent& evt);
|
||||
|
||||
void damage(Object* obj, DamageEvent& evt, const vec2d& direction);
|
||||
void damage(Object* obj, DamageEvent& evt, double position, const vec2d& direction);
|
||||
void damage(Object* obj, DamageEvent& evt, const vec2u& position, const vec2d& endPoint);
|
||||
void create(Object* obj, const Design* design);
|
||||
void start(Object* obj, bool fromRetrofit = false);
|
||||
void retrofit(Object* obj, const Design* design);
|
||||
|
||||
double repair(Object* obj, double amount);
|
||||
double repair(Object* obj, const vec2u& hex, double amount);
|
||||
|
||||
void sendDetails(Object* obj, net::Message& msg);
|
||||
void recvDetails(Object* obj, net::Message& msg);
|
||||
|
||||
bool sendDelta(Object* obj, net::Message& msg);
|
||||
void recvDelta(Object* obj, net::Message& msg);
|
||||
|
||||
void save(Object* obj, SaveMessage& file);
|
||||
void load(Object* obj, SaveMessage& file);
|
||||
};
|
||||
Reference in New Issue
Block a user