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 {
|
func ProduceBattles(c *Cache) []*Battle {
|
||||||
cacheProbability := make(map[int]map[int]float64)
|
cacheProbability := make(map[int]map[int]float64)
|
||||||
defer func() { clear(cacheProbability) }()
|
defer func() { clear(cacheProbability) }()
|
||||||
|
|||||||
@@ -14,45 +14,47 @@ func (c *Controller) MakeTurn() error {
|
|||||||
c.Cache.g.Turn += 1
|
c.Cache.g.Turn += 1
|
||||||
c.Cache.g.Stage = 0
|
c.Cache.g.Stage = 0
|
||||||
|
|
||||||
// 00. Вышедшие расы удаляются из списка участвующих рас перед началом просчета очередного хода
|
// 01. Вышедшие расы удаляются из списка участвующих рас перед началом просчета очередного хода
|
||||||
c.Cache.TurnWipeExtinctRaces()
|
c.Cache.TurnWipeExtinctRaces()
|
||||||
|
|
||||||
// 01. Корабли, где это возможно, объединяются в группы.
|
// TODO: передача кораблей между расами
|
||||||
c.Cache.TurnMergeEqualShipGroups()
|
|
||||||
|
|
||||||
// 02. Враждующие корабли вступают в схватку.
|
// 02. Товары загружаются на корабли, находящиеся в начале грузовых маршрутов, и корабли входят в гиперпространство (но ещё не полетели)
|
||||||
battles := ProduceBattles(c.Cache)
|
|
||||||
|
|
||||||
// 03. Товары загружаются на корабли, находящиеся в начале грузовых маршрутов, и корабли входят в гиперпространство (но ещё не полетели)
|
|
||||||
c.Cache.SendRoutedGroups()
|
c.Cache.SendRoutedGroups()
|
||||||
|
|
||||||
// 04. Корабли пролетают сквозь гиперпространство.
|
// 03. Корабли, где это возможно, объединяются в группы.
|
||||||
c.Cache.MoveShipGroups()
|
|
||||||
|
|
||||||
// 05. Корабли, где это возможно, объединяются в группы.
|
|
||||||
c.Cache.TurnMergeEqualShipGroups()
|
c.Cache.TurnMergeEqualShipGroups()
|
||||||
|
|
||||||
// 06. Враждующие корабли снова вступают в схватку (это происходит после выхода из гиперпространства).
|
// 04. Враждующие корабли вступают в схватку.
|
||||||
|
battles := ProduceBattles(c.Cache)
|
||||||
|
|
||||||
|
// 05. Корабли пролетают сквозь гиперпространство.
|
||||||
|
c.Cache.MoveShipGroups()
|
||||||
|
|
||||||
|
// 06. Корабли, где это возможно, объединяются в группы.
|
||||||
|
c.Cache.TurnMergeEqualShipGroups()
|
||||||
|
|
||||||
|
// 07. Враждующие корабли снова вступают в схватку (это происходит после выхода из гиперпространства).
|
||||||
battles = append(battles, ProduceBattles(c.Cache)...)
|
battles = append(battles, ProduceBattles(c.Cache)...)
|
||||||
|
|
||||||
// 07. Корабли бомбят вражеские планеты.
|
// 08. Корабли бомбят вражеские планеты.
|
||||||
bombings := c.Cache.ProduceBombings()
|
bombings := c.Cache.ProduceBombings()
|
||||||
|
|
||||||
// 08. На планетах строятся корабли.
|
// 09. На планетах строятся корабли.
|
||||||
// 09. Корабли, где это возможно, объединяются в группы.
|
// 10. Корабли, где это возможно, объединяются в группы.
|
||||||
// 10. На планетах производится промышленность, добывается сырье, разрабатываются новые технологии.
|
// 11. На планетах производится промышленность, добывается сырье, разрабатываются новые технологии.
|
||||||
// 11. Увеличивается население планет.
|
// 12. Увеличивается население планет.
|
||||||
c.Cache.TurnPlanetProductions()
|
c.Cache.TurnPlanetProductions()
|
||||||
|
|
||||||
// 12. Товары выгружаются в конце грузовых маршрутов.
|
// 13. Товары выгружаются в конце грузовых маршрутов.
|
||||||
// 13. Выгруженные колонисты увеличивают население планеты (если население планеты ниже её размера).
|
// 14. Выгруженные колонисты увеличивают население планеты (если население планеты ниже её размера).
|
||||||
// 14. Накопленная и выгруженная промышленность увеличивает производственный уровень планеты (если производственный уровень планеты ниже уровня населения).
|
// 15. Накопленная и выгруженная промышленность увеличивает производственный уровень планеты (если производственный уровень планеты ниже уровня населения).
|
||||||
c.Cache.TurnUnloadEnroutedGroups()
|
c.Cache.TurnUnloadEnroutedGroups()
|
||||||
|
|
||||||
// 15. Происходит отмена маршрутов, выходящих за зону полета кораблей.
|
// 16. Происходит отмена маршрутов, выходящих за зону полета кораблей.
|
||||||
c.Cache.RemoveUnreachableRoutes()
|
c.Cache.RemoveUnreachableRoutes()
|
||||||
|
|
||||||
// 16. Происходит голосование.
|
// 17. Происходит голосование.
|
||||||
winners := c.Cache.TurnCalculateVotes()
|
winners := c.Cache.TurnCalculateVotes()
|
||||||
c.Cache.TurnAcceptWinners(winners)
|
c.Cache.TurnAcceptWinners(winners)
|
||||||
|
|
||||||
|
|||||||
@@ -113,12 +113,15 @@ func (c *Cache) SendRoutedGroups() {
|
|||||||
case game.RouteMaterial:
|
case game.RouteMaterial:
|
||||||
res = &p.Material
|
res = &p.Material
|
||||||
ct = game.CargoMaterial
|
ct = game.CargoMaterial
|
||||||
default:
|
case game.RouteEmpty:
|
||||||
|
// empty routes launched immediately so the're not required to be loaded
|
||||||
for _, sgi := range groups {
|
for _, sgi := range groups {
|
||||||
c.LaunchShips(sgi, dest)
|
c.LaunchShips(sgi, dest)
|
||||||
}
|
}
|
||||||
groups = reorderGroups(groups)
|
groups = reorderGroups(groups)
|
||||||
continue
|
continue
|
||||||
|
default:
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
for res != nil && *res > 0 && len(groups) > 0 {
|
for res != nil && *res > 0 && len(groups) > 0 {
|
||||||
sgi := groups[0]
|
sgi := groups[0]
|
||||||
|
|||||||
@@ -327,6 +327,20 @@ func (c *Cache) unsafeUnloadCargo(sgi int, q float64) {
|
|||||||
p.UnpackCapital()
|
p.UnpackCapital()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
TODO: Позволить передавать одноимённые группы.
|
||||||
|
|
||||||
|
При генерировании нового имени необходимо убедиться, что оно не превысит 30 символов.
|
||||||
|
|
||||||
|
> Если у расы, которой передается группа кораблей, уже определен класс кораблей с таким же
|
||||||
|
> названием, но другими характеристиками, принимающая раса так же получит новый
|
||||||
|
> класс кораблей, к названию которого будет добавлен случайный суффикс.
|
||||||
|
|
||||||
|
TODO: Убедиться, что раса не покинула игру.
|
||||||
|
|
||||||
|
При производстве хода раса может покинуть, а может и не покинуть игру,
|
||||||
|
в зхависимости от того, были ли ею отданы новые приказы.
|
||||||
|
*/
|
||||||
func (c *Cache) shipGroupTransfer(ri, riAccept int, groupID uuid.UUID) (err error) {
|
func (c *Cache) shipGroupTransfer(ri, riAccept int, groupID uuid.UUID) (err error) {
|
||||||
c.validateRaceIndex(ri)
|
c.validateRaceIndex(ri)
|
||||||
if ri == riAccept {
|
if ri == riAccept {
|
||||||
|
|||||||
@@ -7,6 +7,12 @@ import (
|
|||||||
"github.com/iliadenisov/galaxy/internal/util"
|
"github.com/iliadenisov/galaxy/internal/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
TODO: остались ли планеты у расы
|
||||||
|
|
||||||
|
Если у расы не осталось планет, то оставшиеся корабли не смогут
|
||||||
|
покинуть своего места пребывания.
|
||||||
|
*/
|
||||||
func (c *Cache) shipGroupSend(ri int, groupID uuid.UUID, planetNumber uint) error {
|
func (c *Cache) shipGroupSend(ri int, groupID uuid.UUID, planetNumber uint) error {
|
||||||
c.validateRaceIndex(ri)
|
c.validateRaceIndex(ri)
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ const (
|
|||||||
StateLaunched ShipGroupState = "Launched"
|
StateLaunched ShipGroupState = "Launched"
|
||||||
StateInSpace ShipGroupState = "In_Space"
|
StateInSpace ShipGroupState = "In_Space"
|
||||||
StateUpgrade ShipGroupState = "Upgrade"
|
StateUpgrade ShipGroupState = "Upgrade"
|
||||||
StateTransfer ShipGroupState = "Transfer"
|
StateTransfer ShipGroupState = "Transfer" // TODO: Группы будут передаваться мгновенно в начале производства хода
|
||||||
)
|
)
|
||||||
|
|
||||||
func (sgs ShipGroupState) String() string {
|
func (sgs ShipGroupState) String() string {
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ type LocalPlanet struct {
|
|||||||
Colonists Float `json:"colonists"` // COL C - Количество колонистов
|
Colonists Float `json:"colonists"` // COL C - Количество колонистов
|
||||||
Production string `json:"production"`
|
Production string `json:"production"`
|
||||||
FreeIndustry Float `json:"freeInductry"` // Параметр "L" - Свободный производственный потенциал
|
FreeIndustry Float `json:"freeInductry"` // Параметр "L" - Свободный производственный потенциал
|
||||||
|
// TODO: FreeIndustry - неактуальная информация, т.к. модернизация происходит в процессе производства хода
|
||||||
}
|
}
|
||||||
|
|
||||||
type UninhabitedPlanet struct {
|
type UninhabitedPlanet struct {
|
||||||
|
|||||||
Reference in New Issue
Block a user