From 1ad235a68b5fb257306909b559b282ed1a043ef8 Mon Sep 17 00:00:00 2001 From: Denis Ranneft Date: Sat, 4 Apr 2026 04:26:45 +0300 Subject: [PATCH] hero variants, fix bubble --- backend/internal/model/hero_model_variant.go | 10 ++++++++++ backend/migrations/000035_hero_model_variant.sql | 16 ++++++++++++++++ frontend/src/game/renderer.ts | 3 ++- 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 backend/internal/model/hero_model_variant.go create mode 100644 backend/migrations/000035_hero_model_variant.sql diff --git a/backend/internal/model/hero_model_variant.go b/backend/internal/model/hero_model_variant.go new file mode 100644 index 0000000..35f7b2e --- /dev/null +++ b/backend/internal/model/hero_model_variant.go @@ -0,0 +1,10 @@ +package model + +const ( + HeroModelVariantMin = 0 + HeroModelVariantMax = 2 +) + +func IsValidHeroModelVariant(v int) bool { + return v >= HeroModelVariantMin && v <= HeroModelVariantMax +} diff --git a/backend/migrations/000035_hero_model_variant.sql b/backend/migrations/000035_hero_model_variant.sql new file mode 100644 index 0000000..63c8ec8 --- /dev/null +++ b/backend/migrations/000035_hero_model_variant.sql @@ -0,0 +1,16 @@ +ALTER TABLE heroes + ADD COLUMN hero_model_variant integer; + +UPDATE heroes +SET hero_model_variant = floor(random() * 3)::int +WHERE hero_model_variant IS NULL; + +ALTER TABLE heroes + ALTER COLUMN hero_model_variant SET NOT NULL; + +ALTER TABLE heroes + ALTER COLUMN hero_model_variant SET DEFAULT floor(random() * 3)::int; + +ALTER TABLE heroes + ADD CONSTRAINT heroes_hero_model_variant_check + CHECK (hero_model_variant BETWEEN 0 AND 2); diff --git a/frontend/src/game/renderer.ts b/frontend/src/game/renderer.ts index 01c9df5..540af1b 100644 --- a/frontend/src/game/renderer.ts +++ b/frontend/src/game/renderer.ts @@ -1203,7 +1203,8 @@ export class GameRenderer { ]); gfx.fill({ color: 0xffffff, alpha: 0.92 * alpha }); - gfx.zIndex = by + 400; // above hero + // Keep bubble behind the text so the text stays visible. + gfx.zIndex = by + 200; // above hero, below text // Text position (centered in bubble) txt.x = bx;