More work on states, added bot
This commit is contained in:
1 parent
66e93d46f4
commit
5e9a663812
25 files changed
+1595
-740
No files matched your search
+29
-9
@@ -72,11 +72,19 @@ namespace FRG
|
||||
class Location
|
||||
{
|
||||
public:
|
||||
Location(Renderer& iRenderer, Inventory& iInventory, LocationState& state, IGameServer& server,
|
||||
Location(Renderer& iRenderer, IGameServer& server,
|
||||
std::string locationId);
|
||||
// Detaches the (shared, longer-lived) player from this location.
|
||||
~Location();
|
||||
const std::string& locationId() const { return locationId_; }
|
||||
std::shared_ptr<const LocationState> stateSnapshot() const;
|
||||
bool isDarklands() const;
|
||||
bool isNight() const;
|
||||
bool isDawn() const;
|
||||
int globalInt(const std::string& key) const;
|
||||
float globalFloat(const std::string& key) const;
|
||||
void setGlobalInt(const std::string& key, int value);
|
||||
void setGlobalFloat(const std::string& key, float value);
|
||||
|
||||
std::unordered_map<std::string, LoadedGameObject> gameObjects;
|
||||
|
||||
@@ -91,10 +99,7 @@ namespace FRG
|
||||
|
||||
// Builds the player character (models, animations, weapon, textures).
|
||||
static std::shared_ptr<Character> createPlayer(Renderer& renderer, AudioPlayerAsync* audioPlayer,
|
||||
CharacterState& state, IGameServer& server);
|
||||
|
||||
//std::vector<PathFinder> navigationMaps;
|
||||
//int state.activeNavigationIndex = 0;
|
||||
IGameServer& server, const std::string& playerId);
|
||||
|
||||
std::shared_ptr<ShadowMap> shadowMap;
|
||||
Eigen::Matrix4f cameraViewMatrix = Eigen::Matrix4f::Identity();
|
||||
@@ -160,7 +165,7 @@ namespace FRG
|
||||
|
||||
|
||||
|
||||
void setup(const LocationSetup& params, Quest::QuestJournal* journal, AudioPlayerAsync* audioPlayer);
|
||||
void setup(const LocationSetup& params, AudioPlayerAsync* audioPlayer);
|
||||
//void setupNavigation(const std::vector<std::string>& paths);
|
||||
bool switchNavigation(int index);
|
||||
void setCharacterTarget(Character& character, const Eigen::Vector3f& target,
|
||||
@@ -175,6 +180,18 @@ namespace FRG
|
||||
void resetCharacterAfterDeath(Character& character);
|
||||
void tryCharacterAttackCombo(Character& character);
|
||||
void setCharacterHp(Character& character, float hp);
|
||||
bool hasInventoryItem(const std::string& itemId) const;
|
||||
std::size_t inventoryItemCount() const;
|
||||
void addInventoryItem(std::string itemId);
|
||||
void removeInventoryItem(std::string itemId);
|
||||
bool unlockQuest(const std::string& questId);
|
||||
bool completeQuest(const std::string& questId);
|
||||
bool failQuest(const std::string& questId);
|
||||
bool setQuestObjectiveCompleted(
|
||||
const std::string& questId, const std::string& objectiveId, bool completed);
|
||||
bool setQuestObjectiveVisible(
|
||||
const std::string& questId, const std::string& objectiveId, bool visible);
|
||||
bool setQuestActiveObjective(const std::string& questId, int objectiveIndex);
|
||||
InteractiveObject* raycastInteractiveObjects(const Eigen::Vector3f& rayOrigin, const Eigen::Vector3f& rayDir);
|
||||
Character* raycastNpcs(const Eigen::Vector3f& rayOrigin, const Eigen::Vector3f& rayDir, float maxDistance = 100.0f);
|
||||
|
||||
@@ -210,15 +227,18 @@ namespace FRG
|
||||
friend class ScriptEngine;
|
||||
friend class InternalGameServer;
|
||||
Renderer& renderer;
|
||||
Inventory& inventory;
|
||||
AudioPlayerAsync* audioPlayer;
|
||||
|
||||
private:
|
||||
LocationState& state; // non-owning binding to LocationGameState
|
||||
IGameServer& gameServer_;
|
||||
std::string locationId_;
|
||||
std::unordered_map<std::string, std::shared_ptr<Character>> remotePlayers_;
|
||||
void synchronizeRemotePlayers();
|
||||
void drawRemotePlayerNames(
|
||||
const Eigen::Matrix4f& cameraViewMatrix,
|
||||
const Eigen::Matrix4f& projectionMatrix);
|
||||
// ---- Pointer-to-index helpers ----
|
||||
TeleportZone* getTargetTeleportZone();
|
||||
TeleportZone* getTargetTeleportZone(const LocationState& state);
|
||||
|
||||
enum class InstancedTexture { None, Color, Darklands };
|
||||
|
||||
|
||||
Reference in new issue
Block a user