Merge phase/40-clock-tempo.
This commit is contained in:
@@ -12,26 +12,26 @@
|
||||
|
||||
## Задачи
|
||||
|
||||
- [ ] `GameMinutesPerRealSecond` по умолчанию 1 (опции, `appsettings.json`, `GET /api/schools`)
|
||||
- [ ] `ClockSpeed.Multipliers`: `0.5, 1, 2, 5, 10`. Зеркало в `protocol.ts`. Подписи кнопок:
|
||||
- [x] `GameMinutesPerRealSecond` по умолчанию 1 (опции, `appsettings.json`, `GET /api/schools`)
|
||||
- [x] `ClockSpeed.Multipliers`: `0.5, 1, 2, 5, 10`. Зеркало в `protocol.ts`. Подписи кнопок:
|
||||
×½ ×1 ×2 ×5 ×10. Стартовый индекс по-прежнему 1
|
||||
- [ ] Воркер будит мир 20 раз в секунду на любой скорости. `GameClock.Advance`, граница лога
|
||||
- [x] Воркер будит мир 20 раз в секунду на любой скорости. `GameClock.Advance`, граница лога
|
||||
6:00, годовой набор, пул соискателей, погода — каждый импульс
|
||||
- [ ] На индексах ×5 и ×10 ходьба, действия, решения, нужды, тепло, обучение, износ — раз в
|
||||
- [x] На индексах ×5 и ×10 ходьба, действия, решения, нужды, тепло, обучение, износ — раз в
|
||||
4 и раз в 2 импульса соответственно, с накопленными минутами (квант — 1 игровая минута).
|
||||
На ×½ ×1 ×2 — каждый импульс, как сейчас
|
||||
- [ ] Не прыгать календарём одним жирным `Tick` вместо страйда
|
||||
- [ ] Комментарий меню про «минута за 12 секунд» привести к новой базе
|
||||
- [ ] `docs/protocol.md` — таблица множителей. Раскладку и версию сокета не трогать
|
||||
- [x] Не прыгать календарём одним жирным `Tick` вместо страйда
|
||||
- [x] Комментарий меню про «минута за 12 секунд» привести к новой базе
|
||||
- [x] `docs/protocol.md` — таблица множителей. Раскладку и версию сокета не трогать
|
||||
|
||||
## Тесты, без которых фаза не закрыта
|
||||
|
||||
- [ ] 20 шагов по 1/20 с на ×1 сдвигают календарь на 1 игровую минуту, не на 5
|
||||
- [ ] Индексы 3 и 4 за одну реальную секунду дают 5 и 10 игровых минут
|
||||
- [ ] На ×10 за 20 импульсов ходьба/нужды вызваны 10 раз, календарь — 20; накопленный аргумент
|
||||
- [x] 20 шагов по 1/20 с на ×1 сдвигают календарь на 1 игровую минуту, не на 5
|
||||
- [x] Индексы 3 и 4 за одну реальную секунду дают 5 и 10 игровых минут
|
||||
- [x] На ×10 за 20 импульсов ходьба/нужды вызваны 10 раз, календарь — 20; накопленный аргумент
|
||||
минут на тяжёлый вызов — 1
|
||||
- [ ] Невалидный индекс 5 по-прежнему игнорируется
|
||||
- [ ] Клиентский тест: пять кнопок ×½ ×1 ×2 ×5 ×10
|
||||
- [x] Невалидный индекс 5 по-прежнему игнорируется
|
||||
- [x] Клиентский тест: пять кнопок ×½ ×1 ×2 ×5 ×10
|
||||
|
||||
## Критерий готовности
|
||||
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
|
||||
| Фаза | Статус | Зачем |
|
||||
| --- | --- | --- |
|
||||
| [40. Темп часов](40-clock-tempo.md) | 🔄 | ×1 = минута/с, кнопки ×½ ×1 ×2 ×5 ×10, страйд тяжёлых систем |
|
||||
| [40. Темп часов](40-clock-tempo.md) | ✅ | ×1 = минута/с, кнопки ×½ ×1 ×2 ×5 ×10, страйд тяжёлых систем |
|
||||
|
||||
## Срез 9. Общение и романтический пак
|
||||
|
||||
|
||||
+4
-4
@@ -39,7 +39,7 @@ people; it does not change on a living school.
|
||||
{
|
||||
"maxSchools": 6,
|
||||
"defaultStartDate": "2012-03-31T06:00:00Z",
|
||||
"gameMinutesPerRealSecond": 5,
|
||||
"gameMinutesPerRealSecond": 1,
|
||||
"schoolWeekDays": 5,
|
||||
"schools": [
|
||||
{ "id": 1, "name": "Гимназия №14", "gameTime": "2012-03-31T07:35:00Z", "running": false, "speedIndex": 1, "modIds": ["core"], "seed": 1847291 }
|
||||
@@ -753,9 +753,9 @@ Running and speed are **separate messages on purpose**. A single "set clock" mes
|
||||
button to resend the other field from the client's own copy of the state, which is always at least
|
||||
one tick stale — pressing play and then a speed button would pause the school again.
|
||||
|
||||
Speed indexes are `0 = ×½`, `1 = ×1`, `2 = ×2`, `3 = ×3`, `4 = ×4`; out-of-range values are
|
||||
ignored rather than fatal. The base rate is `gameMinutesPerRealSecond` (5), so ×1 is five game
|
||||
minutes per real second.
|
||||
Speed indexes are `0 = ×½`, `1 = ×1`, `2 = ×2`, `3 = ×5`, `4 = ×10`; out-of-range values are
|
||||
ignored rather than fatal. The base rate is `gameMinutesPerRealSecond` (1), so ×1 is one game
|
||||
minute per real second.
|
||||
|
||||
### `0x07` SkipEmpty — 1 byte
|
||||
|
||||
|
||||
Reference in New Issue
Block a user