52 lines
1.8 KiB
C++
52 lines
1.8 KiB
C++
#ifndef _H_DNA_SUITLEGLIST_
|
|
#define _H_DNA_SUITLEGLIST_
|
|
|
|
#include "DNASuitPoint.h"
|
|
#include "DNASuitPath.h"
|
|
#include "DNAStorage.h"
|
|
#include "SuitLeg.h"
|
|
|
|
typedef std::vector<SuitLeg*> leg_vec_t;
|
|
|
|
class EXPCL_DNA SuitLegList
|
|
{
|
|
PUBLISHED:
|
|
SuitLegList(PT(DNASuitPath) path, DNAStorage* store, double suit_walk_speed = 4.8,
|
|
double from_sky = 6.5, double to_sky = 6.5, double from_suit_building = 2.0,
|
|
double to_suit_building = 2.5, double to_toon_building = 2.5);
|
|
~SuitLegList();
|
|
|
|
SuitLeg::LegType get_suit_leg_type(DNASuitPoint::PointType a,
|
|
DNASuitPoint::PointType b);
|
|
int get_num_legs();
|
|
SuitLeg* get_leg(int index);
|
|
SuitLeg::LegType get_type(int index);
|
|
double get_leg_time(int index);
|
|
zone_id_t get_zone_id(int index);
|
|
block_number_t get_block_number(int index);
|
|
PT(DNASuitPoint) get_point_a(int index);
|
|
PT(DNASuitPoint) get_point_b(int index);
|
|
double get_start_time(int index);
|
|
int get_leg_index_at_time(double time, int start_leg);
|
|
bool is_point_in_range(PT(DNASuitPoint) point, double low_time, double high_time);
|
|
SuitLeg::LegType get_next_leg_type(int index);
|
|
SuitLeg* __getitem__(int index);
|
|
|
|
private:
|
|
void add_leg(PT(DNASuitPoint) point_a, PT(DNASuitPoint) point_b,
|
|
SuitLeg::LegType type, block_number_t landmark_building_index);
|
|
leg_vec_t m_legs;
|
|
PT(DNASuitPath) m_path;
|
|
DNAStorage* m_store;
|
|
double m_suit_walk_speed;
|
|
|
|
struct {
|
|
double from_sky;
|
|
double to_sky;
|
|
double from_suit_building;
|
|
double to_suit_building;
|
|
double to_toon_building;
|
|
} m_leg_times;
|
|
};
|
|
|
|
#endif
|