Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
PlayerTaxi.h
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#ifndef SF_PLAYERTAXI_H
7#define SF_PLAYERTAXI_H
8
10{
11public:
12 PlayerTaxi();
14 { }
15 // Nodes
16 void InitTaxiNodes(uint32 race, uint32 chrClass, uint8 level);
17 void InitTaxiNodesForClass(uint32 chrClass);
19 void InitTaxiNodesForFaction(uint32 faction);
20 void InitTaxiNodesForLvl(uint8 level);
21
22 void LoadTaxiMask(std::string const& data);
23
24 bool IsTaximaskNodeKnown(uint32 nodeidx) const
25 {
26 uint8 field = uint8((nodeidx - 1) / 8);
27 uint32 submask = 1 << ((nodeidx - 1) % 8);
28 return (m_taximask[field] & submask) == submask;
29 }
30 bool SetTaximaskNode(uint32 nodeidx)
31 {
32 uint8 field = uint8((nodeidx - 1) / 8);
33 uint32 submask = 1 << ((nodeidx - 1) % 8);
34 if ((m_taximask[field] & submask) != submask)
35 {
36 m_taximask[field] |= submask;
37 return true;
38 }
39 else
40 return false;
41 }
42 void AppendTaximaskTo(ByteBuffer& data, bool all);
43
44 // Destinations
45 bool LoadTaxiDestinationsFromString(std::string const& values, uint32 team);
46 std::string SaveTaxiDestinationsToString();
47
49 {
50 m_TaxiDestinations.clear();
51 }
53 {
54 m_TaxiDestinations.push_back(dest);
55 }
57 {
58 return m_TaxiDestinations.empty() ? 0 : m_TaxiDestinations.front();
59 }
61 {
62 return m_TaxiDestinations.size() < 2 ? 0 : m_TaxiDestinations[1];
63 }
66 {
67 m_TaxiDestinations.pop_front();
68 return GetTaxiDestination();
69 }
70 bool empty() const
71 {
72 return m_TaxiDestinations.empty();
73 }
74
75 friend std::ostringstream& operator<< (std::ostringstream& ss, PlayerTaxi const& taxi);
76private:
78 std::deque<uint32> m_TaxiDestinations;
79};
80
81std::ostringstream& operator<< (std::ostringstream& ss, PlayerTaxi const& taxi);
82
83#endif
uint8 TaxiMask[TaxiMaskSize]
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
std::ostringstream & operator<<(std::ostringstream &ss, PlayerTaxi const &taxi)
std::string SaveTaxiDestinationsToString()
void InitTaxiNodesForRace(uint32 race)
void AddTaxiDestination(uint32 dest)
Definition PlayerTaxi.h:52
void InitTaxiNodes(uint32 race, uint32 chrClass, uint8 level)
bool SetTaximaskNode(uint32 nodeidx)
Definition PlayerTaxi.h:30
std::deque< uint32 > m_TaxiDestinations
Definition PlayerTaxi.h:78
uint32 GetTaxiSource() const
Definition PlayerTaxi.h:56
void InitTaxiNodesForClass(uint32 chrClass)
bool LoadTaxiDestinationsFromString(std::string const &values, uint32 team)
bool IsTaximaskNodeKnown(uint32 nodeidx) const
Definition PlayerTaxi.h:24
bool empty() const
Definition PlayerTaxi.h:70
void LoadTaxiMask(std::string const &data)
uint32 NextTaxiDestination()
Definition PlayerTaxi.h:65
uint32 GetTaxiDestination() const
Definition PlayerTaxi.h:60
friend std::ostringstream & operator<<(std::ostringstream &ss, PlayerTaxi const &taxi)
void InitTaxiNodesForLvl(uint8 level)
void AppendTaximaskTo(ByteBuffer &data, bool all)
void ClearTaxiDestinations()
Definition PlayerTaxi.h:48
TaxiMask m_taximask
Definition PlayerTaxi.h:77
uint32 GetCurrentTaxiPath() const
void InitTaxiNodesForFaction(uint32 faction)