This commit is contained in:
aozhiwei 2023-03-27 16:49:12 +08:00
parent 52ec88ff22
commit cbc551ef39
11 changed files with 71 additions and 59 deletions

View File

@ -277,9 +277,7 @@ float Car::GetRadius()
float Car::GetSpeed() float Car::GetSpeed()
{ {
float speed = hero_meta_->move_speed(); return Creature::GetSpeed();
speed *= 1 + GetAbility()->GetAttrRate(kHAT_Speed);
return speed;
} }
void Car::OnBulletHit(IBullet* bullet) void Car::OnBulletHit(IBullet* bullet)

View File

@ -3056,3 +3056,8 @@ bool Creature::IsNearGas()
float distance = GetPos().Distance2D2(p); float distance = GetPos().Distance2D2(p);
return distance + GetRadius() * 2 + 20 > room->GetGasData().rad_new; return distance + GetRadius() * 2 + 20 > room->GetGasData().rad_new;
} }
float Creature::GetSpeed()
{
}

View File

@ -135,6 +135,7 @@ class Creature : public MoveableEntity
virtual const mt::Hero* GetHeroMeta() { return nullptr; }; virtual const mt::Hero* GetHeroMeta() { return nullptr; };
virtual void FillMFObjectImage(Room* room, Human* hum, cs::MFCharacterImage* image_data) {}; virtual void FillMFObjectImage(Room* room, Human* hum, cs::MFCharacterImage* image_data) {};
virtual void SetPos(Position pos) override; virtual void SetPos(Position pos) override;
virtual float GetSpeed();
std::shared_ptr<Movement> GetMovement() { return movement_; }; std::shared_ptr<Movement> GetMovement() { return movement_; };
bool HasBuffEffect(int buff_effect_id); bool HasBuffEffect(int buff_effect_id);
Buff* GetBuffByEffectId(int effect_id); Buff* GetBuffByEffectId(int effect_id);

View File

@ -185,8 +185,7 @@ void Hero::OnBulletHit(IBullet* bullet)
float Hero::GetSpeed() float Hero::GetSpeed()
{ {
float speed = meta->move_speed(); return Creature::GetSpeed();
return speed;
} }
void Hero::UpdateMove() void Hero::UpdateMove()

View File

@ -105,6 +105,8 @@ void Human::Initialize()
float Human::GetSpeed() float Human::GetSpeed()
{ {
return Creature::GetSpeed();
#if 0
{ {
Buff* buff = GetBuffByEffectId(kBET_HoldShield); Buff* buff = GetBuffByEffectId(kBET_HoldShield);
if (buff) { if (buff) {
@ -174,11 +176,7 @@ float Human::GetSpeed()
speed *= mt::Param::s().water_move_coefficient; speed *= mt::Param::s().water_move_coefficient;
} }
return std::max(speed, 1.0f); return std::max(speed, 1.0f);
} #endif
float Human::GetSpeed4()
{
return meta->move_speed4();
} }
bool Human::IsDead(Room * room) bool Human::IsDead(Room * room)

View File

@ -142,7 +142,6 @@ class Human : public Creature
virtual ~Human() override; virtual ~Human() override;
virtual void Initialize() override; virtual void Initialize() override;
virtual float GetSpeed() override; virtual float GetSpeed() override;
virtual float GetSpeed4();
virtual void FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data) override; virtual void FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data) override;
void FillMFObjectLess(Room* room, Human* hum, cs::MFPlayerFull* full_data); void FillMFObjectLess(Room* room, Human* hum, cs::MFPlayerFull* full_data);
virtual void FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data) override; virtual void FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data) override;

View File

@ -16,7 +16,6 @@ class MoveableEntity : public RoomEntity
void TraverseAllLayerEntityList(std::function<void (Entity*, bool&)> func); void TraverseAllLayerEntityList(std::function<void (Entity*, bool&)> func);
void TraverseAllLayerHumanList(std::function<void (Human*, bool&)> func); void TraverseAllLayerHumanList(std::function<void (Human*, bool&)> func);
virtual float GetSpeed() { return 1.0f;};
virtual void RefreshView(); virtual void RefreshView();
virtual void OnGridListChange(std::set<GridCell*>& old_grids, virtual void OnGridListChange(std::set<GridCell*>& old_grids,
std::set<GridCell*>& inc_grids, std::set<GridCell*>& inc_grids,

View File

@ -87,15 +87,26 @@ namespace mt
} }
} }
{ {
if (move_speed() >= 20) { if (jump_speed() < 0.0001f) {
move_speed_ /= 20.0f; jump_speed_ = 1.0f;
jump_speed_ /= 20.0f; }
move_speed3_ /= 20.0f; if (fall_speed() < 0.0001f) {
shot_speed_ /= 20.0f; fall_speed_ = 1.0f;
aiming_speed_ /= 20.0f; }
move_speed4_ /= 20.0f; if (aim_speed() < 0.0001f) {
reload_speed_ /= 20.0f; aim_speed_ = 1.0f;
useitem_speed_ /= 20.0f; }
if (shoot_speed() < 0.0001f) {
shoot_speed_ = 1.0f;
}
if (reload_speed() < 0.0001f) {
reload_speed_ = 1.0f;
}
if (medicine_speed() < 0.0001f) {
medicine_speed_ = 1.0f;
}
if (swim_speed() < 0.0001f) {
swim_speed_ = 1.0f;
} }
} }
} }

View File

@ -12,14 +12,14 @@ namespace mtb
a8::reflect::Class* GetClass() const; a8::reflect::Class* GetClass() const;
int id() const { return id_; }; int id() const { return id_; };
float radius() const { return radius_; }; float radius() const { return radius_; };
int move_speed() const { return move_speed_; }; float move_speed() const { return move_speed_; };
int jump_speed() const { return jump_speed_; }; float jump_speed() const { return jump_speed_; };
int move_speed3() const { return move_speed3_; }; float fall_speed() const { return fall_speed_; };
int shot_speed() const { return shot_speed_; }; float aim_speed() const { return aim_speed_; };
int aiming_speed() const { return aiming_speed_; }; float shoot_speed() const { return shoot_speed_; };
int move_speed4() const { return move_speed4_; }; float reload_speed() const { return reload_speed_; };
int reload_speed() const { return reload_speed_; }; float medicine_speed() const { return medicine_speed_; };
int useitem_speed() const { return useitem_speed_; }; float swim_speed() const { return swim_speed_; };
const std::string volume() const { return volume_; }; const std::string volume() const { return volume_; };
int level() const { return level_; }; int level() const { return level_; };
int race() const { return race_; }; int race() const { return race_; };
@ -56,12 +56,12 @@ namespace mtb
bool has_radius() const { return __flags__.test(1);}; bool has_radius() const { return __flags__.test(1);};
bool has_move_speed() const { return __flags__.test(2);}; bool has_move_speed() const { return __flags__.test(2);};
bool has_jump_speed() const { return __flags__.test(3);}; bool has_jump_speed() const { return __flags__.test(3);};
bool has_move_speed3() const { return __flags__.test(4);}; bool has_fall_speed() const { return __flags__.test(4);};
bool has_shot_speed() const { return __flags__.test(5);}; bool has_aim_speed() const { return __flags__.test(5);};
bool has_aiming_speed() const { return __flags__.test(6);}; bool has_shoot_speed() const { return __flags__.test(6);};
bool has_move_speed4() const { return __flags__.test(7);}; bool has_reload_speed() const { return __flags__.test(7);};
bool has_reload_speed() const { return __flags__.test(8);}; bool has_medicine_speed() const { return __flags__.test(8);};
bool has_useitem_speed() const { return __flags__.test(9);}; bool has_swim_speed() const { return __flags__.test(9);};
bool has_volume() const { return __flags__.test(10);}; bool has_volume() const { return __flags__.test(10);};
bool has_level() const { return __flags__.test(11);}; bool has_level() const { return __flags__.test(11);};
bool has_race() const { return __flags__.test(12);}; bool has_race() const { return __flags__.test(12);};
@ -98,14 +98,14 @@ namespace mtb
int id_ = 0; int id_ = 0;
float radius_ = 0.0f; float radius_ = 0.0f;
int move_speed_ = 0; float move_speed_ = 0.0f;
int jump_speed_ = 0; float jump_speed_ = 0.0f;
int move_speed3_ = 0; float fall_speed_ = 0.0f;
int shot_speed_ = 0; float aim_speed_ = 0.0f;
int aiming_speed_ = 0; float shoot_speed_ = 0.0f;
int move_speed4_ = 0; float reload_speed_ = 0.0f;
int reload_speed_ = 0; float medicine_speed_ = 0.0f;
int useitem_speed_ = 0; float swim_speed_ = 0.0f;
std::string volume_; std::string volume_;
int level_ = 0; int level_ = 0;
int race_ = 0; int race_ = 0;

View File

