docs: more todos

This commit is contained in:
IliaDenisov
2026-02-14 17:52:15 +02:00
parent 0ab3147bdd
commit e3a3a71e88
7 changed files with 59 additions and 24 deletions
+9
View File
@@ -84,6 +84,15 @@ func FilterBattleOpponents(c *Cache, attIdx, defIdx int, cacheProbability map[in
}
/*
FIXME: Сражение происходит раундами
Случайным образом из всех участвующих в сражении вооруженных кораблей выбирается один...
...Затем вновь случайным образом выбирается корабль, который будет стрелять...
Так продолжается до тех пор, пока не отстреляются все корабли. Если после
этого еще остались корабли и с той и с другой стороны, все повторяется с
самого начала (происходит еще один цикл сражения).
*/
func ProduceBattles(c *Cache) []*Battle {
cacheProbability := make(map[int]map[int]float64)
defer func() { clear(cacheProbability) }()
+24 -22
View File
@@ -14,45 +14,47 @@ func (c *Controller) MakeTurn() error {
c.Cache.g.Turn += 1
c.Cache.g.Stage = 0
// 00. Вышедшие расы удаляются из списка участвующих рас перед началом просчета очередного хода
// 01. Вышедшие расы удаляются из списка участвующих рас перед началом просчета очередного хода
c.Cache.TurnWipeExtinctRaces()
// 01. Корабли, где это возможно, объединяются в группы.
c.Cache.TurnMergeEqualShipGroups()
// TODO: передача кораблей между расами
// 02. Враждующие корабли вступают в схватку.
battles := ProduceBattles(c.Cache)
// 03. Товары загружаются на корабли, находящиеся в начале грузовых маршрутов, и корабли входят в гиперпространство (но ещё не полетели)
// 02. Товары загружаются на корабли, находящиеся в начале грузовых маршрутов, и корабли входят в гиперпространство (но ещё не полетели)
c.Cache.SendRoutedGroups()
// 04. Корабли пролетают сквозь гиперпространство.
c.Cache.MoveShipGroups()
// 05. Корабли, где это возможно, объединяются в группы.
// 03. Корабли, где это возможно, объединяются в группы.
c.Cache.TurnMergeEqualShipGroups()
// 06. Враждующие корабли снова вступают в схватку (это происходит после выхода из гиперпространства).
// 04. Враждующие корабли вступают в схватку.
battles := ProduceBattles(c.Cache)
// 05. Корабли пролетают сквозь гиперпространство.
c.Cache.MoveShipGroups()
// 06. Корабли, где это возможно, объединяются в группы.
c.Cache.TurnMergeEqualShipGroups()
// 07. Враждующие корабли снова вступают в схватку (это происходит после выхода из гиперпространства).
battles = append(battles, ProduceBattles(c.Cache)...)
// 07. Корабли бомбят вражеские планеты.
// 08. Корабли бомбят вражеские планеты.
bombings := c.Cache.ProduceBombings()
// 08. На планетах строятся корабли.
// 09. Корабли, где это возможно, объединяются в группы.
// 10. На планетах производится промышленность, добывается сырье, разрабатываются новые технологии.
// 11. Увеличивается население планет.
// 09. На планетах строятся корабли.
// 10. Корабли, где это возможно, объединяются в группы.
// 11. На планетах производится промышленность, добывается сырье, разрабатываются новые технологии.
// 12. Увеличивается население планет.
c.Cache.TurnPlanetProductions()
// 12. Товары выгружаются в конце грузовых маршрутов.
// 13. Выгруженные колонисты увеличивают население планеты (если население планеты ниже её размера).
// 14. Накопленная и выгруженная промышленность увеличивает производственный уровень планеты (если производственный уровень планеты ниже уровня населения).
// 13. Товары выгружаются в конце грузовых маршрутов.
// 14. Выгруженные колонисты увеличивают население планеты (если население планеты ниже её размера).
// 15. Накопленная и выгруженная промышленность увеличивает производственный уровень планеты (если производственный уровень планеты ниже уровня населения).
c.Cache.TurnUnloadEnroutedGroups()
// 15. Происходит отмена маршрутов, выходящих за зону полета кораблей.
// 16. Происходит отмена маршрутов, выходящих за зону полета кораблей.
c.Cache.RemoveUnreachableRoutes()
// 16. Происходит голосование.
// 17. Происходит голосование.
winners := c.Cache.TurnCalculateVotes()
c.Cache.TurnAcceptWinners(winners)
+4 -1
View File
@@ -113,12 +113,15 @@ func (c *Cache) SendRoutedGroups() {
case game.RouteMaterial:
res = &p.Material
ct = game.CargoMaterial
default:
case game.RouteEmpty:
// empty routes launched immediately so the're not required to be loaded
for _, sgi := range groups {
c.LaunchShips(sgi, dest)
}
groups = reorderGroups(groups)
continue
default:
continue
}
for res != nil && *res > 0 && len(groups) > 0 {
sgi := groups[0]
+14
View File
@@ -327,6 +327,20 @@ func (c *Cache) unsafeUnloadCargo(sgi int, q float64) {
p.UnpackCapital()
}
/*
TODO: Позволить передавать одноимённые группы.
При генерировании нового имени необходимо убедиться, что оно не превысит 30 символов.
> Если у расы, которой передается группа кораблей, уже определен класс кораблей с таким же
> названием, но другими характеристиками, принимающая раса так же получит новый
> класс кораблей, к названию которого будет добавлен случайный суффикс.
TODO: Убедиться, что раса не покинула игру.
При производстве хода раса может покинуть, а может и не покинуть игру,
в зхависимости от того, были ли ею отданы новые приказы.
*/
func (c *Cache) shipGroupTransfer(ri, riAccept int, groupID uuid.UUID) (err error) {
c.validateRaceIndex(ri)
if ri == riAccept {
+6
View File
@@ -7,6 +7,12 @@ import (
"github.com/iliadenisov/galaxy/internal/util"
)
/*
TODO: остались ли планеты у расы
Если у расы не осталось планет, то оставшиеся корабли не смогут
покинуть своего места пребывания.
*/
func (c *Cache) shipGroupSend(ri int, groupID uuid.UUID, planetNumber uint) error {
c.validateRaceIndex(ri)