Skip to content
Snippets Groups Projects
Commit d811b489 authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Merge branch '3-improve-ui-add-custom-graphics' into 'master'

Resolve "Improve UI, add custom graphics"

Closes #3

See merge request !7
parents 698d376a bf8bd049
No related branches found
No related tags found
1 merge request!7Resolve "Improve UI, add custom graphics"
Pipeline #5957 passed
Showing
with 539 additions and 109 deletions
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
app.versionName=0.0.6
app.versionCode=6
app.versionName=0.0.7
app.versionCode=7
assets/skins/default_house.png

2.3 KiB

Improve UI.
Améliorations graphiques.
......@@ -98,7 +98,6 @@ class MyApp extends StatelessWidget {
}
final List<String> skinImages = [
'house',
'seed',
];
......
class Category {
final String key;
final String text;
final String emoji;
const Category({
required this.key,
required this.text,
required this.emoji,
});
@override
String toString() {
return '$Category(${toJson()})';
}
Map<String, dynamic> toJson() {
return {
'key': key,
'text': text,
'emoji': emoji,
};
}
}
class Letter {
final String key;
final String text;
const Letter({
required this.key,
required this.text,
});
@override
String toString() {
return '$Letter(${toJson()})';
}
Map<String, dynamic> toJson() {
return {
'key': key,
'text': text,
};
}
}
......@@ -25,7 +25,7 @@ class GameLayout extends StatelessWidget {
const SizedBox(height: 8),
const GameBoardWidget(),
const SizedBox(height: 8),
const Expanded(child: SizedBox.shrink()),
// const Expanded(child: SizedBox.shrink()),
currentGame.isFinished ? const GameEndWidget() : const SizedBox.shrink(),
],
),
......
......@@ -18,19 +18,31 @@ class GameBoardWidget extends StatelessWidget {
final Game currentGame = gameState.currentGame;
final Color borderColor = Theme.of(context).colorScheme.onSurface;
var screenSize = MediaQuery.of(context).size;
const totalMargins = 9 * 4;
final availableHeight = screenSize.height - totalMargins;
final double houseHeight = availableHeight / 10;
final double houseWidth = houseHeight;
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
currentGame.isFinished
? const SizedBox.shrink()
: const GamePlayerWidget(playerIndex: 0),
: SizedBox(
width: houseWidth,
height: houseHeight,
child: const GamePlayerWidget(playerIndex: 0),
),
Container(
margin: const EdgeInsets.all(2),
padding: const EdgeInsets.all(2),
decoration: BoxDecoration(
color: borderColor,
borderRadius: BorderRadius.circular(2),
borderRadius: BorderRadius.circular(40),
border: Border.all(
color: borderColor,
width: 6,
......@@ -40,43 +52,103 @@ class GameBoardWidget extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const GameScoreWidget(playerIndex: 0),
SizedBox(
width: 2 * houseWidth,
height: houseHeight,
child: const GameScoreWidget(playerIndex: 1),
),
Table(
defaultColumnWidth: const IntrinsicColumnWidth(),
children: const [
children: [
TableRow(children: [
GameHouseWidget(cellIndex: 0),
GameHouseWidget(cellIndex: 11),
SizedBox(
width: houseWidth,
height: houseHeight,
child: const GameHouseWidget(cellIndex: 0),
),
SizedBox(
width: houseWidth,
height: houseHeight,
child: const GameHouseWidget(cellIndex: 11),
),
]),
TableRow(children: [
GameHouseWidget(cellIndex: 1),
GameHouseWidget(cellIndex: 10),
SizedBox(
width: houseWidth,
height: houseHeight,
child: const GameHouseWidget(cellIndex: 1),
),
SizedBox(
width: houseWidth,
height: houseHeight,
child: const GameHouseWidget(cellIndex: 10),
),
]),
TableRow(children: [
GameHouseWidget(cellIndex: 2),
GameHouseWidget(cellIndex: 9),
SizedBox(
width: houseWidth,
height: houseHeight,
child: const GameHouseWidget(cellIndex: 2),
),
SizedBox(
width: houseWidth,
height: houseHeight,
child: const GameHouseWidget(cellIndex: 9),
),
]),
TableRow(children: [
GameHouseWidget(cellIndex: 3),
GameHouseWidget(cellIndex: 8),
SizedBox(
width: houseWidth,
height: houseHeight,
child: const GameHouseWidget(cellIndex: 3),
),
SizedBox(
width: houseWidth,
height: houseHeight,
child: const GameHouseWidget(cellIndex: 8),
),
]),
TableRow(children: [
GameHouseWidget(cellIndex: 4),
GameHouseWidget(cellIndex: 7),
SizedBox(
width: houseWidth,
height: houseHeight,
child: const GameHouseWidget(cellIndex: 4),
),
SizedBox(
width: houseWidth,
height: houseHeight,
child: const GameHouseWidget(cellIndex: 7),
),
]),
TableRow(children: [
GameHouseWidget(cellIndex: 5),
GameHouseWidget(cellIndex: 6),
SizedBox(
width: houseWidth,
height: houseHeight,
child: const GameHouseWidget(cellIndex: 5),
),
SizedBox(
width: houseWidth,
height: houseHeight,
child: const GameHouseWidget(cellIndex: 6),
),
]),
],
),
const GameScoreWidget(playerIndex: 1)
SizedBox(
width: 2 * houseWidth,
height: houseHeight,
child: const GameScoreWidget(playerIndex: 0),
),
],
),
),
currentGame.isFinished
? const SizedBox.shrink()
: const GamePlayerWidget(playerIndex: 1),
: SizedBox(
width: houseWidth,
height: houseHeight,
child: const GamePlayerWidget(playerIndex: 1),
),
],
);
},
......
......@@ -3,6 +3,8 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:awale/cubit/game_cubit.dart';
import 'package:awale/models/game/game.dart';
import 'package:awale/ui/widgets/game/game_seeds.dart';
import 'package:awale/utils/color_extensions.dart';
class GameHouseWidget extends StatelessWidget {
const GameHouseWidget({
......@@ -37,22 +39,14 @@ class GameHouseWidget extends StatelessWidget {
padding: const EdgeInsets.all(2),
decoration: BoxDecoration(
color: baseColor,
borderRadius: BorderRadius.circular(2),
borderRadius: BorderRadius.circular(100),
border: Border.all(
color: baseColor,
width: 2,
),
),
width: 50,
child: Text(
seedsCount == 0 ? '' : seedsCount.toString(),
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 30,
fontWeight: FontWeight.bold,
color: Theme.of(context).colorScheme.primary,
color: baseColor.darken(),
width: 4,
),
),
width: 60,
child: GameSeedsWidget(seedsCount: seedsCount),
),
),
);
......
import 'package:awale/utils/color_extensions.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:awale/cubit/game_cubit.dart';
import 'package:awale/models/game/game.dart';
import 'package:awale/ui/widgets/game/game_seeds.dart';
class GamePlayerWidget extends StatelessWidget {
const GamePlayerWidget({
......@@ -29,23 +31,13 @@ class GamePlayerWidget extends StatelessWidget {
padding: const EdgeInsets.all(2),
decoration: BoxDecoration(
color: baseColor,
borderRadius: BorderRadius.circular(2),
borderRadius: BorderRadius.circular(6),
border: Border.all(
color: baseColor,
width: 2,
),
),
width: 100,
height: 100,
child: Text(
seedsCount == 0 ? '' : seedsCount.toString(),
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 50,
fontWeight: FontWeight.bold,
color: Theme.of(context).colorScheme.primary,
color: baseColor.darken(),
width: 6,
),
),
child: GameSeedsWidget(seedsCount: seedsCount),
);
},
);
......
import 'package:awale/utils/color_extensions.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:awale/cubit/game_cubit.dart';
import 'package:awale/models/game/game.dart';
import 'package:awale/ui/widgets/game/game_seeds.dart';
class GameScoreWidget extends StatelessWidget {
const GameScoreWidget({
......@@ -28,22 +30,14 @@ class GameScoreWidget extends StatelessWidget {
padding: const EdgeInsets.all(2),
decoration: BoxDecoration(
color: baseColor,
borderRadius: BorderRadius.circular(2),
borderRadius: BorderRadius.circular(100),
border: Border.all(
color: baseColor,
width: 2,
color: baseColor.darken(),
width: 4,
),
),
width: 100,
child: Text(
currentGame.scores[playerIndex].toString(),
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 50,
fontWeight: FontWeight.bold,
color: Theme.of(context).colorScheme.primary,
),
),
child: GameSeedsWidget(seedsCount: currentGame.scores[playerIndex]),
);
},
);
......
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:awale/cubit/game_cubit.dart';
import 'package:awale/models/game/game.dart';
class GameSeedsWidget extends StatelessWidget {
const GameSeedsWidget({
super.key,
required this.seedsCount,
});
final int seedsCount;
@override
Widget build(BuildContext context) {
return BlocBuilder<GameCubit, GameState>(
builder: (BuildContext context, GameState gameState) {
final Game currentGame = gameState.currentGame;
final String skin = currentGame.globalSettings.skin;
const ratioScale = 0.2;
const ratioTranslate = 0.65;
const List<List<double>> layout = [
[0, 0], // 1
[10, -17], // 2
[20, 0], // 3
[10, 17], // 4
[-10, 17], // 5
[-20, 0], // 6
[-10, -17], // 7
[0, -34], // 8
[21, -34], // 9
[30, -16], // 10
[40, 0], // 11
[30, -18], // 12
[20, 35], // 13
[0, 35], // 14
[-20, 35], // 15
[-30, 18], // 16
[-38, 0], // 17
[-30, -16], // 18
[-20, -34], // 19
];
double minX = 0;
double maxX = 0;
double minY = 0;
double maxY = 0;
for (int i = 0; i < seedsCount; i++) {
final List<double> seedLocation = layout[i];
maxX = max(maxX, seedLocation[0]);
minX = min(minX, seedLocation[0]);
maxY = max(maxY, seedLocation[1]);
minY = min(minY, seedLocation[1]);
}
final double deltaX = minX + (maxX - minX) / 2;
final double deltaY = minY + (maxY - minY) / 2;
List<Widget> seeds = [];
for (int i = 0; i < seedsCount; i++) {
final List<double> seedLocation = layout[i];
seeds.add(
Transform.translate(
offset: Offset(
ratioTranslate * (seedLocation[0] - deltaX),
ratioTranslate * (seedLocation[1] - deltaY),
),
child: Transform.scale(
scale: ratioScale,
child: Image.asset('assets/skins/${skin}_seed.png'),
),
),
);
}
return Stack(
children: seeds,
);
},
);
}
}
......@@ -3,7 +3,7 @@ description: Awale game
publish_to: "none"
version: 0.0.6+6
version: 0.0.7+7
environment:
sdk: "^3.0.0"
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
enable-background="new 0 0 100 100"
version="1.1"
viewBox="0 0 102 102"
xml:space="preserve"
id="svg1"
sodipodi:docname="seeds_layout.svg"
inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs1" /><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="4.1078432"
inkscape:cx="18.622912"
inkscape:cy="18.988067"
inkscape:window-width="1199"
inkscape:window-height="838"
inkscape:window-x="3531"
inkscape:window-y="68"
inkscape:window-maximized="0"
inkscape:current-layer="svg1" /><circle
style="fill:#43834c;stroke:#152818;stroke-width:0.897713;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="path1"
cx="0.24011007"
cy="-0.2564899"
r="9.4961176"
transform="rotate(128.31689)" /><circle
style="fill:#43834c;stroke:#152818;stroke-width:0.897713;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="circle12"
cx="-39.179901"
cy="-8.8366365"
r="9.4961176"
transform="rotate(-72.165849)" /><circle
style="fill:#43834c;stroke:#152818;stroke-width:0.897713;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="circle13"
cx="-20.544954"
cy="27.919674"
r="9.4961176"
transform="rotate(-35.338291)" /><circle
style="fill:#43834c;stroke:#152818;stroke-width:0.897713;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="circle14"
cx="19.937935"
cy="34.132896"
r="9.4961176"
transform="rotate(1.4893076)" /><circle
style="fill:#43834c;stroke:#152818;stroke-width:0.897713;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="circle15"
cx="33.807491"
cy="-4.5862694"
r="9.4961176"
transform="rotate(38.316887)" /><circle
style="fill:#43834c;stroke:#152818;stroke-width:0.897713;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="circle16"
cx="10.259504"
cy="-38.344585"
r="9.4961176"
transform="rotate(75.144506)" /><circle
style="fill:#43834c;stroke:#152818;stroke-width:0.897713;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="circle17"
cx="-26.963198"
cy="-21.682329"
r="9.4961176"
transform="rotate(111.97209)" /><circle
style="fill:#43834c;stroke:#152818;stroke-width:0.897713;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="circle18"
cx="-35.107906"
cy="18.365372"
r="9.4961176"
transform="rotate(148.79967)" /><circle
style="fill:#43834c;stroke:#152818;stroke-width:0.897713;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="circle19"
cx="2.7728879"
cy="33.62381"
r="9.4961176"
transform="rotate(-174.37276)" /><circle
style="fill:#43834c;stroke:#152818;stroke-width:0.897713;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="circle20"
cx="36.981033"
cy="11.651199"
r="9.4961176"
transform="rotate(-137.54517)" /><circle
style="fill:#43834c;stroke:#152818;stroke-width:0.897713;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="circle21"
cx="21.71364"
cy="-26.034775"
r="9.4961176"
transform="rotate(-100.71757)" /><circle
style="fill:#43834c;stroke:#152818;stroke-width:0.897713;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="circle22"
cx="-18.037323"
cy="-35.501793"
r="9.4961176"
transform="rotate(-63.890011)" /><circle
style="fill:#43834c;stroke:#152818;stroke-width:0.897713;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="circle23"
cx="-34.741604"
cy="1.8949511"
r="9.4961176"
transform="rotate(-27.062431)" /><circle
style="fill:#43834c;stroke:#152818;stroke-width:0.897713;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="circle24"
cx="-7.0690489"
cy="18.942566"
r="9.4961176"
transform="rotate(9.7651874)" /><circle
style="fill:#43834c;stroke:#152818;stroke-width:0.897713;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="circle25"
cx="19.332306"
cy="4.9920368"
r="9.4961176"
transform="rotate(46.592737)" /><circle
style="fill:#43834c;stroke:#152818;stroke-width:0.897713;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="circle26"
cx="2.5728326"
cy="-19.762348"
r="9.4961176"
transform="rotate(83.420366)" /><circle
style="fill:#43834c;stroke:#152818;stroke-width:0.897713;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="circle27"
cx="-19.671154"
cy="-0.43411279"
r="9.4961176"
transform="rotate(120.24798)" /><circle
style="fill:#43834c;stroke:#152818;stroke-width:0.897713;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="circle28"
cx="2.4148488"
cy="19.107695"
r="9.4961176"
transform="rotate(157.07556)" /><circle
style="fill:#43834c;stroke:#152818;stroke-width:0.897713;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="circle29"
cx="19.188715"
cy="-5.1802483"
r="9.4961176"
transform="rotate(-166.09691)" /><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.86491px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.196623"
x="-5.5879693"
y="-0.105837"
id="text1"><tspan
sodipodi:role="line"
id="tspan1"
x="-5.5879693"
y="-0.105837"
style="stroke-width:0.196623">1</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.86491px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.196623"
x="13.903109"
y="-0.31237617"
id="text2"><tspan
sodipodi:role="line"
id="tspan2"
x="13.903109"
y="-0.31237617"
style="stroke-width:0.196623">3</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.86491px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.196623"
x="4.2930083"
y="18.846392"
id="text3"><tspan
sodipodi:role="line"
id="tspan3"
x="4.2930083"
y="18.846392"
style="stroke-width:0.196623">4</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.86491px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.196623"
x="-14.656782"
y="18.846392"
id="text4"><tspan
sodipodi:role="line"
id="tspan4"
x="-14.656782"
y="18.846392"
style="stroke-width:0.196623">5</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.86491px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.196623"
x="-23.915712"
y="-0.93393528"
id="text5"><tspan
sodipodi:role="line"
id="tspan5"
x="-23.915712"
y="-0.93393528"
style="stroke-width:0.196623">6</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.86491px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.196623"
x="-13.795031"
y="-15.558908"
id="text6"><tspan
sodipodi:role="line"
id="tspan6"
x="-13.795031"
y="-15.558908"
style="stroke-width:0.196623">7</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.86491px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.196623"
x="8.4240704"
y="-14.865454"
id="text7"><tspan
sodipodi:role="line"
id="tspan7"
x="8.4240704"
y="-14.865454"
style="stroke-width:0.196623">2</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.86491px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.196623"
x="26.778719"
y="-16.190016"
id="text8"><tspan
sodipodi:role="line"
id="tspan8"
x="26.778719"
y="-16.190016"
style="stroke-width:0.196623">10</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.86491px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.196623"
x="33.585457"
y="-0.28264824"
id="text9"><tspan
sodipodi:role="line"
id="tspan9"
x="33.585457"
y="-0.28264824"
style="stroke-width:0.196623">11</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.86491px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.196623"
x="22.871408"
y="17.452448"
id="text10"><tspan
sodipodi:role="line"
id="tspan10"
x="22.871408"
y="17.452448"
style="stroke-width:0.196623">12</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.86491px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.196623"
x="14.791765"
y="31.922098"
id="text11"><tspan
sodipodi:role="line"
id="tspan11"
x="14.791765"
y="31.922098"
style="stroke-width:0.196623">13</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.86491px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.196623"
x="-5.4304147"
y="33.756279"
id="text12"><tspan
sodipodi:role="line"
id="tspan12"
x="-5.4304147"
y="33.756279"
style="stroke-width:0.196623">14</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.86491px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.196623"
x="-25.521875"
y="33.744972"
id="text13"><tspan
sodipodi:role="line"
id="tspan13"
x="-25.521875"
y="33.744972"
style="stroke-width:0.196623">15</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.86491px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.196623"
x="-35.382278"
y="17.175936"
id="text14"><tspan
sodipodi:role="line"
id="tspan14"
x="-35.382278"
y="17.175936"
style="stroke-width:0.196623">16</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.86491px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.196623"
x="-42.581348"
y="1.4445361"
id="text15"><tspan
sodipodi:role="line"
id="tspan15"
x="-42.581348"
y="1.4445361"
style="stroke-width:0.196623">17</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.86491px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.196623"
x="-32.45631"
y="-16.667093"
id="text16"><tspan
sodipodi:role="line"
id="tspan16"
x="-32.45631"
y="-16.667093"
style="stroke-width:0.196623">18</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.86491px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.196623"
x="-22.339037"
y="-30.433443"
id="text17"><tspan
sodipodi:role="line"
id="tspan17"
x="-22.339037"
y="-30.433443"
style="stroke-width:0.196623">19</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.86491px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.196623"
x="-2.6990914"
y="-31.878004"
id="text18"><tspan
sodipodi:role="line"
id="tspan18"
x="-2.6990914"
y="-31.878004"
style="stroke-width:0.196623">8</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.86491px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.196623"
x="16.496477"
y="-31.550072"
id="text19"><tspan
sodipodi:role="line"
id="tspan19"
x="16.496477"
y="-31.550072"
style="stroke-width:0.196623">9</tspan></text></svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 100 100" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100" ry="2" fill="none"/><rect x="2.6304" y="2.6304" width="94.739" height="94.739" ry="20.054" fill="#c6bd7b" stroke="#505050" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.4632"/></svg>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment