SwiftFMI / swift_2019_2020

7 stars 7 forks source link

Въпроси относно РПГ проекта #28

Open stringie opened 4 years ago

stringie commented 4 years ago

Никъде в описанието на проекта или в rpgcore протоколите и имплементациите не пише как се пази позицията на играчите по картата. Кой клас трябва да отговаря за помненето и променянето на позициите на играчите? Няма никаква имплементирана подобна логика в rpgcore/.../Game.swift или rpgcore/.../DefaultImplementation.swift . Ако ще искате проектите на различни хора да могат да работят заедно тогава трябва протоколите да са добре измислени и според мен трябва примерно или в Map или в Player протокола да има поле position което да отговаря за това, за да знам какво да променям.

Съшо така смятам че би било добре в MapTileType да има player tile за да може да се осъществи лесна визуализация и на героите.

heitara commented 4 years ago

Никъде в описанието на проекта или в rpgcore протоколите и имплементациите не пише как се пази позицията на играчите по картата. - Така е, но вие имате свобода да имплементирате както решите.

. Кой клас трябва да отговаря за помненето и променянето на позициите на играчите? - Може да изберете, може да предложите подобрение в core библиотеката и да направите Pull Request. Варианти има, добре е да зиберете този, който ви допада най-много.

Ако ще искате проектите на различни хора да могат да работят заедно тогава трябва протоколите да са добре измислени и според мен трябва примерно или в Map или в Player протокола да има поле position което да отговаря за това, за да знам какво да променям. - Да, имаме това желание и ще видим до къде ще стигнем. Всички добри идеи и имплементации ще бъдат добавени към основния проект. Може да направите PR, ако имате ясна идея, кое как може да се случи.

Нашата идея беше - protocol Map да пази информацията за позицията на играчите вътрешно. Проектите на разлините хора ще могат да работя по следния начин - вкарват се в общ проект и се подават инстанции на съответните класове (виж main.swift). Понеже, само протоколите трябва да са спазени, тогава не трябва да има проблем с заменянето с различни наследници.

За MapTileType, може би е добре да позволим по общ вариант примерно case extraType(name: String). С идеята да може да се добавят различни видове, но вече бягаме от силната типизация. Може да се мине и с класове и наследяване.