@ -300,14 +300,14 @@ namespace mtb
meta_class = new a8::reflect::Class("Hero", 41, 0); meta_class = new a8::reflect::Class("Hero", 41, 0);
meta_class->SetSimpleField(0, "id", a8::reflect::ET_INT32, my_offsetof2(Hero, id_)); meta_class->SetSimpleField(0, "id", a8::reflect::ET_INT32, my_offsetof2(Hero, id_));
meta_class->SetSimpleField(1, "radius", a8::reflect::ET_FLOAT, my_offsetof2(Hero, radius_)); meta_class->SetSimpleField(1, "radius", a8::reflect::ET_FLOAT, my_offsetof2(Hero, radius_));
meta_class->SetSimpleField(2, "move_speed", a8::reflect::ET_INT32, my_offsetof2(Hero, move_speed_)); meta_class->SetSimpleField(2, "move_speed", a8::reflect::ET_FLOAT, my_offsetof2(Hero, move_speed_));
meta_class->SetSimpleField(3, "jump_speed", a8::reflect::ET_INT32, my_offsetof2(Hero, jump_speed_)); meta_class->SetSimpleField(3, "jump_speed", a8::reflect::ET_FLOAT, my_offsetof2(Hero, jump_speed_));
meta_class->SetSimpleField(4, "move_speed3", a8::reflect::ET_INT32, my_offsetof2(Hero, move_speed3_)); meta_class->SetSimpleField(4, "fall_speed", a8::reflect::ET_FLOAT, my_offsetof2(Hero, fall_speed_));
meta_class->SetSimpleField(5, "shot_speed", a8::reflect::ET_INT32, my_offsetof2(Hero, shot_speed_)); meta_class->SetSimpleField(5, "aim_speed", a8::reflect::ET_FLOAT, my_offsetof2(Hero, aim_speed_));
meta_class->SetSimpleField(6, "aiming_speed", a8::reflect::ET_INT32, my_offsetof2(Hero, aiming_speed_)); meta_class->SetSimpleField(6, "shoot_speed", a8::reflect::ET_FLOAT, my_offsetof2(Hero, shoot_speed_));
meta_class->SetSimpleField(7, "move_speed4", a8::reflect::ET_INT32, my_offsetof2(Hero, move_speed4_)); meta_class->SetSimpleField(7, "reload_speed", a8::reflect::ET_FLOAT, my_offsetof2(Hero, reload_speed_));
meta_class->SetSimpleField(8, "reload_speed", a8::reflect::ET_INT32, my_offsetof2(Hero, reload_speed_)); meta_class->SetSimpleField(8, "medicine_speed", a8::reflect::ET_FLOAT, my_offsetof2(Hero, medicine_speed_));
meta_class->SetSimpleField(9, "useitem_speed", a8::reflect::ET_INT32, my_offsetof2(Hero, useitem_speed_)); meta_class->SetSimpleField(9, "swim_speed", a8::reflect::ET_FLOAT, my_offsetof2(Hero, swim_speed_));
meta_class->SetSimpleField(10, "volume", a8::reflect::ET_STRING, my_offsetof2(Hero, volume_)); meta_class->SetSimpleField(10, "volume", a8::reflect::ET_STRING, my_offsetof2(Hero, volume_));
meta_class->SetSimpleField(11, "level", a8::reflect::ET_INT32, my_offsetof2(Hero, level_)); meta_class->SetSimpleField(11, "level", a8::reflect::ET_INT32, my_offsetof2(Hero, level_));
meta_class->SetSimpleField(12, "race", a8::reflect::ET_INT32, my_offsetof2(Hero, race_)); meta_class->SetSimpleField(12, "race", a8::reflect::ET_INT32, my_offsetof2(Hero, race_));

View File

@ -217,14 +217,16 @@ message Hero
{ {
optional int32 id = 1; //id optional int32 id = 1; //id
optional float radius = 2; // optional float radius = 2; //
optional int32 move_speed = 4; //
optional int32 jump_speed = 5; // optional float move_speed = 4; //
optional int32 move_speed3 = 6; optional float jump_speed = 5; //
optional int32 shot_speed = 7; optional float fall_speed = 6;
optional int32 aiming_speed = 8; optional float aim_speed = 8;
optional int32 move_speed4 = 10; //4 optional float shoot_speed = 7;
optional int32 reload_speed = 9; optional float reload_speed = 9;
optional int32 useitem_speed = 49; optional float medicine_speed = 10; //4
optional float swim_speed = 49;
optional string volume = 12; // optional string volume = 12; //
optional int32 level = 13; optional int32 level = 13;
optional int32 race = 14; optional int32 race = 14;