Updating PlayerBehavior class for simplified PhysicalProperties. (Work #135)

This commit is contained in:
S David 2023-08-11 14:12:22 -04:00
parent 4dc363866c
commit 4a8752b3d5

View File

@ -40,8 +40,8 @@ static GameEngine::ComponentStore& entities =
GameEngine::ComponentStore::GetInstance();
PlayerBehavior::PlayerBehavior(InstanceId id)
: BaseComponent(id)
, IBehavior()
: IBehavior()
, BaseComponent(id)
, IObserver()
, position_ptr(nullptr)
, properties_ptr(nullptr)
@ -64,14 +64,13 @@ PlayerBehavior::PlayerBehavior(InstanceId id)
initialize_metadata(id);
if (!position_ptr) {
position_ptr = &(entities.GetComponent<PositionAttribute>(id));
auto& position = entities.GetComponent<PositionAttribute>(id);
position_ptr = &position;
}
if (!properties_ptr) {
properties_ptr =
&(entities.GetComponent<PhysicalProperties>(id));
}
properties_ptr->RegisterProperty<velocity_t>("velocity",
velocity_t{ 0.0f, 0.0f });
}
PlayerBehavior::PlayerBehavior(PlayerBehavior&& other) noexcept
@ -109,7 +108,7 @@ PlayerBehavior::handleArrowKeys()
int keyboard_len;
const Uint8* keys = SDL_GetKeyboardState(&keyboard_len);
auto velocity = properties.GetValueAs<velocity_t>("velocity");
auto& velocity = properties.velocity;
decimal& velocityX = velocity.first;
decimal& velocityY = velocity.second;
@ -147,7 +146,7 @@ PlayerBehavior::handleArrowKeys()
velocityY += SPEED_INCR;
}
}
properties_ptr->Get("velocity") = velocity;
properties_ptr->velocity = { velocityX, velocityY };
}
/* #region IObservable interface implementation */
@ -211,11 +210,7 @@ error_flag
PlayerBehavior::Update()
{
auto success = false;
InstanceInfo& instance_info = component_info.instance;
auto& id = this->component_info.instance.id;
velocity_t velocity =
this->properties_ptr->GetValueAs<velocity_t>("velocity");
auto& velocity = this->properties_ptr->velocity;
if (this->position_ptr) {
auto& xPosition = this->position_ptr->xPosition;