mirror of
				https://github.com/DarkflameUniverse/DarkflameServer.git
				synced 2025-10-26 18:11:59 +00:00 
			
		
		
		
	 5225c86d65
			
		
	
	5225c86d65
	
	
	
		
			
			* Misc component cleanup * Update InventoryComponent.h * Update MissionComponent.h * Update PropertyManagementComponent.h * Update PropertyVendorComponent.h * Update SkillComponent.h maximum pedantry B) * SoundTriggerComponent.h braces gone * Rename SoundTriggerComponent.h braces gone to SoundTriggerComponent.h I was tired
		
			
				
	
	
		
			134 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * 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;
 | |
| 
 | |
| 	RocketLaunchpadControlComponent(Entity* parent, int rocketId);
 | |
| 	~RocketLaunchpadControlComponent() override;
 | |
| 
 | |
| 	/**
 | |
| 	 * 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);
 | |
| 
 | |
| 	/**
 | |
| 	 * 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;
 | |
| 
 | |
| 	/**
 | |
| 	 * Currently unused
 | |
| 	 */
 | |
| 	void OnProximityUpdate(Entity* entering, std::string name, std::string status);
 | |
| 
 | |
| 	/**
 | |
| 	 * 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);
 | |
| 
 | |
| 	/**
 | |
| 	 * 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;
 | |
| 
 | |
| 	/**
 | |
| 	 * 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);
 | |
| 
 | |
| 	/**
 | |
| 	 * 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;
 | |
| 
 | |
| 	/**
 | |
| 	 * 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;
 | |
| 
 | |
| 	/**
 | |
| 	 * Currently unused
 | |
| 	 */
 | |
| 	LWOMAPID GetDefaultZone() const;
 | |
| 
 | |
| private:
 | |
| 
 | |
| 	/**
 | |
| 	 * All the players that are in the proximity of the rocket launchpad
 | |
| 	 */
 | |
| 	std::map<LWOOBJID, Entity*> m_PlayersInRadius = {};
 | |
| 
 | |
| 	/**
 | |
| 	 * The map that the launchpad goes to
 | |
| 	 */
 | |
| 	LWOMAPID m_TargetZone;
 | |
| 
 | |
| 	/**
 | |
| 	 * Currently unused
 | |
| 	 */
 | |
| 	LWOMAPID m_DefaultZone;
 | |
| 
 | |
| 	/**
 | |
| 	 * The clone IDs selected for each player to go to (for properies)
 | |
| 	 */
 | |
| 	std::map<LWOOBJID, LWOCLONEID> m_SelectedCloneIds = {};
 | |
| 
 | |
| 	/**
 | |
| 	 * The map IDs selected for each player to go to
 | |
| 	 */
 | |
| 	std::map<LWOOBJID, LWOMAPID> m_SelectedMapIds = {};
 | |
| 
 | |
| 	/**
 | |
| 	 * The scene that plays when the player lands
 | |
| 	 */
 | |
| 	std::string m_TargetScene;
 | |
| 
 | |
| 	/**
 | |
| 	 * Alternative landing scene that plays if the alternative precondition is met
 | |
| 	 */
 | |
| 	std::string m_AltLandingScene;
 | |
| 
 | |
| 	/**
 | |
| 	 * Some precondition that needs to be met to trigger the alternative landing scene
 | |
| 	 */
 | |
| 	PreconditionExpression* m_AltPrecondition;
 | |
| 
 | |
| 	/**
 | |
| 	 * 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
 |