[Unity] — вопрос по логике сравнения наборов характеристик персонажей

У меня задан класс BaseStats, в котором есть 4 int'а, собственно, хранящие характеристики персонажа. Я решил перегрузить оператор ">", чтобы проще было сравнивать характеристики персонажа и требования снаряжения к характеристикам, что тоже задаётся тем же классом. И тут всё, вроде бы, однозначно, если все статы персонажа больше всех требуемых стат, то статы персонажа больше, всё ок, однако эта перегрузка требует ещё и перегрузку оператора "<" с чем и происходит заминка.

С одной стороны, "<" должна быть обратной (знаю, что "<=", суть не в этом), и тогда получается клауза должна быть "если хотя бы одна из характеристик будет меньше, то и весь набор характеристик будет меньше", что в табличках выглядит вполне ок, но создаёт противоречие, что два набора стат могут быть одновременно меньше друг друга, например, так.

baseStats1: Сила=2, Ловкость=5.
baseStats2: Сила=5, Ловкость=2.


baseStats1 меньше baseStats2, т.к. сила в baseStats1 меньше.

baseStats2 меньше baseStats1, т.к. ловкость в baseStats2 меньше.

С другой стороны, если попробовать идти от противного и сделать так чтобы "<" звучала как "если все характеристики будут меньше, то весь набор будет меньше", создаёт какое-то огромнейшее поле в 14 вариантов, которое звучит как "и не то, и не это".

Какой из двух вариантов стоит взять, или мне вообще стоит отказаться от перегрузки операторов и сделать всё через методы класса?

[Unity] — вопрос по логике сравнения наборов характеристик персонажей
1111
29 комментариев

А зачем тебе сравнивать все статы?

6
Ответить

Набор с набором, тип чтобы было просто написать if (Unit.stats >= weapon.requires) {doshit();} и не хардкодить поля в методах.

Ответить

Тот же вопрос хотел) 

1
Ответить

сделать всё через методы класса?Я бы так и сделал - функцию типа bool Unit.EnoughStats(stats). Проще и понятней имхо

6
Ответить

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

3
Ответить

что в шарпе можно перегружать операторыНаследие java.

А так, сравнивать статы по отдельности как раз таки то, что мне нужно. Как-то странно компенсировать внимание силой или ловкость выносливостью.

Ответить

Комментарий недоступен

2
Ответить