DarkflameServer/dGame/dComponents/RocketLaunchpadControlComponent.h

134 lines
3.4 KiB
C
Raw Permalink Normal View History

/*
* Darkflame Universe
* Copyright 2018
*/
#ifndef ROCKETLAUNCHPADCONTROLCOMPONENT_H
#define ROCKETLAUNCHPADCONTROLCOMPONENT_H
#include "BitStream.h"
#include "Entity.h"
#include "Component.h"
#include "eReplicaComponentType.h"
class PreconditionExpression;
/**
* Component that handles rocket launchpads that can be interacted with to travel to other worlds.
*/
class RocketLaunchpadControlComponent final : public Component {
public:
static constexpr eReplicaComponentType ComponentType = eReplicaComponentType::ROCKET_LAUNCH;
2022-07-28 13:39:57 +00:00
RocketLaunchpadControlComponent(Entity* parent, int rocketId);
~RocketLaunchpadControlComponent() override;
2022-07-28 13:39:57 +00:00
/**
* Launches some entity to another world
* @param originator the entity to launch
* @param mapId the world to go to
* @param cloneId the clone ID (for properties)
*/
void Launch(Entity* originator, LWOMAPID mapId = LWOMAPID_INVALID, LWOCLONEID cloneId = LWOCLONEID_INVALID);
2022-07-28 13:39:57 +00:00
/**
* Handles an OnUse event from some entity, preparing it for launch to some other world
* @param originator the entity that triggered the event
*/
void OnUse(Entity* originator) override;
2022-07-28 13:39:57 +00:00
/**
* Currently unused
*/
void OnProximityUpdate(Entity* entering, std::string name, std::string status);
2022-07-28 13:39:57 +00:00
/**
* Sets the map ID that a player will go to
* @param player the entity to set the map ID for
* @param cloneId the map ID of the property to set
*/
void SetSelectedMapId(LWOOBJID player, LWOMAPID cloneId);
2022-07-28 13:39:57 +00:00
/**
* Returns the map ID that a player will go to
* @param player the player to find the map ID for
* @return the map ID that a player will go to
*/
LWOMAPID GetSelectedMapId(LWOOBJID player) const;
2022-07-28 13:39:57 +00:00
/**
* Sets the clone ID that a player will go to (for properties)
* @param player the entity to set the clone ID for
* @param cloneId the clone ID of the property to set
*/
void SetSelectedCloneId(LWOOBJID player, LWOCLONEID cloneId);
2022-07-28 13:39:57 +00:00
/**
* Returns the clone ID that a player will go to (for properties)
* @param player the player to find the clone ID for
* @return the clone ID that a player will go to
*/
LWOCLONEID GetSelectedCloneId(LWOOBJID player) const;
2022-07-28 13:39:57 +00:00
/**
* Returns the zone that this rocket launchpad points to by default
* @return the zone that this rocket launchpad points to by default
*/
LWOMAPID GetTargetZone() const;
2022-07-28 13:39:57 +00:00
/**
* Currently unused
*/
LWOMAPID GetDefaultZone() const;
private:
2022-07-28 13:39:57 +00:00
/**
* All the players that are in the proximity of the rocket launchpad
*/
std::map<LWOOBJID, Entity*> m_PlayersInRadius = {};
2022-07-28 13:39:57 +00:00
/**
* The map that the launchpad goes to
*/
LWOMAPID m_TargetZone;
2022-07-28 13:39:57 +00:00
/**
* Currently unused
*/
LWOMAPID m_DefaultZone;
2022-07-28 13:39:57 +00:00
/**
* The clone IDs selected for each player to go to (for properies)
*/
std::map<LWOOBJID, LWOCLONEID> m_SelectedCloneIds = {};
2022-07-28 13:39:57 +00:00
/**
* The map IDs selected for each player to go to
*/
std::map<LWOOBJID, LWOMAPID> m_SelectedMapIds = {};
2022-07-28 13:39:57 +00:00
/**
* The scene that plays when the player lands
*/
std::string m_TargetScene;
2022-07-28 13:39:57 +00:00
/**
* Alternative landing scene that plays if the alternative precondition is met
*/
std::string m_AltLandingScene;
2022-07-28 13:39:57 +00:00
/**
* Some precondition that needs to be met to trigger the alternative landing scene
*/
PreconditionExpression* m_AltPrecondition;
2022-07-28 13:39:57 +00:00
/**
* Notifies the master server to prepare some world for a player to be able to travel to it
* @param zoneID the ID of the zone to prepare
*/
void TellMasterToPrepZone(int zoneID);
};
#endif // ROCKETLAUNCHPADCONTROLCOMPONENT_H