添加航线读表功能

This commit is contained in:
aozhiwei 2019-04-18 16:50:59 +08:00
parent ecf2a326d3
commit cd1ad1d13e
7 changed files with 65 additions and 6 deletions

View File

@ -177,7 +177,6 @@ namespace MetaData
!door.state0 || !door.state1) {
abort();
} else {
int open_dir = 0;
#if 0
if (door.state1->x() < door.state0.x()) {
if (door.state1.y() < door.state0.y()) {
@ -223,4 +222,20 @@ namespace MetaData
return 0;
}
void AirLine::Init()
{
{
std::vector<std::string> strings;
a8::Split(i->start_point(), strings, ':');
start_point_x = a8::XValue(strings[0]).GetDouble();
start_point_y = a8::XValue(strings[1]).GetDouble();
}
{
std::vector<std::string> strings;
a8::Split(i->end_point(), strings, ':');
end_point_x = a8::XValue(strings[0]).GetDouble();
end_point_y = a8::XValue(strings[1]).GetDouble();
}
}
}

View File

@ -102,4 +102,17 @@ namespace MetaData
const metatable::AirDrop* i = nullptr;
};
struct AirLine
{
const metatable::AirLine* i = nullptr;
float start_point_x = 0.0f;
float start_point_y = 0.0f;
float end_point_x = 0.0f;
float end_point_y = 0.0f;
void Init();
};
}

View File

@ -30,6 +30,8 @@ public:
std::list<MetaData::Drop> drop_list;
std::list<metatable::AirDrop> airdrop_meta_list;
std::list<MetaData::AirDrop> airdrop_list;
std::list<metatable::AirLine> airline_meta_list;
std::vector<MetaData::AirLine> airline_list;
std::map<std::string, MetaData::Parameter*> parameter_hash;
std::map<int, MetaData::Map*> gamemap_hash;
@ -62,12 +64,12 @@ public:
f8::ReadCsvMetaFile(res_path + "mapThing@mapThing.csv", mapthing_meta_list);
f8::ReadCsvMetaFile(res_path + "drop@drop.csv", drop_meta_list);
f8::ReadCsvMetaFile(res_path + "airdrop@airdrop.csv", airdrop_meta_list);
f8::ReadCsvMetaFile(res_path + "airline@airline.csv", airline_meta_list);
f8::ReadJsonMetaFile(res_path + "maps.json", building_meta_list);
BindToMetaData();
#if 1
{
MetaMgr::Instance()->gas_inactive_time = MetaMgr::Instance()->GetSysParamAsInt("gas_inactive_time");
MetaMgr::Instance()->plane_speed = MetaMgr::Instance()->GetSysParamAsFloat("plane_speed") / SERVER_FRAME_RATE;
MetaMgr::Instance()->jump_time = MetaMgr::Instance()->GetSysParamAsFloat("jump_time");
}
#endif
@ -166,6 +168,12 @@ private:
item.i = &meta;
}
for (auto& meta : airline_meta_list) {
MetaData::AirLine& item = a8::FastAppend(airline_list);
item.i = &meta;
item.Init();
}
{
int building_id = 0;
for (auto& meta : building_meta_list) {
@ -279,3 +287,11 @@ std::list<MetaData::AirDrop>& MetaMgr::GetAirDrops()
{
return loader_->airdrop_list;
}
MetaData::AirLine* MetaMgr::RandAirLine()
{
if (loader_->airline_list.empty()) {
abort();
}
return &loader_->airline_list[rand() % loader_->airline_list.size()];
}

View File

@ -29,9 +29,9 @@ class MetaMgr : public a8::Singleton<MetaMgr>
MetaData::SafeArea* GetSafeArea(int area_id);
std::vector<MetaData::MapTplThing>* GetMapTplThing(std::string& map_name);
std::list<MetaData::AirDrop>& GetAirDrops();
MetaData::AirLine* RandAirLine();
int gas_inactive_time = 10;
float plane_speed = 5.0f;
int jump_time = 10;
private:

View File

@ -787,7 +787,8 @@ void Room::UpdateGas()
break;
case GasJump:
{
Vector2D len_vec = plane.dir * (frame_no - gas_data.gas_start_frameno)*MetaMgr::Instance()->plane_speed;
Vector2D len_vec = plane.dir *
((frame_no - gas_data.gas_start_frameno)*airline_->i->plane_speed() / SERVER_FRAME_RATE);
plane.curr_pos = plane.start_point + len_vec;
if ((plane.end_point - plane.start_point).Norm() <= len_vec.Norm()) {
TouchHumanList(
@ -1070,8 +1071,9 @@ void Room::AirDrop(int appear_time, int box_id)
void Room::ShuaPlane()
{
plane.start_point = Vector2D(100, 100);
plane.end_point = Vector2D(7500, 7500);
airline_ = MetaMgr::Instance()->RandAirLine();
plane.start_point = Vector2D(airline_->start_point_x, airline_->start_point_y);
plane.end_point = Vector2D(airline_->end_point_x, airline_->end_point_y);
plane.dir = plane.end_point - plane.start_point;
plane.dir.Normalize();
plane.curr_pos = plane.start_point;

View File

@ -10,6 +10,7 @@ namespace MetaData
struct Map;
struct SafeArea;
struct Building;
struct AirLine;
}
struct RoomProfile
@ -96,6 +97,7 @@ private:
timer_list* stats_timer_ = nullptr;
int elapsed_time_ = 0;
int alive_count_ = 0;
MetaData::AirLine* airline_ = nullptr;
a8::XTimerAttacher xtimer_attacher;
int current_teamid = 0;

View File

@ -102,6 +102,17 @@ message AirDrop
optional int32 drop_id = 4;
}
message AirLine
{
optional int32 id = 1;
optional string start_point = 2;
optional string end_point = 3;
optional float plane_speed = 4;
optional int32 weight = 5;
}
//end
message DoorObjJson
{
optional float height = 1;