From 913110508cd8e5300864fbcc8046f25d3525b0f3 Mon Sep 17 00:00:00 2001 From: "anton.gurov" Date: Fri, 8 Nov 2019 13:52:15 +0300 Subject: [PATCH] story changes, ui fixes --- config.json | 4 ++-- engine/screens/game.go | 2 +- engine/screens/menu.go | 2 ++ story/choose_your_pill.md | 0 ...chans_for_game.md => go_game_dos_and_donts.md} | 2 ++ story/index.md | 13 +++++++++---- ..._blt.md => linux_go_blt_install_quickstart.md} | 8 +++++--- story/makefile_and_crosscompiling.md | 10 ++++++++++ story/static_types_vs_ecs.md | 15 ++++++++++++++- 9 files changed, 45 insertions(+), 11 deletions(-) create mode 100644 story/choose_your_pill.md rename story/{go_chans_for_game.md => go_game_dos_and_donts.md} (99%) rename story/{linux_go_blt.md => linux_go_blt_install_quickstart.md} (86%) create mode 100644 story/makefile_and_crosscompiling.md diff --git a/config.json b/config.json index b669e58..ea1bcd6 100644 --- a/config.json +++ b/config.json @@ -1,10 +1,10 @@ { - "version": "v0.0.1.4-2-g20fa78a", + "version": "v0.0.1.4-3-g5619155", "title": "Alchemyst", "sizeX": 100, "sizeY": 47, "fpsLimit": 60, - "font": ".\/resources\/fonts-ttf\/LiberationMono-Bold.ttf", + "font": "./resources/fonts-ttf/LiberationMono-Bold.ttf", "fontSize": "8x12", "verbosity": "debug" } \ No newline at end of file diff --git a/engine/screens/game.go b/engine/screens/game.go index 7405a31..0ef1da8 100644 --- a/engine/screens/game.go +++ b/engine/screens/game.go @@ -31,7 +31,7 @@ func (ts *GameScreen) Enter() { Print(1, ts.mw.H-2, "Press [color=white]?[/color] for help") } func (ts *GameScreen) Exit() { - ts.mw.GetLayer("base").ClearArea(1, ts.mw.H-2, 30, 1) + ts.mw.GetLayer("overlay").ClearArea(0, ts.mw.H-3, 30, 3) //remove what we dont need } diff --git a/engine/screens/menu.go b/engine/screens/menu.go index 41c79b5..257f1f1 100644 --- a/engine/screens/menu.go +++ b/engine/screens/menu.go @@ -67,6 +67,8 @@ func (ms *MenuScreen) HandleInput(input string) { //} switch input { + case "Escape": + fallthrough case "Space": ms.scm.SetScreen(ms.scm.PreviousScreen) break diff --git a/story/choose_your_pill.md b/story/choose_your_pill.md new file mode 100644 index 0000000..e69de29 diff --git a/story/go_chans_for_game.md b/story/go_game_dos_and_donts.md similarity index 99% rename from story/go_chans_for_game.md rename to story/go_game_dos_and_donts.md index b278c97..d6455b1 100644 --- a/story/go_chans_for_game.md +++ b/story/go_game_dos_and_donts.md @@ -1,4 +1,6 @@ + + декодирование ввода в отдельном потоке Реализация FPS и троттлинг diff --git a/story/index.md b/story/index.md index f7c3f76..01b0b2b 100644 --- a/story/index.md +++ b/story/index.md @@ -1,5 +1,10 @@ -RLG и Golang - полезные советы +RLG и Golang - некоторые полезные советы === -1. [Установка и некоторые особенности работы](./linux_go_blt.md) связки BLT + Go на Linux -2. Реализация [некоторых возможностей](./go_chans_for_game.md) Go - chans, tickers, throttling -3. [Система типов](./static_types_vs_ecs.md) - нативная или ECS? \ No newline at end of file +0. [Выбираем инструменты](./choose_your_pill.md) +1. [Установка и некоторые особенности работы](linux_go_blt_install_quickstart.md) связки BLT + Go на Linux +2. Что [стоит и НЕ стоит](go_game_dos_and_donts.md) делать с возможностями Go - +chans, +tickers, +throttling, -closures +3. [Система типов](./static_types_vs_ecs.md) - нативная или ECS? На самом деле и то, и то + +#####Дополнения + +1. Как [не делать лишнюю работу](./makefile_and_crosscompiling.md) и почему это **важно**. \ No newline at end of file diff --git a/story/linux_go_blt.md b/story/linux_go_blt_install_quickstart.md similarity index 86% rename from story/linux_go_blt.md rename to story/linux_go_blt_install_quickstart.md index e32fd3e..7da307b 100644 --- a/story/linux_go_blt.md +++ b/story/linux_go_blt_install_quickstart.md @@ -1,9 +1,9 @@ Установка и работа с BLT на Linux == -Для Windows и Mac проблем с Go + BLT, насколько мне известно нет. +Про Windows и Mac в контексте связки Go + BLT, я говорить не буду, поскольку не ел устриц. С Linux, которая моя основная рабочая ось - другая история, здесь вносят свой шарм особенности работы линкера. -Дело в том, что в составе BLT есть готовые биндинги для Go, НО! В Terminal/Include/Go по умолчанию +Дело в том, что BLT написана на C. Но! есть готовые биндинги для Go, НО! В Terminal/Include/Go по умолчанию указаны такие флаги линкера CGO (стр 25) ```go // #cgo LDFLAGS: -lBearLibTerminal @@ -44,4 +44,6 @@ RPATH ./ Ура! Теперь кладем libBearLibTerminal.so прямо в папку с main.go и запускам go run (или скомпилированный бинарник) прям оттуда. Собранные таким образом бинарники будут искать библиотеку в той же папке, где находятся они сами. -Теперь при дистрибуции приложения можно просто положить .so файл библиотеки рядом, и все будет работать! \ No newline at end of file +Теперь при дистрибуции приложения можно просто положить .so файл библиотеки рядом, и все будет работать! + +Вторая кочка, на котрой \ No newline at end of file diff --git a/story/makefile_and_crosscompiling.md b/story/makefile_and_crosscompiling.md new file mode 100644 index 0000000..88749ee --- /dev/null +++ b/story/makefile_and_crosscompiling.md @@ -0,0 +1,10 @@ +Автоматизация сборки и тестирование +=== + +- Почему это важно: мелочи сжирают кучу времени. Не позволяйте им это делать! +- настройка под Linux: все внешние либы собраны и включены в монорепо (дело вкуса) +- Go-специфичные вещи: glide, go mod +- Кросскомпиляция, CGO для Mac и Linux. CGO_ENABLED=1, mingw, локальная линковка библиотек +- Таргеты: Убираем бардак за собой - distclean, build +- Автоматическое тестирование, testify. Не ленитесь писать тесты! +- Деплой/публикация после сборки \ No newline at end of file diff --git a/story/static_types_vs_ecs.md b/story/static_types_vs_ecs.md index 39e6198..d11ca12 100644 --- a/story/static_types_vs_ecs.md +++ b/story/static_types_vs_ecs.md @@ -2,8 +2,21 @@ Плюсы использования нативной системы типов +- Примитивы типа Rect +- Интерфейсы, type casting и переиспользования Blit +- свитчи по типам + Минусы использования нативной системы типы +- Структура структуры (эм..) иммутабельна + ECS - меняем бойлерплейт на относительное снижение связности -Минутка рекламы gogue \ No newline at end of file +- Делаем динамическую систему типов там и только там где нам надо +- Возможность физически впихнуть в кеш проца все актуальные данные +- Особая актуальность для Go - обработка в main thread всего что связано с Io + +Минутка рекламы gogue + +- Толковый туториал, неплохой код +- Пользуйтесь и продвигайте \ No newline at end of file