Compare commits
3 Commits
e20268de06
...
940592395d
Author | SHA1 | Date | |
---|---|---|---|
|
940592395d | ||
|
6c384cbc26 | ||
|
d1c1c3bfac |
@ -5,11 +5,12 @@ globals = {
|
|||||||
"minetest",
|
"minetest",
|
||||||
"ebiometrees",
|
"ebiometrees",
|
||||||
"eaction"
|
"eaction"
|
||||||
|
"ebiome"
|
||||||
}
|
}
|
||||||
|
|
||||||
read_globals = {
|
read_globals = {
|
||||||
string = {fields = {"split"}},
|
string = {fields = {"split"}},
|
||||||
table = {fields = {"copy", "getn"}},
|
table = {fields = {"copy", "getn", "shuffle"}},
|
||||||
|
|
||||||
-- Builtin
|
-- Builtin
|
||||||
"vector", "ItemStack",
|
"vector", "ItemStack",
|
||||||
|
6
mods/ebiome/api.lua
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
function ebiome.register_biome(name, data)
|
||||||
|
if not data.type or data.type == "simple"
|
||||||
|
then
|
||||||
|
minetest.register_biome(name, data)
|
||||||
|
end
|
||||||
|
end
|
@ -1,5 +0,0 @@
|
|||||||
ebiome = {
|
|
||||||
blocktypes = {
|
|
||||||
stone = "eterrain:rock"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,2 +1,3 @@
|
|||||||
dofile(minetest.get_modpath("ebiome") .. "/biomes/grasslands.lua")
|
ebiome = {}
|
||||||
|
dofile(minetest.get_modpath("ebiome") .. "/api.lua")
|
||||||
|
|
||||||
|
@ -1,3 +1,2 @@
|
|||||||
depends = ebiometrees
|
|
||||||
description = biome mod
|
description = biome mod
|
||||||
name = ebiome
|
name = ebiome
|
||||||
|
16
mods/ebiometrees/api.lua
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
ebiometrees.registered_trees = {}
|
||||||
|
|
||||||
|
function ebiometrees.register_tree(name, data)
|
||||||
|
ebiometrees.registered_trees[name] = data
|
||||||
|
ebiometrees.register_subnodes(name)
|
||||||
|
end
|
||||||
|
|
||||||
|
function ebiometrees.register_subnodes(tree_name)
|
||||||
|
local modname = tree_name:match("([^:]*):")
|
||||||
|
local basename = tree_name:match(":([^:]+)")
|
||||||
|
local data = ebiometrees.registered_trees[tree_name]
|
||||||
|
ebiometrees.register_tree_sapling(modname, basename, data)
|
||||||
|
ebiometrees.register_tree_sprout(modname, basename, data)
|
||||||
|
ebiometrees.register_tree_leaves(modname, basename, data)
|
||||||
|
ebiometrees.register_tree_trunks(modname, basename, data)
|
||||||
|
end
|
@ -1,2 +1,12 @@
|
|||||||
|
ebiometrees = {}
|
||||||
|
ebiometrees.directions = {
|
||||||
|
up = vector.new( 0, 1, 0),
|
||||||
|
down = vector.new( 0, -1, 0),
|
||||||
|
north = vector.new( 0, 0, 1),
|
||||||
|
east = vector.new( 1, 0, 0),
|
||||||
|
south = vector.new( 0, 0, -1),
|
||||||
|
west = vector.new(-1, 0, 0)
|
||||||
|
}
|
||||||
dofile(minetest.get_modpath("ebiometrees").."/sapling.lua")
|
dofile(minetest.get_modpath("ebiometrees").."/sapling.lua")
|
||||||
dofile(minetest.get_modpath("ebiometrees").."/tree.lua")
|
dofile(minetest.get_modpath("ebiometrees").."/tree.lua")
|
||||||
|
dofile(minetest.get_modpath("ebiometrees").."/api.lua")
|
||||||
|
@ -1,28 +1,86 @@
|
|||||||
ebiometrees = {}
|
function ebiometrees.grow_closure(nextstage)
|
||||||
|
local function growtree(pos)
|
||||||
function ebiometrees.get_sapling_grower(sprout_name)
|
minetest.set_node(pos, {name=nextstage})
|
||||||
local function rooter(pos)
|
|
||||||
minetest.set_node(pos, {name=sprout_name})
|
|
||||||
end
|
end
|
||||||
return rooter
|
return growtree
|
||||||
end
|
end
|
||||||
|
|
||||||
function ebiometrees.get_sprout_grower(trunk_name, apex_name)
|
|
||||||
local function grower(pos)
|
function ebiometrees.where_to_grow_trunk_closure(grow_preferences, leaves_name)
|
||||||
minetest.set_node(pos, {name=trunk_name})
|
local function where_to_grow_trunk(pos)
|
||||||
local upper = {x=pos.x, y=pos.y+1, z=pos.z}
|
for _, directions in ipairs(grow_preferences)
|
||||||
minetest.set_node(upper, {name=apex_name})
|
do
|
||||||
|
table.shuffle(directions)
|
||||||
|
local candidate_dir = directions[1]
|
||||||
|
local candidate = vector.copy(pos):add(candidate_dir)
|
||||||
|
local node = minetest.get_node_or_nil(candidate)
|
||||||
|
corner1 = pos:add({x=-1, y=-1, z=-1}):add(candidate_dir:multiply(2))
|
||||||
|
corner2 = pos:add({x= 1, y= 1, z= 1}):add(candidate_dir:multiply(2))
|
||||||
|
local spacious, _ = minetest.find_nodes_in_area(
|
||||||
|
corner1, corner2, "group:treetrunk"
|
||||||
|
)
|
||||||
|
minetest.chat_send_all(dump2(spacious))
|
||||||
|
minetest.chat_send_all(#spacious)
|
||||||
|
if node and node.name == leaves_name and #spacious == 0
|
||||||
|
then
|
||||||
|
return candidate
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
return grower
|
return where_to_grow_trunk
|
||||||
end
|
end
|
||||||
|
|
||||||
function ebiometrees.root_sapling(pos)
|
|
||||||
minetest.set_node(pos, {name="ebiome:oak_sprout"})
|
function ebiometrees.grow_trunk_closure(trunk_terminal_name, grow_preferences, leaves_name, grow_limit)
|
||||||
return false
|
local function grow_trunk(pos)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
if meta:get_int("ebiometrees:distance") > grow_limit
|
||||||
|
then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local where = ebiometrees.where_to_grow_trunk_closure(grow_preferences, leaves_name)
|
||||||
|
local there = where(pos)
|
||||||
|
if there
|
||||||
|
then
|
||||||
|
minetest.set_node(there, {name=trunk_terminal_name})
|
||||||
|
local newmeta = minetest.get_meta(there)
|
||||||
|
newmeta:set_int("ebiometrees:distance", meta:get_int("ebiometrees:distance")+1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return grow_trunk
|
||||||
end
|
end
|
||||||
|
|
||||||
function ebiometrees.set_rooting_sapling(itemstack, placer, pointed_thing)
|
|
||||||
itemstack = minetest.item_place(itemstack, placer, pointed_thing)
|
function ebiometrees.grow_leaves_closure(leaves_name)
|
||||||
minetest.get_node_timer(pointed_thing.above):start(3)
|
local function grow_leaves(pos)
|
||||||
return itemstack
|
local free_node = minetest.find_node_near(pos, 1, "air")
|
||||||
|
if free_node
|
||||||
|
then
|
||||||
|
minetest.set_node(free_node, {name=leaves_name})
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
return grow_leaves
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function ebiometrees.tree_grower(leaves_name, grow_preferences, terminal_name, nextstage, age_max, grow_limit)
|
||||||
|
local grow_trunk = ebiometrees.grow_trunk_closure(terminal_name, grow_preferences, leaves_name, grow_limit)
|
||||||
|
local grow_leaves = ebiometrees.grow_leaves_closure(leaves_name)
|
||||||
|
local function grow_tree(pos)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
meta:set_int("ebiometrees:age", meta:get_int("ebiometrees:age")+1)
|
||||||
|
grow_trunk(pos)
|
||||||
|
grow_leaves(pos)
|
||||||
|
if nextstage
|
||||||
|
then
|
||||||
|
if meta:get_int("ebiometrees:age") > age_max
|
||||||
|
then
|
||||||
|
minetest.set_node(pos, {name=nextstage})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
return grow_tree
|
||||||
|
end
|
||||||
|
|
||||||
|
40
mods/ebiometrees/tests/ebiometrees_api_spec.lua
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
package.path = "../?.lua;" .. package.path
|
||||||
|
|
||||||
|
_G.ebiometrees = {}
|
||||||
|
require("api")
|
||||||
|
require("tree")
|
||||||
|
require("sapling")
|
||||||
|
|
||||||
|
registries={}
|
||||||
|
|
||||||
|
|
||||||
|
function _G.ebiometrees.register_tree_trunks(m, n, d)
|
||||||
|
registries.trunks = m..":"..n
|
||||||
|
end
|
||||||
|
function _G.ebiometrees.register_tree_sprout(m, n, d)
|
||||||
|
registries.sprout = m..":"..n
|
||||||
|
end
|
||||||
|
function _G.ebiometrees.register_tree_leaves(m, n, d)
|
||||||
|
registries.leaves = m..":"..n
|
||||||
|
end
|
||||||
|
function _G.ebiometrees.register_tree_sapling(m, n, d)
|
||||||
|
registries.sapling = m..":"..n
|
||||||
|
end
|
||||||
|
|
||||||
|
testtree = {
|
||||||
|
groups = { foo = 1}
|
||||||
|
}
|
||||||
|
|
||||||
|
describe("Trees", function()
|
||||||
|
|
||||||
|
it("can register tree", function()
|
||||||
|
assert.is_nil(ebiometrees.registered_trees["test:tree"])
|
||||||
|
ebiometrees.register_tree("test:tree", testtree)
|
||||||
|
assert.is_not_nil(ebiometrees.registered_trees["test:tree"])
|
||||||
|
end)
|
||||||
|
|
||||||
|
it("attempts to register sapling", function()
|
||||||
|
assert.is_equal("test:tree", registries.sapling)
|
||||||
|
end)
|
||||||
|
|
||||||
|
end)
|
BIN
mods/ebiometrees/textures/ebiometrees_indicator.png
Normal file
After Width: | Height: | Size: 505 B |
BIN
mods/ebiometrees/textures/ebiometrees_indicator2.png
Normal file
After Width: | Height: | Size: 525 B |
BIN
mods/ebiometrees/textures/ebiometrees_indicator3.png
Normal file
After Width: | Height: | Size: 525 B |
@ -1,33 +1,58 @@
|
|||||||
|
|
||||||
local function growth_timer(pos)
|
local function growth_timer(pos)
|
||||||
minetest.get_node_timer(pos):start(3)
|
minetest.get_node_timer(pos):start(3)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
meta:mark_as_private("ebiometrees:age")
|
||||||
|
meta:set_int("ebiometrees:age", 0)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function ebiometrees.register_tree_leaves(modname, basename, data)
|
||||||
|
local S = minetest.get_translator(modname)
|
||||||
|
local leaves_groups = table.copy(data.groups)
|
||||||
|
leaves_groups.leaves = 1
|
||||||
|
leaves_groups.leafdecay = 3
|
||||||
|
leaves_groups.snappy = 3
|
||||||
|
minetest.register_node(modname..":"..basename.."_leaves", {
|
||||||
|
description = S(data.description.." leaves"),
|
||||||
|
drawtype = "allfaces_optional",
|
||||||
|
waving = 1,
|
||||||
|
tiles = { modname.."_"..basename.."_leaves.png" },
|
||||||
|
special_tiles = { modname.."_"..basename.."_leaves_simple.png" },
|
||||||
|
paramtype = "light",
|
||||||
|
is_ground_content = false,
|
||||||
|
groups = leaves_groups
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
local S = minetest.get_translator("ebiometrees")
|
function ebiometrees.register_tree_sapling(modname, basename, data)
|
||||||
function ebiometrees.register_tree(modname, basename, data)
|
|
||||||
-- register saplings
|
-- register saplings
|
||||||
local sapling_name = modname..":"..basename.."_sapling"
|
local S = minetest.get_translator(modname)
|
||||||
local sprout_name = modname..":"..basename.."_sprout"
|
|
||||||
|
|
||||||
local sapling_groups = table.copy(data.groups)
|
local sapling_groups = table.copy(data.groups)
|
||||||
local sprout_groups = table.copy(data.groups)
|
|
||||||
sapling_groups.sapling = 1
|
sapling_groups.sapling = 1
|
||||||
sapling_groups.snappy = 2
|
sapling_groups.snappy = 2
|
||||||
sapling_groups.dig_immediate = 3
|
sapling_groups.dig_immediate = 3
|
||||||
sprout_groups.sapling = 1
|
minetest.register_node(modname..":"..basename.."_sapling", {
|
||||||
sprout_groups.snappy = 2
|
|
||||||
minetest.register_node(sapling_name, {
|
|
||||||
description = S(data.description.." sapling"),
|
description = S(data.description.." sapling"),
|
||||||
drawtype = "plantlike",
|
drawtype = "plantlike",
|
||||||
tiles = { modname.."_"..basename.."_sapling.png"},
|
tiles = { modname.."_"..basename.."_sapling.png"},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
on_timer = ebiometrees.get_sapling_grower(sprout_name),
|
on_timer = ebiometrees.grow_closure(
|
||||||
|
modname..":"..basename.."_sprout"
|
||||||
|
),
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
walkable = false,
|
walkable = false,
|
||||||
groups = sapling_groups,
|
groups = sapling_groups,
|
||||||
on_construct = growth_timer
|
on_construct = growth_timer
|
||||||
})
|
})
|
||||||
minetest.register_node(sprout_name, {
|
end
|
||||||
|
|
||||||
|
function ebiometrees.register_tree_sprout(modname, basename, data)
|
||||||
|
-- register tree leaves
|
||||||
|
local S = minetest.get_translator(modname)
|
||||||
|
local sprout_groups = table.copy(data.groups)
|
||||||
|
sprout_groups.sapling = 1
|
||||||
|
sprout_groups.snappy = 2
|
||||||
|
minetest.register_node(modname..":"..basename.."_sprout", {
|
||||||
description = S(data.description.." sprout"),
|
description = S(data.description.." sprout"),
|
||||||
drawtype = "plantlike",
|
drawtype = "plantlike",
|
||||||
visual_scale = 1.4,
|
visual_scale = 1.4,
|
||||||
@ -35,15 +60,20 @@ function ebiometrees.register_tree(modname, basename, data)
|
|||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
walkable = false,
|
walkable = false,
|
||||||
on_timer = ebiometrees.get_sprout_grower(
|
on_timer = ebiometrees.grow_closure(
|
||||||
modname..":"..basename.."_trunk_growing_straight",
|
modname..":"..basename.."_trunk_growing_terminal"
|
||||||
modname..":"..basename.."_trunk_growing_terminal"),
|
),
|
||||||
groups = sprout_groups,
|
groups = sprout_groups,
|
||||||
on_construct = growth_timer
|
on_construct = growth_timer
|
||||||
})
|
})
|
||||||
-- registers tree and corresponding nodes
|
end
|
||||||
|
|
||||||
|
function ebiometrees.register_tree_trunks(modname, basename, data)
|
||||||
|
local S = minetest.get_translator(modname)
|
||||||
|
-- registers corresponding trunk nodes
|
||||||
local trunk_groups = table.copy(data.groups)
|
local trunk_groups = table.copy(data.groups)
|
||||||
trunk_groups.choppy = 2 -- TODO: customizations
|
trunk_groups.choppy = 2 -- TODO: customizations
|
||||||
|
trunk_groups.treetrunk = 1
|
||||||
local trunk_types = {"growing", "normal"}
|
local trunk_types = {"growing", "normal"}
|
||||||
local trunk_subtypes = {"terminal", "straight", "corner",
|
local trunk_subtypes = {"terminal", "straight", "corner",
|
||||||
"tjunction", "t2junction", "xjunction",
|
"tjunction", "t2junction", "xjunction",
|
||||||
@ -54,7 +84,7 @@ function ebiometrees.register_tree(modname, basename, data)
|
|||||||
local texture_basename = modname.."_"..basename.."_trunk_"..trunk_type.."_"
|
local texture_basename = modname.."_"..basename.."_trunk_"..trunk_type.."_"
|
||||||
local subtype_tiles = {
|
local subtype_tiles = {
|
||||||
terminal = {
|
terminal = {
|
||||||
texture_basename.."terminal.png",
|
texture_basename.."top.png",
|
||||||
texture_basename.."slice.png",
|
texture_basename.."slice.png",
|
||||||
texture_basename.."terminal.png"
|
texture_basename.."terminal.png"
|
||||||
},
|
},
|
||||||
@ -109,19 +139,37 @@ function ebiometrees.register_tree(modname, basename, data)
|
|||||||
}
|
}
|
||||||
for _, trunk_subtype in ipairs(trunk_subtypes)
|
for _, trunk_subtype in ipairs(trunk_subtypes)
|
||||||
do
|
do
|
||||||
minetest.register_node(
|
local nodespec = {
|
||||||
modname..":"..basename.."_trunk_"..trunk_type.."_"..trunk_subtype, {
|
|
||||||
description = S(data.description.." "..trunk_type.." "..trunk_subtype),
|
description = S(data.description.." "..trunk_type.." "..trunk_subtype),
|
||||||
groups = trunk_groups,
|
groups = trunk_groups,
|
||||||
tiles = subtype_tiles[trunk_subtype],
|
tiles = subtype_tiles[trunk_subtype],
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
on_place = minetest.rotate_node,
|
on_place = minetest.rotate_node,
|
||||||
on_timer = function(pos)
|
|
||||||
return true
|
|
||||||
end,
|
|
||||||
on_construct = growth_timer
|
on_construct = growth_timer
|
||||||
})
|
}
|
||||||
|
if trunk_type == "growing"
|
||||||
|
then
|
||||||
|
nodespec.on_timer = ebiometrees.tree_grower(
|
||||||
|
modname..":"..basename.."_leaves",
|
||||||
|
{
|
||||||
|
{ebiometrees.directions.up},
|
||||||
|
{
|
||||||
|
ebiometrees.directions.north,
|
||||||
|
ebiometrees.directions.east,
|
||||||
|
ebiometrees.directions.south,
|
||||||
|
ebiometrees.directions.west
|
||||||
|
}
|
||||||
|
},
|
||||||
|
modname..":"..basename.."_trunk_growing_terminal",
|
||||||
|
modname..":"..basename.."_trunk_normal_"..trunk_subtype,
|
||||||
|
20,
|
||||||
|
10
|
||||||
|
)
|
||||||
|
end
|
||||||
|
minetest.register_node(
|
||||||
|
modname..":"..basename.."_trunk_"..trunk_type.."_"..trunk_subtype,
|
||||||
|
nodespec)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
local S = minetest.get_translator("ebiome")
|
local S = minetest.get_translator("electric_biomes")
|
||||||
minetest.register_biome({
|
minetest.register_biome({
|
||||||
name = "grasslands",
|
name = "grasslands",
|
||||||
node_top = "mapgen_topsoil",
|
node_top = "mapgen_topsoil",
|
||||||
@ -10,13 +10,13 @@ minetest.register_biome({
|
|||||||
heat_point = 50,
|
heat_point = 50,
|
||||||
humidity_point = 50,
|
humidity_point = 50,
|
||||||
})
|
})
|
||||||
ebiometrees.register_tree("ebiome", "oak",{
|
ebiometrees.register_tree("electric_biomes:oak",{
|
||||||
description = "Oak",
|
description = "Oak",
|
||||||
groups = {flammable = 2}
|
groups = {flammable = 2}
|
||||||
})
|
})
|
||||||
minetest.register_node("ebiome:grass", {
|
minetest.register_node("electric_biomes:grass", {
|
||||||
description = S("Grass"),
|
description = S("Grass"),
|
||||||
tiles = {"ebiome_grass.png"},
|
tiles = {"electric_biomes_grass.png"},
|
||||||
drawtype = "plantlike",
|
drawtype = "plantlike",
|
||||||
visual_scale = 1.4,
|
visual_scale = 1.4,
|
||||||
waving = 1,
|
waving = 1,
|
||||||
@ -29,8 +29,8 @@ minetest.register_node("ebiome:grass", {
|
|||||||
fuel = 1
|
fuel = 1
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
minetest.register_alias("grass", "ebiome:grass")
|
minetest.register_alias("grass", "electric_biomes:grass")
|
||||||
minetest.register_alias("grassplant", "ebiome:grass")
|
minetest.register_alias("grassplant", "electric_biomes:grass")
|
||||||
|
|
||||||
minetest.register_decoration({
|
minetest.register_decoration({
|
||||||
deco_type = "simple",
|
deco_type = "simple",
|
||||||
@ -40,7 +40,7 @@ minetest.register_decoration({
|
|||||||
biomes = {"grasslands"},
|
biomes = {"grasslands"},
|
||||||
y_max = 200,
|
y_max = 200,
|
||||||
y_min = 1,
|
y_min = 1,
|
||||||
decoration = "ebiome:grass",
|
decoration = "electric_biomes:grass",
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
2
mods/electric_biomes/init.lua
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
dofile(minetest.get_modpath("electric_biomes") .. "/biomes/grasslands.lua")
|
||||||
|
|
3
mods/electric_biomes/mod.conf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
depends = ebiome, ebiometrees
|
||||||
|
description = electric game biomes
|
||||||
|
name = electric_biomes
|
Before Width: | Height: | Size: 914 B After Width: | Height: | Size: 914 B |
BIN
mods/electric_biomes/textures/electric_biomes_oak_leaves.png
Normal file
After Width: | Height: | Size: 667 B |
After Width: | Height: | Size: 674 B |
Before Width: | Height: | Size: 661 B After Width: | Height: | Size: 661 B |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 929 B After Width: | Height: | Size: 929 B |
Before Width: | Height: | Size: 841 B After Width: | Height: | Size: 841 B |
Before Width: | Height: | Size: 745 B After Width: | Height: | Size: 745 B |
Before Width: | Height: | Size: 907 B After Width: | Height: | Size: 907 B |
Before Width: | Height: | Size: 918 B After Width: | Height: | Size: 918 B |
After Width: | Height: | Size: 936 B |
Before Width: | Height: | Size: 952 B After Width: | Height: | Size: 952 B |
Before Width: | Height: | Size: 808 B After Width: | Height: | Size: 808 B |
Before Width: | Height: | Size: 699 B After Width: | Height: | Size: 699 B |
Before Width: | Height: | Size: 737 B After Width: | Height: | Size: 737 B |
Before Width: | Height: | Size: 753 B After Width: | Height: | Size: 753 B |
Before Width: | Height: | Size: 797 B After Width: | Height: | Size: 797 B |
After Width: | Height: | Size: 829 B |
Before Width: | Height: | Size: 847 B After Width: | Height: | Size: 847 B |