docs: more todos
This commit is contained in:
@@ -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) }()
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user