diff --git a/web/src/components/game/AnimatedAvatar.vue b/web/src/components/game/AnimatedAvatar.vue
new file mode 100644
index 0000000..31467f1
--- /dev/null
+++ b/web/src/components/game/AnimatedAvatar.vue
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/web/src/components/game/EntityLayer.vue b/web/src/components/game/EntityLayer.vue
index 6dfbef7..4392ceb 100644
--- a/web/src/components/game/EntityLayer.vue
+++ b/web/src/components/game/EntityLayer.vue
@@ -1,74 +1,18 @@
-
-
-
-
-
- drawFallback(g, avatar)"
- />
-
-
-
-
+ :avatar="avatar"
+ :tile-size="TILE_SIZE"
+ />
-
diff --git a/web/src/components/game/MapLayer.vue b/web/src/components/game/MapLayer.vue
index b3ae348..f736ce0 100644
--- a/web/src/components/game/MapLayer.vue
+++ b/web/src/components/game/MapLayer.vue
@@ -17,6 +17,7 @@ async function initMap() {
const res = await fetch('/api/map')
const data = await res.json()
const mapData = data.data
+ // Regions are already provided by backend
regions.value = data.regions || []
if (!mapData) return
@@ -69,9 +70,9 @@ onMounted(() => {
function getRegionStyle(type: string) {
const base = {
fontFamily: '"Microsoft YaHei", sans-serif',
- fontSize: type === 'sect' ? 48 : 64,
+ fontSize: type === 'sect' ? 48 : 64,
fill: type === 'sect' ? 0xffcc00 : (type === 'city' ? 0xccffcc : 0xffffff),
- stroke: { color: 0x000000, width: 8, join: 'round' },
+ stroke: { color: 0x000000, width: 8, join: 'round' },
align: 'center',
dropShadow: {
color: '#000000',
@@ -86,18 +87,21 @@ function getRegionStyle(type: string) {
-
-
-
+
+
+
+
+
+
+
+
-