1
This commit is contained in:
parent
0686218ec3
commit
458c8c0d70
@ -338,6 +338,13 @@ enum ObstacleType_e
|
||||
kObstacleAirDropBox = 8,
|
||||
};
|
||||
|
||||
enum OptResult
|
||||
{
|
||||
kOptPass = 0,
|
||||
kOptContinue = 1,
|
||||
kOptBreak = 2
|
||||
};
|
||||
|
||||
const char* const PROJ_NAME_FMT = "game%d_gameserver";
|
||||
const char* const PROJ_ROOT_FMT = "/data/logs/%s";
|
||||
|
||||
|
@ -93,6 +93,12 @@ float Human::GetSpeed()
|
||||
return buff->meta->param2;
|
||||
}
|
||||
}
|
||||
{
|
||||
Buff* buff = GetBuffByEffectId(kBET_Sprint);
|
||||
if (buff) {
|
||||
return buff->meta->param2;
|
||||
}
|
||||
}
|
||||
if (downed) {
|
||||
return meta->i->move_speed3();
|
||||
} else {
|
||||
@ -511,6 +517,13 @@ bool Human::IsCollisionInMapService()
|
||||
) &&
|
||||
!obstacle->CanThroughable(this)) {
|
||||
if (last_collision_door_ != collider->owner) {
|
||||
OptResult opt_result = kOptPass;
|
||||
obstacle->OnCollisionTrigger(this, opt_result);
|
||||
if (opt_result == kOptContinue) {
|
||||
continue;
|
||||
} else if (opt_result == kOptBreak) {
|
||||
return true;
|
||||
}
|
||||
if (!obstacle->IsDead(room) &&
|
||||
obstacle->Attackable() &&
|
||||
obstacle->meta->i->drop() != 0 &&
|
||||
@ -1574,7 +1587,7 @@ void Human::FollowTarget(Human* target)
|
||||
void Human::SendDebugMsg(const std::string& debug_msg)
|
||||
{
|
||||
cs::SMDebugMsg notify_msg;
|
||||
notify_msg.set_debug_msg(debug_msg);
|
||||
notify_msg.set_debug_msg(a8::TimestampToDateTime(time(nullptr)) + " " + debug_msg);
|
||||
SendNotifyMsg(notify_msg);
|
||||
}
|
||||
|
||||
|
@ -641,9 +641,14 @@ bool Obstacle::DoInteraction(Human* sender)
|
||||
return false;
|
||||
}
|
||||
|
||||
void Obstacle::OnCollisionTrigger(Creature* c)
|
||||
void Obstacle::OnCollisionTrigger(Creature* c, OptResult& opt_result)
|
||||
{
|
||||
|
||||
opt_result = kOptPass;
|
||||
if (meta->i->thing_type() == kObstacleSpring) {
|
||||
AddObstacleBuff(c);
|
||||
a8::SetBitFlag(c->status, CS_Collisioning);
|
||||
opt_result = kOptBreak;
|
||||
}
|
||||
}
|
||||
|
||||
void Obstacle::DoHideHouseInteraction(Human* sender)
|
||||
|
@ -45,7 +45,7 @@ class Obstacle : public Entity
|
||||
virtual bool CanThroughable(Creature* c);
|
||||
virtual bool CanThroughable(Bullet* bullet);
|
||||
virtual bool DoInteraction(Human* sender);
|
||||
virtual void OnCollisionTrigger(Creature* c);
|
||||
virtual void OnCollisionTrigger(Creature* c, OptResult& opt_result);
|
||||
void Explosion(Bullet* bullet);
|
||||
void SetDoorInfo(Building* building, int door_id_x);
|
||||
bool IsDoor();
|
||||
|
@ -71,6 +71,9 @@ void Player::InternalUpdate(int delta_time)
|
||||
if (HasSpecMove()) {
|
||||
_UpdateSpecMove();
|
||||
} else {
|
||||
if (HasBuffEffect(kBET_Sprint)) {
|
||||
moving = true;
|
||||
}
|
||||
if (moving) {
|
||||
UpdateMove();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user