Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Entity / Component instead of inheritance #599

Open
wants to merge 2 commits into
base: develop
Choose a base branch
from

Conversation

alexeevdv
Copy link
Contributor

No description provided.

@FakelsHub
Copy link

FakelsHub commented Oct 29, 2019

bool DoorSceneryObject::canWalkThru() const

Это должно ссылаться на специальный флаг для дверей WalkThru, и если он установлен то дверь при построении пути через нее должна будет открыться автоматически при проходе через ее гекс.
И это у вас дублируется с методом

         bool DoorSceneryObject::opened() const
         {
             return getComponent<Component::Lockable>()->isOpened();
         }

У вас тут все так напутано.

@JanSimek
Copy link
Contributor

Perfect. I was wondering if a similar design pattern should be used for inventories.

@alexeevdv
Copy link
Contributor Author

Yes, same thing can be done for inventory/container. This thing is still work in progress. Just trying out new ideas

@phobos2077
Copy link
Contributor

Как раз начал погружаться в ECS в Unity. Очень круто что решил использовать такой подход, правда обычно еще системы выносят в отдельную сущность, а компоненты просто хранят данные. Возможно эта игра достаточно проста чтобы обойтись "умными" компонентами.. Проблемы при таком подходе возникают когда нужно реализовывать логику где взаимодействуют 2 или более компонентов. Начинается каша, нечеткие зоны ответственности, размазывание одной логики по нескольким компонентам. Использование систем позволяет этого избежать, но нужно немного перестроить мышление с OOP на DDD.

@alexeevdv
Copy link
Contributor Author

Я пока только пробую как оно вообще будет выглядеть применительно к существующему движку. Про системы я в курсе, возможно попробую запилить ECS. В любом случае существующая каша из наследования это путь в никуда, поэтому нужно пробовать что-то еще

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants