Game as the Core mod: data-driven content and localization
The whole game is now described by Mods/Core — the first consumer of the engine's new MrGameEng.Mods module: - textures/ moved to Mods/Core/Textures; atlases are built at game start from the merged texture tree of all active mods into Cache/ (gitignored, incremental) instead of being committed, and the GameAssets atlas handles are gone with them - terrain, plants and pawns are JSON defs (Mods/Core/Defs) with parent inheritance; scenes read TerrainDef/PlantDef/PawnDef instead of hardcoded arrays, and the TerrainKind enum is retired - HUD strings come from Mods/Core/Languages (ru default, en fallback) through LanguageManager; the language switches at runtime - new console commands: mods, lang [code], defs [type]; atlas now inspects the runtime-built cache - bump engine: MrGameEng.Mods module and the explicit-sources AtlasBuilder overload Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@@ -414,3 +414,7 @@ FodyWeavers.xsd
|
|||||||
# Built Visual Studio Code Extensions
|
# Built Visual Studio Code Extensions
|
||||||
*.vsix
|
*.vsix
|
||||||
|
|
||||||
|
|
||||||
|
# LittleSim
|
||||||
|
Cache/
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,9 @@ Game design docs live in `docs/` and are written in **Russian**. Engine rules li
|
|||||||
```
|
```
|
||||||
engine/ mrgameeng git submodule (own repo, own CLAUDE.md)
|
engine/ mrgameeng git submodule (own repo, own CLAUDE.md)
|
||||||
src/LittleSim the game (net8.0); references engine projects directly
|
src/LittleSim the game (net8.0); references engine projects directly
|
||||||
docs/ концепт, симуляция, roadmap (Russian)
|
Mods/Core the game's own content as a mod: About, Defs, Languages, Textures
|
||||||
|
Cache/ runtime-built atlases (gitignored)
|
||||||
|
docs/ концепт, симуляция, моды, roadmap (Russian)
|
||||||
LittleSim.sln game + engine sources + engine tests — one window for everything
|
LittleSim.sln game + engine sources + engine tests — one window for everything
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -29,18 +31,19 @@ dotnet run --project src/LittleSim -c Release # measure perf in Release only
|
|||||||
dotnet test LittleSim.sln # runs the engine test suites
|
dotnet test LittleSim.sln # runs the engine test suites
|
||||||
```
|
```
|
||||||
|
|
||||||
## Texture atlases
|
## Content and mods
|
||||||
|
|
||||||
Source images live in `textures/` (committed); the game only loads packed atlases from
|
All game content is data in mods (`MrGameEng.Mods`): the game itself ships as the
|
||||||
`src/LittleSim/Assets/Atlases` (also committed — the asset generator emits
|
`Core` mod. `Mods/Core/Defs` holds JSON defs (terrain, plants, pawns — see
|
||||||
`GameAssets.Atlases.*` handles for them). After changing `textures/`, rebuild with:
|
`docs/mods.md`), `Mods/Core/Languages/{ru,en}` holds UI strings (default language is
|
||||||
|
`ru`), `Mods/Core/Textures` holds source images. New mechanics get defs + localization
|
||||||
|
keys, not hardcoded arrays; UI strings go through `LanguageManager`, never inline.
|
||||||
|
|
||||||
```
|
Atlases are built **at game start** from the merged texture tree of all active mods
|
||||||
dotnet run --project engine/tools/MrGameEng.AtlasTool -c Release -- textures src/LittleSim/Assets/Atlases --group-depth 2
|
into `Cache/Atlases` (incremental: unchanged groups are skipped, a clean first run
|
||||||
```
|
takes ~20 s). Region keys are paths relative to `Textures/` without extension:
|
||||||
|
`atlases.GetRegion(device, "things/plant/treeoak/TreeOakA")`. Console commands:
|
||||||
Rebuilds are incremental (unchanged groups are skipped). Region keys are paths relative
|
`mods`, `lang [code]`, `defs [type]`, `atlas [name]`.
|
||||||
to `textures/` without extension: `atlas.GetRegion("things/plant/treeoak/TreeOakA")`.
|
|
||||||
|
|
||||||
## Submodule workflow
|
## Submodule workflow
|
||||||
|
|
||||||
@@ -57,4 +60,6 @@ Never commit a pointer to an unpushed engine commit.
|
|||||||
- Simulation/presentation split: simulation systems mutate components only;
|
- Simulation/presentation split: simulation systems mutate components only;
|
||||||
rendering reads them. No draw calls or UI from simulation systems.
|
rendering reads them. No draw calls or UI from simulation systems.
|
||||||
- ECS-first per the engine: plain `struct : IComponent` data, logic in systems.
|
- ECS-first per the engine: plain `struct : IComponent` data, logic in systems.
|
||||||
|
- Content as data: numbers, textures and balance live in `Mods/Core/Defs`, user-facing
|
||||||
|
strings in `Mods/Core/Languages` — code only defines systems and def classes.
|
||||||
- Every new mechanic gets a dev-console command for testing (`regen`, `timescale`, …).
|
- Every new mechanic gets a dev-console command for testing (`regen`, `timescale`, …).
|
||||||
|
|||||||
@@ -47,6 +47,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MrGameEng.Pathfinding.Tests
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MrGameEng.Collisions.Tests", "engine\tests\MrGameEng.Collisions.Tests\MrGameEng.Collisions.Tests.csproj", "{B9161776-32FE-415E-9401-DC5BB87FC225}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MrGameEng.Collisions.Tests", "engine\tests\MrGameEng.Collisions.Tests\MrGameEng.Collisions.Tests.csproj", "{B9161776-32FE-415E-9401-DC5BB87FC225}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MrGameEng.Mods", "engine\src\MrGameEng.Mods\MrGameEng.Mods.csproj", "{F91AA8C8-FD6B-4B92-BB3A-844DCA932D82}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MrGameEng.Mods.Tests", "engine\tests\MrGameEng.Mods.Tests\MrGameEng.Mods.Tests.csproj", "{07986629-FE7C-42BE-868B-0FCA1915D2A2}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@@ -273,6 +277,30 @@ Global
|
|||||||
{B9161776-32FE-415E-9401-DC5BB87FC225}.Release|x64.Build.0 = Release|Any CPU
|
{B9161776-32FE-415E-9401-DC5BB87FC225}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{B9161776-32FE-415E-9401-DC5BB87FC225}.Release|x86.ActiveCfg = Release|Any CPU
|
{B9161776-32FE-415E-9401-DC5BB87FC225}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{B9161776-32FE-415E-9401-DC5BB87FC225}.Release|x86.Build.0 = Release|Any CPU
|
{B9161776-32FE-415E-9401-DC5BB87FC225}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{F91AA8C8-FD6B-4B92-BB3A-844DCA932D82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{F91AA8C8-FD6B-4B92-BB3A-844DCA932D82}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{F91AA8C8-FD6B-4B92-BB3A-844DCA932D82}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{F91AA8C8-FD6B-4B92-BB3A-844DCA932D82}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{F91AA8C8-FD6B-4B92-BB3A-844DCA932D82}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{F91AA8C8-FD6B-4B92-BB3A-844DCA932D82}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{F91AA8C8-FD6B-4B92-BB3A-844DCA932D82}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{F91AA8C8-FD6B-4B92-BB3A-844DCA932D82}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{F91AA8C8-FD6B-4B92-BB3A-844DCA932D82}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{F91AA8C8-FD6B-4B92-BB3A-844DCA932D82}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{F91AA8C8-FD6B-4B92-BB3A-844DCA932D82}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{F91AA8C8-FD6B-4B92-BB3A-844DCA932D82}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{07986629-FE7C-42BE-868B-0FCA1915D2A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{07986629-FE7C-42BE-868B-0FCA1915D2A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{07986629-FE7C-42BE-868B-0FCA1915D2A2}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{07986629-FE7C-42BE-868B-0FCA1915D2A2}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{07986629-FE7C-42BE-868B-0FCA1915D2A2}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{07986629-FE7C-42BE-868B-0FCA1915D2A2}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{07986629-FE7C-42BE-868B-0FCA1915D2A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{07986629-FE7C-42BE-868B-0FCA1915D2A2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{07986629-FE7C-42BE-868B-0FCA1915D2A2}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{07986629-FE7C-42BE-868B-0FCA1915D2A2}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{07986629-FE7C-42BE-868B-0FCA1915D2A2}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{07986629-FE7C-42BE-868B-0FCA1915D2A2}.Release|x86.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
@@ -298,5 +326,7 @@ Global
|
|||||||
{9406DB4C-FABF-48FE-BEA7-25AD319D2172} = {F4A69A46-AF86-AB4E-7D23-4CCCB7B9A519}
|
{9406DB4C-FABF-48FE-BEA7-25AD319D2172} = {F4A69A46-AF86-AB4E-7D23-4CCCB7B9A519}
|
||||||
{47E5E756-64F9-4B5A-8EC3-B016745166C4} = {CD3B5CE5-C23F-38B4-04AA-A303F94731A5}
|
{47E5E756-64F9-4B5A-8EC3-B016745166C4} = {CD3B5CE5-C23F-38B4-04AA-A303F94731A5}
|
||||||
{B9161776-32FE-415E-9401-DC5BB87FC225} = {CD3B5CE5-C23F-38B4-04AA-A303F94731A5}
|
{B9161776-32FE-415E-9401-DC5BB87FC225} = {CD3B5CE5-C23F-38B4-04AA-A303F94731A5}
|
||||||
|
{F91AA8C8-FD6B-4B92-BB3A-844DCA932D82} = {F4A69A46-AF86-AB4E-7D23-4CCCB7B9A519}
|
||||||
|
{07986629-FE7C-42BE-868B-0FCA1915D2A2} = {CD3B5CE5-C23F-38B4-04AA-A303F94731A5}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"id": "Core",
|
||||||
|
"name": "LittleSim Core",
|
||||||
|
"author": "mrleo1nid",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"description": "Базовый контент LittleSim: рельеф, растения, существа, текстуры и локализация. Игра целиком описана как мод — любой другой мод может переопределить её содержимое.",
|
||||||
|
"dependencies": []
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"type": "Pawn",
|
||||||
|
"defs": [
|
||||||
|
{ "defName": "BaseBeing", "abstract": true, "kind": "being", "sizeCells": 1.1 },
|
||||||
|
{ "defName": "BeingMale", "parent": "BaseBeing", "label": "pawn.being", "texture": "things/pawn/humanlike/bodies/FurCovered_Male_south" },
|
||||||
|
{ "defName": "BeingFemale", "parent": "BaseBeing", "label": "pawn.being", "texture": "things/pawn/humanlike/bodies/FurCovered_Female_south" },
|
||||||
|
{ "defName": "BeingThin", "parent": "BaseBeing", "label": "pawn.being", "texture": "things/pawn/humanlike/bodies/FurCovered_Thin_south" },
|
||||||
|
{ "defName": "BeingFat", "parent": "BaseBeing", "label": "pawn.being", "texture": "things/pawn/humanlike/bodies/FurCovered_Fat_south" },
|
||||||
|
{ "defName": "BeingHulk", "parent": "BaseBeing", "label": "pawn.being", "texture": "things/pawn/humanlike/bodies/FurCovered_Hulk_south" },
|
||||||
|
|
||||||
|
{ "defName": "BaseAnimal", "abstract": true, "kind": "animal" },
|
||||||
|
{ "defName": "Bear", "parent": "BaseAnimal", "label": "pawn.bear", "texture": "things/pawn/animal/bear/Bear_east", "sizeCells": 1.7 },
|
||||||
|
{ "defName": "DeerDoe", "parent": "BaseAnimal", "label": "pawn.deer", "texture": "things/pawn/animal/deer/DeerFemale_east", "sizeCells": 1.4 },
|
||||||
|
{ "defName": "DeerBuck", "parent": "BaseAnimal", "label": "pawn.deer", "texture": "things/pawn/animal/deer/DeerMale_east", "sizeCells": 1.6 },
|
||||||
|
{ "defName": "FoxRed", "parent": "BaseAnimal", "label": "pawn.fox", "texture": "things/pawn/animal/fox_red/Fox_Red_east", "sizeCells": 1.0 },
|
||||||
|
{ "defName": "Hare", "parent": "BaseAnimal", "label": "pawn.hare", "texture": "things/pawn/animal/hare/Hare_east", "sizeCells": 0.7 },
|
||||||
|
{ "defName": "WildBoar", "parent": "BaseAnimal", "label": "pawn.boar", "texture": "things/pawn/animal/wildboar/WildBoar_east", "sizeCells": 1.2 },
|
||||||
|
{ "defName": "Wolf", "parent": "BaseAnimal", "label": "pawn.wolf", "texture": "things/pawn/animal/wolf_timber/Wolf_Timber_east", "sizeCells": 1.4 },
|
||||||
|
{ "defName": "Muffalo", "parent": "BaseAnimal", "label": "pawn.muffalo", "texture": "things/pawn/animal/muffalo/Muffalo_east", "sizeCells": 1.8 },
|
||||||
|
{ "defName": "Squirrel", "parent": "BaseAnimal", "label": "pawn.squirrel", "texture": "things/pawn/animal/squirrel/Squirrel_east", "sizeCells": 0.6 }
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"type": "Plant",
|
||||||
|
"defs": [
|
||||||
|
{ "defName": "BaseTree", "abstract": true, "sizeCells": 2.0, "trunkRadiusCells": 0.28 },
|
||||||
|
{ "defName": "TreeOakA", "parent": "BaseTree", "label": "plant.oak", "texture": "things/plant/treeoak/TreeOakA" },
|
||||||
|
{ "defName": "TreeOakB", "parent": "BaseTree", "label": "plant.oak", "texture": "things/plant/treeoak/TreeOakB" },
|
||||||
|
{ "defName": "TreeBirchA", "parent": "BaseTree", "label": "plant.birch", "texture": "things/plant/treebirch/TreeBirchA" },
|
||||||
|
{ "defName": "TreeGrayPineA", "parent": "BaseTree", "label": "plant.pine", "texture": "things/plant/treegraypine/TreeGrayPineA" },
|
||||||
|
|
||||||
|
{ "defName": "GrassA", "label": "plant.grass", "texture": "things/plant/grass/grassa", "sizeCells": 1.2 },
|
||||||
|
|
||||||
|
{ "defName": "BaseBush", "abstract": true, "label": "plant.bush", "sizeCells": 1.4 },
|
||||||
|
{ "defName": "BushA", "parent": "BaseBush", "texture": "things/plant/bush/BushA" },
|
||||||
|
{ "defName": "BushB", "parent": "BaseBush", "texture": "things/plant/bush/BushB" },
|
||||||
|
{ "defName": "BushC", "parent": "BaseBush", "texture": "things/plant/bush/BushC" }
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"type": "Terrain",
|
||||||
|
"defs": [
|
||||||
|
{ "defName": "DeepWater", "label": "terrain.deepwater", "maxHeight": 0.30, "color": [23, 63, 95] },
|
||||||
|
{ "defName": "Water", "label": "terrain.water", "maxHeight": 0.42, "color": [32, 99, 155] },
|
||||||
|
{ "defName": "Sand", "label": "terrain.sand", "maxHeight": 0.48, "color": [237, 201, 120],
|
||||||
|
"isLand": true, "surface": "terrain/surfaces/sand" },
|
||||||
|
{ "defName": "Grass", "label": "terrain.grass", "maxHeight": 0.68, "color": [90, 160, 70],
|
||||||
|
"isLand": true, "surface": "terrain/surfaces/mossy",
|
||||||
|
"scatter": [
|
||||||
|
{ "chance": 0.35, "options": ["GrassA"] },
|
||||||
|
{ "chance": 0.07, "options": ["BushA", "BushB", "BushC"] }
|
||||||
|
] },
|
||||||
|
{ "defName": "Forest", "label": "terrain.forest", "maxHeight": 0.85, "color": [44, 110, 50],
|
||||||
|
"isLand": true, "surface": "terrain/surfaces/soil",
|
||||||
|
"scatter": [
|
||||||
|
{ "chance": 0.35, "options": ["TreeOakA", "TreeOakB", "TreeBirchA", "TreeGrayPineA"] }
|
||||||
|
] },
|
||||||
|
{ "defName": "Mountain", "label": "terrain.mountain", "maxHeight": 1.01, "color": [136, 132, 128],
|
||||||
|
"surface": "terrain/surfaces/roughhewnrock" }
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"hud.world": "LittleSim | seed {0} | population {1} | {2} FPS",
|
||||||
|
"hud.terrain": "LittleSim | terrain | seed {0} | animals: {1}",
|
||||||
|
"hud.controls": "WASD — camera, wheel — zoom, ` — console ('help' lists commands)",
|
||||||
|
|
||||||
|
"terrain.deepwater": "deep water",
|
||||||
|
"terrain.water": "water",
|
||||||
|
"terrain.sand": "sand",
|
||||||
|
"terrain.grass": "grass",
|
||||||
|
"terrain.forest": "forest",
|
||||||
|
"terrain.mountain": "mountains",
|
||||||
|
|
||||||
|
"plant.oak": "oak",
|
||||||
|
"plant.birch": "birch",
|
||||||
|
"plant.pine": "pine",
|
||||||
|
"plant.grass": "grass tuft",
|
||||||
|
"plant.bush": "bush",
|
||||||
|
|
||||||
|
"pawn.being": "being",
|
||||||
|
"pawn.bear": "bear",
|
||||||
|
"pawn.deer": "deer",
|
||||||
|
"pawn.fox": "fox",
|
||||||
|
"pawn.hare": "hare",
|
||||||
|
"pawn.boar": "boar",
|
||||||
|
"pawn.wolf": "wolf",
|
||||||
|
"pawn.muffalo": "muffalo",
|
||||||
|
"pawn.squirrel": "squirrel"
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"hud.world": "LittleSim | сид {0} | население {1} | {2} FPS",
|
||||||
|
"hud.terrain": "LittleSim | террейн | сид {0} | животных: {1}",
|
||||||
|
"hud.controls": "WASD — камера, колесо — зум, ` — консоль ('help' — список команд)",
|
||||||
|
|
||||||
|
"terrain.deepwater": "глубокая вода",
|
||||||
|
"terrain.water": "вода",
|
||||||
|
"terrain.sand": "песок",
|
||||||
|
"terrain.grass": "трава",
|
||||||
|
"terrain.forest": "лес",
|
||||||
|
"terrain.mountain": "горы",
|
||||||
|
|
||||||
|
"plant.oak": "дуб",
|
||||||
|
"plant.birch": "берёза",
|
||||||
|
"plant.pine": "сосна",
|
||||||
|
"plant.grass": "пучок травы",
|
||||||
|
"plant.bush": "куст",
|
||||||
|
|
||||||
|
"pawn.being": "житель",
|
||||||
|
"pawn.bear": "медведь",
|
||||||
|
"pawn.deer": "олень",
|
||||||
|
"pawn.fox": "лиса",
|
||||||
|
"pawn.hare": "заяц",
|
||||||
|
"pawn.boar": "кабан",
|
||||||
|
"pawn.wolf": "волк",
|
||||||
|
"pawn.muffalo": "муффало",
|
||||||
|
"pawn.squirrel": "белка"
|
||||||
|
}
|
||||||
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 8.1 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 1013 B After Width: | Height: | Size: 1013 B |
|
Before Width: | Height: | Size: 683 B After Width: | Height: | Size: 683 B |
|
Before Width: | Height: | Size: 839 B After Width: | Height: | Size: 839 B |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 798 B After Width: | Height: | Size: 798 B |
|
Before Width: | Height: | Size: 633 B After Width: | Height: | Size: 633 B |
|
Before Width: | Height: | Size: 520 B After Width: | Height: | Size: 520 B |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 354 B After Width: | Height: | Size: 354 B |
|
Before Width: | Height: | Size: 656 B After Width: | Height: | Size: 656 B |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 999 B After Width: | Height: | Size: 999 B |
|
Before Width: | Height: | Size: 489 B After Width: | Height: | Size: 489 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 843 B After Width: | Height: | Size: 843 B |
|
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 832 KiB After Width: | Height: | Size: 832 KiB |
|
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 81 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 203 KiB After Width: | Height: | Size: 203 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 863 KiB After Width: | Height: | Size: 863 KiB |
|
Before Width: | Height: | Size: 873 KiB After Width: | Height: | Size: 873 KiB |
|
Before Width: | Height: | Size: 962 KiB After Width: | Height: | Size: 962 KiB |
|
Before Width: | Height: | Size: 207 KiB After Width: | Height: | Size: 207 KiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 872 KiB After Width: | Height: | Size: 872 KiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 899 KiB After Width: | Height: | Size: 899 KiB |
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 987 KiB After Width: | Height: | Size: 987 KiB |
|
Before Width: | Height: | Size: 932 KiB After Width: | Height: | Size: 932 KiB |
|
Before Width: | Height: | Size: 853 KiB After Width: | Height: | Size: 853 KiB |
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 867 KiB After Width: | Height: | Size: 867 KiB |
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 576 KiB After Width: | Height: | Size: 576 KiB |
|
Before Width: | Height: | Size: 120 B After Width: | Height: | Size: 120 B |
|
Before Width: | Height: | Size: 505 B After Width: | Height: | Size: 505 B |
|
Before Width: | Height: | Size: 509 B After Width: | Height: | Size: 509 B |
|
Before Width: | Height: | Size: 512 KiB After Width: | Height: | Size: 512 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 8.8 KiB After Width: | Height: | Size: 8.8 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 8.0 KiB |
|
Before Width: | Height: | Size: 455 B After Width: | Height: | Size: 455 B |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |