diff --git a/.$architecture.drawio.png.bkp b/.$architecture.drawio.png.bkp
new file mode 100644
index 0000000..c83ffee
Binary files /dev/null and b/.$architecture.drawio.png.bkp differ
diff --git a/.$architecture.drawio.png.dtmp b/.$architecture.drawio.png.dtmp
new file mode 100644
index 0000000..d9ee756
--- /dev/null
+++ b/.$architecture.drawio.png.dtmp
@@ -0,0 +1,635 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.run/ZoFo.run.xml b/.run/ZoFo.run.xml
new file mode 100644
index 0000000..315a66b
--- /dev/null
+++ b/.run/ZoFo.run.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AnimationsFileCreator/Program.cs b/AnimationsFileCreator/Program.cs
index 68768cf..4203494 100644
--- a/AnimationsFileCreator/Program.cs
+++ b/AnimationsFileCreator/Program.cs
@@ -1,13 +1,11 @@
-using DangerousD.GameCore.Graphics;
-using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework;
using Newtonsoft.Json;
using System;
using NativeFileDialogSharp;
using System.IO;
using System.Linq;
using System.Reflection.Metadata;
-using Zofo.GameCore.ZoFo_grafics;
-
+using ZoFo.GameCore.Graphics;
namespace AnimationsFileCreator
{
class Program
@@ -22,7 +20,8 @@ namespace AnimationsFileCreator
{
DialogResult result = Dialog.FileOpen();
- textureName = result.Path.Split('\\').Last();
+ var temp = result.Path.Split('\\');
+ textureName = temp[temp.Length-2] + "/"+temp[temp.Length - 1];
textureName = textureName.Split('.')[0];
}
Console.WriteLine("Введите количество кадров анимации: ");
@@ -60,11 +59,11 @@ namespace AnimationsFileCreator
container.FrameTime = new System.Collections.Generic.List>();
container.FrameTime.Add(new Tuple(0, interval));
container.StartSpriteRectangle = rectangle;
- container.TextureName = textureName;
- container.TextureFrameInterval = 1;
+ container.TextureName = "Textures/AnimationTextures/"+textureName;
+ container.TextureFrameInterval = 0;
container.Id = id;
string json = JsonConvert.SerializeObject(container);
- StreamWriter writer = new StreamWriter("../../../../ZoFo/Content/animations/"+id);
+ StreamWriter writer = new StreamWriter("../../../../ZoFo/Content/Textures/Animations/"+id+ ".animation");
writer.WriteLine(json);
writer.Close();
}
diff --git a/GameSettings.txt b/GameSettings.txt
new file mode 100644
index 0000000..f5dcd93
--- /dev/null
+++ b/GameSettings.txt
@@ -0,0 +1 @@
+{"IsFullScreen":false,"MainVolume":1.0,"MusicVolume":1.0,"SoundEffectsVolume":1.0,"Resolution":{"X":1440,"Y":900}}
\ No newline at end of file
diff --git a/MonogameLibrary/UI/Elements/CheckBox.cs b/MonogameLibrary/UI/Elements/CheckBox.cs
index 5d927ca..47ac44e 100644
--- a/MonogameLibrary/UI/Elements/CheckBox.cs
+++ b/MonogameLibrary/UI/Elements/CheckBox.cs
@@ -24,6 +24,10 @@ namespace MonogameLibrary.UI.Elements
private bool isChecked;
HoverState hoverState = HoverState.None;
public bool GetChecked { get { return isChecked; } }
+ public void SetIsChecked(bool isChecked)
+ {
+ this.isChecked=isChecked;
+ }
public bool InteractUpdate(MouseState mouseState, MouseState prevmouseState)
{
if (rectangle.Intersects(new Rectangle(mouseState.Position, Point.Zero)))
@@ -49,9 +53,9 @@ namespace MonogameLibrary.UI.Elements
public override void LoadTexture(ContentManager content)
{
- texture1 = content.Load("Textures\\GUI\\checkboxs_off");
- texture2 = content.Load("Textures\\GUI\\checkboxs_off-on");
- texture3 = content.Load("Textures\\GUI\\checkboxs_on");
+ texture1 = content.Load("Textures/GUI/checkboxs_off");
+ texture2 = content.Load("Textures/GUI/checkboxs_off-on");
+ texture3 = content.Load("Textures/GUI/checkboxs_on");
base.LoadTexture(content);
}
public override void Draw(SpriteBatch _spriteBatch)
diff --git a/MonogameLibrary/UI/Elements/ItemDisplayLabel.cs b/MonogameLibrary/UI/Elements/ItemDisplayLabel.cs
new file mode 100644
index 0000000..1e637fb
--- /dev/null
+++ b/MonogameLibrary/UI/Elements/ItemDisplayLabel.cs
@@ -0,0 +1,79 @@
+using Microsoft.Xna.Framework.Graphics;
+using MonogameLibrary.UI.Base;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using MonogameLibrary.UI.Enums;
+using System;
+using System.Collections.Generic;
+using System.Security.Cryptography.X509Certificates;
+using System.Text;
+using System.Threading;
+using Microsoft.Xna.Framework.Content;
+
+namespace MonogameLibrary.UI.Elements;
+
+public class ItemDisplayLabel : DrawableUIElement
+{
+ public int count;
+ public string itemTextureName;
+ private Texture2D itemTexture;
+ public Color fontColor1;
+ protected UIManager Manager;
+ public string fontName1;
+ public string text1;
+ public float scale1;
+ private DrawableUIElement icon;
+
+
+ public ItemDisplayLabel(UIManager manager) : base(manager)
+ {
+ Manager = manager;
+ }
+
+ public void Initialize()
+ {
+ icon = new DrawableUIElement(Manager)
+ {
+ rectangle = new Rectangle(rectangle.X + rectangle.Height / 3 / 2, rectangle.Y + rectangle.Height / 3 / 2, rectangle.Height / 3 * 2, rectangle.Height / 3 * 2),
+ mainColor = Color.White, textureName = itemTextureName
+ };
+ Label itemName = new Label(Manager)
+ {
+ rectangle = new Rectangle(rectangle.X + rectangle.Height / 3 / 2 + rectangle.Height / 3 * 2, rectangle.Y + rectangle.Height / 3 / 2, rectangle.Width / 3, rectangle.Height / 3 * 2),
+ fontColor = fontColor1, text = text1, scale = scale1, fontName = fontName1, mainColor = Color.Transparent
+ };
+ Label itemCount = new Label(Manager)
+ {
+ rectangle = new Rectangle(rectangle.X + rectangle.Width - (int)(rectangle.Height / 3 * 2.5), rectangle.Y + rectangle.Height / 3 / 2, rectangle.Height / 3 * 2, rectangle.Height / 3 * 2),
+ fontColor = fontColor1, text = count.ToString(), scale = scale1, fontName = fontName1, mainColor = Color.Transparent
+ };
+ }
+
+ public override void LoadTexture(ContentManager content)
+ {
+ icon.LoadTexture(content);
+ base.LoadTexture(content);
+ if (itemTextureName == "")
+ {
+ itemTexture = new Texture2D(Manager.GraphicsDevice, 1, 1);
+ itemTexture.SetData(new Color[] { mainColor });
+ }
+ else
+ {
+ try
+ {
+ itemTexture = content.Load(itemTextureName);
+ }
+ catch
+ {
+ itemTexture = new Texture2D(Manager.GraphicsDevice, 1, 1);
+ itemTexture.SetData(new Color[] { mainColor });
+ }
+ }
+ }
+
+ public override void Draw(SpriteBatch _spriteBatch)
+ {
+ base.Draw(_spriteBatch);
+ }
+}
\ No newline at end of file
diff --git a/MonogameLibrary/UI/Elements/Slider.cs b/MonogameLibrary/UI/Elements/Slider.cs
index f614f53..0525666 100644
--- a/MonogameLibrary/UI/Elements/Slider.cs
+++ b/MonogameLibrary/UI/Elements/Slider.cs
@@ -21,7 +21,10 @@ namespace MonogameLibrary.UI.Elements
public int indentation = 5;
Texture2D texture2;
- public Rectangle sliderRect = new Rectangle(0, 0, 30, 30);
+ ///
+ /// ректенгл ползунка
+ ///
+ public Rectangle sliderRect = new Rectangle(0, 0, 40, 40);
private float sliderValue = 0;
private float minValue = 0, maxValue = 1;
SliderState sliderState = SliderState.None;
@@ -56,7 +59,7 @@ namespace MonogameLibrary.UI.Elements
public override void LoadTexture(ContentManager content)
{
- texture2 = content.Load("Textures\\GUI\\checkboxs_off");
+ texture2 = content.Load("Textures/GUI/switch");
base.LoadTexture(content);
}
@@ -73,11 +76,11 @@ namespace MonogameLibrary.UI.Elements
sliderRect.X += (int)(sliderValue * (rectangle.Width - sliderRect.Width - indentation * 2) + indentation);
sliderRect.Y -= sliderRect.Height / 2 - rectangle.Height / 2;
if (sliderState == SliderState.Moving)
- _spriteBatch.Draw(texture2, sliderRect, Color.DarkRed);
+ _spriteBatch.Draw(texture2, sliderRect, Color.Gray);
else if(sliderState == SliderState.HoveringOverSliderButton)
- _spriteBatch.Draw(texture2, sliderRect, new Color(200,0 ,0));
+ _spriteBatch.Draw(texture2, sliderRect, Color.DarkGray);
else
- _spriteBatch.Draw(texture2, sliderRect, Color.Red);
+ _spriteBatch.Draw(texture2, sliderRect, Color.White);
DrawText(_spriteBatch);
}
}
diff --git a/MonogameLibrary/UI/Elements/TextBox.cs b/MonogameLibrary/UI/Elements/TextBox.cs
index 87534eb..529a8be 100644
--- a/MonogameLibrary/UI/Elements/TextBox.cs
+++ b/MonogameLibrary/UI/Elements/TextBox.cs
@@ -89,9 +89,9 @@ namespace MonogameLibrary.UI.Elements
if (hoverState == HoverState.None)
{
if (isSelected == IsSelected.Selected)
- _spriteBatch.Draw(texture, rectangle, new Color(220, 220, 220));
+ _spriteBatch.Draw(texture, rectangle, new Color(211, 211, 211));
else
- _spriteBatch.Draw(texture, rectangle, new Color(245, 245, 245));
+ _spriteBatch.Draw(texture, rectangle, Color.White);
}
else if (hoverState == HoverState.Hovering)
_spriteBatch.Draw(texture, rectangle, new Color(211, 211, 211));
diff --git a/MonogameLibrary/UI/Elements/itemDisplayButton.cs b/MonogameLibrary/UI/Elements/itemDisplayButton.cs
new file mode 100644
index 0000000..0a29c4f
--- /dev/null
+++ b/MonogameLibrary/UI/Elements/itemDisplayButton.cs
@@ -0,0 +1,79 @@
+using Microsoft.Xna.Framework.Graphics;
+using MonogameLibrary.UI.Base;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using MonogameLibrary.UI.Enums;
+using System;
+using System.Collections.Generic;
+using System.Security.Cryptography.X509Certificates;
+using System.Text;
+using System.Threading;
+using Microsoft.Xna.Framework.Content;
+
+namespace MonogameLibrary.UI.Elements;
+
+public class ItemDisplayButton : DrawableUIElement
+{
+ public int count;
+ public string itemTextureName;
+ private Texture2D itemTexture;
+ public Color fontColor1;
+ protected UIManager Manager;
+ public string fontName1;
+ public string text1;
+ public float scale1;
+ private DrawableUIElement icon;
+
+
+ public ItemDisplayButton(UIManager manager) : base(manager)
+ {
+ Manager = manager;
+ }
+
+ public void Initialize()
+ {
+ icon = new DrawableUIElement(Manager)
+ {
+ rectangle = new Rectangle(rectangle.X + rectangle.Height / 3 / 2, rectangle.Y + rectangle.Height / 3 / 2, rectangle.Height / 3 * 2, rectangle.Height / 3 * 2),
+ mainColor = Color.White, textureName = itemTextureName
+ };
+ Label itemName = new Label(Manager)
+ {
+ rectangle = new Rectangle(rectangle.X + rectangle.Height / 3 / 2 + rectangle.Height / 3 * 2, rectangle.Y + rectangle.Height / 3 / 2, rectangle.Width / 3, rectangle.Height / 3 * 2),
+ fontColor = fontColor1, text = text1, scale = scale1, fontName = fontName1, mainColor = Color.Transparent
+ };
+ Label itemCount = new Label(Manager)
+ {
+ rectangle = new Rectangle(rectangle.X + rectangle.Width - (int)(rectangle.Height / 3 * 2.5), rectangle.Y + rectangle.Height / 3 / 2, rectangle.Height / 3 * 2, rectangle.Height / 3 * 2),
+ fontColor = fontColor1, text = count.ToString(), scale = scale1, fontName = fontName1, mainColor = Color.Transparent
+ };
+ }
+
+ public override void LoadTexture(ContentManager content)
+ {
+ icon.LoadTexture(content);
+ base.LoadTexture(content);
+ if (itemTextureName == "")
+ {
+ itemTexture = new Texture2D(Manager.GraphicsDevice, 1, 1);
+ itemTexture.SetData(new Color[] { mainColor });
+ }
+ else
+ {
+ try
+ {
+ itemTexture = content.Load(itemTextureName);
+ }
+ catch
+ {
+ itemTexture = new Texture2D(Manager.GraphicsDevice, 1, 1);
+ itemTexture.SetData(new Color[] { mainColor });
+ }
+ }
+ }
+
+ public override void Draw(SpriteBatch _spriteBatch)
+ {
+ base.Draw(_spriteBatch);
+ }
+}
\ No newline at end of file
diff --git a/ZoFo/Content/Content.mgcb b/ZoFo/Content/Content.mgcb
index e1730da..09e9f35 100644
--- a/ZoFo/Content/Content.mgcb
+++ b/ZoFo/Content/Content.mgcb
@@ -27,6 +27,340 @@
/processorParam:TextureFormat=Compressed
/build:Fonts/Font2.spritefont
+#begin Fonts/Font3.spritefont
+/importer:FontDescriptionImporter
+/processor:FontDescriptionProcessor
+/processorParam:PremultiplyAlpha=True
+/processorParam:TextureFormat=Compressed
+/build:Fonts/Font3.spritefont
+
+#begin MapData/TileMaps/main.tmj
+/copy:MapData/TileMaps/main.tmj
+
+#begin MapData/TileMaps/main.tmx
+/copy:MapData/TileMaps/main.tmx
+
+#begin MapData/TileSets/CollisionTileSet.tsj
+/copy:MapData/TileSets/CollisionTileSet.tsj
+
+#begin sounds/Loot.wav
+/importer:WavImporter
+/processor:SoundEffectProcessor
+/processorParam:Quality=Best
+/build:sounds/Loot.wav
+
+#begin sounds/Odevanie odezdi.wav
+/importer:WavImporter
+/processor:SoundEffectProcessor
+/processorParam:Quality=Best
+/build:sounds/Odevanie odezdi.wav
+
+#begin sounds/Pieot wodichky.wav
+/importer:WavImporter
+/processor:SoundEffectProcessor
+/processorParam:Quality=Best
+/build:sounds/Pieot wodichky.wav
+
+#begin sounds/Sshetchik geigera.wav
+/importer:WavImporter
+/processor:SoundEffectProcessor
+/processorParam:Quality=Best
+/build:sounds/Sshetchik geigera.wav
+
+#begin sounds/Tabletki 2.wav
+/importer:WavImporter
+/processor:SoundEffectProcessor
+/processorParam:Quality=Best
+/build:sounds/Tabletki 2.wav
+
+#begin sounds/Zombi napal.wav
+/importer:WavImporter
+/processor:SoundEffectProcessor
+/processorParam:Quality=Best
+/build:sounds/Zombi napal.wav
+
+#begin sounds/Zombi stoit.wav
+/importer:WavImporter
+/processor:SoundEffectProcessor
+/processorParam:Quality=Best
+/build:sounds/Zombi stoit.wav
+
+#begin Textures/Animations/player_down_idle.animation
+/copy:Textures/Animations/player_down_idle.animation
+
+#begin Textures/Animations/player_down-left_idle.animation
+/copy:Textures/Animations/player_down-left_idle.animation
+
+#begin Textures/Animations/player_down-right_idle.animation
+/copy:Textures/Animations/player_down-right_idle.animation
+
+#begin Textures/Animations/player_idle_down_mining.animation
+/copy:Textures/Animations/player_idle_down_mining.animation
+
+#begin Textures/Animations/player_idle_down-left_mining.animation
+/copy:Textures/Animations/player_idle_down-left_mining.animation
+
+#begin Textures/Animations/player_idle_left_mining.animation
+/copy:Textures/Animations/player_idle_left_mining.animation
+
+#begin Textures/Animations/player_idle_rights_mining.animation
+/copy:Textures/Animations/player_idle_rights_mining.animation
+
+#begin Textures/Animations/player_idle_top_noweapon.animation
+/copy:Textures/Animations/player_idle_top_noweapon.animation
+
+#begin Textures/Animations/player_idle_top-left_mining.animation
+/copy:Textures/Animations/player_idle_top-left_mining.animation
+
+#begin Textures/Animations/player_idle_top-right_noweapon.animation
+/copy:Textures/Animations/player_idle_top-right_noweapon.animation
+
+#begin Textures/Animations/player_idle_top-rights_mining.animation
+/copy:Textures/Animations/player_idle_top-rights_mining.animation
+
+#begin Textures/Animations/player_left_idle.animation
+/copy:Textures/Animations/player_left_idle.animation
+
+#begin Textures/Animations/player_look_down_weapon.animation
+/copy:Textures/Animations/player_look_down_weapon.animation
+
+#begin Textures/Animations/player_look_down.animation
+/copy:Textures/Animations/player_look_down.animation
+
+#begin Textures/Animations/player_look_left_down_weapon.animation
+/copy:Textures/Animations/player_look_left_down_weapon.animation
+
+#begin Textures/Animations/player_look_left_down.animation
+/copy:Textures/Animations/player_look_left_down.animation
+
+#begin Textures/Animations/player_look_left_up_weapon.animation
+/copy:Textures/Animations/player_look_left_up_weapon.animation
+
+#begin Textures/Animations/player_look_left_up.animation
+/copy:Textures/Animations/player_look_left_up.animation
+
+#begin Textures/Animations/player_look_left_weapon.animation
+/copy:Textures/Animations/player_look_left_weapon.animation
+
+#begin Textures/Animations/player_look_left.animation
+/copy:Textures/Animations/player_look_left.animation
+
+#begin Textures/Animations/player_look_right_down_weapon.animation
+/copy:Textures/Animations/player_look_right_down_weapon.animation
+
+#begin Textures/Animations/player_look_right_down.animation
+/copy:Textures/Animations/player_look_right_down.animation
+
+#begin Textures/Animations/player_look_right_up_weapon.animation
+/copy:Textures/Animations/player_look_right_up_weapon.animation
+
+#begin Textures/Animations/player_look_right_up.animation
+/copy:Textures/Animations/player_look_right_up.animation
+
+#begin Textures/Animations/player_look_right_weapon.animation
+/copy:Textures/Animations/player_look_right_weapon.animation
+
+#begin Textures/Animations/player_look_right.animation
+/copy:Textures/Animations/player_look_right.animation
+
+#begin Textures/Animations/player_look_up_weapon.animation
+/copy:Textures/Animations/player_look_up_weapon.animation
+
+#begin Textures/Animations/player_look_up.animation
+/copy:Textures/Animations/player_look_up.animation
+
+#begin Textures/Animations/player_right_idle.animation
+/copy:Textures/Animations/player_right_idle.animation
+
+#begin Textures/Animations/player_running_top_rotate.animation
+/copy:Textures/Animations/player_running_top_rotate.animation
+
+#begin Textures/Animations/player_top_mining.animation
+/copy:Textures/Animations/player_top_mining.animation
+
+#begin Textures/Animations/player_top-left_idle.animation
+/copy:Textures/Animations/player_top-left_idle.animation
+
+#begin Textures/Animations/player_top-right_idle.animation
+/copy:Textures/Animations/player_top-right_idle.animation
+
+#begin Textures/Animations/running_top.animation
+/copy:Textures/Animations/running_top.animation
+
+#begin Textures/Animations/testAnimation.animation
+/copy:Textures/Animations/testAnimation.animation
+
+#begin Textures/Animations/testAnimationExample.animation
+/copy:Textures/Animations/testAnimationExample.animation
+
+#begin Textures/AnimationTextures/Character/hr-level1_idle_gun.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/AnimationTextures/Character/hr-level1_idle_gun.png
+
+#begin Textures/AnimationTextures/Character/hr-level1_idle.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/AnimationTextures/Character/hr-level1_idle.png
+
+#begin Textures/AnimationTextures/Character/hr-level1_mining_tool-1.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/AnimationTextures/Character/hr-level1_mining_tool-1.png
+
+#begin Textures/AnimationTextures/Character/hr-level1_mining_tool-2.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/AnimationTextures/Character/hr-level1_mining_tool-2.png
+
+#begin Textures/AnimationTextures/Character/hr-level1_running_gun.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/AnimationTextures/Character/hr-level1_running_gun.png
+
+#begin Textures/AnimationTextures/Character/hr-level1_running.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/AnimationTextures/Character/hr-level1_running.png
+
+#begin Textures/AnimationTextures/unicorn.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/AnimationTextures/unicorn.png
+
+#begin Textures/GUI/background/base.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/GUI/background/base.png
+
+#begin Textures/GUI/background/endGame.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/GUI/background/endGame.png
+
+#begin Textures/GUI/background/join.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/GUI/background/join.png
+
+#begin Textures/GUI/background/mainMenu.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/GUI/background/mainMenu.png
+
+#begin Textures/GUI/background/options.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/GUI/background/options.png
+
+#begin Textures/GUI/background/selectMode.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/GUI/background/selectMode.png
+
+#begin Textures/GUI/background/waiting.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/GUI/background/waiting.png
+
#begin Textures/GUI/checkboxs_off-on.png
/importer:TextureImporter
/processor:TextureProcessor
@@ -75,3 +409,267 @@
/processorParam:TextureFormat=Color
/build:Textures/GUI/MenuBackground.jpg
+#begin Textures/GUI/mouse.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/GUI/mouse.png
+
+#begin Textures/GUI/Switch_backgrownd.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/GUI/Switch_backgrownd.png
+
+#begin Textures/GUI/switch.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/GUI/switch.png
+
+#begin Textures/icons/12.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/icons/12.png
+
+#begin Textures/icons/13.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/icons/13.png
+
+#begin Textures/icons/14.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/icons/14.png
+
+#begin Textures/icons/21.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/icons/21.png
+
+#begin Textures/icons/22.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/icons/22.png
+
+#begin Textures/icons/5.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/icons/5.png
+
+#begin Textures/icons/6.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/icons/6.png
+
+#begin Textures/icons/7.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/icons/7.png
+
+#begin Textures/icons/8.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/icons/8.png
+
+#begin Textures/icons/9.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/icons/9.png
+
+#begin Textures/Test/pickaxe.webp
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/Test/pickaxe.webp
+
+#begin Textures/Test/rock.jpg
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/Test/rock.jpg
+
+#begin Textures/Test/steel.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/Test/steel.png
+
+#begin Textures/Test/wood.jpg
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/Test/wood.jpg
+
+#begin Textures/TileSets/Tilelist1.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/TileSets/Tilelist1.png
+
+#begin Textures/TileSets/Tilelist2.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/TileSets/Tilelist2.png
+
+#begin Textures/TileSets/Tilelist3.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/TileSets/Tilelist3.png
+
+#begin Textures/TileSets/Tilelist4.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/TileSets/Tilelist4.png
+
+#begin Textures/TileSets/TilesetFloor.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:Textures/TileSets/TilesetFloor.png
+
diff --git a/ZoFo/Content/Fonts/Font3.spritefont b/ZoFo/Content/Fonts/Font3.spritefont
new file mode 100644
index 0000000..b82ba24
--- /dev/null
+++ b/ZoFo/Content/Fonts/Font3.spritefont
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+ MouldyCheeseRegular-WyMWG.ttf
+
+
+ 50
+
+
+ 0
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+ ~
+
+
+
+
diff --git a/ZoFo/Content/Fonts/MouldyCheeseRegular-WyMWG.ttf b/ZoFo/Content/Fonts/MouldyCheeseRegular-WyMWG.ttf
new file mode 100644
index 0000000..9c36cd0
Binary files /dev/null and b/ZoFo/Content/Fonts/MouldyCheeseRegular-WyMWG.ttf differ
diff --git a/ZoFo/Content/MapData/MapSession.tiled-project b/ZoFo/Content/MapData/MapSession.tiled-project
new file mode 100644
index 0000000..d0eb592
--- /dev/null
+++ b/ZoFo/Content/MapData/MapSession.tiled-project
@@ -0,0 +1,14 @@
+{
+ "automappingRulesFile": "",
+ "commands": [
+ ],
+ "compatibilityVersion": 1100,
+ "extensionsPath": "extensions",
+ "folders": [
+ "."
+ ],
+ "properties": [
+ ],
+ "propertyTypes": [
+ ]
+}
diff --git a/ZoFo/Content/MapData/MapSession.tiled-session b/ZoFo/Content/MapData/MapSession.tiled-session
new file mode 100644
index 0000000..257833b
--- /dev/null
+++ b/ZoFo/Content/MapData/MapSession.tiled-session
@@ -0,0 +1,57 @@
+{
+ "Map/SizeTest": {
+ "height": 4300,
+ "width": 2
+ },
+ "activeFile": "TileMaps/main.tmj",
+ "expandedProjectPaths": [
+ ".",
+ "TileSets",
+ "TileMaps"
+ ],
+ "fileStates": {
+ "TileMaps/TileSets/TileSet 1.tsj": {
+ "scaleInDock": 1
+ },
+ "TileMaps/main.tmj": {
+ "scale": 0.75,
+ "selectedLayer": 0,
+ "viewCenter": {
+ "x": 578,
+ "y": 482.66666666666674
+ }
+ },
+ "TileSets/CollisionTileSet.tsj": {
+ "scaleInDock": 0.75,
+ "scaleInEditor": 1
+ },
+ "TileSets/TileSet 1.tsj": {
+ "scaleInDock": 1,
+ "scaleInEditor": 1.5
+ },
+ "TileSets/WallSet.tsj": {
+ "scaleInDock": 1,
+ "scaleInEditor": 1
+ }
+ },
+ "last.imagePath": "D:/C#/Я смотрел ваши ХАКАТОНЫ/ZoFo/ZoFo/Content/Textures/TileSetImages",
+ "openFiles": [
+ "TileSets/TileSet 1.tsj",
+ "TileMaps/main.tmj",
+ "TileSets/CollisionTileSet.tsj"
+ ],
+ "project": "MapSession.tiled-project",
+ "recentFiles": [
+ "TileMaps/main.tmj",
+ "TileSets/TileSet 1.tsj",
+ "TileSets/CollisionTileSet.tsj",
+ "TileSets/WallSet.tsj"
+ ],
+ "tileset.lastUsedFormat": "json",
+ "tileset.margin": 2,
+ "tileset.spacing": 2,
+ "tileset.tileSize": {
+ "height": 128,
+ "width": 128
+ }
+}
diff --git a/ZoFo/Content/MapData/TileMaps/main.tmj b/ZoFo/Content/MapData/TileMaps/main.tmj
new file mode 100644
index 0000000..521ea7b
--- /dev/null
+++ b/ZoFo/Content/MapData/TileMaps/main.tmj
@@ -0,0 +1,1155 @@
+{ "compressionlevel":-1,
+ "height":20,
+ "infinite":true,
+ "layers":[
+ {
+ "chunks":[
+ {
+ "data":[28, 46, 29, 24, 24, 28, 46, 29, 24, 90, 24, 24, 50, 51, 24, 24,
+ 50, 2, 32, 46, 29, 50, 2, 32, 29, 24, 90, 24, 89, 24, 24, 24,
+ 89, 28, 10, 3, 23, 24, 24, 25, 23, 24, 24, 24, 28, 29, 89, 24,
+ 24, 25, 23, 50, 32, 29, 24, 25, 23, 28, 29, 24, 50, 51, 28, 29,
+ 24, 25, 23, 24, 50, 51, 24, 50, 51, 50, 51, 24, 24, 24, 50, 32,
+ 24, 25, 23, 24, 24, 89, 24, 24, 24, 24, 24, 24, 24, 24, 28, 47,
+ 24, 50, 32, 46, 29, 90, 24, 579, 29, 24, 89, 89, 24, 24, 25, 579,
+ 29, 24, 25, 114, 45, 29, 24, 25, 23, 90, 24, 24, 24, 89, 50, 51,
+ 51, 89, 50, 3, 115, 23, 24, 25, 23, 89, 28, 29, 24, 24, 24, 89,
+ 24, 24, 24, 25, 111, 23, 90, 50, 51, 24, 50, 32, 46, 29, 24, 24,
+ 24, 90, 24, 50, 2, 51, 28, 46, 46, 29, 24, 50, 2, 51, 24, 24,
+ 24, 89, 24, 24, 28, 29, 50, 2, 2, 51, 24, 90, 24, 24, 89, 24,
+ 46, 29, 28, 46, 10, 32, 29, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 2, 51, 50, 2, 51, 50, 51, 24, 89, 24, 24, 90, 24, 24, 89, 90,
+ 24, 28, 46, 29, 24, 24, 24, 24, 89, 24, 24, 24, 24, 24, 89, 24,
+ 29, 50, 3, 23, 24, 90, 28, 29, 24, 24, 24, 24, 24, 90, 28, 46],
+ "height":16,
+ "width":16,
+ "x":0,
+ "y":0
+ },
+ {
+ "data":[90, 24, 24, 24, 24, 24, 24, 24, 24, 90, 24, 89, 24, 24, 24, 24,
+ 28, 29, 24, 24, 24, 24, 24, 24, 90, 24, 89, 24, 24, 24, 24, 24,
+ 50, 51, 24, 24, 89, 24, 24, 24, 24, 24, 24, 24, 24, 28, 29, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 23, 28,
+ 46, 29, 24, 24, 24, 24, 24, 28, 29, 24, 24, 24, 90, 50, 32, 47,
+ 115, 23, 24, 24, 24, 24, 24, 25, 23, 28, 29, 24, 24, 89, 50, 3,
+ 3, 45, 46, 29, 24, 24, 24, 50, 51, 50, 51, 89, 24, 24, 28, 47,
+ 50, 2, 2, 32, 29, 24, 24, 24, 90, 24, 24, 24, 24, 24, 25, 1,
+ 24, 24, 24, 25, 23, 24, 24, 24, 89, 24, 24, 90, 24, 24, 50, 51,
+ 89, 24, 24, 25, 23, 24, 24, 24, 24, 24, 28, 29, 24, 24, 24, 90,
+ 24, 24, 24, 50, 32, 29, 24, 24, 28, 46, 47, 23, 24, 24, 24, 24,
+ 24, 24, 24, 90, 50, 51, 90, 24, 50, 3, 1, 51, 28, 29, 28, 46,
+ 24, 89, 28, 46, 46, 29, 24, 24, 24, 50, 51, 28, 10, 51, 50, 2,
+ 24, 90, 25, 1, 2, 51, 28, 46, 46, 46, 46, 10, 51, 24, 24, 24,
+ 24, 24, 50, 32, 29, 28, 10, 2, 2, 3, 1, 32, 29, 24, 24, 24,
+ 29, 24, 24, 25, 45, 47, 23, 24, 24, 50, 51, 25, 45, 29, 24, 24],
+ "height":16,
+ "width":16,
+ "x":16,
+ "y":0
+ },
+ {
+ "data":[24, 24, 50, 51, 24, 50, 2, 51, 24, 28, 47, 1, 51, 25, 111, 45,
+ 24, 24, 28, 29, 24, 24, 24, 28, 29, 25, 111, 23, 24, 50, 2, 2,
+ 28, 46, 10, 51, 28, 29, 24, 25, 23, 50, 2, 51, 24, 24, 28, 29,
+ 10, 2, 51, 90, 50, 32, 29, 50, 32, 46, 29, 24, 24, 24, 25, 23,
+ 23, 24, 24, 24, 90, 50, 51, 24, 25, 114, 23, 24, 90, 24, 25, 23,
+ 23, 28, 29, 24, 24, 28, 29, 89, 50, 2, 51, 24, 24, 24, 25, 23,
+ 23, 50, 51, 28, 46, 10, 51, 24, 24, 24, 90, 24, 24, 24, 50, 32,
+ 51, 24, 90, 50, 2, 32, 29, 28, 46, 29, 28, 46, 29, 24, 90, 50,
+ 28, 29, 24, 90, 24, 25, 45, 47, 1, 51, 50, 2, 32, 46, 29, 89,
+ 25, 45, 29, 24, 24, 50, 2, 2, 32, 29, 24, 24, 50, 3, 23, 24,
+ 50, 2, 51, 24, 24, 24, 24, 24, 50, 32, 46, 29, 24, 50, 51, 24,
+ 29, 24, 28, 29, 89, 24, 24, 24, 24, 25, 111, 23, 24, 28, 29, 24,
+ 32, 29, 25, 23, 89, 28, 46, 29, 24, 25, 115, 23, 24, 25, 23, 24,
+ 50, 32, 47, 45, 46, 10, 2, 32, 46, 10, 2, 51, 24, 25, 23, 89,
+ 24, 50, 2, 3, 1, 32, 46, 10, 2, 51, 89, 24, 89, 50, 51, 24,
+ 24, 28, 46, 47, 23, 50, 3, 23, 24, 24, 90, 24, 28, 46, 46, 29],
+ "height":16,
+ "width":16,
+ "x":32,
+ "y":0
+ },
+ {
+ "data":[47, 23, 24, 28, 29, 24, 24, 28, 29, 50, 51, 24, 50, 32, 46, 46,
+ 3, 23, 28, 47, 23, 24, 89, 50, 32, 29, 24, 24, 24, 25, 115, 1,
+ 50, 32, 10, 2, 51, 24, 89, 24, 25, 23, 24, 90, 24, 25, 1, 32,
+ 24, 25, 45, 46, 46, 29, 28, 29, 25, 23, 24, 90, 24, 50, 51, 50,
+ 24, 25, 115, 111, 1, 32, 10, 51, 25, 23, 28, 46, 46, 46, 29, 24,
+ 28, 10, 2, 2, 51, 50, 51, 24, 25, 23, 25, 1, 2, 2, 32, 46,
+ 47, 45, 46, 29, 24, 24, 24, 28, 10, 51, 50, 32, 46, 46, 10, 3,
+ 2, 3, 111, 23, 24, 24, 24, 25, 23, 24, 89, 50, 2, 2, 51, 50,
+ 90, 25, 1, 32, 29, 90, 24, 25, 45, 29, 24, 89, 90, 28, 29, 24,
+ 24, 25, 23, 50, 51, 24, 24, 50, 3, 23, 24, 24, 24, 25, 23, 24,
+ 24, 25, 45, 29, 24, 24, 24, 24, 25, 23, 28, 46, 29, 50, 51, 24,
+ 28, 10, 3, 23, 24, 24, 89, 24, 25, 23, 25, 111, 45, 29, 24, 24,
+ 25, 23, 50, 51, 24, 24, 24, 24, 50, 32, 10, 2, 2, 32, 29, 28,
+ 50, 51, 28, 46, 46, 29, 24, 24, 24, 25, 23, 24, 24, 50, 51, 25,
+ 24, 24, 50, 3, 113, 23, 24, 24, 24, 50, 51, 24, 24, 24, 24, 50,
+ 24, 24, 90, 50, 2, 51, 24, 24, 24, 24, 90, 24, 90, 24, 24, 24],
+ "height":16,
+ "width":16,
+ "x":48,
+ "y":0
+ },
+ {
+ "data":[10, 51, 24, 50, 2, 51, 24, 50, 51, 24, 24, 24, 89, 24, 90, 24,
+ 51, 90, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 28, 46, 46,
+ 29, 24, 89, 24, 24, 28, 29, 24, 24, 28, 29, 24, 28, 10, 3, 1,
+ 51, 24, 24, 89, 24, 50, 51, 28, 46, 10, 51, 24, 25, 45, 10, 32,
+ 24, 24, 24, 24, 24, 24, 24, 25, 1, 51, 24, 24, 50, 2, 32, 10,
+ 46, 29, 90, 24, 24, 24, 90, 50, 51, 24, 24, 24, 24, 24, 50, 51,
+ 114, 23, 24, 24, 24, 24, 90, 24, 28, 29, 28, 29, 24, 24, 28, 29,
+ 2, 51, 24, 24, 24, 24, 24, 24, 25, 23, 25, 23, 24, 24, 25, 23,
+ 90, 24, 24, 28, 29, 24, 24, 24, 50, 51, 25, 23, 24, 24, 50, 32,
+ 24, 24, 89, 25, 23, 24, 24, 24, 24, 24, 50, 32, 46, 46, 29, 25,
+ 24, 28, 46, 10, 32, 29, 24, 24, 24, 28, 29, 50, 2, 3, 23, 25,
+ 24, 50, 2, 51, 25, 45, 29, 89, 24, 50, 51, 24, 24, 50, 51, 50,
+ 46, 29, 24, 24, 50, 3, 23, 24, 24, 24, 24, 24, 90, 90, 89, 24,
+ 1, 32, 29, 89, 28, 10, 51, 24, 24, 28, 46, 29, 90, 24, 24, 90,
+ 32, 10, 51, 90, 50, 32, 46, 46, 29, 50, 2, 32, 46, 46, 46, 29,
+ 50, 51, 28, 46, 29, 25, 1, 3, 23, 24, 24, 25, 1, 2, 2, 32],
+ "height":16,
+ "width":16,
+ "x":64,
+ "y":0
+ },
+ {
+ "data":[50, 51, 24, 25, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 28, 46,
+ 46, 29, 24, 50, 51, 89, 24, 28, 29, 24, 90, 24, 24, 24, 50, 2,
+ 2, 51, 89, 28, 46, 29, 24, 50, 51, 24, 24, 24, 90, 24, 24, 28,
+ 29, 24, 24, 50, 3, 23, 24, 24, 24, 24, 24, 90, 24, 24, 24, 50,
+ 51, 28, 46, 46, 10, 32, 46, 29, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 50, 2, 3, 23, 50, 2, 51, 24, 24, 24, 24, 24, 90, 28, 29,
+ 24, 24, 24, 25, 23, 24, 24, 24, 24, 24, 24, 89, 90, 24, 25, 23,
+ 24, 24, 24, 50, 51, 24, 28, 46, 29, 24, 24, 28, 29, 28, 10, 51,
+ 29, 24, 24, 24, 28, 29, 25, 111, 23, 90, 24, 50, 51, 25, 23, 24,
+ 23, 90, 89, 24, 50, 32, 10, 2, 32, 29, 24, 90, 89, 25, 45, 46,
+ 23, 24, 24, 24, 24, 25, 23, 24, 25, 23, 24, 24, 24, 25, 111, 1,
+ 51, 24, 24, 24, 24, 50, 51, 89, 50, 32, 29, 28, 46, 10, 2, 51,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 50, 32, 10, 2, 32, 29, 90,
+ 24, 24, 24, 24, 24, 28, 29, 89, 28, 29, 50, 32, 29, 25, 23, 24,
+ 24, 28, 29, 24, 24, 50, 51, 24, 25, 45, 29, 50, 32, 47, 23, 24,
+ 29, 25, 45, 29, 24, 90, 24, 90, 50, 3, 23, 24, 50, 2, 32, 46],
+ "height":16,
+ "width":16,
+ "x":80,
+ "y":0
+ },
+ {
+ "data":[29, 24, 28, 29, 28, 10, 32, 47, 23, 24, 90, 24, 24, 24, 24, 28,
+ 51, 24, 50, 51, 25, 23, 25, 115, 23, 24, 28, 29, 24, 24, 24, 50,
+ 29, 24, 24, 24, 50, 51, 50, 2, 51, 24, 25, 23, 90, 24, 28, 29,
+ 51, 24, 28, 29, 28, 29, 24, 24, 24, 24, 50, 32, 29, 28, 10, 32,
+ 24, 24, 50, 32, 10, 51, 90, 24, 24, 24, 24, 25, 45, 10, 51, 25,
+ 24, 28, 29, 25, 23, 24, 24, 28, 29, 24, 24, 50, 3, 23, 24, 50,
+ 24, 50, 32, 10, 32, 29, 24, 50, 51, 24, 24, 90, 50, 51, 90, 24,
+ 24, 90, 25, 23, 25, 23, 28, 29, 24, 24, 89, 24, 24, 90, 24, 24,
+ 24, 24, 50, 32, 10, 51, 50, 51, 24, 24, 24, 90, 24, 24, 24, 24,
+ 46, 46, 46, 47, 23, 24, 24, 24, 24, 90, 90, 24, 28, 29, 24, 24,
+ 2, 2, 3, 1, 51, 24, 89, 24, 28, 46, 29, 24, 50, 32, 29, 24,
+ 24, 89, 25, 23, 24, 24, 24, 89, 50, 2, 51, 24, 90, 50, 32, 46,
+ 24, 90, 50, 51, 28, 46, 29, 24, 24, 24, 89, 89, 24, 28, 10, 2,
+ 24, 24, 89, 28, 47, 1, 51, 24, 24, 24, 28, 29, 24, 25, 23, 90,
+ 24, 89, 24, 50, 2, 32, 46, 29, 24, 24, 25, 23, 24, 25, 45, 46,
+ 29, 28, 46, 29, 90, 25, 111, 23, 24, 24, 25, 23, 24, 50, 3, 1],
+ "height":16,
+ "width":16,
+ "x":96,
+ "y":0
+ },
+ {
+ "data":[46, 46, 46, 29, 24, 28, 47, 23, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 2, 51, 24, 25, 111, 23, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 24, 89, 24, 25, 111, 45, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29, 24, 24, 24, 28, 10, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+ 23, 24, 28, 46, 10, 51, 24, 50, 0, 0, 0, 0, 0, 0, 0, 0,
+ 51, 24, 50, 2, 32, 29, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 28, 46, 46, 47, 45, 46, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+ 90, 50, 3, 1, 2, 2, 2, 51, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 89, 25, 23, 24, 24, 90, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 25, 23, 90, 24, 28, 46, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 25, 23, 24, 24, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29, 24, 25, 45, 46, 46, 47, 45, 0, 0, 0, 0, 0, 0, 0, 0,
+ 32, 29, 50, 2, 3, 115, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 25, 45, 29, 28, 10, 2, 32, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+ 10, 2, 32, 10, 51, 24, 25, 23, 0, 0, 0, 0, 0, 0, 0, 0,
+ 51, 24, 25, 23, 24, 24, 25, 23, 0, 0, 0, 0, 0, 0, 0, 0],
+ "height":16,
+ "width":16,
+ "x":112,
+ "y":0
+ },
+ {
+ "data":[51, 24, 50, 51, 24, 24, 25, 45, 29, 24, 24, 28, 29, 24, 50, 3,
+ 24, 24, 28, 29, 28, 29, 25, 111, 23, 90, 24, 25, 23, 24, 24, 25,
+ 46, 46, 10, 51, 25, 23, 25, 115, 23, 90, 89, 50, 51, 24, 28, 47,
+ 2, 2, 51, 24, 25, 23, 25, 111, 23, 24, 24, 24, 24, 24, 50, 2,
+ 24, 24, 24, 24, 25, 23, 25, 111, 23, 89, 24, 28, 46, 29, 24, 90,
+ 24, 24, 24, 24, 50, 51, 25, 114, 23, 24, 89, 50, 2, 51, 28, 29,
+ 24, 24, 24, 28, 46, 46, 10, 3, 23, 24, 24, 24, 24, 24, 50, 32,
+ 29, 28, 29, 25, 1, 2, 51, 50, 51, 24, 90, 89, 28, 29, 24, 25,
+ 51, 50, 51, 25, 23, 90, 24, 24, 89, 24, 24, 24, 25, 23, 24, 50,
+ 29, 24, 24, 50, 32, 29, 24, 24, 24, 89, 24, 24, 25, 23, 24, 24,
+ 51, 24, 24, 24, 25, 23, 28, 29, 24, 90, 24, 24, 25, 23, 24, 24,
+ 28, 29, 24, 90, 50, 51, 50, 51, 28, 46, 46, 46, 10, 32, 46, 46,
+ 10, 51, 24, 24, 24, 24, 24, 24, 25, 114, 111, 115, 23, 50, 2, 2,
+ 23, 24, 24, 24, 24, 24, 24, 24, 50, 2, 2, 2, 51, 24, 24, 89,
+ 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 28, 46, 46, 29, 24, 24,
+ 32, 29, 24, 90, 24, 28, 29, 24, 24, 90, 25, 111, 113, 23, 90, 28],
+ "height":16,
+ "width":16,
+ "x":0,
+ "y":16
+ },
+ {
+ "data":[23, 24, 24, 50, 2, 2, 51, 89, 24, 28, 46, 10, 2, 51, 24, 28,
+ 23, 24, 28, 46, 46, 46, 46, 29, 28, 47, 1, 51, 90, 24, 24, 50,
+ 23, 89, 50, 2, 3, 115, 1, 51, 50, 2, 51, 89, 24, 24, 24, 28,
+ 51, 28, 29, 24, 50, 2, 51, 24, 28, 29, 90, 24, 28, 29, 28, 47,
+ 24, 50, 51, 24, 24, 24, 24, 24, 25, 45, 46, 46, 10, 32, 10, 3,
+ 24, 24, 24, 24, 24, 24, 24, 24, 50, 3, 111, 1, 32, 10, 51, 25,
+ 29, 24, 24, 28, 29, 24, 24, 28, 29, 50, 2, 51, 25, 45, 29, 25,
+ 45, 46, 29, 50, 32, 29, 24, 25, 23, 24, 24, 28, 10, 2, 32, 10,
+ 2, 2, 51, 89, 25, 23, 24, 50, 32, 46, 46, 10, 32, 29, 50, 51,
+ 89, 24, 24, 90, 50, 32, 46, 29, 50, 2, 3, 23, 50, 32, 29, 24,
+ 24, 24, 28, 46, 46, 10, 2, 51, 90, 90, 50, 51, 24, 50, 51, 89,
+ 29, 24, 50, 3, 1, 51, 24, 24, 24, 24, 28, 29, 89, 90, 89, 24,
+ 51, 24, 24, 25, 45, 29, 24, 24, 89, 24, 50, 51, 24, 90, 89, 28,
+ 89, 24, 24, 50, 2, 32, 29, 24, 90, 89, 24, 24, 24, 24, 24, 50,
+ 24, 24, 24, 24, 24, 25, 45, 46, 46, 46, 29, 24, 24, 24, 24, 24,
+ 29, 24, 89, 24, 24, 25, 1, 2, 3, 1, 51, 24, 24, 24, 24, 24],
+ "height":16,
+ "width":16,
+ "x":16,
+ "y":16
+ },
+ {
+ "data":[46, 47, 115, 115, 23, 24, 25, 23, 24, 24, 24, 24, 50, 2, 3, 23,
+ 2, 2, 3, 114, 23, 24, 25, 23, 24, 24, 24, 28, 29, 24, 50, 51,
+ 29, 24, 50, 3, 23, 24, 50, 51, 89, 89, 24, 50, 51, 89, 24, 24,
+ 23, 24, 24, 50, 32, 46, 29, 24, 24, 24, 90, 24, 24, 24, 24, 24,
+ 23, 24, 24, 24, 50, 2, 32, 46, 29, 28, 46, 46, 29, 24, 24, 24,
+ 23, 24, 28, 46, 46, 29, 25, 1, 32, 10, 2, 2, 32, 46, 29, 24,
+ 45, 46, 10, 2, 2, 51, 25, 23, 25, 23, 24, 24, 50, 2, 32, 29,
+ 2, 2, 32, 46, 29, 89, 50, 32, 47, 23, 24, 28, 46, 29, 50, 51,
+ 24, 24, 25, 1, 51, 24, 89, 50, 3, 23, 28, 10, 3, 23, 24, 89,
+ 24, 24, 50, 51, 24, 24, 24, 24, 50, 51, 50, 51, 50, 32, 46, 46,
+ 24, 24, 24, 24, 90, 89, 24, 28, 29, 24, 24, 24, 28, 10, 3, 115,
+ 24, 89, 28, 29, 24, 24, 24, 50, 51, 89, 24, 24, 50, 51, 25, 1,
+ 46, 46, 10, 51, 90, 89, 89, 24, 24, 90, 24, 24, 24, 24, 25, 23,
+ 2, 2, 51, 24, 24, 90, 24, 24, 24, 24, 24, 24, 24, 24, 50, 32,
+ 89, 24, 24, 24, 28, 29, 24, 24, 24, 24, 24, 24, 24, 24, 24, 50,
+ 24, 89, 24, 24, 50, 51, 89, 24, 24, 24, 24, 90, 24, 24, 24, 28],
+ "height":16,
+ "width":16,
+ "x":32,
+ "y":16
+ },
+ {
+ "data":[24, 24, 90, 89, 24, 24, 28, 29, 24, 90, 24, 24, 24, 89, 24, 24,
+ 24, 24, 28, 29, 24, 24, 50, 32, 29, 24, 24, 24, 24, 24, 24, 24,
+ 24, 89, 50, 51, 28, 29, 24, 25, 23, 89, 24, 24, 24, 24, 89, 24,
+ 90, 24, 24, 24, 25, 23, 24, 50, 51, 24, 24, 28, 46, 29, 89, 24,
+ 24, 24, 24, 24, 50, 51, 89, 24, 90, 24, 24, 25, 1, 32, 29, 89,
+ 28, 46, 46, 46, 46, 29, 89, 24, 24, 24, 24, 25, 45, 47, 23, 24,
+ 50, 2, 2, 2, 2, 32, 29, 24, 24, 24, 90, 50, 2, 2, 51, 24,
+ 24, 24, 24, 24, 24, 50, 32, 46, 29, 24, 24, 24, 90, 90, 24, 24,
+ 24, 28, 29, 24, 24, 24, 50, 2, 51, 24, 24, 28, 46, 46, 29, 24,
+ 29, 50, 51, 90, 24, 24, 24, 24, 24, 28, 29, 50, 3, 114, 23, 24,
+ 23, 24, 24, 90, 24, 90, 28, 29, 24, 25, 23, 24, 25, 115, 45, 46,
+ 51, 24, 28, 29, 24, 24, 50, 51, 89, 25, 23, 24, 25, 111, 115, 114,
+ 24, 24, 50, 32, 46, 29, 90, 24, 24, 50, 51, 24, 25, 111, 1, 2,
+ 29, 24, 24, 50, 2, 32, 29, 24, 24, 90, 24, 24, 25, 1, 51, 90,
+ 51, 24, 24, 24, 24, 25, 23, 24, 24, 24, 24, 24, 50, 51, 24, 89,
+ 29, 90, 24, 24, 28, 10, 32, 29, 90, 90, 90, 24, 24, 24, 89, 24],
+ "height":16,
+ "width":16,
+ "x":48,
+ "y":16
+ },
+ {
+ "data":[90, 24, 50, 3, 23, 50, 32, 10, 51, 24, 24, 25, 45, 29, 24, 50,
+ 28, 29, 24, 50, 51, 28, 10, 51, 90, 24, 24, 50, 2, 32, 29, 24,
+ 50, 51, 24, 90, 28, 47, 45, 46, 29, 24, 24, 28, 29, 50, 32, 29,
+ 28, 29, 89, 24, 50, 2, 2, 3, 23, 24, 24, 25, 23, 24, 50, 51,
+ 25, 23, 24, 28, 29, 24, 89, 50, 51, 24, 24, 50, 51, 89, 24, 24,
+ 25, 23, 24, 50, 51, 28, 29, 90, 24, 24, 90, 24, 24, 24, 24, 24,
+ 25, 45, 29, 24, 24, 50, 51, 24, 90, 24, 24, 24, 89, 24, 24, 24,
+ 50, 2, 32, 29, 24, 24, 24, 89, 90, 89, 24, 24, 28, 29, 24, 28,
+ 24, 89, 25, 45, 46, 46, 29, 24, 24, 24, 24, 24, 25, 23, 24, 25,
+ 24, 24, 50, 2, 2, 2, 51, 24, 24, 24, 24, 89, 25, 23, 24, 50,
+ 29, 24, 24, 24, 24, 89, 24, 90, 24, 28, 29, 24, 25, 23, 24, 24,
+ 45, 29, 28, 46, 46, 46, 29, 24, 89, 25, 45, 46, 10, 32, 29, 24,
+ 2, 32, 10, 3, 114, 115, 45, 29, 24, 50, 2, 2, 51, 50, 51, 24,
+ 24, 50, 32, 10, 3, 114, 1, 32, 29, 24, 24, 89, 24, 90, 24, 24,
+ 24, 24, 50, 32, 10, 2, 51, 50, 32, 29, 24, 24, 24, 24, 28, 29,
+ 24, 89, 24, 50, 32, 29, 24, 28, 47, 23, 24, 28, 29, 24, 50, 51],
+ "height":16,
+ "width":16,
+ "x":64,
+ "y":16
+ },
+ {
+ "data":[51, 50, 2, 51, 24, 24, 24, 24, 24, 25, 23, 24, 24, 24, 50, 2,
+ 24, 24, 28, 29, 24, 24, 24, 90, 28, 47, 23, 89, 24, 24, 90, 28,
+ 24, 28, 10, 51, 24, 24, 24, 24, 25, 114, 23, 24, 24, 24, 24, 25,
+ 24, 50, 51, 24, 24, 24, 89, 24, 25, 114, 45, 29, 24, 89, 24, 50,
+ 24, 24, 24, 24, 89, 24, 24, 24, 25, 114, 115, 23, 24, 24, 24, 24,
+ 28, 29, 90, 24, 89, 24, 24, 28, 47, 114, 111, 23, 24, 24, 24, 24,
+ 50, 51, 24, 24, 24, 24, 24, 50, 2, 2, 2, 51, 28, 29, 90, 28,
+ 29, 24, 89, 90, 28, 46, 29, 28, 29, 24, 24, 24, 50, 51, 24, 50,
+ 45, 46, 29, 24, 50, 2, 51, 50, 32, 29, 24, 24, 90, 24, 24, 24,
+ 2, 2, 32, 29, 24, 24, 24, 24, 25, 23, 24, 90, 24, 24, 24, 90,
+ 90, 24, 25, 23, 89, 24, 89, 24, 50, 51, 90, 24, 24, 24, 24, 24,
+ 24, 24, 50, 51, 24, 24, 90, 24, 28, 29, 24, 24, 24, 24, 24, 24,
+ 24, 90, 89, 90, 24, 24, 90, 24, 50, 51, 90, 90, 24, 24, 24, 24,
+ 24, 24, 24, 89, 90, 90, 24, 24, 24, 28, 46, 46, 46, 46, 46, 29,
+ 24, 24, 24, 24, 24, 28, 46, 29, 24, 50, 2, 2, 2, 2, 2, 51,
+ 24, 90, 24, 28, 29, 50, 3, 23, 24, 89, 90, 28, 29, 24, 24, 24],
+ "height":16,
+ "width":16,
+ "x":80,
+ "y":16
+ },
+ {
+ "data":[51, 50, 3, 23, 24, 50, 2, 51, 24, 28, 47, 23, 24, 24, 25, 23,
+ 29, 24, 25, 23, 24, 89, 90, 90, 89, 25, 115, 23, 24, 24, 50, 51,
+ 23, 24, 25, 23, 90, 24, 24, 28, 29, 50, 2, 32, 29, 89, 24, 24,
+ 51, 24, 50, 51, 24, 24, 24, 25, 45, 29, 90, 50, 51, 24, 24, 24,
+ 24, 24, 89, 24, 24, 28, 46, 10, 2, 32, 29, 24, 24, 89, 28, 46,
+ 24, 24, 24, 28, 29, 25, 115, 45, 46, 10, 51, 24, 24, 24, 50, 2,
+ 29, 24, 24, 25, 23, 50, 2, 2, 2, 32, 46, 29, 28, 29, 24, 24,
+ 32, 29, 24, 50, 51, 90, 90, 24, 24, 25, 1, 32, 47, 23, 24, 24,
+ 50, 51, 24, 24, 24, 24, 89, 24, 24, 50, 32, 10, 3, 23, 89, 24,
+ 24, 24, 24, 90, 24, 24, 24, 28, 46, 46, 10, 51, 25, 45, 29, 90,
+ 28, 29, 28, 29, 24, 24, 24, 50, 3, 114, 45, 46, 10, 2, 32, 46,
+ 50, 51, 50, 51, 24, 90, 24, 24, 25, 111, 111, 112, 45, 46, 10, 2,
+ 24, 24, 90, 24, 28, 46, 46, 29, 50, 2, 2, 2, 3, 1, 51, 24,
+ 24, 24, 24, 28, 10, 2, 2, 32, 29, 90, 24, 24, 25, 23, 24, 24,
+ 24, 28, 29, 50, 32, 46, 29, 50, 51, 24, 90, 24, 50, 51, 28, 29,
+ 28, 10, 51, 24, 25, 1, 32, 29, 24, 24, 90, 24, 24, 24, 50, 51],
+ "height":16,
+ "width":16,
+ "x":96,
+ "y":16
+ },
+ {
+ "data":[24, 89, 25, 23, 24, 28, 47, 23, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 50, 32, 29, 50, 2, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 28, 29, 50, 51, 24, 24, 50, 0, 0, 0, 0, 0, 0, 0, 0,
+ 28, 10, 51, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 10, 51, 24, 90, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 51, 24, 24, 24, 28, 46, 46, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 24, 28, 47, 1, 2, 51, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 24, 50, 2, 51, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 24, 24, 24, 24, 24, 28, 0, 0, 0, 0, 0, 0, 0, 0,
+ 28, 29, 28, 29, 28, 29, 24, 50, 0, 0, 0, 0, 0, 0, 0, 0,
+ 10, 32, 10, 51, 25, 23, 28, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+ 32, 10, 51, 24, 25, 23, 25, 23, 0, 0, 0, 0, 0, 0, 0, 0,
+ 25, 45, 29, 24, 25, 23, 25, 23, 0, 0, 0, 0, 0, 0, 0, 0,
+ 50, 2, 51, 24, 25, 23, 25, 23, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 89, 24, 24, 50, 51, 50, 51, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 24, 24, 89, 24, 89, 24, 0, 0, 0, 0, 0, 0, 0, 0],
+ "height":16,
+ "width":16,
+ "x":112,
+ "y":16
+ },
+
+ {
+ "data":[10, 32, 29, 28, 46, 10, 32, 29, 24, 24, 25, 111, 1, 51, 24, 25,
+ 23, 25, 23, 50, 2, 51, 50, 32, 46, 29, 50, 3, 23, 24, 24, 25,
+ 32, 10, 32, 29, 24, 24, 24, 50, 3, 23, 28, 10, 32, 29, 24, 50,
+ 10, 51, 50, 51, 24, 28, 46, 29, 25, 23, 25, 23, 50, 51, 24, 24,
+ 51, 24, 24, 24, 89, 25, 111, 23, 25, 23, 50, 32, 29, 24, 24, 24,
+ 24, 90, 24, 24, 24, 25, 111, 23, 50, 32, 46, 10, 51, 90, 89, 24,
+ 24, 24, 28, 29, 24, 50, 2, 51, 24, 50, 2, 32, 29, 24, 24, 28,
+ 24, 24, 50, 51, 24, 89, 89, 24, 24, 24, 24, 25, 23, 89, 28, 10,
+ 24, 28, 29, 24, 24, 90, 24, 24, 90, 28, 29, 50, 32, 29, 25, 23,
+ 24, 25, 23, 24, 89, 90, 24, 24, 24, 50, 51, 28, 10, 51, 50, 51,
+ 24, 50, 32, 46, 29, 90, 28, 29, 24, 24, 24, 25, 23, 24, 24, 90,
+ 24, 90, 50, 2, 32, 29, 50, 32, 29, 24, 24, 50, 51, 28, 46, 29,
+ 24, 24, 28, 46, 10, 51, 24, 25, 23, 24, 24, 24, 24, 50, 2, 51,
+ 24, 24, 25, 1, 51, 24, 89, 50, 32, 29, 24, 24, 24, 24, 24, 90,
+ 46, 46, 47, 23, 89, 24, 24, 90, 50, 51, 24, 24, 24, 89, 24, 24,
+ 115, 111, 1, 51, 24, 24, 24, 90, 24, 28, 29, 24, 90, 24, 24, 24],
+ "height":16,
+ "width":16,
+ "x":0,
+ "y":32
+ },
+ {
+ "data":[23, 24, 90, 28, 46, 10, 51, 24, 25, 23, 24, 24, 24, 28, 46, 46,
+ 23, 24, 24, 25, 115, 23, 24, 90, 25, 23, 28, 46, 46, 10, 2, 2,
+ 51, 24, 89, 50, 2, 51, 24, 89, 50, 32, 10, 2, 2, 32, 29, 24,
+ 28, 46, 29, 24, 24, 24, 24, 24, 24, 50, 51, 24, 28, 10, 32, 46,
+ 25, 1, 51, 24, 24, 24, 89, 24, 24, 24, 24, 24, 25, 23, 25, 114,
+ 50, 32, 29, 28, 46, 46, 29, 24, 24, 24, 24, 24, 50, 32, 10, 2,
+ 46, 47, 23, 25, 1, 2, 51, 24, 24, 24, 28, 29, 24, 25, 45, 46,
+ 2, 2, 51, 50, 51, 24, 24, 24, 24, 24, 50, 51, 28, 10, 2, 2,
+ 24, 24, 24, 24, 24, 24, 24, 90, 24, 24, 28, 46, 10, 51, 24, 24,
+ 89, 24, 24, 24, 28, 46, 29, 24, 24, 24, 50, 2, 51, 24, 28, 29,
+ 90, 24, 24, 90, 25, 1, 51, 24, 24, 89, 28, 29, 90, 24, 25, 23,
+ 89, 28, 29, 24, 25, 23, 24, 24, 24, 28, 10, 32, 29, 24, 25, 23,
+ 24, 25, 23, 24, 25, 23, 24, 90, 24, 50, 32, 47, 23, 24, 50, 32,
+ 24, 50, 32, 46, 47, 23, 24, 24, 90, 24, 25, 1, 51, 24, 28, 10,
+ 24, 28, 10, 2, 3, 23, 90, 28, 29, 24, 50, 51, 28, 46, 10, 51,
+ 24, 50, 51, 24, 50, 32, 29, 50, 51, 28, 29, 24, 25, 114, 23, 89],
+ "height":16,
+ "width":16,
+ "x":16,
+ "y":32
+ },
+ {
+ "data":[46, 29, 24, 24, 89, 90, 24, 24, 24, 28, 29, 89, 24, 24, 24, 50,
+ 2, 32, 46, 29, 24, 24, 24, 24, 24, 50, 32, 29, 24, 89, 24, 24,
+ 24, 50, 2, 51, 24, 24, 24, 89, 24, 90, 25, 23, 24, 90, 24, 24,
+ 29, 24, 24, 24, 24, 24, 24, 90, 24, 24, 25, 23, 90, 24, 89, 24,
+ 23, 24, 24, 24, 24, 89, 89, 24, 24, 24, 50, 32, 29, 24, 24, 24,
+ 32, 29, 24, 90, 24, 24, 89, 24, 28, 29, 89, 50, 32, 29, 24, 24,
+ 47, 23, 89, 24, 24, 24, 24, 24, 50, 32, 46, 29, 50, 32, 29, 24,
+ 2, 51, 24, 89, 24, 24, 24, 24, 24, 25, 1, 51, 24, 25, 23, 24,
+ 89, 24, 24, 24, 24, 90, 24, 28, 46, 10, 51, 24, 24, 25, 23, 24,
+ 24, 24, 28, 29, 24, 24, 24, 50, 2, 51, 24, 24, 24, 50, 51, 89,
+ 24, 24, 25, 23, 24, 89, 24, 24, 24, 89, 89, 24, 24, 24, 24, 24,
+ 90, 28, 47, 23, 89, 24, 24, 24, 28, 46, 29, 89, 24, 24, 24, 89,
+ 29, 50, 2, 51, 24, 24, 24, 24, 50, 2, 51, 24, 24, 24, 24, 24,
+ 32, 46, 29, 24, 28, 29, 24, 24, 28, 29, 24, 24, 24, 24, 89, 24,
+ 50, 2, 51, 89, 25, 45, 46, 46, 10, 51, 24, 24, 24, 24, 24, 28,
+ 24, 24, 24, 24, 50, 2, 3, 1, 51, 90, 24, 90, 24, 89, 28, 10],
+ "height":16,
+ "width":16,
+ "x":32,
+ "y":32
+ },
+ {
+ "data":[32, 29, 24, 24, 25, 23, 50, 51, 24, 89, 24, 24, 28, 46, 29, 24,
+ 50, 51, 24, 24, 50, 51, 90, 24, 24, 24, 24, 24, 50, 2, 32, 29,
+ 24, 24, 24, 24, 24, 89, 24, 24, 89, 24, 24, 24, 24, 24, 50, 51,
+ 24, 24, 24, 28, 29, 28, 29, 90, 24, 24, 24, 24, 90, 24, 89, 24,
+ 24, 28, 29, 50, 32, 10, 32, 46, 29, 24, 24, 89, 24, 24, 24, 24,
+ 24, 50, 51, 24, 50, 51, 50, 2, 51, 89, 24, 24, 24, 24, 24, 24,
+ 28, 29, 24, 89, 24, 24, 24, 24, 24, 24, 24, 24, 24, 89, 24, 24,
+ 50, 32, 46, 46, 46, 29, 28, 29, 24, 24, 24, 24, 28, 29, 24, 28,
+ 24, 50, 2, 2, 2, 51, 50, 51, 24, 24, 28, 46, 10, 51, 24, 50,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 114, 23, 89, 90, 89,
+ 24, 24, 24, 24, 28, 46, 29, 24, 24, 24, 25, 1, 51, 28, 29, 24,
+ 24, 24, 28, 29, 25, 111, 23, 24, 24, 90, 50, 51, 24, 25, 23, 24,
+ 24, 89, 25, 23, 25, 111, 23, 24, 24, 24, 28, 29, 89, 25, 23, 24,
+ 24, 90, 50, 51, 50, 3, 45, 29, 24, 89, 50, 32, 29, 25, 23, 28,
+ 29, 24, 90, 24, 24, 50, 3, 45, 29, 24, 90, 50, 51, 50, 51, 50,
+ 32, 29, 24, 24, 28, 46, 10, 3, 23, 24, 24, 24, 24, 24, 24, 24],
+ "height":16,
+ "width":16,
+ "x":48,
+ "y":32
+ },
+ {
+ "data":[24, 24, 90, 24, 50, 51, 24, 50, 2, 32, 29, 50, 51, 24, 28, 46,
+ 24, 24, 24, 28, 46, 29, 90, 89, 24, 50, 32, 29, 24, 24, 25, 1,
+ 24, 24, 89, 50, 3, 23, 24, 24, 24, 24, 25, 23, 28, 29, 50, 51,
+ 24, 28, 46, 29, 50, 51, 24, 24, 24, 24, 50, 51, 25, 23, 24, 24,
+ 28, 10, 2, 32, 29, 24, 24, 90, 24, 24, 24, 24, 25, 23, 28, 29,
+ 25, 23, 90, 50, 51, 90, 24, 24, 24, 89, 28, 46, 47, 23, 50, 32,
+ 25, 23, 24, 24, 24, 24, 24, 24, 24, 24, 25, 111, 114, 45, 29, 25,
+ 10, 51, 24, 90, 24, 24, 24, 28, 46, 29, 50, 3, 1, 2, 51, 50,
+ 51, 24, 24, 24, 90, 24, 24, 50, 3, 23, 24, 50, 51, 24, 24, 24,
+ 89, 24, 24, 24, 24, 28, 29, 24, 50, 51, 28, 29, 24, 24, 24, 24,
+ 24, 24, 24, 28, 29, 50, 51, 24, 24, 24, 50, 32, 29, 24, 24, 24,
+ 90, 24, 24, 50, 51, 24, 24, 24, 24, 90, 24, 25, 23, 24, 24, 24,
+ 24, 24, 89, 24, 89, 24, 24, 24, 24, 24, 28, 10, 51, 24, 28, 29,
+ 29, 24, 24, 24, 24, 24, 28, 29, 24, 24, 25, 45, 46, 29, 50, 32,
+ 32, 29, 24, 28, 46, 29, 50, 51, 28, 29, 50, 2, 2, 51, 24, 25,
+ 50, 32, 29, 25, 1, 32, 29, 24, 25, 23, 28, 29, 28, 29, 24, 50],
+ "height":16,
+ "width":16,
+ "x":64,
+ "y":32
+ },
+ {
+ "data":[29, 24, 89, 25, 45, 29, 25, 23, 24, 24, 24, 25, 23, 24, 24, 24,
+ 32, 29, 24, 25, 111, 23, 50, 51, 89, 24, 89, 50, 51, 24, 28, 29,
+ 50, 32, 46, 10, 2, 51, 89, 90, 24, 24, 24, 24, 24, 24, 50, 51,
+ 90, 50, 2, 51, 24, 24, 24, 24, 24, 24, 24, 89, 24, 28, 46, 46,
+ 24, 24, 24, 24, 89, 24, 24, 90, 24, 28, 29, 28, 29, 25, 111, 115,
+ 29, 24, 90, 24, 24, 24, 90, 89, 24, 50, 32, 10, 51, 25, 1, 2,
+ 23, 24, 24, 24, 24, 24, 24, 24, 24, 28, 10, 32, 46, 10, 51, 24,
+ 51, 24, 28, 29, 89, 24, 24, 24, 90, 25, 23, 50, 2, 51, 24, 24,
+ 24, 24, 50, 32, 29, 24, 24, 24, 24, 25, 45, 29, 28, 29, 90, 24,
+ 24, 24, 24, 25, 23, 24, 28, 46, 46, 47, 1, 51, 50, 51, 24, 89,
+ 24, 24, 89, 25, 45, 29, 25, 115, 115, 115, 23, 28, 46, 29, 24, 24,
+ 24, 24, 24, 25, 1, 51, 50, 2, 2, 2, 32, 10, 2, 32, 46, 46,
+ 28, 46, 29, 25, 23, 24, 28, 46, 29, 24, 25, 45, 29, 50, 2, 3,
+ 10, 2, 51, 50, 51, 24, 50, 2, 32, 46, 47, 111, 23, 24, 89, 25,
+ 23, 24, 89, 24, 24, 24, 24, 24, 50, 2, 3, 114, 23, 24, 89, 25,
+ 51, 24, 24, 24, 28, 29, 24, 28, 29, 24, 50, 2, 51, 24, 90, 50],
+ "height":16,
+ "width":16,
+ "x":80,
+ "y":32
+ },
+ {
+ "data":[25, 23, 24, 24, 50, 51, 50, 51, 24, 24, 24, 89, 24, 24, 24, 24,
+ 25, 45, 29, 24, 24, 24, 24, 24, 89, 24, 24, 24, 24, 24, 24, 24,
+ 50, 3, 23, 24, 24, 24, 28, 29, 28, 46, 29, 90, 24, 24, 24, 24,
+ 29, 25, 23, 24, 24, 24, 50, 51, 50, 2, 51, 24, 24, 24, 24, 90,
+ 23, 50, 32, 46, 29, 24, 24, 28, 29, 24, 24, 24, 24, 24, 24, 24,
+ 51, 24, 50, 3, 23, 24, 24, 25, 23, 28, 29, 24, 24, 24, 24, 89,
+ 28, 29, 28, 10, 51, 24, 24, 50, 51, 50, 51, 24, 24, 24, 24, 24,
+ 50, 32, 47, 45, 29, 24, 24, 24, 24, 28, 29, 24, 28, 29, 89, 24,
+ 24, 50, 2, 3, 23, 24, 90, 90, 24, 25, 23, 24, 50, 51, 24, 24,
+ 24, 24, 24, 50, 51, 24, 24, 24, 24, 50, 51, 24, 28, 29, 24, 24,
+ 24, 24, 24, 24, 89, 24, 24, 24, 28, 46, 29, 89, 50, 51, 24, 24,
+ 46, 46, 46, 29, 28, 29, 24, 24, 50, 2, 32, 29, 90, 28, 46, 29,
+ 1, 2, 2, 32, 10, 32, 29, 89, 89, 24, 50, 51, 24, 25, 115, 23,
+ 23, 24, 24, 50, 51, 25, 23, 28, 46, 29, 24, 24, 24, 50, 2, 32,
+ 45, 29, 24, 24, 24, 50, 32, 10, 2, 51, 24, 24, 24, 24, 28, 47,
+ 2, 51, 24, 28, 46, 46, 47, 45, 46, 29, 24, 24, 28, 46, 10, 2],
+ "height":16,
+ "width":16,
+ "x":96,
+ "y":32
+ },
+ {
+ "data":[24, 90, 24, 89, 24, 28, 29, 28, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 24, 24, 24, 25, 23, 25, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 24, 24, 89, 25, 23, 25, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 24, 24, 24, 25, 23, 25, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 89, 24, 24, 25, 23, 25, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 28, 46, 29, 50, 51, 25, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 50, 2, 51, 90, 89, 50, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 28, 29, 28, 29, 28, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 25, 23, 50, 32, 47, 23, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 25, 23, 24, 50, 2, 51, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 25, 23, 28, 29, 90, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 50, 32, 47, 23, 90, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 28, 10, 2, 51, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29, 24, 50, 32, 29, 24, 24, 28, 0, 0, 0, 0, 0, 0, 0, 0,
+ 23, 28, 29, 50, 51, 24, 28, 10, 0, 0, 0, 0, 0, 0, 0, 0,
+ 51, 50, 51, 24, 24, 24, 50, 51, 0, 0, 0, 0, 0, 0, 0, 0],
+ "height":16,
+ "width":16,
+ "x":112,
+ "y":32
+ },
+ {
+ "data":[3, 114, 23, 24, 28, 29, 24, 90, 24, 50, 51, 24, 24, 24, 24, 24,
+ 50, 2, 32, 29, 25, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 50, 32, 10, 32, 29, 24, 89, 90, 24, 89, 28, 46, 29, 24,
+ 46, 29, 89, 50, 51, 50, 51, 24, 24, 28, 46, 46, 10, 2, 32, 29,
+ 2, 32, 29, 24, 24, 24, 90, 28, 46, 47, 1, 3, 23, 24, 50, 32,
+ 24, 50, 51, 24, 24, 24, 24, 25, 111, 111, 23, 25, 23, 24, 28, 10,
+ 24, 24, 28, 29, 89, 24, 24, 25, 1, 3, 23, 25, 45, 29, 50, 51,
+ 24, 28, 10, 51, 24, 24, 24, 50, 32, 10, 51, 25, 111, 23, 24, 24,
+ 24, 25, 23, 24, 24, 24, 24, 24, 50, 51, 24, 50, 2, 32, 46, 29,
+ 29, 25, 23, 24, 24, 24, 28, 29, 28, 29, 24, 24, 24, 50, 2, 32,
+ 23, 50, 32, 29, 24, 24, 50, 51, 25, 23, 24, 24, 24, 24, 28, 10,
+ 23, 24, 50, 32, 46, 29, 24, 24, 50, 51, 24, 28, 46, 29, 25, 23,
+ 32, 46, 46, 10, 2, 51, 24, 24, 28, 46, 29, 50, 3, 45, 47, 45,
+ 50, 2, 2, 32, 46, 29, 24, 89, 25, 111, 23, 24, 50, 2, 2, 2,
+ 24, 24, 24, 50, 2, 51, 90, 28, 47, 114, 23, 24, 24, 24, 24, 24,
+ 24, 89, 24, 24, 89, 28, 29, 50, 2, 2, 32, 29, 24, 24, 24, 24],
+ "height":16,
+ "width":16,
+ "x":0,
+ "y":48
+ },
+ {
+ "data":[24, 28, 46, 29, 24, 25, 23, 24, 90, 25, 23, 24, 50, 2, 51, 24,
+ 24, 25, 111, 23, 28, 47, 23, 24, 24, 25, 45, 29, 24, 24, 28, 46,
+ 90, 25, 111, 23, 25, 1, 51, 24, 90, 50, 2, 51, 90, 24, 50, 2,
+ 90, 25, 114, 23, 25, 23, 24, 28, 46, 29, 24, 89, 24, 24, 28, 46,
+ 46, 10, 2, 51, 25, 23, 28, 10, 2, 51, 89, 24, 24, 24, 25, 111,
+ 2, 32, 29, 24, 25, 23, 25, 23, 28, 29, 24, 24, 24, 24, 25, 115,
+ 24, 50, 51, 24, 50, 51, 25, 23, 25, 23, 24, 24, 24, 89, 25, 1,
+ 24, 28, 46, 29, 24, 24, 50, 51, 25, 23, 89, 28, 46, 46, 47, 23,
+ 24, 50, 2, 51, 24, 24, 24, 24, 50, 51, 89, 50, 3, 115, 111, 23,
+ 29, 24, 24, 24, 24, 90, 24, 24, 24, 89, 24, 24, 25, 1, 2, 51,
+ 32, 46, 46, 46, 46, 29, 24, 24, 24, 24, 24, 24, 50, 51, 89, 89,
+ 50, 2, 2, 2, 2, 51, 24, 90, 24, 24, 24, 24, 24, 28, 46, 46,
+ 46, 46, 29, 24, 24, 28, 29, 24, 24, 24, 24, 24, 24, 50, 2, 2,
+ 2, 2, 51, 24, 24, 25, 23, 89, 24, 24, 24, 24, 28, 29, 24, 28,
+ 24, 24, 24, 28, 46, 10, 51, 24, 24, 89, 90, 24, 50, 32, 46, 10,
+ 24, 24, 24, 50, 2, 51, 24, 24, 24, 24, 24, 90, 24, 25, 1, 51],
+ "height":16,
+ "width":16,
+ "x":16,
+ "y":48
+ },
+ {
+ "data":[90, 24, 24, 24, 90, 24, 50, 51, 24, 24, 24, 24, 24, 90, 50, 51,
+ 46, 29, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 90, 24,
+ 2, 51, 24, 24, 24, 24, 90, 24, 28, 29, 24, 24, 24, 24, 24, 24,
+ 29, 24, 28, 29, 90, 24, 24, 24, 25, 23, 24, 24, 24, 90, 24, 90,
+ 23, 24, 50, 32, 46, 29, 24, 28, 10, 51, 24, 24, 24, 89, 24, 24,
+ 23, 28, 29, 50, 3, 23, 24, 50, 32, 29, 90, 89, 24, 90, 24, 24,
+ 32, 10, 51, 90, 50, 32, 46, 46, 10, 51, 24, 24, 24, 90, 24, 24,
+ 25, 23, 24, 24, 24, 50, 2, 3, 23, 89, 24, 24, 24, 24, 24, 24,
+ 50, 32, 29, 24, 24, 24, 24, 50, 51, 90, 24, 24, 24, 24, 24, 24,
+ 24, 50, 32, 46, 29, 24, 89, 24, 24, 24, 24, 24, 24, 89, 24, 28,
+ 28, 29, 25, 1, 32, 29, 24, 28, 29, 24, 24, 28, 29, 24, 24, 50,
+ 10, 51, 50, 32, 47, 45, 29, 25, 45, 29, 24, 25, 23, 24, 24, 24,
+ 51, 24, 24, 50, 2, 2, 51, 50, 2, 32, 46, 10, 51, 24, 24, 24,
+ 46, 46, 46, 46, 46, 29, 90, 24, 28, 10, 3, 45, 29, 24, 89, 24,
+ 3, 115, 114, 111, 1, 51, 24, 24, 25, 23, 25, 1, 32, 29, 90, 24,
+ 25, 1, 2, 2, 32, 29, 24, 24, 50, 51, 50, 32, 10, 51, 24, 90],
+ "height":16,
+ "width":16,
+ "x":32,
+ "y":48
+ },
+ {
+ "data":[25, 23, 89, 24, 50, 2, 51, 50, 32, 29, 24, 89, 24, 90, 24, 90,
+ 50, 32, 29, 24, 24, 24, 24, 24, 50, 51, 24, 90, 89, 24, 24, 28,
+ 24, 25, 23, 24, 90, 28, 46, 46, 46, 46, 29, 24, 24, 24, 24, 50,
+ 28, 10, 51, 24, 24, 25, 1, 3, 1, 2, 51, 24, 24, 24, 24, 28,
+ 50, 51, 90, 90, 90, 50, 51, 25, 45, 29, 24, 24, 24, 24, 28, 10,
+ 24, 28, 29, 24, 24, 24, 24, 25, 1, 51, 24, 24, 24, 24, 50, 51,
+ 24, 50, 51, 24, 24, 24, 24, 50, 32, 29, 24, 24, 28, 29, 24, 24,
+ 24, 24, 24, 24, 24, 90, 24, 24, 25, 23, 24, 89, 50, 51, 24, 90,
+ 90, 24, 28, 46, 46, 29, 24, 24, 50, 51, 28, 29, 24, 24, 24, 24,
+ 29, 90, 50, 3, 114, 45, 29, 24, 24, 24, 50, 32, 29, 24, 24, 24,
+ 51, 24, 24, 50, 3, 114, 23, 24, 24, 24, 24, 25, 23, 24, 28, 46,
+ 24, 24, 24, 24, 50, 2, 32, 29, 24, 24, 24, 50, 32, 46, 10, 2,
+ 24, 24, 24, 24, 24, 24, 25, 23, 24, 24, 24, 90, 50, 2, 51, 24,
+ 24, 24, 24, 24, 24, 24, 50, 51, 89, 24, 24, 24, 89, 24, 24, 24,
+ 24, 24, 24, 24, 28, 46, 29, 24, 24, 28, 29, 24, 24, 24, 24, 24,
+ 24, 89, 24, 24, 50, 2, 51, 24, 89, 25, 23, 24, 24, 24, 24, 89],
+ "height":16,
+ "width":16,
+ "x":48,
+ "y":48
+ },
+ {
+ "data":[28, 47, 23, 25, 23, 50, 32, 29, 50, 32, 10, 51, 50, 51, 24, 24,
+ 47, 111, 23, 50, 51, 24, 25, 45, 46, 10, 32, 29, 24, 24, 24, 24,
+ 2, 2, 51, 24, 24, 24, 50, 2, 2, 32, 10, 51, 24, 90, 24, 24,
+ 29, 89, 24, 24, 24, 24, 24, 24, 89, 50, 51, 24, 24, 24, 24, 24,
+ 32, 46, 29, 24, 24, 24, 24, 24, 24, 24, 90, 24, 24, 28, 29, 24,
+ 50, 3, 45, 29, 24, 24, 24, 90, 89, 24, 28, 46, 46, 10, 32, 29,
+ 24, 25, 114, 23, 24, 24, 89, 24, 24, 24, 50, 2, 2, 51, 50, 51,
+ 24, 50, 2, 51, 24, 24, 28, 29, 24, 24, 28, 46, 29, 90, 24, 24,
+ 28, 29, 24, 24, 24, 90, 50, 51, 24, 24, 25, 1, 32, 29, 90, 24,
+ 50, 32, 46, 46, 29, 24, 24, 28, 29, 24, 50, 51, 25, 23, 24, 28,
+ 46, 47, 1, 2, 51, 24, 24, 50, 51, 28, 46, 29, 25, 45, 29, 50,
+ 3, 1, 51, 28, 29, 24, 24, 24, 24, 25, 114, 23, 50, 3, 45, 29,
+ 50, 51, 89, 25, 45, 29, 28, 29, 28, 10, 2, 32, 46, 10, 2, 51,
+ 24, 24, 24, 50, 2, 51, 50, 51, 25, 45, 29, 50, 2, 32, 29, 89,
+ 24, 24, 28, 29, 24, 24, 24, 24, 25, 111, 23, 24, 24, 50, 51, 24,
+ 24, 24, 50, 51, 24, 24, 24, 24, 50, 2, 51, 90, 24, 24, 24, 89],
+ "height":16,
+ "width":16,
+ "x":64,
+ "y":48
+ },
+ {
+ "data":[24, 24, 24, 24, 50, 32, 29, 50, 32, 29, 24, 90, 24, 24, 24, 24,
+ 24, 24, 24, 24, 28, 10, 32, 46, 47, 23, 89, 24, 24, 24, 24, 24,
+ 24, 24, 28, 46, 10, 51, 50, 2, 2, 51, 24, 89, 90, 24, 24, 24,
+ 24, 89, 50, 3, 45, 29, 24, 28, 46, 29, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 50, 2, 51, 24, 50, 2, 51, 24, 24, 24, 24, 24, 24,
+ 28, 46, 46, 29, 24, 24, 28, 29, 24, 24, 24, 24, 28, 29, 24, 24,
+ 25, 115, 1, 51, 24, 24, 50, 32, 29, 24, 24, 24, 50, 51, 90, 90,
+ 25, 114, 23, 90, 24, 24, 24, 50, 51, 28, 46, 46, 46, 29, 24, 24,
+ 50, 2, 51, 24, 24, 28, 29, 24, 24, 50, 3, 114, 111, 45, 29, 24,
+ 29, 24, 24, 24, 24, 50, 32, 46, 29, 24, 50, 2, 2, 2, 51, 24,
+ 51, 24, 28, 29, 24, 24, 50, 2, 51, 89, 24, 24, 89, 28, 46, 29,
+ 24, 89, 50, 32, 29, 89, 28, 29, 24, 28, 29, 90, 24, 25, 111, 23,
+ 24, 24, 24, 50, 51, 24, 50, 51, 28, 10, 32, 29, 24, 50, 2, 32,
+ 24, 28, 29, 24, 24, 28, 29, 24, 25, 23, 50, 51, 24, 90, 24, 50,
+ 89, 50, 51, 24, 24, 25, 23, 24, 25, 45, 29, 24, 28, 46, 29, 89,
+ 24, 24, 24, 24, 28, 47, 23, 89, 25, 1, 51, 90, 25, 1, 32, 29],
+ "height":16,
+ "width":16,
+ "x":80,
+ "y":48
+ },
+ {
+ "data":[90, 24, 28, 10, 2, 2, 2, 3, 114, 23, 28, 29, 50, 2, 51, 24,
+ 89, 24, 50, 32, 29, 24, 24, 50, 2, 51, 50, 51, 24, 24, 24, 24,
+ 24, 24, 24, 50, 51, 24, 24, 28, 29, 24, 24, 24, 28, 29, 24, 24,
+ 24, 24, 24, 24, 90, 24, 24, 50, 51, 24, 90, 24, 50, 51, 28, 46,
+ 89, 89, 24, 24, 24, 24, 24, 89, 24, 24, 24, 24, 24, 24, 50, 3,
+ 90, 24, 24, 24, 89, 24, 89, 28, 46, 46, 46, 29, 24, 24, 90, 50,
+ 24, 24, 90, 24, 24, 24, 24, 50, 2, 2, 3, 45, 29, 24, 24, 24,
+ 24, 89, 24, 24, 90, 90, 24, 24, 24, 24, 50, 2, 51, 24, 24, 24,
+ 24, 28, 46, 29, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 50, 2, 32, 29, 24, 24, 90, 24, 90, 24, 28, 46, 29, 24, 24,
+ 24, 24, 24, 50, 51, 24, 24, 24, 24, 24, 24, 50, 2, 51, 24, 28,
+ 24, 24, 24, 24, 24, 24, 24, 89, 90, 24, 28, 46, 46, 29, 90, 50,
+ 29, 90, 24, 24, 24, 28, 29, 24, 24, 24, 25, 1, 2, 32, 46, 46,
+ 51, 24, 24, 89, 24, 50, 32, 29, 24, 24, 50, 32, 46, 10, 2, 2,
+ 28, 46, 46, 29, 24, 24, 50, 32, 46, 46, 29, 25, 114, 23, 28, 29,
+ 50, 2, 2, 51, 28, 46, 46, 47, 111, 1, 32, 10, 3, 23, 50, 32],
+ "height":16,
+ "width":16,
+ "x":96,
+ "y":48
+ },
+ {
+ "data":[24, 24, 28, 29, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 25, 23, 24, 24, 28, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 25, 23, 28, 46, 10, 51, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29, 28, 10, 51, 50, 2, 51, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 23, 50, 51, 24, 90, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 51, 24, 24, 24, 24, 90, 89, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 28, 29, 24, 24, 24, 89, 89, 0, 0, 0, 0, 0, 0, 0, 0,
+ 28, 10, 32, 46, 29, 24, 24, 89, 0, 0, 0, 0, 0, 0, 0, 0,
+ 25, 23, 50, 3, 45, 46, 29, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 25, 45, 46, 10, 3, 114, 23, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 10, 2, 2, 51, 50, 2, 51, 89, 0, 0, 0, 0, 0, 0, 0, 0,
+ 32, 29, 89, 24, 28, 46, 46, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+ 10, 32, 46, 29, 50, 2, 2, 51, 0, 0, 0, 0, 0, 0, 0, 0,
+ 51, 50, 2, 32, 29, 24, 90, 28, 0, 0, 0, 0, 0, 0, 0, 0,
+ 28, 29, 24, 50, 32, 46, 29, 25, 0, 0, 0, 0, 0, 0, 0, 0,
+ 10, 32, 46, 46, 10, 2, 32, 10, 0, 0, 0, 0, 0, 0, 0, 0],
+ "height":16,
+ "width":16,
+ "x":112,
+ "y":48
+ },
+
+ {
+ "data":[24, 24, 24, 24, 24, 50, 51, 24, 24, 24, 50, 32, 46, 29, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 90, 24, 24, 24, 25, 111, 23, 90, 24,
+ 24, 89, 24, 89, 28, 46, 46, 46, 29, 28, 46, 10, 3, 45, 29, 90,
+ 24, 24, 24, 90, 50, 2, 2, 3, 45, 47, 1, 51, 50, 2, 51, 24,
+ 24, 89, 28, 29, 24, 24, 90, 50, 2, 2, 51, 28, 46, 29, 24, 90,
+ 24, 24, 25, 23, 24, 90, 24, 24, 28, 29, 24, 25, 111, 23, 24, 24,
+ 24, 90, 25, 23, 89, 24, 24, 24, 50, 51, 24, 25, 111, 45, 29, 24,
+ 28, 29, 25, 23, 89, 28, 46, 46, 46, 46, 29, 50, 2, 2, 32, 29,
+ 10, 51, 50, 51, 24, 50, 2, 2, 2, 3, 23, 24, 28, 29, 50, 51,
+ 23, 24, 24, 24, 24, 28, 29, 24, 24, 50, 32, 46, 47, 23, 24, 90,
+ 51, 28, 29, 24, 24, 50, 32, 46, 46, 46, 10, 3, 114, 23, 90, 89,
+ 24, 25, 23, 24, 24, 24, 25, 1, 2, 3, 23, 25, 1, 32, 46, 46,
+ 24, 25, 45, 29, 24, 24, 25, 45, 29, 50, 51, 25, 23, 50, 3, 1,
+ 24, 50, 2, 51, 24, 24, 25, 1, 51, 28, 29, 50, 51, 28, 47, 23,
+ 24, 24, 24, 24, 89, 89, 25, 23, 28, 10, 51, 28, 29, 50, 3, 45,
+ 29, 24, 89, 24, 24, 28, 47, 23, 25, 23, 24, 50, 32, 29, 50, 3],
+ "height":16,
+ "width":16,
+ "x":0,
+ "y":64
+ },
+ {
+ "data":[24, 28, 29, 24, 24, 24, 24, 24, 24, 24, 24, 24, 89, 50, 51, 89,
+ 24, 50, 32, 46, 46, 29, 28, 29, 24, 24, 24, 89, 24, 24, 24, 24,
+ 24, 24, 25, 111, 111, 45, 10, 32, 29, 28, 29, 24, 24, 24, 24, 24,
+ 24, 24, 50, 2, 2, 2, 32, 10, 32, 10, 32, 46, 29, 89, 90, 24,
+ 24, 24, 24, 24, 24, 24, 25, 23, 50, 32, 10, 2, 51, 24, 24, 24,
+ 24, 24, 24, 90, 24, 24, 25, 23, 24, 25, 45, 46, 46, 46, 46, 29,
+ 24, 24, 24, 24, 24, 24, 50, 51, 28, 10, 2, 2, 3, 111, 1, 32,
+ 90, 24, 24, 89, 24, 24, 90, 24, 50, 51, 24, 24, 50, 3, 23, 25,
+ 28, 29, 24, 24, 24, 24, 24, 24, 24, 24, 28, 46, 29, 50, 32, 47,
+ 50, 51, 24, 24, 28, 29, 24, 24, 24, 24, 25, 1, 32, 29, 25, 115,
+ 24, 24, 24, 24, 50, 51, 24, 24, 24, 24, 25, 45, 10, 32, 10, 2,
+ 29, 24, 24, 24, 89, 28, 29, 24, 24, 24, 50, 3, 23, 25, 23, 24,
+ 51, 24, 24, 24, 28, 47, 23, 24, 24, 24, 24, 50, 51, 25, 23, 24,
+ 28, 29, 89, 24, 50, 2, 51, 24, 24, 24, 28, 46, 29, 50, 32, 29,
+ 47, 23, 89, 28, 29, 90, 89, 24, 89, 24, 50, 3, 23, 24, 25, 23,
+ 114, 23, 24, 50, 32, 29, 90, 24, 24, 24, 24, 50, 51, 28, 10, 51],
+ "height":16,
+ "width":16,
+ "x":16,
+ "y":64
+ },
+ {
+ "data":[25, 45, 29, 24, 50, 51, 24, 24, 24, 24, 24, 50, 51, 24, 24, 28,
+ 50, 2, 51, 24, 28, 46, 46, 29, 28, 46, 46, 29, 24, 89, 24, 50,
+ 89, 24, 24, 24, 25, 111, 112, 23, 25, 1, 2, 51, 24, 24, 24, 24,
+ 24, 24, 89, 28, 10, 2, 2, 32, 10, 32, 46, 29, 24, 89, 24, 24,
+ 24, 89, 24, 25, 23, 90, 89, 50, 32, 47, 114, 23, 89, 89, 24, 89,
+ 24, 90, 24, 50, 51, 24, 24, 24, 50, 2, 2, 32, 29, 89, 90, 28,
+ 29, 28, 46, 46, 29, 24, 24, 24, 28, 29, 90, 50, 32, 46, 46, 47,
+ 45, 10, 3, 114, 23, 89, 24, 24, 25, 23, 24, 24, 25, 115, 1, 2,
+ 114, 23, 50, 2, 32, 29, 24, 24, 50, 32, 29, 28, 47, 1, 51, 24,
+ 1, 51, 24, 24, 25, 23, 24, 24, 24, 25, 23, 50, 2, 51, 28, 29,
+ 32, 46, 29, 24, 25, 23, 24, 24, 28, 47, 45, 29, 24, 28, 47, 23,
+ 50, 2, 51, 24, 25, 23, 28, 29, 50, 2, 2, 32, 29, 50, 3, 23,
+ 24, 24, 24, 28, 10, 51, 25, 23, 24, 24, 90, 50, 51, 24, 50, 51,
+ 28, 29, 24, 50, 32, 29, 25, 23, 24, 90, 24, 24, 24, 28, 29, 89,
+ 50, 51, 24, 24, 50, 51, 50, 51, 24, 24, 24, 24, 28, 47, 23, 24,
+ 24, 24, 24, 89, 24, 24, 89, 90, 24, 28, 29, 24, 50, 3, 23, 24],
+ "height":16,
+ "width":16,
+ "x":32,
+ "y":64
+ },
+ {
+ "data":[29, 24, 90, 24, 89, 90, 24, 24, 90, 50, 51, 24, 24, 24, 90, 24,
+ 32, 29, 24, 24, 28, 29, 24, 28, 46, 46, 46, 29, 89, 24, 24, 24,
+ 50, 51, 28, 29, 25, 23, 24, 50, 3, 111, 1, 51, 24, 24, 24, 24,
+ 90, 24, 50, 51, 50, 51, 24, 24, 50, 2, 51, 24, 24, 90, 24, 24,
+ 24, 90, 24, 89, 28, 29, 24, 24, 24, 28, 46, 29, 28, 29, 89, 24,
+ 46, 46, 46, 29, 50, 51, 24, 89, 24, 25, 111, 45, 10, 51, 24, 24,
+ 111, 1, 2, 32, 46, 46, 29, 24, 24, 50, 2, 2, 32, 29, 24, 24,
+ 2, 51, 24, 25, 111, 114, 45, 29, 89, 24, 28, 46, 10, 51, 24, 24,
+ 24, 24, 24, 25, 111, 1, 2, 51, 28, 46, 10, 2, 32, 46, 29, 24,
+ 24, 24, 24, 50, 2, 51, 24, 24, 50, 2, 32, 29, 50, 3, 23, 24,
+ 24, 90, 24, 89, 24, 24, 90, 24, 24, 24, 50, 51, 24, 25, 23, 24,
+ 24, 24, 28, 46, 29, 24, 90, 24, 24, 24, 24, 90, 24, 50, 32, 29,
+ 24, 28, 10, 3, 45, 29, 24, 24, 89, 24, 24, 24, 24, 28, 10, 32,
+ 90, 50, 51, 25, 111, 23, 24, 90, 24, 24, 24, 24, 28, 10, 51, 50,
+ 24, 24, 24, 25, 115, 23, 24, 24, 24, 24, 24, 24, 25, 23, 89, 24,
+ 24, 89, 28, 10, 2, 51, 24, 24, 24, 89, 24, 24, 25, 23, 24, 24],
+ "height":16,
+ "width":16,
+ "x":48,
+ "y":64
+ },
+ {
+ "data":[24, 24, 24, 24, 24, 24, 28, 46, 29, 24, 28, 46, 46, 46, 29, 24,
+ 24, 24, 24, 24, 28, 46, 10, 2, 51, 90, 50, 2, 2, 2, 51, 24,
+ 24, 24, 24, 24, 50, 2, 32, 29, 24, 24, 28, 29, 24, 24, 24, 24,
+ 90, 24, 24, 24, 90, 90, 50, 32, 29, 28, 10, 51, 24, 24, 24, 90,
+ 90, 24, 28, 46, 29, 24, 24, 50, 32, 10, 32, 29, 28, 46, 29, 24,
+ 24, 28, 47, 1, 51, 24, 24, 24, 50, 51, 25, 23, 25, 1, 51, 89,
+ 24, 50, 2, 51, 28, 29, 90, 24, 28, 29, 50, 32, 47, 23, 89, 28,
+ 24, 24, 24, 28, 47, 23, 24, 90, 50, 32, 29, 50, 2, 51, 24, 50,
+ 24, 24, 24, 25, 111, 23, 24, 90, 24, 50, 32, 29, 24, 24, 24, 24,
+ 28, 46, 29, 25, 1, 51, 24, 24, 28, 29, 50, 32, 46, 46, 29, 24,
+ 25, 115, 23, 50, 32, 46, 46, 46, 10, 32, 46, 10, 2, 2, 32, 46,
+ 25, 111, 23, 24, 25, 1, 2, 3, 45, 10, 2, 32, 29, 28, 10, 2,
+ 10, 2, 51, 90, 25, 23, 28, 10, 2, 32, 29, 25, 23, 50, 32, 46,
+ 32, 29, 24, 24, 25, 23, 25, 45, 29, 25, 23, 50, 32, 46, 10, 2,
+ 50, 51, 24, 24, 50, 51, 25, 1, 51, 50, 51, 90, 25, 1, 51, 24,
+ 24, 24, 24, 24, 24, 24, 50, 51, 24, 24, 24, 90, 50, 32, 46, 29],
+ "height":16,
+ "width":16,
+ "x":64,
+ "y":64
+ },
+ {
+ "data":[24, 89, 24, 24, 50, 2, 32, 29, 50, 32, 29, 90, 25, 23, 50, 32,
+ 24, 24, 24, 89, 24, 28, 47, 23, 24, 25, 23, 24, 50, 51, 24, 25,
+ 28, 46, 29, 24, 24, 50, 3, 23, 24, 50, 32, 29, 24, 24, 90, 50,
+ 25, 1, 51, 24, 24, 24, 50, 32, 29, 24, 25, 23, 24, 24, 24, 24,
+ 50, 51, 24, 90, 89, 24, 24, 25, 23, 24, 50, 51, 24, 24, 24, 24,
+ 24, 28, 29, 24, 89, 24, 24, 25, 45, 46, 29, 24, 24, 89, 24, 24,
+ 46, 10, 51, 24, 90, 24, 24, 50, 2, 2, 32, 46, 29, 24, 24, 89,
+ 3, 23, 24, 90, 24, 24, 24, 24, 90, 24, 50, 2, 32, 46, 29, 90,
+ 25, 45, 29, 28, 29, 28, 46, 29, 24, 89, 24, 90, 50, 2, 51, 24,
+ 50, 2, 32, 47, 45, 47, 1, 51, 24, 24, 89, 24, 89, 24, 24, 24,
+ 46, 29, 25, 1, 2, 2, 51, 28, 29, 24, 24, 24, 28, 29, 24, 24,
+ 2, 51, 50, 51, 24, 28, 29, 50, 51, 90, 24, 24, 50, 51, 24, 24,
+ 46, 29, 24, 24, 24, 50, 32, 29, 24, 24, 24, 28, 29, 24, 24, 90,
+ 2, 32, 46, 46, 46, 46, 10, 51, 24, 24, 24, 25, 45, 29, 24, 89,
+ 24, 25, 1, 2, 2, 2, 51, 24, 24, 24, 24, 25, 111, 23, 28, 29,
+ 28, 47, 23, 24, 28, 29, 24, 28, 46, 46, 46, 10, 2, 51, 25, 45],
+ "height":16,
+ "width":16,
+ "x":80,
+ "y":64
+ },
+ {
+ "data":[29, 24, 24, 24, 50, 2, 2, 2, 2, 51, 25, 23, 50, 51, 24, 50,
+ 23, 24, 24, 89, 24, 24, 24, 24, 28, 29, 50, 32, 46, 46, 46, 29,
+ 32, 29, 24, 24, 24, 24, 28, 29, 25, 23, 24, 25, 112, 1, 2, 51,
+ 50, 51, 24, 24, 24, 24, 50, 51, 50, 51, 24, 50, 3, 23, 28, 29,
+ 24, 24, 24, 24, 28, 29, 90, 24, 24, 24, 24, 24, 25, 45, 10, 51,
+ 90, 24, 24, 24, 50, 51, 24, 24, 24, 24, 24, 90, 25, 115, 23, 28,
+ 89, 24, 24, 28, 29, 24, 24, 24, 24, 24, 24, 24, 50, 2, 51, 25,
+ 24, 24, 24, 50, 32, 46, 29, 24, 24, 24, 24, 24, 24, 90, 90, 50,
+ 24, 24, 24, 24, 50, 3, 23, 24, 28, 29, 24, 24, 24, 28, 29, 24,
+ 90, 24, 90, 24, 24, 25, 23, 89, 50, 51, 24, 24, 28, 10, 51, 24,
+ 24, 24, 28, 29, 90, 50, 51, 24, 24, 24, 24, 24, 50, 32, 29, 28,
+ 24, 28, 10, 51, 24, 90, 89, 24, 24, 24, 24, 24, 24, 25, 23, 25,
+ 24, 50, 51, 89, 28, 29, 24, 28, 29, 89, 24, 24, 90, 50, 51, 50,
+ 24, 24, 89, 24, 50, 32, 46, 10, 32, 46, 46, 29, 24, 24, 90, 24,
+ 24, 24, 24, 24, 24, 50, 2, 51, 25, 1, 2, 32, 46, 46, 29, 89,
+ 29, 28, 29, 24, 24, 24, 89, 89, 50, 51, 24, 50, 3, 1, 32, 46],
+ "height":16,
+ "width":16,
+ "x":96,
+ "y":64
+ },
+ {
+ "data":[32, 10, 2, 2, 51, 24, 50, 51, 0, 0, 0, 0, 0, 0, 0, 0,
+ 25, 45, 46, 29, 90, 90, 90, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 50, 2, 2, 51, 28, 29, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 24, 24, 25, 23, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 24, 28, 47, 23, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 46, 29, 24, 50, 3, 23, 24, 28, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 32, 29, 24, 25, 23, 24, 50, 0, 0, 0, 0, 0, 0, 0, 0,
+ 51, 50, 51, 24, 50, 32, 29, 28, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 24, 24, 24, 25, 23, 25, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 90, 24, 24, 90, 50, 51, 50, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29, 90, 24, 24, 24, 24, 28, 46, 0, 0, 0, 0, 0, 0, 0, 0,
+ 23, 24, 24, 24, 24, 24, 50, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 32, 46, 29, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 50, 2, 51, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 90, 24, 28, 29, 89, 28, 0, 0, 0, 0, 0, 0, 0, 0,
+ 29, 24, 24, 89, 25, 23, 28, 10, 0, 0, 0, 0, 0, 0, 0, 0],
+ "height":16,
+ "width":16,
+ "x":112,
+ "y":64
+ },
+ {
+ "data":[51, 24, 24, 24, 24, 50, 2, 32, 10, 32, 29, 24, 50, 32, 29, 25,
+ 24, 24, 24, 89, 89, 24, 24, 50, 51, 25, 23, 24, 24, 25, 23, 50,
+ 24, 24, 28, 29, 89, 24, 24, 24, 24, 25, 23, 89, 24, 50, 32, 46,
+ 29, 24, 50, 32, 46, 46, 29, 89, 90, 50, 32, 29, 90, 24, 25, 1,
+ 23, 28, 29, 25, 115, 114, 23, 24, 24, 24, 25, 23, 24, 24, 25, 23,
+ 32, 47, 45, 10, 2, 3, 23, 89, 24, 24, 50, 32, 29, 24, 50, 32,
+ 25, 115, 1, 51, 24, 25, 23, 24, 24, 24, 24, 50, 32, 46, 46, 10,
+ 10, 2, 32, 29, 24, 50, 51, 24, 24, 28, 29, 24, 50, 2, 2, 51,
+ 32, 46, 10, 51, 24, 24, 24, 24, 24, 50, 51, 24, 24, 24, 24, 24,
+ 50, 3, 23, 89, 89, 89, 24, 24, 90, 24, 24, 28, 46, 29, 28, 46,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ "height":16,
+ "width":16,
+ "x":0,
+ "y":80
+ },
+ {
+ "data":[111, 23, 28, 29, 25, 23, 24, 28, 46, 46, 46, 29, 24, 50, 32, 29,
+ 2, 51, 50, 51, 50, 51, 24, 25, 111, 1, 3, 23, 28, 46, 10, 51,
+ 29, 28, 29, 24, 24, 24, 24, 25, 1, 51, 25, 23, 50, 3, 23, 90,
+ 51, 50, 51, 24, 28, 46, 29, 50, 51, 89, 50, 32, 46, 47, 23, 28,
+ 24, 24, 24, 89, 50, 2, 32, 46, 29, 24, 28, 10, 2, 2, 32, 10,
+ 29, 24, 24, 24, 24, 24, 50, 2, 51, 28, 10, 51, 24, 24, 50, 51,
+ 51, 24, 24, 24, 89, 24, 24, 89, 24, 50, 51, 24, 24, 24, 28, 46,
+ 28, 29, 89, 24, 24, 24, 24, 24, 28, 46, 29, 24, 24, 28, 10, 2,
+ 25, 23, 90, 24, 28, 29, 24, 24, 50, 2, 32, 29, 24, 50, 51, 24,
+ 47, 23, 24, 24, 50, 51, 24, 24, 24, 24, 25, 23, 90, 24, 89, 24,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ "height":16,
+ "width":16,
+ "x":16,
+ "y":80
+ },
+ {
+ "data":[28, 46, 29, 24, 28, 29, 24, 24, 24, 25, 23, 24, 24, 25, 23, 89,
+ 50, 3, 23, 24, 50, 32, 29, 90, 24, 50, 51, 24, 24, 25, 23, 28,
+ 24, 50, 32, 46, 29, 50, 51, 24, 24, 89, 24, 24, 28, 10, 51, 25,
+ 29, 89, 25, 111, 23, 24, 28, 29, 28, 46, 29, 24, 25, 23, 24, 50,
+ 32, 29, 25, 111, 45, 46, 47, 23, 50, 2, 51, 24, 25, 23, 89, 24,
+ 50, 51, 25, 111, 111, 1, 2, 51, 24, 90, 24, 24, 50, 51, 24, 28,
+ 29, 24, 50, 2, 2, 32, 29, 24, 24, 24, 24, 24, 90, 28, 46, 10,
+ 51, 24, 24, 28, 29, 50, 51, 89, 28, 46, 29, 24, 24, 25, 1, 51,
+ 24, 24, 24, 50, 51, 24, 24, 24, 25, 114, 23, 89, 90, 50, 32, 29,
+ 24, 24, 24, 24, 24, 28, 46, 29, 50, 3, 23, 24, 24, 28, 10, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ "height":16,
+ "width":16,
+ "x":32,
+ "y":80
+ },
+ {
+ "data":[24, 24, 50, 51, 90, 28, 29, 24, 24, 24, 24, 28, 10, 51, 24, 89,
+ 29, 24, 90, 90, 28, 10, 32, 29, 24, 24, 24, 25, 23, 24, 24, 24,
+ 23, 24, 90, 24, 25, 23, 25, 23, 24, 24, 24, 50, 51, 24, 89, 24,
+ 32, 29, 24, 24, 50, 51, 50, 32, 46, 46, 29, 24, 24, 24, 24, 24,
+ 25, 23, 24, 28, 29, 24, 24, 50, 2, 2, 51, 24, 24, 24, 28, 29,
+ 47, 23, 24, 50, 32, 29, 24, 24, 24, 24, 90, 24, 90, 24, 50, 32,
+ 3, 45, 29, 28, 10, 32, 29, 24, 90, 24, 24, 24, 28, 29, 90, 25,
+ 25, 114, 23, 50, 51, 50, 51, 89, 28, 29, 24, 24, 50, 51, 24, 25,
+ 50, 2, 32, 29, 24, 24, 24, 28, 47, 45, 29, 24, 24, 24, 28, 10,
+ 29, 89, 50, 51, 24, 24, 24, 50, 3, 115, 45, 29, 28, 29, 25, 45,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ "height":16,
+ "width":16,
+ "x":48,
+ "y":80
+ },
+ {
+ "data":[24, 24, 24, 24, 24, 24, 24, 24, 89, 24, 24, 24, 28, 10, 3, 23,
+ 24, 24, 24, 24, 24, 24, 24, 24, 89, 24, 24, 89, 50, 32, 10, 51,
+ 24, 24, 24, 24, 24, 28, 29, 24, 24, 28, 46, 29, 24, 25, 23, 24,
+ 28, 29, 24, 24, 24, 50, 51, 24, 24, 50, 3, 23, 24, 25, 23, 24,
+ 50, 51, 90, 24, 24, 90, 24, 24, 90, 24, 50, 32, 29, 50, 51, 24,
+ 29, 24, 28, 46, 29, 24, 24, 89, 24, 28, 29, 25, 23, 24, 28, 29,
+ 23, 24, 25, 1, 51, 24, 24, 24, 24, 50, 51, 50, 32, 46, 10, 51,
+ 23, 24, 25, 23, 24, 24, 24, 24, 24, 24, 90, 28, 10, 2, 51, 24,
+ 51, 28, 10, 51, 24, 28, 29, 24, 24, 28, 46, 10, 51, 24, 24, 24,
+ 46, 10, 51, 90, 24, 50, 32, 46, 29, 50, 2, 51, 24, 24, 24, 90,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ "height":16,
+ "width":16,
+ "x":64,
+ "y":80
+ },
+ {
+ "data":[25, 1, 51, 24, 50, 32, 29, 50, 2, 3, 114, 45, 29, 24, 25, 114,
+ 25, 23, 28, 46, 29, 25, 23, 24, 24, 25, 1, 2, 32, 29, 25, 111,
+ 50, 32, 47, 111, 23, 50, 32, 29, 24, 50, 51, 89, 50, 32, 10, 3,
+ 24, 50, 2, 2, 32, 29, 50, 32, 46, 29, 24, 24, 24, 50, 51, 50,
+ 28, 29, 89, 28, 10, 51, 24, 25, 111, 23, 89, 28, 46, 29, 24, 24,
+ 50, 32, 46, 10, 32, 46, 29, 50, 3, 23, 89, 50, 3, 23, 24, 24,
+ 24, 50, 2, 51, 50, 3, 45, 46, 10, 51, 28, 29, 50, 32, 46, 29,
+ 24, 28, 46, 46, 29, 50, 2, 2, 32, 29, 25, 23, 28, 47, 1, 32,
+ 24, 25, 114, 115, 23, 24, 24, 24, 25, 23, 50, 51, 50, 2, 32, 10,
+ 24, 50, 2, 2, 51, 24, 28, 29, 50, 32, 29, 24, 24, 24, 50, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ "height":16,
+ "width":16,
+ "x":80,
+ "y":80
+ },
+ {
+ "data":[23, 50, 32, 46, 29, 24, 24, 24, 24, 24, 24, 24, 50, 51, 25, 1,
+ 23, 24, 25, 111, 23, 28, 29, 24, 90, 24, 24, 89, 24, 90, 50, 32,
+ 45, 29, 50, 2, 32, 10, 51, 24, 24, 90, 89, 24, 24, 24, 24, 50,
+ 2, 32, 29, 90, 25, 45, 46, 46, 29, 24, 28, 29, 28, 29, 90, 24,
+ 24, 25, 23, 24, 50, 2, 2, 2, 51, 24, 25, 45, 10, 32, 29, 24,
+ 28, 10, 51, 24, 24, 89, 24, 89, 89, 24, 25, 111, 23, 50, 51, 24,
+ 25, 23, 24, 24, 24, 24, 24, 24, 90, 24, 25, 111, 23, 28, 29, 90,
+ 10, 32, 29, 24, 89, 24, 24, 24, 24, 24, 50, 2, 51, 50, 32, 29,
+ 51, 50, 51, 24, 28, 46, 46, 46, 29, 24, 24, 24, 24, 28, 10, 51,
+ 29, 24, 24, 24, 50, 2, 2, 2, 51, 24, 89, 24, 24, 50, 32, 29,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ "height":16,
+ "width":16,
+ "x":96,
+ "y":80
+ },
+ {
+ "data":[32, 29, 24, 90, 50, 51, 50, 51, 0, 0, 0, 0, 0, 0, 0, 0,
+ 10, 32, 29, 24, 24, 28, 46, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+ 32, 10, 51, 28, 29, 25, 115, 23, 0, 0, 0, 0, 0, 0, 0, 0,
+ 25, 23, 24, 50, 32, 10, 3, 23, 0, 0, 0, 0, 0, 0, 0, 0,
+ 50, 32, 46, 29, 50, 51, 25, 45, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 25, 114, 45, 29, 24, 50, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 50, 2, 2, 51, 90, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 89, 24, 28, 46, 29, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 24, 50, 2, 51, 28, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 24, 89, 89, 24, 28, 10, 51, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ "height":16,
+ "width":16,
+ "x":112,
+ "y":80
+ }],
+ "class":"Tile",
+ "height":96,
+ "id":1,
+ "name":"Tiles",
+ "opacity":1,
+ "startx":0,
+ "starty":0,
+ "type":"tilelayer",
+ "visible":true,
+ "width":128,
+ "x":0,
+ "y":0
+ },
+ {
+ "chunks":[
+ {
+ "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 578, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ "height":16,
+ "width":16,
+ "x":0,
+ "y":0
+ },
+ {
+ "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 583, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 578, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 583, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 578, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ "height":16,
+ "width":16,
+ "x":0,
+ "y":16
+ }],
+ "height":64,
+ "id":2,
+ "name":"Collidable ",
+ "opacity":1,
+ "startx":0,
+ "starty":0,
+ "type":"tilelayer",
+ "visible":true,
+ "width":64,
+ "x":0,
+ "y":0
+ }],
+ "nextlayerid":3,
+ "nextobjectid":1,
+ "orientation":"orthogonal",
+ "renderorder":"right-down",
+ "tiledversion":"1.10.2",
+ "tileheight":32,
+ "tilesets":[
+ {
+ "firstgid":1,
+ "source":"..\/TileSets\/TileSet 1.tsj"
+ },
+ {
+ "firstgid":573,
+ "source":"..\/TileSets\/CollisionTileSet.tsj"
+ }],
+ "tilewidth":32,
+ "type":"map",
+ "version":"1.10",
+ "width":30
+}
\ No newline at end of file
diff --git a/ZoFo/Content/MapData/TileMaps/main.tmx b/ZoFo/Content/MapData/TileMaps/main.tmx
new file mode 100644
index 0000000..4cafd72
--- /dev/null
+++ b/ZoFo/Content/MapData/TileMaps/main.tmx
@@ -0,0 +1,116 @@
+
+
diff --git a/ZoFo/Content/MapData/TileSets/CollisionTileSet.tsj b/ZoFo/Content/MapData/TileSets/CollisionTileSet.tsj
new file mode 100644
index 0000000..e748c72
--- /dev/null
+++ b/ZoFo/Content/MapData/TileSets/CollisionTileSet.tsj
@@ -0,0 +1,435 @@
+{ "columns":5,
+ "image":"..\/..\/Textures\/TileSetImages\/Tilelist2.png",
+ "imageheight":1302,
+ "imagewidth":652,
+ "margin":2,
+ "name":"CollisionTileSet",
+ "spacing":2,
+ "tilecount":50,
+ "tiledversion":"1.10.2",
+ "tileheight":128,
+ "tiles":[
+ {
+ "id":0,
+ "type":"Tiles"
+ },
+ {
+ "id":1,
+ "type":"Tiles"
+ },
+ {
+ "id":2,
+ "type":"Tiles"
+ },
+ {
+ "id":3,
+ "type":"Tiles"
+ },
+ {
+ "id":4,
+ "type":"Tiles"
+ },
+ {
+ "id":5,
+ "objectgroup":
+ {
+ "draworder":"index",
+ "name":"",
+ "objects":[
+ {
+ "height":128,
+ "id":1,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":37,
+ "x":0,
+ "y":0
+ },
+ {
+ "height":36.3333333333333,
+ "id":2,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":127.333333333333,
+ "x":0.666666666666671,
+ "y":0
+ }],
+ "opacity":1,
+ "type":"objectgroup",
+ "visible":true,
+ "x":0,
+ "y":0
+ },
+ "type":"StopObject"
+ },
+ {
+ "id":6,
+ "objectgroup":
+ {
+ "draworder":"index",
+ "name":"",
+ "objects":[
+ {
+ "height":128.333333333333,
+ "id":4,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":35.6666666666667,
+ "x":0.666666666666667,
+ "y":0
+ }],
+ "opacity":1,
+ "type":"objectgroup",
+ "visible":true,
+ "x":0,
+ "y":0
+ },
+ "type":"StopObject"
+ },
+ {
+ "id":7,
+ "objectgroup":
+ {
+ "draworder":"index",
+ "name":"",
+ "objects":[
+ {
+ "height":128,
+ "id":1,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":36,
+ "x":0,
+ "y":0
+ },
+ {
+ "height":36.6666666666667,
+ "id":2,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":128.666666666667,
+ "x":0,
+ "y":91.3333333333333
+ }],
+ "opacity":1,
+ "type":"objectgroup",
+ "visible":true,
+ "x":0,
+ "y":0
+ },
+ "type":"StopObject"
+ },
+ {
+ "id":8,
+ "objectgroup":
+ {
+ "draworder":"index",
+ "name":"",
+ "objects":[
+ {
+ "height":36,
+ "id":1,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":127.666666666667,
+ "x":0,
+ "y":91.6666666666667
+ }],
+ "opacity":1,
+ "type":"objectgroup",
+ "visible":true,
+ "x":0,
+ "y":0
+ },
+ "type":"StopObject"
+ },
+ {
+ "id":9,
+ "objectgroup":
+ {
+ "draworder":"index",
+ "name":"",
+ "objects":[
+ {
+ "height":36,
+ "id":1,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":127.666666666667,
+ "x":0,
+ "y":0.333333333333333
+ }],
+ "opacity":1,
+ "type":"objectgroup",
+ "visible":true,
+ "x":0,
+ "y":0
+ },
+ "type":"StopObject"
+ },
+ {
+ "id":10,
+ "objectgroup":
+ {
+ "draworder":"index",
+ "name":"",
+ "objects":[
+ {
+ "height":36.6666666666667,
+ "id":2,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":128.333333333333,
+ "x":0,
+ "y":0
+ },
+ {
+ "height":127.666666666667,
+ "id":3,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":36.6666666666667,
+ "x":91.6666666666667,
+ "y":0.333333333333329
+ }],
+ "opacity":1,
+ "type":"objectgroup",
+ "visible":true,
+ "x":0,
+ "y":0
+ },
+ "type":"StopObject"
+ },
+ {
+ "id":11,
+ "objectgroup":
+ {
+ "draworder":"index",
+ "name":"",
+ "objects":[
+ {
+ "height":127.666666666667,
+ "id":1,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":37,
+ "x":91,
+ "y":0.333333333333333
+ }],
+ "opacity":1,
+ "type":"objectgroup",
+ "visible":true,
+ "x":0,
+ "y":0
+ },
+ "type":"StopObject"
+ },
+ {
+ "id":12,
+ "objectgroup":
+ {
+ "draworder":"index",
+ "name":"",
+ "objects":[
+ {
+ "height":128,
+ "id":4,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":37,
+ "x":91,
+ "y":0
+ },
+ {
+ "height":36.6666666666667,
+ "id":5,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":128,
+ "x":0,
+ "y":91.3333333333333
+ }],
+ "opacity":1,
+ "type":"objectgroup",
+ "visible":true,
+ "x":0,
+ "y":0
+ },
+ "type":"StopObject"
+ },
+ {
+ "id":13,
+ "type":"StopObject"
+ },
+ {
+ "id":14,
+ "type":"StopObject"
+ },
+ {
+ "id":15,
+ "type":"StopObject"
+ },
+ {
+ "id":16,
+ "type":"StopObject"
+ },
+ {
+ "id":17,
+ "type":"StopObject"
+ },
+ {
+ "id":18,
+ "type":"StopObject"
+ },
+ {
+ "id":19,
+ "type":"StopObject"
+ },
+ {
+ "id":20,
+ "type":"StopObject"
+ },
+ {
+ "id":21,
+ "type":"StopObject"
+ },
+ {
+ "id":22,
+ "type":"StopObject"
+ },
+ {
+ "id":23,
+ "type":"StopObject"
+ },
+ {
+ "id":24,
+ "type":"StopObject"
+ },
+ {
+ "id":25,
+ "type":"StopObject"
+ },
+ {
+ "id":26,
+ "type":"StopObject"
+ },
+ {
+ "id":27,
+ "type":"StopObject"
+ },
+ {
+ "id":28,
+ "type":"StopObject"
+ },
+ {
+ "id":29,
+ "type":"StopObject"
+ },
+ {
+ "id":30,
+ "type":"StopObject"
+ },
+ {
+ "id":31,
+ "type":"StopObject"
+ },
+ {
+ "id":32,
+ "type":"StopObject"
+ },
+ {
+ "id":33,
+ "type":"StopObject"
+ },
+ {
+ "id":34,
+ "type":"StopObject"
+ },
+ {
+ "id":35,
+ "type":"StopObject"
+ },
+ {
+ "id":36,
+ "type":"StopObject"
+ },
+ {
+ "id":37,
+ "type":"StopObject"
+ },
+ {
+ "id":38,
+ "type":"StopObject"
+ },
+ {
+ "id":39,
+ "type":"StopObject"
+ },
+ {
+ "id":40,
+ "type":"StopObject"
+ },
+ {
+ "id":41,
+ "type":"StopObject"
+ },
+ {
+ "id":42,
+ "type":"StopObject"
+ },
+ {
+ "id":43,
+ "type":"StopObject"
+ },
+ {
+ "id":44,
+ "type":"StopObject"
+ },
+ {
+ "id":45,
+ "type":"StopObject"
+ },
+ {
+ "id":46,
+ "type":"StopObject"
+ },
+ {
+ "id":47,
+ "type":"StopObject"
+ },
+ {
+ "id":48,
+ "type":"StopObject"
+ },
+ {
+ "id":49,
+ "type":"StopObject"
+ }],
+ "tilewidth":128,
+ "type":"tileset",
+ "version":"1.10"
+}
\ No newline at end of file
diff --git a/ZoFo/Content/MapData/TileSets/TileSet 1.tsj b/ZoFo/Content/MapData/TileSets/TileSet 1.tsj
new file mode 100644
index 0000000..452c896
--- /dev/null
+++ b/ZoFo/Content/MapData/TileSets/TileSet 1.tsj
@@ -0,0 +1,2429 @@
+{ "class":"Tile",
+ "columns":22,
+ "fillmode":"preserve-aspect-fit",
+ "grid":
+ {
+ "height":24,
+ "orientation":"orthogonal",
+ "width":24
+ },
+ "image":"..\/..\/Textures\/TileSetImages\/TilesetFloor.png",
+ "imageheight":832,
+ "imagewidth":704,
+ "margin":0,
+ "name":"TileSet 1",
+ "objectalignment":"topleft",
+ "spacing":0,
+ "tilecount":572,
+ "tiledversion":"1.10.2",
+ "tileheight":32,
+ "tiles":[
+ {
+ "id":0,
+ "type":"Tile"
+ },
+ {
+ "id":1,
+ "type":"Tile"
+ },
+ {
+ "id":2,
+ "type":"Tile"
+ },
+ {
+ "id":3,
+ "type":"Tile"
+ },
+ {
+ "id":4,
+ "type":"Tile"
+ },
+ {
+ "id":5,
+ "type":"Tile"
+ },
+ {
+ "id":6,
+ "type":"Tile"
+ },
+ {
+ "id":7,
+ "type":"Tile"
+ },
+ {
+ "id":8,
+ "type":"Tile"
+ },
+ {
+ "id":9,
+ "type":"Tile"
+ },
+ {
+ "id":10,
+ "type":"Tile"
+ },
+ {
+ "id":11,
+ "type":"Tile"
+ },
+ {
+ "id":12,
+ "type":"Tile"
+ },
+ {
+ "id":13,
+ "type":"Tile"
+ },
+ {
+ "id":14,
+ "type":"Tile"
+ },
+ {
+ "id":15,
+ "type":"Tile"
+ },
+ {
+ "id":16,
+ "type":"Tile"
+ },
+ {
+ "id":17,
+ "type":"Tile"
+ },
+ {
+ "id":18,
+ "type":"Tile"
+ },
+ {
+ "id":19,
+ "type":"Tile"
+ },
+ {
+ "id":20,
+ "type":"Tile"
+ },
+ {
+ "id":21,
+ "type":"Tile"
+ },
+ {
+ "id":22,
+ "type":"Tile"
+ },
+ {
+ "id":23,
+ "type":"Tile"
+ },
+ {
+ "id":24,
+ "type":"Tile"
+ },
+ {
+ "id":25,
+ "type":"Tile"
+ },
+ {
+ "id":26,
+ "type":"Tile"
+ },
+ {
+ "id":27,
+ "probability":0.5,
+ "type":"Tile"
+ },
+ {
+ "id":28,
+ "probability":0.5,
+ "type":"Tile"
+ },
+ {
+ "id":29,
+ "type":"Tile"
+ },
+ {
+ "id":30,
+ "type":"Tile"
+ },
+ {
+ "id":31,
+ "type":"Tile"
+ },
+ {
+ "id":32,
+ "type":"Tile"
+ },
+ {
+ "id":33,
+ "type":"Tile"
+ },
+ {
+ "id":34,
+ "type":"Tile"
+ },
+ {
+ "id":35,
+ "type":"Tile"
+ },
+ {
+ "id":36,
+ "type":"Tile"
+ },
+ {
+ "id":37,
+ "type":"Tile"
+ },
+ {
+ "id":38,
+ "type":"Tile"
+ },
+ {
+ "id":39,
+ "type":"Tile"
+ },
+ {
+ "id":40,
+ "type":"Tile"
+ },
+ {
+ "id":41,
+ "type":"Tile"
+ },
+ {
+ "id":42,
+ "type":"Tile"
+ },
+ {
+ "id":43,
+ "type":"Tile"
+ },
+ {
+ "id":44,
+ "type":"Tile"
+ },
+ {
+ "id":45,
+ "type":"Tile"
+ },
+ {
+ "id":46,
+ "type":"Tile"
+ },
+ {
+ "id":47,
+ "type":"Tile"
+ },
+ {
+ "id":48,
+ "type":"Tile"
+ },
+ {
+ "id":49,
+ "probability":0.5,
+ "type":"Tile"
+ },
+ {
+ "id":50,
+ "probability":0.5,
+ "type":"Tile"
+ },
+ {
+ "id":51,
+ "type":"Tile"
+ },
+ {
+ "id":52,
+ "type":"Tile"
+ },
+ {
+ "id":53,
+ "type":"Tile"
+ },
+ {
+ "id":54,
+ "type":"Tile"
+ },
+ {
+ "id":55,
+ "type":"Tile"
+ },
+ {
+ "id":56,
+ "type":"Tile"
+ },
+ {
+ "id":57,
+ "type":"Tile"
+ },
+ {
+ "id":58,
+ "type":"Tile"
+ },
+ {
+ "id":59,
+ "type":"Tile"
+ },
+ {
+ "id":60,
+ "type":"Tile"
+ },
+ {
+ "id":61,
+ "type":"Tile"
+ },
+ {
+ "id":62,
+ "type":"Tile"
+ },
+ {
+ "id":63,
+ "type":"Tile"
+ },
+ {
+ "id":64,
+ "type":"Tile"
+ },
+ {
+ "id":65,
+ "type":"Tile"
+ },
+ {
+ "id":66,
+ "type":"Tile"
+ },
+ {
+ "id":67,
+ "type":"Tile"
+ },
+ {
+ "id":68,
+ "type":"Tile"
+ },
+ {
+ "id":69,
+ "type":"Tile"
+ },
+ {
+ "id":70,
+ "type":"Tile"
+ },
+ {
+ "id":71,
+ "type":"Tile"
+ },
+ {
+ "id":72,
+ "type":"Tile"
+ },
+ {
+ "id":73,
+ "type":"Tile"
+ },
+ {
+ "id":74,
+ "type":"Tile"
+ },
+ {
+ "id":75,
+ "type":"Tile"
+ },
+ {
+ "id":76,
+ "type":"Tile"
+ },
+ {
+ "id":77,
+ "type":"Tile"
+ },
+ {
+ "id":78,
+ "type":"Tile"
+ },
+ {
+ "id":79,
+ "type":"Tile"
+ },
+ {
+ "id":80,
+ "type":"Tile"
+ },
+ {
+ "id":81,
+ "type":"Tile"
+ },
+ {
+ "id":82,
+ "type":"Tile"
+ },
+ {
+ "id":83,
+ "type":"Tile"
+ },
+ {
+ "id":84,
+ "type":"Tile"
+ },
+ {
+ "id":85,
+ "type":"Tile"
+ },
+ {
+ "id":86,
+ "type":"Tile"
+ },
+ {
+ "id":87,
+ "type":"Tile"
+ },
+ {
+ "id":88,
+ "probability":0.100000001490116,
+ "type":"Tile"
+ },
+ {
+ "id":89,
+ "probability":0.100000001490116,
+ "type":"Tile"
+ },
+ {
+ "id":90,
+ "type":"Tile"
+ },
+ {
+ "id":91,
+ "type":"Tile"
+ },
+ {
+ "id":92,
+ "type":"Tile"
+ },
+ {
+ "id":93,
+ "type":"Tile"
+ },
+ {
+ "id":94,
+ "type":"Tile"
+ },
+ {
+ "id":95,
+ "type":"Tile"
+ },
+ {
+ "id":96,
+ "type":"Tile"
+ },
+ {
+ "id":97,
+ "type":"Tile"
+ },
+ {
+ "id":98,
+ "type":"Tile"
+ },
+ {
+ "id":99,
+ "type":"Tile"
+ },
+ {
+ "id":100,
+ "type":"Tile"
+ },
+ {
+ "id":101,
+ "type":"Tile"
+ },
+ {
+ "id":102,
+ "type":"Tile"
+ },
+ {
+ "id":103,
+ "type":"Tile"
+ },
+ {
+ "id":104,
+ "type":"Tile"
+ },
+ {
+ "id":105,
+ "type":"Tile"
+ },
+ {
+ "id":106,
+ "type":"Tile"
+ },
+ {
+ "id":107,
+ "type":"Tile"
+ },
+ {
+ "id":108,
+ "type":"Tile"
+ },
+ {
+ "id":109,
+ "type":"Tile"
+ },
+ {
+ "id":110,
+ "probability":2,
+ "type":"Tile"
+ },
+ {
+ "id":111,
+ "probability":0.100000001490116,
+ "type":"Tile"
+ },
+ {
+ "id":112,
+ "probability":0.100000001490116,
+ "type":"Tile"
+ },
+ {
+ "id":113,
+ "type":"Tile"
+ },
+ {
+ "id":114,
+ "type":"Tile"
+ },
+ {
+ "id":115,
+ "type":"Tile"
+ },
+ {
+ "id":116,
+ "type":"Tile"
+ },
+ {
+ "id":117,
+ "type":"Tile"
+ },
+ {
+ "id":118,
+ "type":"Tile"
+ },
+ {
+ "id":119,
+ "type":"Tile"
+ },
+ {
+ "id":120,
+ "type":"Tile"
+ },
+ {
+ "id":121,
+ "type":"Tile"
+ },
+ {
+ "id":122,
+ "type":"Tile"
+ },
+ {
+ "id":123,
+ "type":"Tile"
+ },
+ {
+ "id":124,
+ "type":"Tile"
+ },
+ {
+ "id":125,
+ "type":"Tile"
+ },
+ {
+ "id":126,
+ "type":"Tile"
+ },
+ {
+ "id":127,
+ "type":"Tile"
+ },
+ {
+ "id":128,
+ "type":"Tile"
+ },
+ {
+ "id":129,
+ "type":"Tile"
+ },
+ {
+ "id":130,
+ "type":"Tile"
+ },
+ {
+ "id":131,
+ "type":"Tile"
+ },
+ {
+ "id":132,
+ "type":"Tile"
+ },
+ {
+ "id":133,
+ "type":"Tile"
+ },
+ {
+ "id":134,
+ "type":"Tile"
+ },
+ {
+ "id":135,
+ "type":"Tile"
+ },
+ {
+ "id":136,
+ "type":"Tile"
+ },
+ {
+ "id":137,
+ "type":"Tile"
+ },
+ {
+ "id":138,
+ "type":"Tile"
+ },
+ {
+ "id":139,
+ "type":"Tile"
+ },
+ {
+ "id":140,
+ "type":"Tile"
+ },
+ {
+ "id":141,
+ "type":"Tile"
+ },
+ {
+ "id":142,
+ "type":"Tile"
+ },
+ {
+ "id":143,
+ "type":"Tile"
+ },
+ {
+ "id":144,
+ "type":"Tile"
+ },
+ {
+ "id":145,
+ "type":"Tile"
+ },
+ {
+ "id":146,
+ "type":"Tile"
+ },
+ {
+ "id":147,
+ "type":"Tile"
+ },
+ {
+ "id":148,
+ "type":"Tile"
+ },
+ {
+ "id":149,
+ "type":"Tile"
+ },
+ {
+ "id":150,
+ "type":"Tile"
+ },
+ {
+ "id":151,
+ "type":"Tile"
+ },
+ {
+ "id":152,
+ "type":"Tile"
+ },
+ {
+ "id":153,
+ "type":"Tile"
+ },
+ {
+ "id":154,
+ "type":"Tile"
+ },
+ {
+ "id":155,
+ "type":"Tile"
+ },
+ {
+ "id":156,
+ "type":"Tile"
+ },
+ {
+ "id":157,
+ "type":"Tile"
+ },
+ {
+ "id":158,
+ "type":"Tile"
+ },
+ {
+ "id":159,
+ "type":"Tile"
+ },
+ {
+ "id":160,
+ "type":"Tile"
+ },
+ {
+ "id":161,
+ "type":"Tile"
+ },
+ {
+ "id":162,
+ "type":"Tile"
+ },
+ {
+ "id":163,
+ "type":"Tile"
+ },
+ {
+ "id":164,
+ "type":"Tile"
+ },
+ {
+ "id":165,
+ "type":"Tile"
+ },
+ {
+ "id":166,
+ "type":"Tile"
+ },
+ {
+ "id":167,
+ "type":"Tile"
+ },
+ {
+ "id":168,
+ "type":"Tile"
+ },
+ {
+ "id":169,
+ "type":"Tile"
+ },
+ {
+ "id":170,
+ "type":"Tile"
+ },
+ {
+ "id":171,
+ "type":"Tile"
+ },
+ {
+ "id":172,
+ "type":"Tile"
+ },
+ {
+ "id":173,
+ "type":"Tile"
+ },
+ {
+ "id":174,
+ "type":"Tile"
+ },
+ {
+ "id":175,
+ "type":"Tile"
+ },
+ {
+ "id":176,
+ "type":"Tile"
+ },
+ {
+ "id":177,
+ "type":"Tile"
+ },
+ {
+ "id":178,
+ "type":"Tile"
+ },
+ {
+ "id":179,
+ "type":"Tile"
+ },
+ {
+ "id":180,
+ "type":"Tile"
+ },
+ {
+ "id":181,
+ "type":"Tile"
+ },
+ {
+ "id":182,
+ "type":"Tile"
+ },
+ {
+ "id":183,
+ "type":"Tile"
+ },
+ {
+ "id":184,
+ "type":"Tile"
+ },
+ {
+ "id":185,
+ "type":"Tile"
+ },
+ {
+ "id":186,
+ "type":"Tile"
+ },
+ {
+ "id":187,
+ "type":"Tile"
+ },
+ {
+ "id":188,
+ "type":"Tile"
+ },
+ {
+ "id":189,
+ "type":"Tile"
+ },
+ {
+ "id":190,
+ "type":"Tile"
+ },
+ {
+ "id":191,
+ "type":"Tile"
+ },
+ {
+ "id":192,
+ "type":"Tile"
+ },
+ {
+ "id":193,
+ "type":"Tile"
+ },
+ {
+ "id":194,
+ "type":"Tile"
+ },
+ {
+ "id":195,
+ "type":"Tile"
+ },
+ {
+ "id":196,
+ "type":"Tile"
+ },
+ {
+ "id":197,
+ "type":"Tile"
+ },
+ {
+ "id":198,
+ "type":"Tile"
+ },
+ {
+ "id":199,
+ "type":"Tile"
+ },
+ {
+ "id":200,
+ "type":"Tile"
+ },
+ {
+ "id":201,
+ "type":"Tile"
+ },
+ {
+ "id":202,
+ "type":"Tile"
+ },
+ {
+ "id":203,
+ "type":"Tile"
+ },
+ {
+ "id":204,
+ "type":"Tile"
+ },
+ {
+ "id":205,
+ "type":"Tile"
+ },
+ {
+ "id":206,
+ "type":"Tile"
+ },
+ {
+ "id":207,
+ "type":"Tile"
+ },
+ {
+ "id":208,
+ "type":"Tile"
+ },
+ {
+ "id":209,
+ "type":"Tile"
+ },
+ {
+ "id":210,
+ "type":"Tile"
+ },
+ {
+ "id":211,
+ "type":"Tile"
+ },
+ {
+ "id":212,
+ "type":"Tile"
+ },
+ {
+ "id":213,
+ "type":"Tile"
+ },
+ {
+ "id":214,
+ "type":"Tile"
+ },
+ {
+ "id":215,
+ "type":"Tile"
+ },
+ {
+ "id":216,
+ "type":"Tile"
+ },
+ {
+ "id":217,
+ "type":"Tile"
+ },
+ {
+ "id":218,
+ "type":"Tile"
+ },
+ {
+ "id":219,
+ "type":"Tile"
+ },
+ {
+ "id":220,
+ "type":"Tile"
+ },
+ {
+ "id":221,
+ "type":"Tile"
+ },
+ {
+ "id":222,
+ "type":"Tile"
+ },
+ {
+ "id":223,
+ "type":"Tile"
+ },
+ {
+ "id":224,
+ "type":"Tile"
+ },
+ {
+ "id":225,
+ "type":"Tile"
+ },
+ {
+ "id":226,
+ "type":"Tile"
+ },
+ {
+ "id":227,
+ "type":"Tile"
+ },
+ {
+ "id":228,
+ "type":"Tile"
+ },
+ {
+ "id":229,
+ "type":"Tile"
+ },
+ {
+ "id":230,
+ "type":"Tile"
+ },
+ {
+ "id":231,
+ "type":"Tile"
+ },
+ {
+ "id":232,
+ "type":"Tile"
+ },
+ {
+ "id":233,
+ "type":"Tile"
+ },
+ {
+ "id":234,
+ "type":"Tile"
+ },
+ {
+ "id":235,
+ "type":"Tile"
+ },
+ {
+ "id":236,
+ "type":"Tile"
+ },
+ {
+ "id":237,
+ "type":"Tile"
+ },
+ {
+ "id":238,
+ "type":"Tile"
+ },
+ {
+ "id":239,
+ "type":"Tile"
+ },
+ {
+ "id":240,
+ "type":"Tile"
+ },
+ {
+ "id":241,
+ "type":"Tile"
+ },
+ {
+ "id":242,
+ "type":"Tile"
+ },
+ {
+ "id":243,
+ "type":"Tile"
+ },
+ {
+ "id":244,
+ "type":"Tile"
+ },
+ {
+ "id":245,
+ "type":"Tile"
+ },
+ {
+ "id":246,
+ "type":"Tile"
+ },
+ {
+ "id":247,
+ "type":"Tile"
+ },
+ {
+ "id":248,
+ "type":"Tile"
+ },
+ {
+ "id":249,
+ "type":"Tile"
+ },
+ {
+ "id":250,
+ "type":"Tile"
+ },
+ {
+ "id":251,
+ "type":"Tile"
+ },
+ {
+ "id":252,
+ "type":"Tile"
+ },
+ {
+ "id":253,
+ "type":"Tile"
+ },
+ {
+ "id":254,
+ "type":"Tile"
+ },
+ {
+ "id":255,
+ "type":"Tile"
+ },
+ {
+ "id":256,
+ "type":"Tile"
+ },
+ {
+ "id":257,
+ "type":"Tile"
+ },
+ {
+ "id":258,
+ "type":"Tile"
+ },
+ {
+ "id":259,
+ "type":"Tile"
+ },
+ {
+ "id":260,
+ "type":"Tile"
+ },
+ {
+ "id":261,
+ "type":"Tile"
+ },
+ {
+ "id":262,
+ "type":"Tile"
+ },
+ {
+ "id":263,
+ "type":"Tile"
+ },
+ {
+ "id":264,
+ "type":"Tile"
+ },
+ {
+ "id":265,
+ "type":"Tile"
+ },
+ {
+ "id":266,
+ "type":"Tile"
+ },
+ {
+ "id":267,
+ "type":"Tile"
+ },
+ {
+ "id":268,
+ "type":"Tile"
+ },
+ {
+ "id":269,
+ "type":"Tile"
+ },
+ {
+ "id":270,
+ "type":"Tile"
+ },
+ {
+ "id":271,
+ "type":"Tile"
+ },
+ {
+ "id":272,
+ "type":"Tile"
+ },
+ {
+ "id":273,
+ "type":"Tile"
+ },
+ {
+ "id":274,
+ "type":"Tile"
+ },
+ {
+ "id":275,
+ "type":"Tile"
+ },
+ {
+ "id":276,
+ "type":"Tile"
+ },
+ {
+ "id":277,
+ "type":"Tile"
+ },
+ {
+ "id":278,
+ "type":"Tile"
+ },
+ {
+ "id":279,
+ "type":"Tile"
+ },
+ {
+ "id":280,
+ "type":"Tile"
+ },
+ {
+ "id":281,
+ "type":"Tile"
+ },
+ {
+ "id":282,
+ "type":"Tile"
+ },
+ {
+ "id":283,
+ "type":"Tile"
+ },
+ {
+ "id":284,
+ "type":"Tile"
+ },
+ {
+ "id":285,
+ "type":"Tile"
+ },
+ {
+ "id":286,
+ "type":"Tile"
+ },
+ {
+ "id":287,
+ "type":"Tile"
+ },
+ {
+ "id":288,
+ "type":"Tile"
+ },
+ {
+ "id":289,
+ "type":"Tile"
+ },
+ {
+ "id":290,
+ "type":"Tile"
+ },
+ {
+ "id":291,
+ "type":"Tile"
+ },
+ {
+ "id":292,
+ "type":"Tile"
+ },
+ {
+ "id":293,
+ "type":"Tile"
+ },
+ {
+ "id":294,
+ "type":"Tile"
+ },
+ {
+ "id":295,
+ "type":"Tile"
+ },
+ {
+ "id":296,
+ "type":"Tile"
+ },
+ {
+ "id":297,
+ "type":"Tile"
+ },
+ {
+ "id":298,
+ "type":"Tile"
+ },
+ {
+ "id":299,
+ "type":"Tile"
+ },
+ {
+ "id":300,
+ "type":"Tile"
+ },
+ {
+ "id":301,
+ "type":"Tile"
+ },
+ {
+ "id":302,
+ "type":"Tile"
+ },
+ {
+ "id":303,
+ "type":"Tile"
+ },
+ {
+ "id":304,
+ "type":"Tile"
+ },
+ {
+ "id":305,
+ "type":"Tile"
+ },
+ {
+ "id":306,
+ "type":"Tile"
+ },
+ {
+ "id":307,
+ "type":"Tile"
+ },
+ {
+ "id":308,
+ "type":"Tile"
+ },
+ {
+ "id":309,
+ "type":"Tile"
+ },
+ {
+ "id":310,
+ "type":"Tile"
+ },
+ {
+ "id":311,
+ "type":"Tile"
+ },
+ {
+ "id":312,
+ "type":"Tile"
+ },
+ {
+ "id":313,
+ "type":"Tile"
+ },
+ {
+ "id":314,
+ "type":"Tile"
+ },
+ {
+ "id":315,
+ "type":"Tile"
+ },
+ {
+ "id":316,
+ "type":"Tile"
+ },
+ {
+ "id":317,
+ "type":"Tile"
+ },
+ {
+ "id":318,
+ "type":"Tile"
+ },
+ {
+ "id":319,
+ "type":"Tile"
+ },
+ {
+ "id":320,
+ "type":"Tile"
+ },
+ {
+ "id":321,
+ "type":"Tile"
+ },
+ {
+ "id":322,
+ "type":"Tile"
+ },
+ {
+ "id":323,
+ "type":"Tile"
+ },
+ {
+ "id":324,
+ "type":"Tile"
+ },
+ {
+ "id":325,
+ "type":"Tile"
+ },
+ {
+ "id":326,
+ "type":"Tile"
+ },
+ {
+ "id":327,
+ "type":"Tile"
+ },
+ {
+ "id":328,
+ "type":"Tile"
+ },
+ {
+ "id":329,
+ "type":"Tile"
+ },
+ {
+ "id":330,
+ "type":"Tile"
+ },
+ {
+ "id":331,
+ "type":"Tile"
+ },
+ {
+ "id":332,
+ "type":"Tile"
+ },
+ {
+ "id":333,
+ "type":"Tile"
+ },
+ {
+ "id":334,
+ "type":"Tile"
+ },
+ {
+ "id":335,
+ "type":"Tile"
+ },
+ {
+ "id":336,
+ "type":"Tile"
+ },
+ {
+ "id":337,
+ "type":"Tile"
+ },
+ {
+ "id":338,
+ "type":"Tile"
+ },
+ {
+ "id":339,
+ "type":"Tile"
+ },
+ {
+ "id":340,
+ "type":"Tile"
+ },
+ {
+ "id":341,
+ "type":"Tile"
+ },
+ {
+ "id":342,
+ "type":"Tile"
+ },
+ {
+ "id":343,
+ "type":"Tile"
+ },
+ {
+ "id":344,
+ "type":"Tile"
+ },
+ {
+ "id":345,
+ "type":"Tile"
+ },
+ {
+ "id":346,
+ "type":"Tile"
+ },
+ {
+ "id":347,
+ "type":"Tile"
+ },
+ {
+ "id":348,
+ "type":"Tile"
+ },
+ {
+ "id":349,
+ "type":"Tile"
+ },
+ {
+ "id":350,
+ "type":"Tile"
+ },
+ {
+ "id":351,
+ "type":"Tile"
+ },
+ {
+ "id":352,
+ "type":"Tile"
+ },
+ {
+ "id":353,
+ "type":"Tile"
+ },
+ {
+ "id":354,
+ "type":"Tile"
+ },
+ {
+ "id":355,
+ "type":"Tile"
+ },
+ {
+ "id":356,
+ "type":"Tile"
+ },
+ {
+ "id":357,
+ "type":"Tile"
+ },
+ {
+ "id":358,
+ "type":"Tile"
+ },
+ {
+ "id":359,
+ "type":"Tile"
+ },
+ {
+ "id":360,
+ "type":"Tile"
+ },
+ {
+ "id":361,
+ "type":"Tile"
+ },
+ {
+ "id":362,
+ "type":"Tile"
+ },
+ {
+ "id":363,
+ "type":"Tile"
+ },
+ {
+ "id":364,
+ "type":"Tile"
+ },
+ {
+ "id":365,
+ "type":"Tile"
+ },
+ {
+ "id":366,
+ "type":"Tile"
+ },
+ {
+ "id":367,
+ "type":"Tile"
+ },
+ {
+ "id":368,
+ "type":"Tile"
+ },
+ {
+ "id":369,
+ "type":"Tile"
+ },
+ {
+ "id":370,
+ "type":"Tile"
+ },
+ {
+ "id":371,
+ "type":"Tile"
+ },
+ {
+ "id":372,
+ "type":"Tile"
+ },
+ {
+ "id":373,
+ "type":"Tile"
+ },
+ {
+ "id":374,
+ "type":"Tile"
+ },
+ {
+ "id":375,
+ "type":"Tile"
+ },
+ {
+ "id":376,
+ "type":"Tile"
+ },
+ {
+ "id":377,
+ "type":"Tile"
+ },
+ {
+ "id":378,
+ "type":"Tile"
+ },
+ {
+ "id":379,
+ "type":"Tile"
+ },
+ {
+ "id":380,
+ "type":"Tile"
+ },
+ {
+ "id":381,
+ "type":"Tile"
+ },
+ {
+ "id":382,
+ "type":"Tile"
+ },
+ {
+ "id":383,
+ "type":"Tile"
+ },
+ {
+ "id":384,
+ "type":"Tile"
+ },
+ {
+ "id":385,
+ "type":"Tile"
+ },
+ {
+ "id":386,
+ "type":"Tile"
+ },
+ {
+ "id":387,
+ "type":"Tile"
+ },
+ {
+ "id":388,
+ "type":"Tile"
+ },
+ {
+ "id":389,
+ "type":"Tile"
+ },
+ {
+ "id":390,
+ "type":"Tile"
+ },
+ {
+ "id":391,
+ "type":"Tile"
+ },
+ {
+ "id":392,
+ "type":"Tile"
+ },
+ {
+ "id":393,
+ "type":"Tile"
+ },
+ {
+ "id":394,
+ "type":"Tile"
+ },
+ {
+ "id":395,
+ "type":"Tile"
+ },
+ {
+ "id":396,
+ "type":"Tile"
+ },
+ {
+ "id":397,
+ "type":"Tile"
+ },
+ {
+ "id":398,
+ "type":"Tile"
+ },
+ {
+ "id":399,
+ "type":"Tile"
+ },
+ {
+ "id":400,
+ "type":"Tile"
+ },
+ {
+ "id":401,
+ "type":"Tile"
+ },
+ {
+ "id":402,
+ "type":"Tile"
+ },
+ {
+ "id":403,
+ "type":"Tile"
+ },
+ {
+ "id":404,
+ "type":"Tile"
+ },
+ {
+ "id":405,
+ "type":"Tile"
+ },
+ {
+ "id":406,
+ "type":"Tile"
+ },
+ {
+ "id":407,
+ "type":"Tile"
+ },
+ {
+ "id":408,
+ "type":"Tile"
+ },
+ {
+ "id":409,
+ "type":"Tile"
+ },
+ {
+ "id":410,
+ "type":"Tile"
+ },
+ {
+ "id":411,
+ "type":"Tile"
+ },
+ {
+ "id":412,
+ "type":"Tile"
+ },
+ {
+ "id":413,
+ "type":"Tile"
+ },
+ {
+ "id":414,
+ "type":"Tile"
+ },
+ {
+ "id":415,
+ "type":"Tile"
+ },
+ {
+ "id":416,
+ "type":"Tile"
+ },
+ {
+ "id":417,
+ "type":"Tile"
+ },
+ {
+ "id":418,
+ "type":"Tile"
+ },
+ {
+ "id":419,
+ "type":"Tile"
+ },
+ {
+ "id":420,
+ "type":"Tile"
+ },
+ {
+ "id":421,
+ "type":"Tile"
+ },
+ {
+ "id":422,
+ "type":"Tile"
+ },
+ {
+ "id":423,
+ "type":"Tile"
+ },
+ {
+ "id":424,
+ "type":"Tile"
+ },
+ {
+ "id":425,
+ "type":"Tile"
+ },
+ {
+ "id":426,
+ "type":"Tile"
+ },
+ {
+ "id":427,
+ "type":"Tile"
+ },
+ {
+ "id":428,
+ "type":"Tile"
+ },
+ {
+ "id":429,
+ "type":"Tile"
+ },
+ {
+ "id":430,
+ "type":"Tile"
+ },
+ {
+ "id":431,
+ "type":"Tile"
+ },
+ {
+ "id":432,
+ "type":"Tile"
+ },
+ {
+ "id":433,
+ "type":"Tile"
+ },
+ {
+ "id":434,
+ "type":"Tile"
+ },
+ {
+ "id":435,
+ "type":"Tile"
+ },
+ {
+ "id":436,
+ "type":"Tile"
+ },
+ {
+ "id":437,
+ "type":"Tile"
+ },
+ {
+ "id":438,
+ "type":"Tile"
+ },
+ {
+ "id":439,
+ "type":"Tile"
+ },
+ {
+ "id":440,
+ "type":"Tile"
+ },
+ {
+ "id":441,
+ "type":"Tile"
+ },
+ {
+ "id":442,
+ "type":"Tile"
+ },
+ {
+ "id":443,
+ "type":"Tile"
+ },
+ {
+ "id":444,
+ "type":"Tile"
+ },
+ {
+ "id":445,
+ "type":"Tile"
+ },
+ {
+ "id":446,
+ "type":"Tile"
+ },
+ {
+ "id":447,
+ "type":"Tile"
+ },
+ {
+ "id":448,
+ "type":"Tile"
+ },
+ {
+ "id":449,
+ "type":"Tile"
+ },
+ {
+ "id":450,
+ "type":"Tile"
+ },
+ {
+ "id":451,
+ "type":"Tile"
+ },
+ {
+ "id":452,
+ "type":"Tile"
+ },
+ {
+ "id":453,
+ "type":"Tile"
+ },
+ {
+ "id":454,
+ "type":"Tile"
+ },
+ {
+ "id":455,
+ "type":"Tile"
+ },
+ {
+ "id":456,
+ "type":"Tile"
+ },
+ {
+ "id":457,
+ "type":"Tile"
+ },
+ {
+ "id":458,
+ "type":"Tile"
+ },
+ {
+ "id":459,
+ "type":"Tile"
+ },
+ {
+ "id":460,
+ "type":"Tile"
+ },
+ {
+ "id":461,
+ "type":"Tile"
+ },
+ {
+ "id":462,
+ "type":"Tile"
+ },
+ {
+ "id":463,
+ "type":"Tile"
+ },
+ {
+ "id":464,
+ "type":"Tile"
+ },
+ {
+ "id":465,
+ "type":"Tile"
+ },
+ {
+ "id":466,
+ "type":"Tile"
+ },
+ {
+ "id":467,
+ "type":"Tile"
+ },
+ {
+ "id":468,
+ "type":"Tile"
+ },
+ {
+ "id":469,
+ "type":"Tile"
+ },
+ {
+ "id":470,
+ "type":"Tile"
+ },
+ {
+ "id":471,
+ "type":"Tile"
+ },
+ {
+ "id":472,
+ "type":"Tile"
+ },
+ {
+ "id":473,
+ "type":"Tile"
+ },
+ {
+ "id":474,
+ "type":"Tile"
+ },
+ {
+ "id":475,
+ "type":"Tile"
+ },
+ {
+ "id":476,
+ "type":"Tile"
+ },
+ {
+ "id":477,
+ "type":"Tile"
+ },
+ {
+ "id":478,
+ "type":"Tile"
+ },
+ {
+ "id":479,
+ "type":"Tile"
+ },
+ {
+ "id":480,
+ "type":"Tile"
+ },
+ {
+ "id":481,
+ "type":"Tile"
+ },
+ {
+ "id":482,
+ "type":"Tile"
+ },
+ {
+ "id":483,
+ "type":"Tile"
+ },
+ {
+ "id":484,
+ "type":"Tile"
+ },
+ {
+ "id":485,
+ "type":"Tile"
+ },
+ {
+ "id":486,
+ "type":"Tile"
+ },
+ {
+ "id":487,
+ "type":"Tile"
+ },
+ {
+ "id":488,
+ "type":"Tile"
+ },
+ {
+ "id":489,
+ "type":"Tile"
+ },
+ {
+ "id":490,
+ "type":"Tile"
+ },
+ {
+ "id":491,
+ "type":"Tile"
+ },
+ {
+ "id":492,
+ "type":"Tile"
+ },
+ {
+ "id":493,
+ "type":"Tile"
+ },
+ {
+ "id":494,
+ "type":"Tile"
+ },
+ {
+ "id":495,
+ "type":"Tile"
+ },
+ {
+ "id":496,
+ "type":"Tile"
+ },
+ {
+ "id":497,
+ "type":"Tile"
+ },
+ {
+ "id":498,
+ "type":"Tile"
+ },
+ {
+ "id":499,
+ "type":"Tile"
+ },
+ {
+ "id":500,
+ "type":"Tile"
+ },
+ {
+ "id":501,
+ "type":"Tile"
+ },
+ {
+ "id":502,
+ "type":"Tile"
+ },
+ {
+ "id":503,
+ "type":"Tile"
+ },
+ {
+ "id":504,
+ "type":"Tile"
+ },
+ {
+ "id":505,
+ "type":"Tile"
+ },
+ {
+ "id":506,
+ "type":"Tile"
+ },
+ {
+ "id":507,
+ "type":"Tile"
+ },
+ {
+ "id":508,
+ "type":"Tile"
+ },
+ {
+ "id":509,
+ "type":"Tile"
+ },
+ {
+ "id":510,
+ "type":"Tile"
+ },
+ {
+ "id":511,
+ "type":"Tile"
+ },
+ {
+ "id":512,
+ "type":"Tile"
+ },
+ {
+ "id":513,
+ "type":"Tile"
+ },
+ {
+ "id":514,
+ "type":"Tile"
+ },
+ {
+ "id":515,
+ "type":"Tile"
+ },
+ {
+ "id":516,
+ "type":"Tile"
+ },
+ {
+ "id":517,
+ "type":"Tile"
+ },
+ {
+ "id":518,
+ "type":"Tile"
+ },
+ {
+ "id":519,
+ "type":"Tile"
+ },
+ {
+ "id":520,
+ "type":"Tile"
+ },
+ {
+ "id":521,
+ "type":"Tile"
+ },
+ {
+ "id":522,
+ "type":"Tile"
+ },
+ {
+ "id":523,
+ "type":"Tile"
+ },
+ {
+ "id":524,
+ "type":"Tile"
+ },
+ {
+ "id":525,
+ "type":"Tile"
+ },
+ {
+ "id":526,
+ "type":"Tile"
+ },
+ {
+ "id":527,
+ "type":"Tile"
+ },
+ {
+ "id":528,
+ "type":"Tile"
+ },
+ {
+ "id":529,
+ "type":"Tile"
+ },
+ {
+ "id":530,
+ "type":"Tile"
+ },
+ {
+ "id":531,
+ "type":"Tile"
+ },
+ {
+ "id":532,
+ "type":"Tile"
+ },
+ {
+ "id":533,
+ "type":"Tile"
+ },
+ {
+ "id":534,
+ "type":"Tile"
+ },
+ {
+ "id":535,
+ "type":"Tile"
+ },
+ {
+ "id":536,
+ "type":"Tile"
+ },
+ {
+ "id":537,
+ "type":"Tile"
+ },
+ {
+ "id":538,
+ "type":"Tile"
+ },
+ {
+ "id":539,
+ "type":"Tile"
+ },
+ {
+ "id":540,
+ "type":"Tile"
+ },
+ {
+ "id":541,
+ "type":"Tile"
+ },
+ {
+ "id":542,
+ "type":"Tile"
+ },
+ {
+ "id":543,
+ "type":"Tile"
+ },
+ {
+ "id":544,
+ "type":"Tile"
+ },
+ {
+ "id":545,
+ "type":"Tile"
+ },
+ {
+ "id":546,
+ "type":"Tile"
+ },
+ {
+ "id":547,
+ "type":"Tile"
+ },
+ {
+ "id":548,
+ "type":"Tile"
+ },
+ {
+ "id":549,
+ "type":"Tile"
+ },
+ {
+ "id":550,
+ "type":"Tile"
+ },
+ {
+ "id":551,
+ "type":"Tile"
+ },
+ {
+ "id":552,
+ "type":"Tile"
+ },
+ {
+ "id":553,
+ "type":"Tile"
+ },
+ {
+ "id":554,
+ "type":"Tile"
+ },
+ {
+ "id":555,
+ "type":"Tile"
+ },
+ {
+ "id":556,
+ "type":"Tile"
+ },
+ {
+ "id":557,
+ "type":"Tile"
+ },
+ {
+ "id":558,
+ "type":"Tile"
+ },
+ {
+ "id":559,
+ "type":"Tile"
+ },
+ {
+ "id":560,
+ "type":"Tile"
+ },
+ {
+ "id":561,
+ "type":"Tile"
+ },
+ {
+ "id":562,
+ "type":"Tile"
+ },
+ {
+ "id":563,
+ "type":"Tile"
+ },
+ {
+ "id":564,
+ "type":"Tile"
+ },
+ {
+ "id":565,
+ "type":"Tile"
+ },
+ {
+ "id":566,
+ "type":"Tile"
+ },
+ {
+ "id":567,
+ "type":"Tile"
+ },
+ {
+ "id":568,
+ "type":"Tile"
+ },
+ {
+ "id":569,
+ "type":"Tile"
+ },
+ {
+ "id":570,
+ "type":"Tile"
+ },
+ {
+ "id":571,
+ "type":"Tile"
+ }],
+ "tilewidth":32,
+ "type":"tileset",
+ "version":"1.10",
+ "wangsets":[
+ {
+ "colors":[
+ {
+ "color":"#ff0000",
+ "name":"Sand",
+ "probability":1,
+ "tile":23
+ },
+ {
+ "color":"#00ff00",
+ "name":"SandStone",
+ "probability":0.3,
+ "tile":110
+ }],
+ "name":"\u041f\u0435\u0441\u0447\u0430\u043d\u044b\u0439",
+ "tile":-1,
+ "type":"corner",
+ "wangtiles":[
+ {
+ "tileid":0,
+ "wangid":[0, 2, 0, 1, 0, 2, 0, 2]
+ },
+ {
+ "tileid":1,
+ "wangid":[0, 2, 0, 1, 0, 1, 0, 2]
+ },
+ {
+ "tileid":2,
+ "wangid":[0, 2, 0, 2, 0, 1, 0, 2]
+ },
+ {
+ "tileid":9,
+ "wangid":[0, 2, 0, 1, 0, 2, 0, 1]
+ },
+ {
+ "tileid":22,
+ "wangid":[0, 1, 0, 1, 0, 2, 0, 2]
+ },
+ {
+ "tileid":23,
+ "wangid":[0, 1, 0, 1, 0, 1, 0, 1]
+ },
+ {
+ "tileid":24,
+ "wangid":[0, 2, 0, 2, 0, 1, 0, 1]
+ },
+ {
+ "tileid":27,
+ "wangid":[0, 1, 0, 2, 0, 1, 0, 1]
+ },
+ {
+ "tileid":28,
+ "wangid":[0, 1, 0, 1, 0, 2, 0, 1]
+ },
+ {
+ "tileid":31,
+ "wangid":[0, 1, 0, 2, 0, 1, 0, 2]
+ },
+ {
+ "tileid":44,
+ "wangid":[0, 1, 0, 2, 0, 2, 0, 2]
+ },
+ {
+ "tileid":45,
+ "wangid":[0, 1, 0, 2, 0, 2, 0, 1]
+ },
+ {
+ "tileid":46,
+ "wangid":[0, 2, 0, 2, 0, 2, 0, 1]
+ },
+ {
+ "tileid":49,
+ "wangid":[0, 2, 0, 1, 0, 1, 0, 1]
+ },
+ {
+ "tileid":50,
+ "wangid":[0, 1, 0, 1, 0, 1, 0, 2]
+ },
+ {
+ "tileid":88,
+ "wangid":[0, 1, 0, 1, 0, 1, 0, 1]
+ },
+ {
+ "tileid":89,
+ "wangid":[0, 1, 0, 1, 0, 1, 0, 1]
+ },
+ {
+ "tileid":110,
+ "wangid":[0, 2, 0, 2, 0, 2, 0, 2]
+ },
+ {
+ "tileid":111,
+ "wangid":[0, 2, 0, 2, 0, 2, 0, 2]
+ },
+ {
+ "tileid":112,
+ "wangid":[0, 2, 0, 2, 0, 2, 0, 2]
+ },
+ {
+ "tileid":113,
+ "wangid":[0, 2, 0, 2, 0, 2, 0, 2]
+ },
+ {
+ "tileid":114,
+ "wangid":[0, 2, 0, 2, 0, 2, 0, 2]
+ }]
+ }]
+}
\ No newline at end of file
diff --git a/ZoFo/Content/Textures/AnimationTextures/Character/hr-level1_idle.png b/ZoFo/Content/Textures/AnimationTextures/Character/hr-level1_idle.png
new file mode 100644
index 0000000..85413ee
Binary files /dev/null and b/ZoFo/Content/Textures/AnimationTextures/Character/hr-level1_idle.png differ
diff --git a/ZoFo/Content/Textures/AnimationTextures/Character/hr-level1_idle_gun.png b/ZoFo/Content/Textures/AnimationTextures/Character/hr-level1_idle_gun.png
new file mode 100644
index 0000000..4cb9b20
Binary files /dev/null and b/ZoFo/Content/Textures/AnimationTextures/Character/hr-level1_idle_gun.png differ
diff --git a/ZoFo/Content/Textures/AnimationTextures/Character/hr-level1_mining_tool-1.png b/ZoFo/Content/Textures/AnimationTextures/Character/hr-level1_mining_tool-1.png
new file mode 100644
index 0000000..8d194a4
Binary files /dev/null and b/ZoFo/Content/Textures/AnimationTextures/Character/hr-level1_mining_tool-1.png differ
diff --git a/ZoFo/Content/Textures/AnimationTextures/Character/hr-level1_mining_tool-2.png b/ZoFo/Content/Textures/AnimationTextures/Character/hr-level1_mining_tool-2.png
new file mode 100644
index 0000000..c3e4071
Binary files /dev/null and b/ZoFo/Content/Textures/AnimationTextures/Character/hr-level1_mining_tool-2.png differ
diff --git a/ZoFo/Content/Textures/AnimationTextures/Character/hr-level1_running.png b/ZoFo/Content/Textures/AnimationTextures/Character/hr-level1_running.png
new file mode 100644
index 0000000..5ceabee
Binary files /dev/null and b/ZoFo/Content/Textures/AnimationTextures/Character/hr-level1_running.png differ
diff --git a/ZoFo/Content/Textures/AnimationTextures/Character/hr-level1_running_gun.png b/ZoFo/Content/Textures/AnimationTextures/Character/hr-level1_running_gun.png
new file mode 100644
index 0000000..488b866
Binary files /dev/null and b/ZoFo/Content/Textures/AnimationTextures/Character/hr-level1_running_gun.png differ
diff --git a/ZoFo/Content/Textures/AnimationTextures/unicorn.png b/ZoFo/Content/Textures/AnimationTextures/unicorn.png
new file mode 100644
index 0000000..3306190
Binary files /dev/null and b/ZoFo/Content/Textures/AnimationTextures/unicorn.png differ
diff --git a/ZoFo/Content/Textures/Animations/player_down-left_idle.animation b/ZoFo/Content/Textures/Animations/player_down-left_idle.animation
new file mode 100644
index 0000000..6c2a6c7
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_down-left_idle.animation
@@ -0,0 +1,21 @@
+{
+ "id": "player_down-left_idle",
+ "textureName": "Textures/AnimationTextures/Character/hr-level1_idle",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 560,
+ "Width": 92,
+ "Height": 116
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 5
+ }
+ ],
+ "textureFrameInterval": 0,
+ "framesCount": 22,
+ "isCycle": true,
+ "offset": "0, 0"
+
+}
diff --git a/ZoFo/Content/Textures/Animations/player_down-right_idle.animation b/ZoFo/Content/Textures/Animations/player_down-right_idle.animation
new file mode 100644
index 0000000..016a3f2
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_down-right_idle.animation
@@ -0,0 +1,20 @@
+{
+ "id": "player_down-right_idle",
+ "textureName": "Textures/AnimationTextures/Character/hr-level1_idle",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 358,
+ "Width": 92,
+ "Height": 116
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 5
+ }
+ ],
+ "textureFrameInterval": 0,
+ "framesCount": 22,
+ "isCycle": true,
+ "offset": "0, 0"
+}
diff --git a/ZoFo/Content/Textures/Animations/player_down_idle.animation b/ZoFo/Content/Textures/Animations/player_down_idle.animation
new file mode 100644
index 0000000..243946c
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_down_idle.animation
@@ -0,0 +1,20 @@
+{
+ "id": "player_down_idle",
+ "textureName": "Textures/AnimationTextures/Character/hr-level1_idle",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 464,
+ "Width": 92,
+ "Height": 116
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 5
+ }
+ ],
+ "textureFrameInterval": 0,
+ "framesCount": 22,
+ "isCycle": true,
+ "offset": "0, 0"
+}
diff --git a/ZoFo/Content/Textures/Animations/player_idle_down-left_mining.animation b/ZoFo/Content/Textures/Animations/player_idle_down-left_mining.animation
new file mode 100644
index 0000000..ba1b3c9
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_idle_down-left_mining.animation
@@ -0,0 +1,21 @@
+{
+ "id": "player_idle_down-left_mining",
+ "textureName": "Textures/AnimationTextures/Character/hr-level1_mining_tool-1",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 776,
+ "Width": 196,
+ "Height": 194
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 5
+ }
+ ],
+ "textureFrameInterval": 0,
+ "framesCount": 13,
+ "isCycle": true,
+ "offset": "0, 0"
+
+}
diff --git a/ZoFo/Content/Textures/Animations/player_idle_down_mining.animation b/ZoFo/Content/Textures/Animations/player_idle_down_mining.animation
new file mode 100644
index 0000000..92bda6c
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_idle_down_mining.animation
@@ -0,0 +1,21 @@
+{
+ "id": "player_idle_down_mining",
+ "textureName": "Textures/AnimationTextures/Character/hr-level1_mining_tool-1",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 582,
+ "Width": 196,
+ "Height": 194
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 5
+ }
+ ],
+ "textureFrameInterval": 0,
+ "framesCount": 13,
+ "isCycle": true,
+ "offset": "0, 0"
+
+}
diff --git a/ZoFo/Content/Textures/Animations/player_idle_left_mining.animation b/ZoFo/Content/Textures/Animations/player_idle_left_mining.animation
new file mode 100644
index 0000000..81f9629
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_idle_left_mining.animation
@@ -0,0 +1,21 @@
+{
+ "id": "player_idle_left_mining",
+ "textureName": "Textures/AnimationTextures/Character/hr-level1_mining_tool-1",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 1358,
+ "Width": 196,
+ "Height": 194
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 5
+ }
+ ],
+ "textureFrameInterval": 0,
+ "framesCount": 13,
+ "isCycle": true,
+ "offset": "0, 0"
+
+}
diff --git a/ZoFo/Content/Textures/Animations/player_idle_rights_mining.animation b/ZoFo/Content/Textures/Animations/player_idle_rights_mining.animation
new file mode 100644
index 0000000..6570cce
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_idle_rights_mining.animation
@@ -0,0 +1,21 @@
+{
+ "id": "player_idle_rights_mining",
+ "textureName": "Textures/AnimationTextures/Character/hr-level1_mining_tool-1",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 388,
+ "Width": 196,
+ "Height": 194
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 5
+ }
+ ],
+ "textureFrameInterval": 0,
+ "framesCount": 13,
+ "isCycle": false,
+ "offset": "0, 0"
+
+}
diff --git a/ZoFo/Content/Textures/Animations/player_idle_top-left_mining.animation b/ZoFo/Content/Textures/Animations/player_idle_top-left_mining.animation
new file mode 100644
index 0000000..3dfef38
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_idle_top-left_mining.animation
@@ -0,0 +1,21 @@
+{
+ "id": "player_idle_top-left_mining",
+ "textureName": "Textures/AnimationTextures/Character/hr-level1_mining_tool-1",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 1552,
+ "Width": 196,
+ "Height": 194
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 5
+ }
+ ],
+ "textureFrameInterval": 0,
+ "framesCount": 13,
+ "isCycle": true,
+ "offset": "0, 0"
+
+}
diff --git a/ZoFo/Content/Textures/Animations/player_idle_top-right_noweapon.animation b/ZoFo/Content/Textures/Animations/player_idle_top-right_noweapon.animation
new file mode 100644
index 0000000..e97cfa8
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_idle_top-right_noweapon.animation
@@ -0,0 +1,20 @@
+{
+ "id": "player_idle_top-right_noweapon",
+ "textureName": "Textures/AnimationTextures/Character/hr-level1_idle",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 116,
+ "Width": 92,
+ "Height": 116
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 5
+ }
+ ],
+ "textureFrameInterval": 0,
+ "framesCount": 22,
+ "isCycle": true,
+ "offset": "0, 0"
+}
diff --git a/ZoFo/Content/Textures/Animations/player_idle_top-rights_mining.animation b/ZoFo/Content/Textures/Animations/player_idle_top-rights_mining.animation
new file mode 100644
index 0000000..d4a5828
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_idle_top-rights_mining.animation
@@ -0,0 +1,20 @@
+{
+ "id": "player_idle_top-rights_mining",
+ "textureName": "Textures/AnimationTextures/Character/hr-level1_mining_tool-1",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 194,
+ "Width": 196,
+ "Height": 194
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 5
+ }
+ ],
+ "textureFrameInterval": 0,
+ "framesCount": 13,
+ "isCycle": true,
+ "offset": "0, 0"
+}
diff --git a/ZoFo/Content/Textures/Animations/player_idle_top_noweapon.animation b/ZoFo/Content/Textures/Animations/player_idle_top_noweapon.animation
new file mode 100644
index 0000000..4e72f22
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_idle_top_noweapon.animation
@@ -0,0 +1,20 @@
+{
+ "id": "player_idle_top_noweapon",
+ "textureName": "Textures/AnimationTextures/Character/hr-level1_idle",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 0,
+ "Width": 92,
+ "Height": 116
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 5
+ }
+ ],
+ "textureFrameInterval": 0,
+ "framesCount": 22,
+ "isCycle": true,
+ "offset": "0, 0"
+}
diff --git a/ZoFo/Content/Textures/Animations/player_left_idle.animation b/ZoFo/Content/Textures/Animations/player_left_idle.animation
new file mode 100644
index 0000000..8906cb3
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_left_idle.animation
@@ -0,0 +1,21 @@
+{
+ "id": "player_left_idle",
+ "textureName": "Textures/AnimationTextures/Character/hr-level1_idle",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 696,
+ "Width": 92,
+ "Height": 116
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 5
+ }
+ ],
+ "textureFrameInterval": 0,
+ "framesCount": 22,
+ "isCycle": true,
+ "offset": "0, 0"
+
+}
diff --git a/ZoFo/Content/Textures/Animations/player_look_down.animation b/ZoFo/Content/Textures/Animations/player_look_down.animation
new file mode 100644
index 0000000..0b4e385
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_look_down.animation
@@ -0,0 +1,20 @@
+{
+ "id": "player_look_down",
+ "textureName": "Textures/AnimationTextures/Character/hr-level1_idle",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 464,
+ "Width": 92,
+ "Height": 116
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 5
+ }
+ ],
+ "textureFrameInterval": 0,
+ "framesCount": 22,
+ "isCycle": true,
+ "offset": "0, 0"
+}
diff --git a/ZoFo/Content/Textures/Animations/player_look_down_weapon.animation b/ZoFo/Content/Textures/Animations/player_look_down_weapon.animation
new file mode 100644
index 0000000..76f9b07
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_look_down_weapon.animation
@@ -0,0 +1 @@
+{"id":"player_look_down_weapon","textureName":"Textures/AnimationTextures/Character/hr-level1_idle_gun","startSpriteRectangle":{"X":0,"Y":512,"Width":110,"Height":128},"frameSecond":[{"Item1":0,"Item2":5}],"textureFrameInterval":0,"framesCount":22,"isCycle":true,"offset":"0, 0"}
diff --git a/ZoFo/Content/Textures/Animations/player_look_left.animation b/ZoFo/Content/Textures/Animations/player_look_left.animation
new file mode 100644
index 0000000..13e8f0e
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_look_left.animation
@@ -0,0 +1 @@
+{"id":"player_look_left","textureName":"Textures/AnimationTextures/Character/hr-level1_idle","startSpriteRectangle":{"X":0,"Y":696,"Width":92,"Height":116},"frameSecond":[{"Item1":0,"Item2":5}],"textureFrameInterval":0,"framesCount":22,"isCycle":true,"offset":"0, 0"}
diff --git a/ZoFo/Content/Textures/Animations/player_look_left_down.animation b/ZoFo/Content/Textures/Animations/player_look_left_down.animation
new file mode 100644
index 0000000..78f5150
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_look_left_down.animation
@@ -0,0 +1 @@
+{"id":"player_look_left_down","textureName":"Textures/AnimationTextures/Character/hr-level1_idle","startSpriteRectangle":{"X":0,"Y":580,"Width":92,"Height":116},"frameSecond":[{"Item1":0,"Item2":5}],"textureFrameInterval":0,"framesCount":22,"isCycle":true,"offset":"0, 0"}
diff --git a/ZoFo/Content/Textures/Animations/player_look_left_down_weapon.animation b/ZoFo/Content/Textures/Animations/player_look_left_down_weapon.animation
new file mode 100644
index 0000000..5d7468b
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_look_left_down_weapon.animation
@@ -0,0 +1,20 @@
+{
+ "id": "player_look_left_down_weapon",
+ "textureName": "Textures/AnimationTextures/Character/hr-level1_idle_gun",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 640,
+ "Width": 110,
+ "Height": 128
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 5
+ }
+ ],
+ "textureFrameInterval": 0,
+ "framesCount": 22,
+ "isCycle": true,
+ "offset": "0, 0"
+}
diff --git a/ZoFo/Content/Textures/Animations/player_look_left_up.animation b/ZoFo/Content/Textures/Animations/player_look_left_up.animation
new file mode 100644
index 0000000..9fc0cf6
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_look_left_up.animation
@@ -0,0 +1 @@
+{"id":"player_look_left_up","textureName":"Textures/AnimationTextures/Character/hr-level1_idle","startSpriteRectangle":{"X":0,"Y":812,"Width":92,"Height":116},"frameSecond":[{"Item1":0,"Item2":5}],"textureFrameInterval":0,"framesCount":22,"isCycle":true,"offset":"0, 0"}
diff --git a/ZoFo/Content/Textures/Animations/player_look_left_up_weapon.animation b/ZoFo/Content/Textures/Animations/player_look_left_up_weapon.animation
new file mode 100644
index 0000000..68ddc46
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_look_left_up_weapon.animation
@@ -0,0 +1 @@
+{"id":"player_look_left_up_weapon","textureName":"Textures/AnimationTextures/Character/hr-level1_idle_gun","startSpriteRectangle":{"X":0,"Y":896,"Width":110,"Height":128},"frameSecond":[{"Item1":0,"Item2":5}],"textureFrameInterval":0,"framesCount":22,"isCycle":true,"offset":"0, 0"}
diff --git a/ZoFo/Content/Textures/Animations/player_look_left_weapon.animation b/ZoFo/Content/Textures/Animations/player_look_left_weapon.animation
new file mode 100644
index 0000000..638f33a
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_look_left_weapon.animation
@@ -0,0 +1,20 @@
+{
+ "id": "player_look_left_weapon",
+ "textureName": "Textures/AnimationTextures/Character/hr-level1_idle_gun",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 768,
+ "Width": 110,
+ "Height": 128
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 5
+ }
+ ],
+ "textureFrameInterval": 0,
+ "framesCount": 22,
+ "isCycle": true,
+ "offset": "0, 0"
+}
diff --git a/ZoFo/Content/Textures/Animations/player_look_right.animation b/ZoFo/Content/Textures/Animations/player_look_right.animation
new file mode 100644
index 0000000..3d1bf63
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_look_right.animation
@@ -0,0 +1 @@
+{"id":"player_look_right","textureName":"Textures/AnimationTextures/Character/hr-level1_idle","startSpriteRectangle":{"X":0,"Y":232,"Width":92,"Height":116},"frameSecond":[{"Item1":0,"Item2":5}],"textureFrameInterval":0,"framesCount":22,"isCycle":true,"offset":"0, 0"}
diff --git a/ZoFo/Content/Textures/Animations/player_look_right_down.animation b/ZoFo/Content/Textures/Animations/player_look_right_down.animation
new file mode 100644
index 0000000..fbdbeb9
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_look_right_down.animation
@@ -0,0 +1 @@
+{"id":"player_look_right_down","textureName":"Textures/AnimationTextures/Character/hr-level1_idle","startSpriteRectangle":{"X":0,"Y":348,"Width":92,"Height":116},"frameSecond":[{"Item1":0,"Item2":5}],"textureFrameInterval":0,"framesCount":22,"isCycle":true,"offset":"0, 0"}
diff --git a/ZoFo/Content/Textures/Animations/player_look_right_down_weapon.animation b/ZoFo/Content/Textures/Animations/player_look_right_down_weapon.animation
new file mode 100644
index 0000000..49ca0c6
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_look_right_down_weapon.animation
@@ -0,0 +1 @@
+{"id":"player_look_right_down_weapon","textureName":"Textures/AnimationTextures/Character/hr-level1_idle_gun","startSpriteRectangle":{"X":0,"Y":384,"Width":110,"Height":128},"frameSecond":[{"Item1":0,"Item2":5}],"textureFrameInterval":0,"framesCount":22,"isCycle":true,"offset":"0, 0"}
diff --git a/ZoFo/Content/Textures/Animations/player_look_right_up.animation b/ZoFo/Content/Textures/Animations/player_look_right_up.animation
new file mode 100644
index 0000000..0fe59d4
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_look_right_up.animation
@@ -0,0 +1 @@
+{"id":"player_look_right_up","textureName":"Textures/AnimationTextures/Character/hr-level1_idle","startSpriteRectangle":{"X":0,"Y":116,"Width":92,"Height":116},"frameSecond":[{"Item1":0,"Item2":5}],"textureFrameInterval":0,"framesCount":22,"isCycle":true,"offset":"0, 0"}
diff --git a/ZoFo/Content/Textures/Animations/player_look_right_up_weapon.animation b/ZoFo/Content/Textures/Animations/player_look_right_up_weapon.animation
new file mode 100644
index 0000000..897c4b5
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_look_right_up_weapon.animation
@@ -0,0 +1 @@
+{"id":"player_look_right_up_weapon","textureName":"Textures/AnimationTextures/Character/hr-level1_idle_gun","startSpriteRectangle":{"X":0,"Y":128,"Width":110,"Height":128},"frameSecond":[{"Item1":0,"Item2":5}],"textureFrameInterval":0,"framesCount":22,"isCycle":true,"offset":"0, 0"}
diff --git a/ZoFo/Content/Textures/Animations/player_look_right_weapon.animation b/ZoFo/Content/Textures/Animations/player_look_right_weapon.animation
new file mode 100644
index 0000000..e7a753c
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_look_right_weapon.animation
@@ -0,0 +1 @@
+{"id":"player_look_right_weapon","textureName":"Textures/AnimationTextures/Character/hr-level1_idle_gun","startSpriteRectangle":{"X":0,"Y":256,"Width":110,"Height":128},"frameSecond":[{"Item1":0,"Item2":5}],"textureFrameInterval":0,"framesCount":22,"isCycle":true,"offset":"0, 0"}
diff --git a/ZoFo/Content/Textures/Animations/player_look_up.animation b/ZoFo/Content/Textures/Animations/player_look_up.animation
new file mode 100644
index 0000000..3b24dca
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_look_up.animation
@@ -0,0 +1 @@
+{"id":"player_look_up","textureName":"Textures/AnimationTextures/Character/hr-level1_idle","startSpriteRectangle":{"X":0,"Y":0,"Width":92,"Height":116},"frameSecond":[{"Item1":0,"Item2":5}],"textureFrameInterval":0,"framesCount":22,"isCycle":true,"offset":"0, 0"}
diff --git a/ZoFo/Content/Textures/Animations/player_look_up_weapon.animation b/ZoFo/Content/Textures/Animations/player_look_up_weapon.animation
new file mode 100644
index 0000000..4f45286
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_look_up_weapon.animation
@@ -0,0 +1 @@
+{"id":"player_look_up_weapon","textureName":"Textures/AnimationTextures/Character/hr-level1_idle_gun","startSpriteRectangle":{"X":0,"Y":0,"Width":110,"Height":128},"frameSecond":[{"Item1":0,"Item2":5}],"textureFrameInterval":0,"framesCount":22,"isCycle":true,"offset":"0, 0"}
diff --git a/ZoFo/Content/Textures/Animations/player_right_idle.animation b/ZoFo/Content/Textures/Animations/player_right_idle.animation
new file mode 100644
index 0000000..a3c1538
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_right_idle.animation
@@ -0,0 +1,21 @@
+{
+ "id": "player_right_idle",
+ "textureName": "Textures/AnimationTextures/Character/hr-level1_idle",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 232,
+ "Width": 92,
+ "Height": 116
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 5
+ }
+ ],
+ "textureFrameInterval": 0,
+ "framesCount": 22,
+ "isCycle": true,
+ "offset": "0, 0"
+
+}
diff --git a/ZoFo/Content/Textures/Animations/player_running_top_rotate.animation b/ZoFo/Content/Textures/Animations/player_running_top_rotate.animation
new file mode 100644
index 0000000..47c6d2c
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_running_top_rotate.animation
@@ -0,0 +1 @@
+{"id":"player_running_top_rotate","textureName":"Textures/AnimationTextures/Character/hr-level1_idle","startSpriteRectangle":{"X":0,"Y":0,"Width":92,"Height":116},"frameSecond":[{"Item1":0,"Item2":5}],"textureFrameInterval":0,"framesCount":22,"isCycle":true,"offset":"0, 0"}
diff --git a/ZoFo/Content/Textures/Animations/player_top-left_idle.animation b/ZoFo/Content/Textures/Animations/player_top-left_idle.animation
new file mode 100644
index 0000000..feb823e
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_top-left_idle.animation
@@ -0,0 +1,21 @@
+{
+ "id": "player_top-left_idle",
+ "textureName": "Textures/AnimationTextures/Character/hr-level1_idle",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 812,
+ "Width": 92,
+ "Height": 116
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 5
+ }
+ ],
+ "textureFrameInterval": 0,
+ "framesCount": 22,
+ "isCycle": true,
+ "offset": "0, 0"
+
+}
diff --git a/ZoFo/Content/Textures/Animations/player_top-right_idle.animation b/ZoFo/Content/Textures/Animations/player_top-right_idle.animation
new file mode 100644
index 0000000..df132a3
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_top-right_idle.animation
@@ -0,0 +1,21 @@
+{
+ "id": "player_top-right_idle",
+ "textureName": "Textures/AnimationTextures/Character/hr-level1_idle",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 116,
+ "Width": 92,
+ "Height": 116
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 5
+ }
+ ],
+ "textureFrameInterval": 0,
+ "framesCount": 22,
+ "isCycle": true,
+ "offset": "0, 0"
+
+}
diff --git a/ZoFo/Content/Textures/Animations/player_top_mining.animation b/ZoFo/Content/Textures/Animations/player_top_mining.animation
new file mode 100644
index 0000000..061d43a
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/player_top_mining.animation
@@ -0,0 +1,21 @@
+{
+ "id": "player_top_mining",
+ "textureName": "Textures/AnimationTextures/Character/hr-level1_mining_tool-1",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 0,
+ "Width": 196,
+ "Height": 194
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 5
+ }
+ ],
+ "textureFrameInterval": 0,
+ "framesCount": 13,
+ "isCycle": true,
+ "offset": "0, 0"
+
+}
diff --git a/ZoFo/Content/Textures/Animations/running_top.animation b/ZoFo/Content/Textures/Animations/running_top.animation
new file mode 100644
index 0000000..5f2991c
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/running_top.animation
@@ -0,0 +1,20 @@
+{
+ "id": "running_top",
+ "textureName": "unicorn",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 30,
+ "Width": 30,
+ "Height": 60
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 2
+ }
+ ],
+ "textureFrameInterval": 1,
+ "framesCount": 22,
+ "isCycle": true,
+ "offset": "0, 0"
+}
diff --git a/ZoFo/Content/Textures/Animations/testAnimation.animation b/ZoFo/Content/Textures/Animations/testAnimation.animation
new file mode 100644
index 0000000..917113d
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/testAnimation.animation
@@ -0,0 +1,21 @@
+{
+ "id": "testAnimation",
+ "textureName": "Textures/AnimationTextures/Character/hr-level1_idle",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 0,
+ "Width": 53,
+ "Height": 116
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 5
+ }
+ ],
+ "textureFrameInterval": 0,
+ "framesCount": 11,
+ "isCycle": true,
+ "offset": "0, 0"
+
+}
diff --git a/ZoFo/Content/Textures/Animations/testAnimationExample.animation b/ZoFo/Content/Textures/Animations/testAnimationExample.animation
new file mode 100644
index 0000000..88d3740
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/testAnimationExample.animation
@@ -0,0 +1,20 @@
+{
+ "id": "testAnimationExample",
+ "textureName": "Textures/AnimationTextures/unicorn",
+ "startSpriteRectangle": {
+ "X": 0,
+ "Y": 0,
+ "Width": 400,
+ "Height": 400
+ },
+ "frameSecond": [
+ {
+ "Item1": 0,
+ "Item2": 1
+ }
+ ],
+ "textureFrameInterval": 1,
+ "framesCount": 1,
+ "isCycle": true,
+ "offset": "0, 0"
+}
diff --git a/ZoFo/Content/Textures/GUI/Switch_backgrownd.png b/ZoFo/Content/Textures/GUI/Switch_backgrownd.png
new file mode 100644
index 0000000..bd9e1d8
Binary files /dev/null and b/ZoFo/Content/Textures/GUI/Switch_backgrownd.png differ
diff --git a/ZoFo/Content/Textures/GUI/background/base.png b/ZoFo/Content/Textures/GUI/background/base.png
new file mode 100644
index 0000000..49a5fb7
Binary files /dev/null and b/ZoFo/Content/Textures/GUI/background/base.png differ
diff --git a/ZoFo/Content/Textures/GUI/background/endGame.png b/ZoFo/Content/Textures/GUI/background/endGame.png
new file mode 100644
index 0000000..2d9926c
Binary files /dev/null and b/ZoFo/Content/Textures/GUI/background/endGame.png differ
diff --git a/ZoFo/Content/Textures/GUI/background/join.png b/ZoFo/Content/Textures/GUI/background/join.png
new file mode 100644
index 0000000..c0bb204
Binary files /dev/null and b/ZoFo/Content/Textures/GUI/background/join.png differ
diff --git a/ZoFo/Content/Textures/GUI/background/mainMenu.png b/ZoFo/Content/Textures/GUI/background/mainMenu.png
new file mode 100644
index 0000000..7f7665c
Binary files /dev/null and b/ZoFo/Content/Textures/GUI/background/mainMenu.png differ
diff --git a/ZoFo/Content/Textures/GUI/background/options.png b/ZoFo/Content/Textures/GUI/background/options.png
new file mode 100644
index 0000000..ef917ce
Binary files /dev/null and b/ZoFo/Content/Textures/GUI/background/options.png differ
diff --git a/ZoFo/Content/Textures/GUI/background/selectMode.png b/ZoFo/Content/Textures/GUI/background/selectMode.png
new file mode 100644
index 0000000..25bc33b
Binary files /dev/null and b/ZoFo/Content/Textures/GUI/background/selectMode.png differ
diff --git a/ZoFo/Content/Textures/GUI/background/waiting.png b/ZoFo/Content/Textures/GUI/background/waiting.png
new file mode 100644
index 0000000..709fb0b
Binary files /dev/null and b/ZoFo/Content/Textures/GUI/background/waiting.png differ
diff --git a/ZoFo/Content/Textures/GUI/checkboxs_off-on.png b/ZoFo/Content/Textures/GUI/checkboxs_off-on.png
index 0537fc1..682b82a 100644
Binary files a/ZoFo/Content/Textures/GUI/checkboxs_off-on.png and b/ZoFo/Content/Textures/GUI/checkboxs_off-on.png differ
diff --git a/ZoFo/Content/Textures/GUI/checkboxs_off.png b/ZoFo/Content/Textures/GUI/checkboxs_off.png
index f258fcb..f6533ba 100644
Binary files a/ZoFo/Content/Textures/GUI/checkboxs_off.png and b/ZoFo/Content/Textures/GUI/checkboxs_off.png differ
diff --git a/ZoFo/Content/Textures/GUI/checkboxs_on.png b/ZoFo/Content/Textures/GUI/checkboxs_on.png
index 9f7a350..693b0cc 100644
Binary files a/ZoFo/Content/Textures/GUI/checkboxs_on.png and b/ZoFo/Content/Textures/GUI/checkboxs_on.png differ
diff --git a/ZoFo/Content/Textures/GUI/feature/i (1).webp b/ZoFo/Content/Textures/GUI/feature/i (1).webp
new file mode 100644
index 0000000..751b392
Binary files /dev/null and b/ZoFo/Content/Textures/GUI/feature/i (1).webp differ
diff --git a/ZoFo/Content/Textures/GUI/feature/i (2).webp b/ZoFo/Content/Textures/GUI/feature/i (2).webp
new file mode 100644
index 0000000..a59827e
Binary files /dev/null and b/ZoFo/Content/Textures/GUI/feature/i (2).webp differ
diff --git a/ZoFo/Content/Textures/GUI/feature/i.webp b/ZoFo/Content/Textures/GUI/feature/i.webp
new file mode 100644
index 0000000..69b1f1f
Binary files /dev/null and b/ZoFo/Content/Textures/GUI/feature/i.webp differ
diff --git a/ZoFo/Content/Textures/GUI/feature/огонь-искусства-пиксела-вектора-117929424.webp b/ZoFo/Content/Textures/GUI/feature/огонь-искусства-пиксела-вектора-117929424.webp
new file mode 100644
index 0000000..a2178c4
Binary files /dev/null and b/ZoFo/Content/Textures/GUI/feature/огонь-искусства-пиксела-вектора-117929424.webp differ
diff --git a/ZoFo/Content/Textures/GUI/mouse.png b/ZoFo/Content/Textures/GUI/mouse.png
new file mode 100644
index 0000000..23146e6
Binary files /dev/null and b/ZoFo/Content/Textures/GUI/mouse.png differ
diff --git a/ZoFo/Content/Textures/GUI/switch.png b/ZoFo/Content/Textures/GUI/switch.png
new file mode 100644
index 0000000..a296c61
Binary files /dev/null and b/ZoFo/Content/Textures/GUI/switch.png differ
diff --git a/ZoFo/Content/Textures/Test/pickaxe.webp b/ZoFo/Content/Textures/Test/pickaxe.webp
new file mode 100644
index 0000000..549165d
Binary files /dev/null and b/ZoFo/Content/Textures/Test/pickaxe.webp differ
diff --git a/ZoFo/Content/Textures/Test/rock.jpg b/ZoFo/Content/Textures/Test/rock.jpg
new file mode 100644
index 0000000..e4f78d7
Binary files /dev/null and b/ZoFo/Content/Textures/Test/rock.jpg differ
diff --git a/ZoFo/Content/Textures/Test/steel.png b/ZoFo/Content/Textures/Test/steel.png
new file mode 100644
index 0000000..ca6d643
Binary files /dev/null and b/ZoFo/Content/Textures/Test/steel.png differ
diff --git a/ZoFo/Content/Textures/Test/wood.jpg b/ZoFo/Content/Textures/Test/wood.jpg
new file mode 100644
index 0000000..983d6f5
Binary files /dev/null and b/ZoFo/Content/Textures/Test/wood.jpg differ
diff --git a/ZoFo/Content/Textures/TileSets/Tilelist1.png b/ZoFo/Content/Textures/TileSets/Tilelist1.png
new file mode 100644
index 0000000..5252c86
Binary files /dev/null and b/ZoFo/Content/Textures/TileSets/Tilelist1.png differ
diff --git a/ZoFo/Content/Textures/TileSets/Tilelist2.png b/ZoFo/Content/Textures/TileSets/Tilelist2.png
new file mode 100644
index 0000000..3ce1921
Binary files /dev/null and b/ZoFo/Content/Textures/TileSets/Tilelist2.png differ
diff --git a/ZoFo/Content/Textures/TileSets/Tilelist3.png b/ZoFo/Content/Textures/TileSets/Tilelist3.png
new file mode 100644
index 0000000..861af90
Binary files /dev/null and b/ZoFo/Content/Textures/TileSets/Tilelist3.png differ
diff --git a/ZoFo/Content/Textures/TileSets/Tilelist4.png b/ZoFo/Content/Textures/TileSets/Tilelist4.png
new file mode 100644
index 0000000..14a4566
Binary files /dev/null and b/ZoFo/Content/Textures/TileSets/Tilelist4.png differ
diff --git a/ZoFo/Content/Textures/TileSets/TilesetFloor.png b/ZoFo/Content/Textures/TileSets/TilesetFloor.png
new file mode 100644
index 0000000..b959118
Binary files /dev/null and b/ZoFo/Content/Textures/TileSets/TilesetFloor.png differ
diff --git a/ZoFo/Content/Textures/icons/12.png b/ZoFo/Content/Textures/icons/12.png
new file mode 100644
index 0000000..1cf2c6d
Binary files /dev/null and b/ZoFo/Content/Textures/icons/12.png differ
diff --git a/ZoFo/Content/Textures/icons/13.png b/ZoFo/Content/Textures/icons/13.png
new file mode 100644
index 0000000..272b96b
Binary files /dev/null and b/ZoFo/Content/Textures/icons/13.png differ
diff --git a/ZoFo/Content/Textures/icons/14.png b/ZoFo/Content/Textures/icons/14.png
new file mode 100644
index 0000000..7109297
Binary files /dev/null and b/ZoFo/Content/Textures/icons/14.png differ
diff --git a/ZoFo/Content/Textures/icons/21.png b/ZoFo/Content/Textures/icons/21.png
new file mode 100644
index 0000000..df49f00
Binary files /dev/null and b/ZoFo/Content/Textures/icons/21.png differ
diff --git a/ZoFo/Content/Textures/icons/22.png b/ZoFo/Content/Textures/icons/22.png
new file mode 100644
index 0000000..09e506e
Binary files /dev/null and b/ZoFo/Content/Textures/icons/22.png differ
diff --git a/ZoFo/Content/Textures/icons/5.png b/ZoFo/Content/Textures/icons/5.png
new file mode 100644
index 0000000..872f5e1
Binary files /dev/null and b/ZoFo/Content/Textures/icons/5.png differ
diff --git a/ZoFo/Content/Textures/icons/6.png b/ZoFo/Content/Textures/icons/6.png
new file mode 100644
index 0000000..a4f234a
Binary files /dev/null and b/ZoFo/Content/Textures/icons/6.png differ
diff --git a/ZoFo/Content/Textures/icons/7.png b/ZoFo/Content/Textures/icons/7.png
new file mode 100644
index 0000000..d2b9271
Binary files /dev/null and b/ZoFo/Content/Textures/icons/7.png differ
diff --git a/ZoFo/Content/Textures/icons/8.png b/ZoFo/Content/Textures/icons/8.png
new file mode 100644
index 0000000..da1855e
Binary files /dev/null and b/ZoFo/Content/Textures/icons/8.png differ
diff --git a/ZoFo/Content/Textures/icons/9.png b/ZoFo/Content/Textures/icons/9.png
new file mode 100644
index 0000000..ef3190d
Binary files /dev/null and b/ZoFo/Content/Textures/icons/9.png differ
diff --git a/ZoFo/Content/sounds/Loot.wav b/ZoFo/Content/sounds/Loot.wav
new file mode 100644
index 0000000..a382185
Binary files /dev/null and b/ZoFo/Content/sounds/Loot.wav differ
diff --git a/ZoFo/Content/sounds/Odevanie odezdi.wav b/ZoFo/Content/sounds/Odevanie odezdi.wav
new file mode 100644
index 0000000..348d8e0
Binary files /dev/null and b/ZoFo/Content/sounds/Odevanie odezdi.wav differ
diff --git a/ZoFo/Content/sounds/Pieot wodichky.wav b/ZoFo/Content/sounds/Pieot wodichky.wav
new file mode 100644
index 0000000..3105cdb
Binary files /dev/null and b/ZoFo/Content/sounds/Pieot wodichky.wav differ
diff --git a/ZoFo/Content/sounds/Sshetchik geigera.wav b/ZoFo/Content/sounds/Sshetchik geigera.wav
new file mode 100644
index 0000000..c57f374
Binary files /dev/null and b/ZoFo/Content/sounds/Sshetchik geigera.wav differ
diff --git a/ZoFo/Content/sounds/Tabletki 2.wav b/ZoFo/Content/sounds/Tabletki 2.wav
new file mode 100644
index 0000000..166f3ca
Binary files /dev/null and b/ZoFo/Content/sounds/Tabletki 2.wav differ
diff --git a/ZoFo/Content/sounds/Zombi napal.wav b/ZoFo/Content/sounds/Zombi napal.wav
new file mode 100644
index 0000000..df0b208
Binary files /dev/null and b/ZoFo/Content/sounds/Zombi napal.wav differ
diff --git a/ZoFo/Content/sounds/Zombi stoit.wav b/ZoFo/Content/sounds/Zombi stoit.wav
new file mode 100644
index 0000000..7b64f89
Binary files /dev/null and b/ZoFo/Content/sounds/Zombi stoit.wav differ
diff --git a/ZoFo/GameCore/Client.cs b/ZoFo/GameCore/Client.cs
index 5ee0546..626f732 100644
--- a/ZoFo/GameCore/Client.cs
+++ b/ZoFo/GameCore/Client.cs
@@ -7,36 +7,176 @@ using ZoFo.GameCore.GameManagers.NetworkManager.Updates;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using System;
-
+using ZoFo.GameCore.GameObjects;
+using ZoFo.GameCore.GameObjects.MapObjects;
+using ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient;
+using System.Drawing;
+using System.Reflection;
+using ZoFo.GameCore.GameObjects.Entities;
+using System.Net.Sockets;
+using System.Net;
+using ZoFo.GameCore.GameManagers;
+using ZoFo.GameCore.GameManagers.NetworkManager.Updates.ClientToServer;
+using ZoFo.GameCore.GameObjects.Entities.LivingEntities.Player;
+using System.Linq;
+using System.Web;
+using ZoFo.GameCore.GUI;
+using ZoFo.GameCore.GameObjects.Entities.Interactables.Collectables;
+using ZoFo.GameCore.GameObjects.MapObjects.StopObjects;
+using ZoFo.GameCore.GameObjects.Entities.LivingEntities.Enemies;
namespace ZoFo.GameCore
{
public class Client
{
+ #region Network part
+
ClientNetworkManager networkManager;
+
+ public bool IsConnected { get { return networkManager.IsConnected; } }
+ public IPEndPoint InfoConnect => networkManager.InfoConnect;
+
public Client()
{
networkManager = new ClientNetworkManager();
networkManager.GetDataSent += OnDataSend;
+
+ // Подписка на действия инпутменеджера.
+ // Отправляются данные апдейтса с обновлением инпута
+ AppManager.Instance.InputManager.ActionEvent += () =>
+ {
+ networkManager.AddData(new UpdateInput()
+ {
+ InputMovementDirection = AppManager.Instance.InputManager.InputMovementDirection,
+ InputAttackDirection = AppManager.Instance.InputManager.InputAttackDirection
+ });
+ };
}
public void OnDataSend(string data)
- {
- List updateDatas = JsonSerializer.Deserialize>(data);
+ {
+ List updateDatas = JsonSerializer.Deserialize>(data);
// тут будет switch
+ AppManager.Instance.debugHud.Log(data);
+ foreach (var item in updateDatas)
+ {
+ GotData(item);
+ }
+
}
+ public void GameEndedUnexpectedly() { }
- public void GameEndedUnexpectedly(){ }
+ public void JoinRoom(string ip, int port)
+ {
+ networkManager.JoinRoom(ip, port);
+ }
+ public void JoinYourself(int port) { networkManager.JoinYourself(port); }
- public void JoinRoom(){ }
-
- public void JoinYourself(){ }
+ #endregion
+ List mapObjects = new List();
+ List gameObjects = new List();
+ List players = new List();
+ List stopObjects = new List();
+ ///
+ /// Клиент должен обнговлять игру анимаций
+ ///
+ ///
internal void Update(GameTime gameTime)
- {
+ {
+ for (int i = 0; i < gameObjects.Count; i++)
+ {
+ AppManager.Instance.debugHud.Set("GameTime", gameTime.TotalGameTime.ToString());
+ gameObjects[i].UpdateAnimations();
+ }
+ }
+ internal void Draw(SpriteBatch spriteBatch)
+ {
+ for (int i = 0; i < mapObjects.Count; i++)
+ {
+ mapObjects[i].Draw(spriteBatch);
+ }
+ for (int i = 0; i < stopObjects.Count; i++)
+ {
+ stopObjects[i].Draw(spriteBatch);
+ }
+ for (int i = 0; i < gameObjects.Count; i++)
+ {
+ gameObjects[i].Draw(spriteBatch);
+ }
}
- internal void Draw(SpriteBatch spriteBatch)
- {
+ internal void GotData(UpdateData update)
+ {
+ if (update is UpdateTileCreated)
+ {
+ mapObjects.Add(
+ new MapObject(
+ (update as UpdateTileCreated).Position,
+ (update as UpdateTileCreated).Size.ToVector2(),
+ (update as UpdateTileCreated).sourceRectangle,
+ (update as UpdateTileCreated).tileSetName
+ ));
+ }
+ else if (update is UpdateStopObjectCreated)
+ {
+ stopObjects.Add(
+ new StopObject(
+ (update as UpdateStopObjectCreated).Position,
+ (update as UpdateStopObjectCreated).Size.ToVector2(),
+ (update as UpdateStopObjectCreated).sourceRectangle,
+ (update as UpdateStopObjectCreated).tileSetName,
+ (update as UpdateStopObjectCreated).collisions
+ ));
+ }
+ else if (update is UpdateGameObjectCreated)
+ {
+ GameObject created_gameObject;
+ if ((update as UpdateGameObjectCreated).GameObjectType == "EntittyForAnimationTests")
+ gameObjects.Add(new EntittyForAnimationTests((update as UpdateGameObjectCreated).position));
+ if ((update as UpdateGameObjectCreated).GameObjectType == "Player")
+ {
+ created_gameObject = new Player((update as UpdateGameObjectCreated).position);
+ players.Add(created_gameObject as Player);
+ gameObjects.Add(created_gameObject);
+ }
+ if ((update as UpdateGameObjectCreated).GameObjectType == "Ammo")
+ gameObjects.Add(new Ammo((update as UpdateGameObjectCreated).position));
+ if ((update as UpdateGameObjectCreated).GameObjectType == "Zombie")
+ gameObjects.Add(new Zombie((update as UpdateGameObjectCreated).position));
+
+
+ (gameObjects.Last() as Entity).SetIdByClient((update as UpdateGameObjectCreated).IdEntity);
+ //var a = Assembly.GetAssembly(typeof(GameObject));
+ //gameObjects.Add( TODO reflection
+ //Activator.CreateInstance(Type.GetType("ZoFo.GameCore.GameObjects.Entities.EntittyForAnimationTests")
+ ///*(update as UpdateGameObjectCreated).GameObjectType*/, new []{ new Vector2(100, 100) })
+ //as GameObject
+ //);
+ }
+ else if (update is UpdatePosition)
+ {
+ var ent = FindEntityById(update.IdEntity);
+
+ ent.position = (update as UpdatePosition).NewPosition;
+ DebugHUD.Instance.Log("newPosition " + ent.position);
+ }
}
+
+
+ public Entity FindEntityById(int id)
+ {
+ for (int i = 0; i < gameObjects.Count; i++)
+ {
+ if (gameObjects[i] is Entity)
+ {
+ if ((gameObjects[i] as Entity).Id == id)
+ {
+ return gameObjects[i] as Entity;
+ }
+ }
+ }
+ return null;
+ }
+
}
}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GUI/AbstractGUI.cs b/ZoFo/GameCore/GUI/AbstractGUI.cs
index 2c2d7f6..e8ceb33 100644
--- a/ZoFo/GameCore/GUI/AbstractGUI.cs
+++ b/ZoFo/GameCore/GUI/AbstractGUI.cs
@@ -21,6 +21,8 @@ public abstract class AbstractGUI
protected DrawableUIElement SelectedElement;
private bool isStartedPrint = false;
private bool isPressed = false;
+ private Texture2D mouse;
+ private MouseState mouseState;
public AbstractGUI()
{
@@ -37,20 +39,20 @@ public abstract class AbstractGUI
public virtual void LoadContent()
{
Manager.LoadContent(AppManager.Instance.Content, "Font");
+ mouse = AppManager.Instance.Content.Load("Textures/GUI/mouse");
}
public virtual void Update(GameTime gameTime)
{
Manager.Update(gameTime);
+ mouseState = Mouse.GetState();
}
public virtual void Draw(SpriteBatch spriteBatch)
{
Manager.Draw(spriteBatch);
- }
-
- public virtual void ResolutioChenges()
- {
-
+ spriteBatch.Begin();
+ spriteBatch.Draw(mouse, new Rectangle(mouseState.Position.X, mouseState.Position.Y, 20, 40), Color.White);
+ spriteBatch.End();
}
}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GUI/BaseGUI.cs b/ZoFo/GameCore/GUI/BaseGUI.cs
index cb159db..0949412 100644
--- a/ZoFo/GameCore/GUI/BaseGUI.cs
+++ b/ZoFo/GameCore/GUI/BaseGUI.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
+using System.Threading;
using System.Xml;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
@@ -9,20 +10,118 @@ using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using MonogameLibrary.UI.Base;
using MonogameLibrary.UI.Elements;
+using ZoFo.GameCore.GameManagers;
+using ZoFo.GameCore.GameManagers.ItemManager;
namespace ZoFo.GameCore.GUI;
public class BaseGUI : AbstractGUI
{
+ private DrawableUIElement menuBackground;
+ private List ItemDisplayButtonsList;
+ private int buttonIndex = 0;
+ private string textureName;
+
protected override void CreateUI()
{
- // int width = AppManager.Instance.inGameHUDHelperResolution.X;
- // int height = AppManager.Instance.inGameHUDHelperResolution.Y;
+ ItemDisplayButtonsList = new List();
+ int width = AppManager.Instance.CurentScreenResolution.X;
+ int height = AppManager.Instance.CurentScreenResolution.Y;
+ Dictionary playerItems = AppManager.Instance.playerData.items;
+ Dictionary items = AppManager.Instance.ItemManager.tagItemPairs;
+
+ menuBackground = new DrawableUIElement(Manager)
+ {
+ rectangle = new Rectangle(0, 0, width, height), mainColor = Color.White,
+ textureName = "Textures\\GUI\\background\\base"
+ };
+ Elements.Add(menuBackground);
+ menuBackground.LoadTexture(AppManager.Instance.Content);
+
+ Elements.Add(new Label(Manager)
+ {
+ rectangle = new Rectangle(width / 2 - (int)(width / 8), height / 15, (int)(width / 4), (int)(height / 20)),
+ text = "Base", fontColor = Color.Black, mainColor = Color.Transparent, scale = 0.9f,
+ fontName = "Fonts\\Font"
+ });
+
+ DrawableUIElement baseHudBack = new DrawableUIElement(Manager)
+ {
+ rectangle = new Rectangle(width / 2 - (int)(width / 1.5) / 2, height / 2 - (int)(height / 1.5) / 2,
+ (int)(width / 1.5), (int)(height / 1.5)),
+ mainColor = Color.LightGray
+ };
+ Elements.Add(baseHudBack);
+
+ //player itams
+ foreach (var item in playerItems)
+ {
+ textureName = AppManager.Instance.ItemManager.GetItemInfo(item.Key).textureName;
+ var temp = new ItemDisplayLabel(Manager)
+ {
+ rectangle = new Rectangle(width / 2 - (int)(width / 1.5) / 2 + height / 80,
+ height / 2 - (int)(height / 1.5) / 2 + height / 80 + (height / 20 + height / 80) * (buttonIndex),
+ (int)(width / 5), (int)(height / 20)),
+ text1 = item.Key,
+ scale1 = 0.4f,
+ count = item.Value,
+ itemTextureName = textureName,
+ fontColor1 = Color.White,
+ mainColor = Color.Gray,
+ fontName1 = "Fonts\\Font3"
+ };
+ Elements.Add(temp);
+ temp.Initialize();
+ temp.LoadTexture(AppManager.Instance.Content);
+ ItemDisplayButtonsList.Add(temp);
+
+ buttonIndex++;
+ }
+
+ // craftable items
+ buttonIndex = 0;
+ foreach (var item in items)
+ {
+ ItemInfo itemInfo = AppManager.Instance.ItemManager.GetItemInfo(item.Key);
+
+ if (itemInfo.isCraftable)
+ {
+ var temp = new ItemDisplayLabel(Manager)
+ {
+ rectangle = new Rectangle(width / 2 - (int)(width / 1.5) / 2 + height / 40 + width / 5,
+ height / 2 - (int)(height / 1.5) / 2 + height / 80 +
+ (height / 20 + height / 80) * (buttonIndex),
+ (int)(width / 5), (int)(height / 20)),
+ text1 = item.Key,
+ scale1 = 0.4f,
+ count = 0,
+ itemTextureName = itemInfo.textureName,
+ fontColor1 = Color.White,
+ mainColor = Color.Gray,
+ fontName1 = "Fonts\\Font3"
+ };
+ Elements.Add(temp);
+ temp.Initialize();
+ temp.LoadTexture(AppManager.Instance.Content);
+ ItemDisplayButtonsList.Add(temp);
+
+ buttonIndex++;
+ }
+ }
+
+ Button bTExit = new Button(Manager)
+ {
+ fontName = "Fonts\\Font3", scale = 0.4f, text = "<-", fontColor = Color.Black,
+ mainColor = Color.Transparent, rectangle = new Rectangle(width / 30, height / 30, width / 40, width / 40),
+ textureName = "Textures\\GUI\\checkboxs_off"
+ };
+ Elements.Add(bTExit);
+ bTExit.LeftButtonPressed += () => { AppManager.Instance.SetGUI(new MainMenuGUI()); };
}
public override void Update(GameTime gameTime)
{
-
+ base.Update(gameTime);
}
}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GUI/DebugHUD.cs b/ZoFo/GameCore/GUI/DebugHUD.cs
index de4a587..294530a 100644
--- a/ZoFo/GameCore/GUI/DebugHUD.cs
+++ b/ZoFo/GameCore/GUI/DebugHUD.cs
@@ -13,14 +13,16 @@ public class DebugHUD
private SpriteFont _spriteFont;
private Dictionary _text = new();
private List _log = new();
+ public static DebugHUD Instance { get; private set; }
public void Initialize()
{
+ Instance = this;
}
public void LoadContent()
{
- _spriteFont = AppManager.Instance.Content.Load("Fonts\\Font2");
+ _spriteFont = AppManager.Instance.Content.Load("Fonts/Font2");
}
public void Update(GameTime gameTime)
diff --git a/ZoFo/GameCore/GUI/HUD.cs b/ZoFo/GameCore/GUI/HUD.cs
index c20ead1..745453a 100644
--- a/ZoFo/GameCore/GUI/HUD.cs
+++ b/ZoFo/GameCore/GUI/HUD.cs
@@ -9,36 +9,27 @@ using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using MonogameLibrary.UI.Base;
using MonogameLibrary.UI.Elements;
+using ZoFo.GameCore.GameManagers;
namespace ZoFo.GameCore.GUI;
-public class HUD
+public class HUD : AbstractGUI
{
- protected UIManager Manager = new();
- protected List Elements = new();
- private List ActiveElements;
- protected DrawableUIElement SelectedElement;
- private bool isStartedPrint = false;
- private bool isPressed = false;
-
- private GraphicsDevice graphicsDevice;
- public virtual void Initialize()
+ protected override void CreateUI()
{
+ int width = AppManager.Instance.CurentScreenResolution.X;
+ int height = AppManager.Instance.CurentScreenResolution.Y;
+ Button pauseButton = new Button(Manager)
+ { fontName = "Fonts\\Font3", scale = 0.4f, text = "| |", fontColor = Color.Black, mainColor = Color.Transparent, rectangle = new Rectangle(width / 30, height / 30, width / 40, width / 40), textureName = "Textures\\GUI\\checkboxs_off"};
+ Elements.Add(pauseButton);
+ pauseButton.LeftButtonPressed += () =>
+ {
+ AppManager.Instance.SetGUI(new PauseGUI());
+ };
}
-
- public virtual void LoadContent()
+ public override void Update(GameTime gameTime)
{
-
- }
-
- public virtual void Update(GameTime gameTime)
- {
-
- }
-
- public virtual void Draw(SpriteBatch spriteBatch)
- {
- Manager.Draw(spriteBatch);
+ base.Update(gameTime);
}
}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GUI/MainMenuGUI.cs b/ZoFo/GameCore/GUI/MainMenuGUI.cs
index 45c3e65..645faf8 100644
--- a/ZoFo/GameCore/GUI/MainMenuGUI.cs
+++ b/ZoFo/GameCore/GUI/MainMenuGUI.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
+using System.Threading;
using System.Xml;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
@@ -21,11 +22,11 @@ public class MainMenuGUI : AbstractGUI
int width = AppManager.Instance.CurentScreenResolution.X;
int height = AppManager.Instance.CurentScreenResolution.Y;
- menuBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, width, height), mainColor = Color.White, textureName = "Textures\\GUI\\MenuBackground" };
+ menuBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, width, height), mainColor = Color.White, textureName = "Textures/GUI/background/mainMenu" };
Elements.Add(menuBackground);
menuBackground.LoadTexture(AppManager.Instance.Content);
- Elements.Add(new Label(Manager) { rectangle = new Rectangle(width / 2 - (int)(width / 8), height / 5, (int)(width / 4), (int)(height / 20)), text = "ZoFo", fontColor = Color.White, mainColor = Color.Transparent, scale = 0.9f, fontName = "Fonts\\Font"});
+ Elements.Add(new Label(Manager) { rectangle = new Rectangle(width / 2 - (int)(width / 8), height / 5, (int)(width / 4), (int)(height / 20)), text = "ZoFo", fontColor = Color.Black, mainColor = Color.Transparent, scale = 0.9f, fontName = "Fonts/Font"});
Button playButton = new Button(Manager)
@@ -35,45 +36,60 @@ public class MainMenuGUI : AbstractGUI
scale = 0.2f,
fontColor = Color.White,
mainColor = Color.Gray,
- fontName = "Fonts\\Font"
+ fontName = "Fonts/Font"
};
- playButton.LeftButtonPressed += () =>
+ playButton.LeftButtonPressed += () =>
{
-
+ AppManager.Instance.SoundManager.StartAmbientSound("Loot");
+ AppManager.Instance.SetGUI(new SelectModeMenu());
};
Elements.Add(playButton);
- Button optionButton = new Button(Manager)
+ Button baseButton = new Button(Manager)
{
rectangle = new Rectangle(width / 2 - (int)(width / 10), height / 3 + (height / 20 + height / 40) * 2, (int)(width / 5), (int)(height / 20)),
+ text = "Base",
+ scale = 0.2f,
+ fontColor = Color.White,
+ mainColor = Color.Gray,
+ fontName = "Fonts\\Font"
+ };
+ baseButton.LeftButtonPressed += () =>
+ {
+ AppManager.Instance.SetGUI(new BaseGUI());
+ };
+ Elements.Add(baseButton);
+ Button optionButton = new Button(Manager)
+ {
+ rectangle = new Rectangle(width / 2 - (int)(width / 10), height / 3 + (height / 20 + height / 40) * 3, (int)(width / 5), (int)(height / 20)),
text = "Options",
scale = 0.2f,
fontColor = Color.White,
mainColor = Color.Gray,
- fontName = "Fonts\\Font"
+ fontName = "Fonts/Font"
};
- optionButton.LeftButtonPressed += () =>
+ optionButton.LeftButtonPressed += () =>
{
+ AppManager.Instance.SoundManager.StartAmbientSound("Loot");
AppManager.Instance.SetGUI(new OptionsGUI());
};
Elements.Add(optionButton);
- Button exitButton = new Button(Manager)
+ Button exitButton = new Button(Manager)
{
- rectangle = new Rectangle(width / 2 - (int)(width / 10), height / 3 + (height / 20 + height / 40) * 3, (int)(width / 5), (int)(height / 20)),
+ rectangle = new Rectangle(width / 2 - (int)(width / 10), height / 3 + (height / 20 + height / 40) * 4, (int)(width / 5), (int)(height / 20)),
text = "Exit",
scale = 0.2f,
fontColor = Color.White,
mainColor = Color.Gray,
- fontName = "Fonts\\Font"
+ fontName = "Fonts/Font"
};
- exitButton.LeftButtonPressed += () =>
+ exitButton.LeftButtonPressed += () =>
{
AppManager.Instance.Exit();
};
Elements.Add(exitButton);
-
-
- }
+
+ }
public override void Update(GameTime gameTime)
{
base.Update(gameTime);
diff --git a/ZoFo/GameCore/GUI/OptionsGUI.cs b/ZoFo/GameCore/GUI/OptionsGUI.cs
index 11f8c5e..39db371 100644
--- a/ZoFo/GameCore/GUI/OptionsGUI.cs
+++ b/ZoFo/GameCore/GUI/OptionsGUI.cs
@@ -21,53 +21,79 @@ public class OptionsGUI : AbstractGUI
int width = AppManager.Instance.CurentScreenResolution.X;
int height = AppManager.Instance.CurentScreenResolution.Y;
- menuBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, width, height), mainColor = Color.White, textureName = "Textures\\GUI\\MenuBackground" };
+ menuBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, width, height), mainColor = Color.White, textureName = "Textures/GUI/background/options" };
Elements.Add(menuBackground);
menuBackground.LoadTexture(AppManager.Instance.Content);
- Elements.Add(new Label(Manager) { rectangle = new Rectangle(width / 2 - (int)(width / 8), height / 5, (int)(width / 4), (int)(height / 20)), text = "Options", fontColor = Color.White, mainColor = Color.Transparent, scale = 0.9f, fontName = "Fonts\\Font"});
+ Elements.Add(new Label(Manager) { rectangle = new Rectangle(width / 2 - (int)(width / 8), height / 5, (int)(width / 4), (int)(height / 20)), text = "Options", fontColor = Color.Black, mainColor = Color.Transparent, scale = 0.9f, fontName = "Fonts/Font"});
Label label_OverallVolume = new Label(Manager)
- { fontName = "Fonts\\Font", scale = 0.2f, text = "All Volume", fontColor = Color.White, rectangle = new Rectangle(width / 3, height / 3, 50, 50), mainColor = Color.Transparent, textAligment = MonogameLibrary.UI.Enums.TextAligment.Left };
+ { fontName = "Fonts/Font", scale = 0.2f, text = "All Volume", fontColor = Color.Black, rectangle = new Rectangle(width / 3, height / 3, width / 40, height / 20), mainColor = Color.Transparent, textAligment = MonogameLibrary.UI.Enums.TextAligment.Left };
Elements.Add(label_OverallVolume);
+
+ Label label_OverallVolume_Percent = new Label(Manager)
+ { fontName = "Fonts/Font3", scale = 0.4f, text = "", fontColor = Color.Black, rectangle = new Rectangle(width / 2 + width / 10, height / 3, width / 40, height / 20), mainColor = Color.Transparent, textAligment = MonogameLibrary.UI.Enums.TextAligment.Left };
+ Elements.Add(label_OverallVolume_Percent);
var slider_OverallVolume = new Slider(Manager)
- { rectangle = new Rectangle(width / 2, height / 3, width / 10, height / 20), indentation = 4, textureName = "Textures\\GUI\\checkbox_on", MinValue = 0, MaxValue = 1 };
+ { rectangle = new Rectangle(width / 2, height / 3, width / 10, height / 20), indentation = 7, textureName = "Textures/GUI/Switch_backgrownd", MinValue = 0, MaxValue = 1 };
+ slider_OverallVolume.SetValue(AppManager.Instance.SettingsManager.MainVolume);
+ label_OverallVolume_Percent.text = Math.Round(slider_OverallVolume.GetSliderValue * 100) + "%";
slider_OverallVolume.SliderChanged += (newVal) =>
{
-
+ label_OverallVolume_Percent.text = Math.Round(slider_OverallVolume.GetSliderValue * 100) + "%";
+ AppManager.Instance.SettingsManager.SetMainVolume(newVal);
};
Elements.Add(slider_OverallVolume);
+ //--------------------------------------
+
Label label_MusicVolume = new Label(Manager)
- { fontName = "Fonts\\Font", scale = 0.2f, text = "Music Volume", fontColor = Color.White, rectangle = new Rectangle(width / 3, height / 3 + (height / 20 + height / 40) * 1, 50, 50), mainColor = Color.Transparent, textAligment = MonogameLibrary.UI.Enums.TextAligment.Left };
+ { fontName = "Fonts/Font", scale = 0.2f, text = "Music Volume", fontColor = Color.Black, rectangle = new Rectangle(width / 3, height / 3 + (height / 20 + height / 40) * 1, width / 40, height / 20), mainColor = Color.Transparent, textAligment = MonogameLibrary.UI.Enums.TextAligment.Left };
Elements.Add(label_MusicVolume);
+ Label label_MusicVolume_Percent = new Label(Manager)
+ { fontName = "Fonts/Font3", scale = 0.4f, text = "", fontColor = Color.Black, rectangle = new Rectangle(width / 2 + width / 10, height / 3 + (height / 20 + height / 40) * 1, width / 40, height / 20), mainColor = Color.Transparent, textAligment = MonogameLibrary.UI.Enums.TextAligment.Left };
+ Elements.Add(label_MusicVolume_Percent);
+
var slider_MusicVolume = new Slider(Manager)
- { rectangle = new Rectangle(width / 2, height / 3 + (height / 20 + height / 40) * 1, width / 10, height / 20), indentation = 4, textureName = "Textures\\GUI\\checkboxs_on", MinValue = 0, MaxValue = 1 };
+ { rectangle = new Rectangle(width / 2, height / 3 + (height / 20 + height / 40) * 1, width / 10, height / 20), indentation = 7, textureName = "Textures/GUI/Switch_backgrownd", MinValue = 0, MaxValue = 1 };
+ slider_MusicVolume.SetValue(AppManager.Instance.SettingsManager.MusicVolume);
+ label_MusicVolume_Percent.text = Math.Round(slider_MusicVolume.GetSliderValue * 100) + "%";
slider_MusicVolume.SliderChanged += (newVal) =>
{
-
+ label_MusicVolume_Percent.text = Math.Round(slider_MusicVolume.GetSliderValue * 100) + "%";
+ AppManager.Instance.SettingsManager.SetMusicVolume(newVal);
};
Elements.Add(slider_MusicVolume);
+ //--------------------------------------
Label label_EffectsVolume = new Label(Manager)
- { fontName = "Fonts\\Font", scale = 0.2f, text = "Effects Volume", fontColor = Color.White, rectangle = new Rectangle(width / 3, height / 3 + (height / 20 + height / 40) * 2, 50, 50), mainColor = Color.Transparent, textAligment = MonogameLibrary.UI.Enums.TextAligment.Left };
+ { fontName = "Fonts/Font", scale = 0.2f, text = "Effects Volume", fontColor = Color.Black, rectangle = new Rectangle(width / 3, height / 3 + (height / 20 + height / 40) * 2, width / 40, height / 20), mainColor = Color.Transparent, textAligment = MonogameLibrary.UI.Enums.TextAligment.Left };
Elements.Add(label_EffectsVolume);
+
+ Label label_EffectsVolume_Percent = new Label(Manager)
+ { fontName = "Fonts/Font3", scale = 0.4f, text = "", fontColor = Color.Black, rectangle = new Rectangle(width / 2 + width / 10, height / 3 + (height / 20 + height / 40) * 2, width / 40, height / 20), mainColor = Color.Transparent, textAligment = MonogameLibrary.UI.Enums.TextAligment.Left };
+ Elements.Add(label_EffectsVolume_Percent);
var slider_EffectsVolume = new Slider(Manager)
- { rectangle = new Rectangle(width / 2, height / 3 + (height / 20 + height / 40) * 2, width / 10, height / 20), indentation = 4, textureName = "Textures\\GUI\\checkboxs_on", MinValue = 0, MaxValue = 1 };
+ { rectangle = new Rectangle(width / 2, height / 3 + (height / 20 + height / 40) * 2, width / 10, height / 20), indentation = 7, textureName = "Textures/GUI/Switch_backgrownd", MinValue = 0, MaxValue = 1 };
+ slider_EffectsVolume.SetValue(AppManager.Instance.SettingsManager.SoundEffectsVolume);
+ label_EffectsVolume_Percent.text = Math.Round(slider_EffectsVolume.GetSliderValue * 100) + "%";
slider_EffectsVolume.SliderChanged += (newVal) =>
{
-
+ label_EffectsVolume_Percent.text = Math.Round(slider_EffectsVolume.GetSliderValue * 100) + "%";
+ AppManager.Instance.SettingsManager.SetSoundEffectsVolume(newVal);
};
Elements.Add(slider_EffectsVolume);
+ //--------------------------------------
+
Label lblSwitchMode = new Label(Manager)
- { fontName = "Fonts\\Font", scale = 0.2f, text = "Left/Right Mode", fontColor = Color.White, rectangle = new Rectangle(width / 3, height / 3 + (height / 20 + height / 40) * 3, 50, 50), mainColor = Color.Transparent};
+ { fontName = "Fonts/Font", scale = 0.2f, text = "Resolution set", fontColor = Color.Black, rectangle = new Rectangle(width / 3, height / 3 + (height / 20 + height / 40) * 3, width / 40, height / 20), mainColor = Color.Transparent, textAligment = MonogameLibrary.UI.Enums.TextAligment.Left };
Elements.Add(lblSwitchMode);
//var button_left_right_mode = new CheckBox(Manager) { rectangle = new Rectangle(rightBorder - checkboxlength, lblSwitchMode.rectangle.Y - 12, checkboxlength, checkboxlength) };
@@ -76,23 +102,25 @@ public class OptionsGUI : AbstractGUI
Label label_IsFullScreen = new Label(Manager)
- { fontName = "Fonts\\Font", scale = 0.2f, text = "Full Screen", fontColor = Color.White, rectangle = new Rectangle(width / 3, height / 3 + (height / 20 + height / 40) * 4, 50, 50), mainColor = Color.Transparent};
+ { fontName = "Fonts/Font", scale = 0.2f, text = "Full Screen", fontColor = Color.Black, rectangle = new Rectangle(width / 3, height / 3 + (height / 20 + height / 40) * 4, width / 40, width / 40), mainColor = Color.Transparent, textAligment = MonogameLibrary.UI.Enums.TextAligment.Left };
Elements.Add(label_IsFullScreen);
- var button_FullScreen = new CheckBox(Manager) { rectangle = new Rectangle(width / 2, height / 3 + (height / 20 + height / 40) * 4, width / 30, width / 30) };
+ var button_FullScreen = new CheckBox(Manager) { rectangle = new Rectangle(width / 2, height / 3 + (height / 20 + height / 40) * 4, width / 40, width / 40) };
+ button_FullScreen.SetIsChecked(AppManager.Instance.SettingsManager.IsFullScreen);
button_FullScreen.Checked += (newCheckState) =>
{
-
+ AppManager.Instance.SettingsManager.SetIsFullScreen(newCheckState);
};
Elements.Add(button_FullScreen);
-
+ //--------------------------------------
+
Button bTExit = new Button(Manager)
- { fontName = "Fonts\\Font", scale = 0.2f, text = "<-", rectangle = new Rectangle(width / 30, height / 30, 40, 40), textureName = "Textures\\GUI\\checkboxs_off" };
+ { fontName = "Fonts/Font3", scale = 0.4f, text = "<-", fontColor = Color.Black, mainColor = Color.Transparent, rectangle = new Rectangle(width / 30, height / 30, width / 40, width / 40), textureName = "Textures/GUI/checkboxs_off"};
Elements.Add(bTExit);
bTExit.LeftButtonPressed += () =>
{
-
+ AppManager.Instance.SetGUI(new MainMenuGUI());
};
}
diff --git a/ZoFo/GameCore/GUI/PauseGUI.cs b/ZoFo/GameCore/GUI/PauseGUI.cs
new file mode 100644
index 0000000..d316fb7
--- /dev/null
+++ b/ZoFo/GameCore/GUI/PauseGUI.cs
@@ -0,0 +1,57 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Xml;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Content;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Input;
+using MonogameLibrary.UI.Base;
+using MonogameLibrary.UI.Elements;
+using ZoFo.GameCore.GameManagers;
+
+namespace ZoFo.GameCore.GUI;
+
+public class PauseGUI : AbstractGUI
+{
+ protected override void CreateUI()
+ {
+ int width = AppManager.Instance.CurentScreenResolution.X;
+ int height = AppManager.Instance.CurentScreenResolution.Y;
+
+ Button continueButton = new Button(Manager)
+ {
+ rectangle = new Rectangle(width / 2 - (int)(width / 10), height / 3 + height / 20 + height / 40, (int)(width / 5), (int)(height / 20)),
+ text = "Continue",
+ scale = 0.2f,
+ fontColor = Color.White,
+ mainColor = Color.Gray,
+ fontName = "Fonts\\Font"
+ };
+ continueButton.LeftButtonPressed += () =>
+ {
+ AppManager.Instance.SetGUI(new HUD());
+ };
+ Elements.Add(continueButton);
+ Button exitButton = new Button(Manager)
+ {
+ rectangle = new Rectangle(width / 2 - (int)(width / 10), height / 3 + (height / 20 + height / 40) * 2, (int)(width / 5), (int)(height / 20)),
+ text = "Exit",
+ scale = 0.2f,
+ fontColor = Color.White,
+ mainColor = Color.Gray,
+ fontName = "Fonts\\Font"
+ };
+ exitButton.LeftButtonPressed += () =>
+ {
+ AppManager.Instance.SetGUI(new MainMenuGUI());
+ };
+ Elements.Add(exitButton);
+ }
+
+ public override void Update(GameTime gameTime)
+ {
+ base.Update(gameTime);
+ }
+}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GUI/SelectModeMenu.cs b/ZoFo/GameCore/GUI/SelectModeMenu.cs
index b08e782..5b1320b 100644
--- a/ZoFo/GameCore/GUI/SelectModeMenu.cs
+++ b/ZoFo/GameCore/GUI/SelectModeMenu.cs
@@ -9,19 +9,83 @@ using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using MonogameLibrary.UI.Base;
using MonogameLibrary.UI.Elements;
+using ZoFo.GameCore.GameManagers;
namespace ZoFo.GameCore.GUI;
public class SelectModeMenu : AbstractGUI
{
+ private DrawableUIElement menuBackground;
protected override void CreateUI()
{
- // int width = AppManager.Instance.inGameHUDHelperResolution.X;
- // int height = AppManager.Instance.inGameHUDHelperResolution.Y;
+ int width = AppManager.Instance.CurentScreenResolution.X;
+ int height = AppManager.Instance.CurentScreenResolution.Y;
+
+ menuBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, width, height), mainColor = Color.White, textureName = "Textures/GUI/background/selectMode" };
+ Elements.Add(menuBackground);
+ menuBackground.LoadTexture(AppManager.Instance.Content);
+
+ Elements.Add(new Label(Manager) { rectangle = new Rectangle(width / 2 - (int)(width / 8), height / 6, (int)(width / 4), (int)(height / 20)), text = "Select mode", fontColor = Color.White, mainColor = Color.Transparent, scale = 0.9f, fontName = "Fonts/Font"});
+
+ Button singleButton = new Button(Manager)
+ {
+ rectangle = new Rectangle(width / 4 - (width / 7) / 2, height / 2, (int)(width / 7), (int)(height / 20)),
+ text = "singleplayer",
+ scale = 0.3f,
+ fontColor = Color.White,
+ mainColor = Color.Gray,
+ fontName = "Fonts/Font"
+ };
+ singleButton.LeftButtonPressed += () =>
+ {
+ // single
+ Server server = new Server();
+ Client client = new Client();
+ server.CreateRoom(1);
+ client.JoinYourself(server.MyIp.Port);
+ AppManager.Instance.SetServer(server);
+ AppManager.Instance.SetClient(client);
+ AppManager.Instance.ChangeState(GameState.HostPlaying);
+ AppManager.Instance.SetGUI(new HUD());
+
+ //server.CreateRoom(1);
+ //client.JoinYourself();
+ server.StartGame();
+
+ string key = client.IsConnected.ToString();
+ AppManager.Instance.debugHud.Set(key,"SinglePlayer");
+ // ваш код здесь
+ };
+ Elements.Add(singleButton);
+ Button optionButton = new Button(Manager)
+ {
+ rectangle = new Rectangle(width / 2 + width / 4 - (width / 7) / 2, height / 2, (int)(width / 7), (int)(height / 20)),
+ text = "multiplayer",
+ scale = 0.3f,
+ fontColor = Color.White,
+ mainColor = Color.Gray,
+ fontName = "Fonts/Font"
+ };
+ optionButton.LeftButtonPressed += () =>
+ {
+ AppManager.Instance.SetGUI(new SelectingServerGUI());
+ // multi
+
+ // ваш код здесь
+ };
+ Elements.Add(optionButton);
+
+ Button bTExit = new Button(Manager)
+ { fontName = "Fonts/Font3", scale = 0.4f, text = "<-", fontColor = Color.Black, mainColor = Color.Transparent, rectangle = new Rectangle(width / 30, height / 30, width / 40, width / 40), textureName = "Textures/GUI/checkboxs_off"};
+ Elements.Add(bTExit);
+ bTExit.LeftButtonPressed += () =>
+ {
+ AppManager.Instance.SetGUI(new MainMenuGUI());
+ };
}
public override void Update(GameTime gameTime)
{
-
+ base.Update(gameTime);
}
}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GUI/SelectingServerGUI.cs b/ZoFo/GameCore/GUI/SelectingServerGUI.cs
index 0a7f049..9460341 100644
--- a/ZoFo/GameCore/GUI/SelectingServerGUI.cs
+++ b/ZoFo/GameCore/GUI/SelectingServerGUI.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
+using System.Net;
using System.Xml;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
@@ -9,19 +10,121 @@ using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using MonogameLibrary.UI.Base;
using MonogameLibrary.UI.Elements;
+using ZoFo.GameCore.GameManagers;
namespace ZoFo.GameCore.GUI;
public class SelectingServerGUI : AbstractGUI
{
+ private DrawableUIElement menuBackground;
protected override void CreateUI()
{
- // int width = AppManager.Instance.inGameHUDHelperResolution.X;
- // int height = AppManager.Instance.inGameHUDHelperResolution.Y;
+ int width = AppManager.Instance.CurentScreenResolution.X;
+ int height = AppManager.Instance.CurentScreenResolution.Y;
+
+ menuBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, width, height), mainColor = Color.White, textureName = "Textures/GUI/background/join" };
+ Elements.Add(menuBackground);
+ menuBackground.LoadTexture(AppManager.Instance.Content);
+
+ Elements.Add(new Label(Manager) { rectangle = new Rectangle(width / 2 - (int)(width / 8), height / 7, (int)(width / 4), (int)(height / 20)), text = "Select server", fontColor = Color.White, mainColor = Color.Transparent, scale = 0.9f, fontName = "Fonts/Font" });
+
+ TextBox ipBox = new TextBox(Manager)
+ {
+ rectangle = new Rectangle(width / 4 - (width / 4) / 2, height / 4, (int)(width / 4), (int)(height / 20)),
+ text = "ip",
+ scale = 0.5f,
+ fontColor = Color.White,
+ mainColor = Color.Gray,
+ textAligment = MonogameLibrary.UI.Enums.TextAligment.Left,
+ fontName = "Fonts/Font3"
+ };
+ ipBox.TextChanged += input =>
+ {
+ if (input == "ip")
+ {
+ ipBox.text = ""; ipBox.fontColor = Color.White;
+ }
+ };
+ ipBox.StopChanging += input =>
+ {
+ if (input.Length == 0)
+ {
+ ipBox.fontColor = Color.White;
+ ipBox.text = "ip";
+ }
+ };
+ Elements.Add(ipBox);
+ Button joinButton = new Button(Manager)
+ {
+ rectangle = new Rectangle(width / 4 + (width / 4) / 2, height / 4, (int)(width / 15), (int)(height / 20)),
+ text = "Join",
+ scale = 0.3f,
+ fontColor = Color.White,
+ mainColor = Color.Gray,
+ fontName = "Fonts/Font"
+ };
+ joinButton.LeftButtonPressed += () =>
+ {
+
+ // join
+ Client client = new Client();
+ var endpoint = ipBox.text.Split(':');
+ int port;
+ try
+ {
+ if (int.TryParse(endpoint[1], out port))
+ {
+ client.JoinRoom(endpoint[0], port);
+ AppManager.Instance.SetClient(client);
+ AppManager.Instance.SetGUI(new WaitingForPlayersGUI(false));
+ }
+ }
+ catch (Exception)
+ {
+
+ // throw;
+ }
+
+ // ваш код здесь
+ };
+ Elements.Add(joinButton);
+ Button hostButton = new Button(Manager)
+ {
+ rectangle = new Rectangle(width / 4 + (width / 4) / 2 + (width / 15), height / 4, (int)(width / 15), (int)(height / 20)),
+ text = "Host",
+ scale = 0.3f,
+ fontColor = Color.White,
+ mainColor = Color.Gray,
+ fontName = "Fonts/Font"
+ };
+ hostButton.LeftButtonPressed += () =>
+ {
+
+ // host
+ Server server = new Server(); //Server Logic MultiPlayer
+ Client client = new Client();
+ server.CreateRoom(2);
+ client.JoinYourself(server.MyIp.Port);
+ AppManager.Instance.SetServer(server);
+ AppManager.Instance.SetClient(client);
+ string key = server.MyIp.ToString();
+ AppManager.Instance.debugHud.Set(key, "MultiPlayer");
+ // ваш код здесь
+ AppManager.Instance.SetGUI(new WaitingForPlayersGUI(true));
+ };
+ Elements.Add(hostButton);
+
+ Button bTExit = new Button(Manager)
+ { fontName = "Fonts/Font3", scale = 0.4f, text = "<-", fontColor = Color.Black, mainColor = Color.Transparent, rectangle = new Rectangle(width / 30, height / 30, width / 40, width / 40), textureName = "Textures/GUI/checkboxs_off" };
+ Elements.Add(bTExit);
+ bTExit.LeftButtonPressed += () =>
+ {
+ AppManager.Instance.SetGUI(new SelectModeMenu());
+ };
}
public override void Update(GameTime gameTime)
{
-
+ base.Update(gameTime);
}
}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GUI/WaitingForPlayersGUI.cs b/ZoFo/GameCore/GUI/WaitingForPlayersGUI.cs
index 893efc6..2764fb1 100644
--- a/ZoFo/GameCore/GUI/WaitingForPlayersGUI.cs
+++ b/ZoFo/GameCore/GUI/WaitingForPlayersGUI.cs
@@ -9,19 +9,86 @@ using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using MonogameLibrary.UI.Base;
using MonogameLibrary.UI.Elements;
+using ZoFo.GameCore.GameManagers;
namespace ZoFo.GameCore.GUI;
public class WaitingForPlayersGUI : AbstractGUI
{
+ private DrawableUIElement menuBackground;
+ private bool isHost;
+ private Label ip;
+
+ public WaitingForPlayersGUI(bool isHost)
+ {
+ this.isHost = isHost;
+ }
protected override void CreateUI()
{
- // int width = AppManager.Instance.inGameHUDHelperResolution.X;
- // int height = AppManager.Instance.inGameHUDHelperResolution.Y;
+ int width = AppManager.Instance.CurentScreenResolution.X;
+ int height = AppManager.Instance.CurentScreenResolution.Y;
+
+ menuBackground = new DrawableUIElement(Manager) { rectangle = new Rectangle(0, 0, width, height), mainColor = Color.White, textureName = "Textures/GUI/background/Waiting" };
+ Elements.Add(menuBackground);
+ menuBackground.LoadTexture(AppManager.Instance.Content);
+ // string pcIp =
+
+ // string pcIp =
+ ip = new Label(Manager) { rectangle = new Rectangle(width / 2 - (int)(width / 8), height / 7, (int)(width / 4), (int)(height / 20)), text = AppManager.Instance.server.MyIp.ToString(), fontColor = Color.White, mainColor = Color.Transparent, scale = 0.9f, fontName = "Fonts/Font3" };
+ Elements.Add(ip);
+ if (isHost)
+ {
+ ip = new Label(Manager) { rectangle = new Rectangle(width / 2 - (int)(width / 8), height / 7, (int)(width / 4), (int)(height / 20)), text = AppManager.Instance.server.MyIp.ToString(), fontColor = Color.White, mainColor = Color.Transparent, scale = 0.9f, fontName = "Fonts\\Font3" };
+ Elements.Add(ip);
+ Button startButton = new Button(Manager)
+ {
+ rectangle = new Rectangle(width / 2 - (width / 15) / 2, height / 2 + height / 4, (int)(width / 15), (int)(height / 20)),
+ text = "Start",
+ scale = 0.3f,
+ fontColor = Color.White,
+ mainColor = Color.Gray,
+ fontName = "Fonts/Font"
+ };
+ startButton.LeftButtonPressed += () =>
+ {
+ // start
+ AppManager.Instance.ChangeState(GameState.HostPlaying);
+ // ваш код здесь
+ };
+ Elements.Add(startButton);
+ }
+ else {
+ ip = new Label(Manager) { rectangle = new Rectangle(width / 2 - (int)(width / 8), height / 7, (int)(width / 4), (int)(height / 20)), text = AppManager.Instance.client.InfoConnect.ToString(), fontColor = Color.White, mainColor = Color.Transparent, scale = 0.9f, fontName = "Fonts\\Font3" };
+ Elements.Add(ip);
+ Button waitButton = new Button(Manager)
+ {
+ rectangle = new Rectangle(width / 2 - (width / 15) / 2, height / 2 + height / 4, (int)(width / 15), (int)(height / 20)),
+ text = "WAITING",
+ scale = 0.3f,
+ fontColor = Color.White,
+ mainColor = Color.Gray,
+ fontName = "Fonts/Font"
+ };
+ waitButton.LeftButtonPressed += () =>
+ {
+ // start
+ AppManager.Instance.ChangeState(GameState.ClientPlaying);
+ // ваш код здесь
+ };
+ Elements.Add(waitButton);
+ }
+
+ Button bTExit = new Button(Manager)
+ { fontName = "Fonts/Font3", scale = 0.4f, text = "<-", fontColor = Color.Black, mainColor = Color.Transparent, rectangle = new Rectangle(width / 30, height / 30, width / 40, width / 40), textureName = "Textures/GUI/checkboxs_off"};
+ Elements.Add(bTExit);
+ bTExit.LeftButtonPressed += () =>
+ {
+ AppManager.Instance.SetGUI(new SelectingServerGUI());
+ };
}
public override void Update(GameTime gameTime)
{
-
+ base.Update(gameTime);
}
}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GameManagers/AppManager.cs b/ZoFo/GameCore/GameManagers/AppManager.cs
index 3be4402..b129359 100644
--- a/ZoFo/GameCore/GameManagers/AppManager.cs
+++ b/ZoFo/GameCore/GameManagers/AppManager.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Reflection.Metadata;
using System.Text;
using System.Threading.Tasks;
-using DangerousD.GameCore.Graphics;
+using ZoFo.GameCore.Graphics;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
@@ -12,6 +12,7 @@ using ZoFo.GameCore.GameManagers.ItemManager;
using ZoFo.GameCore.GUI;
using static System.Collections.Specialized.BitVector32;
using MonogameLibrary.UI.Base;
+using ZoFo.GameCore.GameObjects;
namespace ZoFo.GameCore.GameManagers
{
@@ -20,52 +21,63 @@ namespace ZoFo.GameCore.GameManagers
{
private GraphicsDeviceManager _graphics;
private SpriteBatch _spriteBatch;
-
-
-
+
+
+
public static AppManager Instance { get; private set; }
public GameState gamestate;
public AbstractGUI currentGUI;
public DebugHUD debugHud;
- public Point CurentScreenResolution = new Point(1920, 1080);
+ public Point CurentScreenResolution;
public Client client;
public Server server;
+ public PlayerData playerData;
+
-
#region Managers
-
+
public InputManager InputManager;
public ItemManager.ItemManager ItemManager;
+ public SettingsManager SettingsManager;
+ public SoundManager SoundManager;
- public AnimationBuilder animationBuilder{get;set; }
+ public AnimationBuilder animationBuilder { get; set; }
#endregion
public AppManager()
{
- _graphics = new GraphicsDeviceManager(this);
+ _graphics = new GraphicsDeviceManager(this);
+ CurentScreenResolution = new Point(GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width, GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height);
SetResolution(CurentScreenResolution.X, CurentScreenResolution.Y);
- FulscrreenSwitch();
-
-
+ //FulscrreenSwitch();
+
+
Content.RootDirectory = "Content";
IsMouseVisible = true;
+ playerData = new PlayerData();
+ ItemManager = new ItemManager.ItemManager();
Instance = this;
InputManager = new InputManager();
-
-
+ SettingsManager = new SettingsManager();
+ SettingsManager.LoadSettings();
+ SoundManager = new SoundManager();
+ SoundManager.LoadSounds();
+
currentGUI = new MainMenuGUI();
debugHud = new DebugHUD();
+ IsMouseVisible = false;
}
protected override void Initialize()
{
currentGUI.Initialize();
- debugHud.Initialize();
+ debugHud.Initialize();
+ ItemManager.Initialize();
base.Initialize();
@@ -75,20 +87,25 @@ namespace ZoFo.GameCore.GameManagers
{
_spriteBatch = new SpriteBatch(GraphicsDevice);
debugHud.LoadContent();
- currentGUI.LoadContent();
-
+ currentGUI.LoadContent();
+ ItemManager.LoadItemTextures();
+
+ animationBuilder = new AnimationBuilder();
+ animationBuilder.LoadAnimations();
+ GameObject.debugTexture = new Texture2D(GraphicsDevice, 1, 1);
+ GameObject.debugTexture.SetData(new Color[] { Color.White });
}
protected override void Update(GameTime gameTime)
{
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed ||
- Keyboard.GetState().IsKeyDown(Keys.Escape))
- Exit();
-
- debugHud.Set("key", "value");
-
+ Keyboard.GetState().IsKeyDown(Keys.Escape)) { server.CloseConnection(); Exit(); }
+
+
+ // debugHud.Set("key", "value");
+
InputManager.Update();
currentGUI.Update(gameTime);
switch (gamestate)
@@ -100,7 +117,7 @@ namespace ZoFo.GameCore.GameManagers
client.Update(gameTime);
break;
case GameState.ClientPlaying:
- server.Update(gameTime);
+ client.Update(gameTime);
break;
default:
break;
@@ -112,21 +129,24 @@ namespace ZoFo.GameCore.GameManagers
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
-
+
-
- debugHud.Draw(_spriteBatch);
- currentGUI.Draw(_spriteBatch);
+ // Pointwrap
+ _spriteBatch.Begin(samplerState: SamplerState.PointWrap);
switch (gamestate)
{
case GameState.ClientPlaying:
case GameState.HostPlaying:
- client.Draw(_spriteBatch);
+ client.Draw(_spriteBatch);
break;
case GameState.NotPlaying:
default:
break;
}
+
+ _spriteBatch.End();
+ currentGUI.Draw(_spriteBatch);
+ debugHud.Draw(_spriteBatch);
base.Draw(gameTime);
}
@@ -136,7 +156,7 @@ namespace ZoFo.GameCore.GameManagers
}
public void SetGUI(AbstractGUI gui)
{
- currentGUI = gui;
+ currentGUI = gui;
currentGUI.Initialize();
currentGUI.LoadContent();
@@ -158,5 +178,8 @@ namespace ZoFo.GameCore.GameManagers
{
_graphics.IsFullScreen = !_graphics.IsFullScreen;
}
+
+ public void SetServer(Server server) { this.server = server; }
+ public void SetClient(Client client) { this.client = client; }
}
}
diff --git a/ZoFo/GameCore/GameManagers/CollisionManager/CollisionComponent.cs b/ZoFo/GameCore/GameManagers/CollisionManager/CollisionComponent.cs
index 0ba9816..fa9f9d6 100644
--- a/ZoFo/GameCore/GameManagers/CollisionManager/CollisionComponent.cs
+++ b/ZoFo/GameCore/GameManagers/CollisionManager/CollisionComponent.cs
@@ -1,58 +1,70 @@
-using System;
+using Microsoft.Win32;
+using Microsoft.Xna.Framework;
+using System;
using System.Collections.Generic;
-using System.Drawing;
using System.Linq;
using System.Reflection.Metadata;
using System.Text;
using System.Threading.Tasks;
+using ZoFo.GameCore.GameObjects;
using ZoFo.GameCore.GameObjects.Entities.LivingEntities.Player;
namespace ZoFo.GameCore.GameManagers.CollisionManager
{
public class CollisionComponent
- {
- //поля
- public Rectangle Bounds { get; set; }
+ {
+ //==КОНСТРУКТОР==
+ public CollisionComponent(GameObject gameObject)
+ {
+
+ this.gameObject = gameObject;
+ hasCollision = false;
+ this.isTrigger = false;
+ }
+
+ public CollisionComponent(GameObject gameObject, bool hasCollision = false, Rectangle? collisionRectangle = null, bool isTrigger = false, Rectangle? triggerRectangle = null)
+ {
+ this.gameObject = gameObject;
+
+ this.hasCollision = hasCollision;
+ this.isTrigger = isTrigger;
+ if (hasCollision)
+ this.stopRectangle = collisionRectangle.Value;
+ if (isTrigger)
+ this.triggerRectangle = triggerRectangle.Value;
+
+
+
+
+ }
+
+ //==ПОЛЯ==
+
+ public GameObject gameObject { get; set; }
+
- //остановлен ли перс
bool doesStop;
- Rectangle stopRectangle;
+ bool hasCollision;
+ public Rectangle stopRectangle;
// triggers for rectangle
bool isTrigger;
- Rectangle triggerRectangle;
+ public Rectangle triggerRectangle;
//delegate
public delegate void EventHandler(object sender, EventArgs e);
- public CollisionComponent(int x, int y, int width, int height)
- {
- Bounds = new Rectangle(x, y, width, height);
- }
- //events
+
+ //events DoorInteraction
public event EventHandler OnTriggerEnter;
public event EventHandler OnTriggerZone;
public event EventHandler OnTriggerExit;
+
+ public event EventHandler OnCollision;
- // methods-event
- public void TriggerEnter(object component, Player player,
- EventArgs e)
- {
-
- }
- public void TriggerZone(object component,Player player,
- EventArgs e)
- {
-
- }
- public void TriggerExit(object component,Player player,
- EventArgs e)
- {
-
- }
-
-
+
+
}
}
diff --git a/ZoFo/GameCore/GameManagers/CollisionManager/CollisionManager.cs b/ZoFo/GameCore/GameManagers/CollisionManager/CollisionManager.cs
index 8cf63f2..25736fe 100644
--- a/ZoFo/GameCore/GameManagers/CollisionManager/CollisionManager.cs
+++ b/ZoFo/GameCore/GameManagers/CollisionManager/CollisionManager.cs
@@ -1,7 +1,6 @@
using Microsoft.VisualBasic;
using System;
using System.Collections.Generic;
-using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -9,49 +8,146 @@ using ZoFo.GameCore.GameObjects;
using ZoFo.GameCore.GameManagers.CollisionManager;
using Microsoft.Xna.Framework;
using ZoFo.GameCore.GameManagers.MapManager.MapElements;
+using ZoFo.GameCore.GameObjects.Entities;
+using ZoFo.GameCore.GameObjects.Entities.LivingEntities;
+using ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient;
+using ZoFo.GameCore.Graphics;
namespace ZoFo.GameCore.GameManagers.CollisionManager
{
public class CollisionManager
{
- public List CollisionComponent;
- public List TriggerComponent;
+ //листики
-
+ public List ObjectsWithCollisions;
+ public List EntitiesWithMovements;
+ public List ObjectsWithTriggers;
- public static bool CheckComponentCollision(List collisionComponents, CollisionComponent component)
+
+ //чекаем коллизии в листе
+ public void CheckComponentCollision(CollisionComponent componentOfEntity)
{
- foreach (var collisionComponent in collisionComponents)
+ var entity = componentOfEntity.gameObject as LivingEntity;
+ //for (int i = 0; i < ObjectsWithCollisions.Count; i++)
+ //{
+ var currentRect = entity.collisionComponent.stopRectangle;//задаём РЕК
+ currentRect.X+=(int)entity.position.X;
+ currentRect.Y+=(int)entity.position.Y;
+
+ var newRect = currentRect; // задаём значение старого РЕК новому РЕК
+
+
+ var collidedX = false; // соприкосновение
+ var tryingRectX = currentRect;//переменная для попытки перемещения по X
+
+ tryingRectX.Offset((int)(entity.velocity.X), 0);//задаём значения для tryingRectX по X и по Y
+
+ foreach (var item in ObjectsWithCollisions)//фильтрация
{
- if (component.Bounds.IntersectsWith(collisionComponent.Bounds))
+ if (item == componentOfEntity) continue;
+
+ Rectangle rectChecking = item.stopRectangle.SetOrigin(item.gameObject.position);
+ if (Math.Abs(item.gameObject.position.X - componentOfEntity.gameObject.position.X) < 550
+ && Math.Abs(item.gameObject.position.Y - componentOfEntity.gameObject.position.Y) < 550
+ && tryingRectX.Intersects(rectChecking))
+
{
- return true;
+ collidedX = true;// меняем значение соприкосновения на true
+ entity.OnCollision(item);//подписываем entity на ивент коллизии
+
+ break;// выход
}
}
- return false;
+ if (collidedX)// срабатывает, если перемещение блокируется
+ {
+ entity.velocity.X = 0;// задаём значение смещения entity на 0
+ }
+ else
+ {
+ entity.position.X += entity.velocity.X; //update player position
+ newRect.X = tryingRectX.X;//значение по X для нового РЕК приравниваем к значению испытуемого РЕК
+ }
+
+ //==ПОВТОРЯЕМ ТОЖЕ САМОЕ ДЛЯ Y==
+
+ var collidedY = false; // соприкосновение
+ var tryingRectY = currentRect;//переменная для попытки перемещения по X
+
+ tryingRectY.Offset(new Point(0, (int)entity.velocity.Y));//задаём значения для tryingRectX по X и по Y
+
+ foreach (var item in ObjectsWithCollisions)//фильтрация
+ {
+ if (item == componentOfEntity) continue;
+ Rectangle rectChecking = item.stopRectangle.SetOrigin(item.gameObject.position);
+ if (Math.Abs(item.gameObject.position.X - componentOfEntity.gameObject.position.X) < 550
+ && Math.Abs(item.gameObject.position.Y - componentOfEntity.gameObject.position.Y) < 550
+ && tryingRectY.Intersects(rectChecking))
+
+ {
+ collidedY = true;// меняем значение соприкосновения на true
+ entity.OnCollision(item);//подписываем entity на ивент коллизии
+
+ break;// выход
+ }
+ }
+
+ if (collidedY)// срабатывает, если перемещение блокируется
+ {
+ entity.velocity.Y = 0;// задаём значение смещения entity на 0
+ }
+ else
+ {
+ entity.position.Y += entity.velocity.Y;
+ newRect.Y = tryingRectY.Y;//значение по X для нового РЕК приравниваем к значению испытуемого РЕК
+ }
+
+ entity.graphicsComponent.ObjectDrawRectangle.X = (int)entity.position.X;
+ entity.graphicsComponent.ObjectDrawRectangle.Y = (int)entity.position.Y;
+ AppManager.Instance.server.AddData(new UpdatePosition() { NewPosition = entity.position, IdEntity = entity.Id });
+ AppManager.Instance.debugHud.Set("testPos", entity.position.ToString()); //TODO remove
+ entity.velocity = Vector2.Zero;
}
- public void UpdateComponentCollision(List collisionComponents)
- {
-
- }
+ //обновление позиции объекта
public void UpdatePositions()
{
-
+ foreach (var item in EntitiesWithMovements)
+ {
+ CheckComponentCollision(item);
+ }
}
- //public void GetObjectInArea(Rectangle area)
- //{
- //}
+ public CollisionManager()
+ {
+ //graphicsComponent
+ //.ObjectDrawRectangle = new Rectangle(0, 0, 16 * 12, 16 * 16);
+ EntitiesWithMovements = new List();
+ ObjectsWithCollisions = new List();
+ }
+ //регистрация компонента(его коллизии)
+ public void Register(CollisionComponent component)
+ {
+ ObjectsWithCollisions.Add(component);
+ if (component.gameObject is LivingEntity)
+ {
+ EntitiesWithMovements.Add(component);
+ }
+ }
- //public void Register(Rectangle rectangle)
- //{
-
- //}
}
+ public static class ExtentionClass
+ {
+ public static Rectangle SetOrigin(this Rectangle rectangle, Vector2 origin)
+ {
+ rectangle.X = (int)origin.X;
+ rectangle.Y = (int)origin.Y;
+ return rectangle;
+ }
+ }
+
}
diff --git a/ZoFo/GameCore/GameManagers/InputManager.cs b/ZoFo/GameCore/GameManagers/InputManager.cs
index 642aefc..dd13535 100644
--- a/ZoFo/GameCore/GameManagers/InputManager.cs
+++ b/ZoFo/GameCore/GameManagers/InputManager.cs
@@ -1,68 +1,72 @@
using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics.PackedVector;
using Microsoft.Xna.Framework.Input;
using System;
+using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
+using System.Formats.Tar;
using System.Linq;
+using System.Reflection.Metadata.Ecma335;
using System.Text;
using System.Threading.Tasks;
namespace ZoFo.GameCore.GameManagers
{
- public enum ScopeState { Up, Middle, Down }
- public enum ControlsState { Gamepad, Keyboard }
+ public enum ScopeState { Idle, Left, Right, Straight, Back, StraightLeft, StraightRight, BackLeft, BackRight }
+
public class InputManager
{
- public delegate void Delegat();
- public event Delegat MovEventJump;
- public event Delegat MovEventDown;
- public event Delegat ShootEvent;
+ public event Action ShootEvent; // событие удара(когда нажат X, событие срабатывает)
+
+ public event Action OnInteract; // событие взаимодействия с collectable(например, лутом)
+ //с помощью кнопки E.
- Vector2 vectorMovementDirection;
- ScopeState scopeState; // Положение оружия. Up, Middle, Down.
- ControlsState controlsState;
- private bool _overrideControls = false;
+ public event Action ActionEvent;
+ public Vector2 InputMovementDirection;
+ private Vector2 prevInputMovementDirection;
+ public Vector2 InputAttackDirection;
+ private Vector2 prevInputAttackDirection;
+
+ public event Action TalkEvent;
+
+ public ScopeState currentScopeState; // Положение оружия. Left, Right, Straight, Back, StraightLeft, StraightRight, BackLeft, BackRight.
+ private ScopeState prevCurrentScopeState;
private bool _cheatsEnabled = false;
public bool InvincibilityCheat { get; private set; } = false;
public bool CollisionsCheat { get; private set; } = false;
public bool InfiniteAmmoCheat { get; private set; } = false;
- private bool isJumpDown; // Блокирует физическое нажатие прыжка и спуска
private bool isShoot;
+ private bool isInteract;
private KeyboardState lastKeyboardState;
private GamePadState lastGamePadState;
-
-
- public Vector2 VectorMovementDirection { get => vectorMovementDirection; }
- public ScopeState ScopeState { get => scopeState; }
+ public ScopeState ScopeState { get => currentScopeState; }
public string currentControlsState;
+ public ScopeState CurrentScopeState { get => currentScopeState; } // получить текущее состояние
public InputManager()
{
- this.isJumpDown = false;
+ InputMovementDirection = new Vector2(0, 0);
+ InputAttackDirection = new Vector2(0, 0);
this.isShoot = false;
- scopeState = ScopeState.Middle;
- controlsState = ControlsState.Keyboard;
- vectorMovementDirection = new Vector2(0, 0);
+ currentScopeState = ScopeState.Idle;
}
public void Update()
{
if (_cheatsEnabled)
{
- //AppManager.Instance.DebugHUD.Set("cheats", _cheatsEnabled.ToString());
- //AppManager.Instance.DebugHUD.Set("invincible", InvincibilityCheat.ToString());
- //AppManager.Instance.DebugHUD.Set("infinite ammo", InfiniteAmmoCheat.ToString()); //TODO
+ AppManager.Instance.debugHud.Set("cheats", _cheatsEnabled.ToString());
+ AppManager.Instance.debugHud.Set("invincible", InvincibilityCheat.ToString());
+ AppManager.Instance.debugHud.Set("infinite ammo", InfiniteAmmoCheat.ToString()); //TODO
}
#region Работа с GamePad
- if (_overrideControls ? controlsState == ControlsState.Gamepad : GamePad.GetState(0).IsConnected)
- {
- controlsState = ControlsState.Gamepad;
-
#region Обработка гейм-пада. Задает Vector2 vectorMovementDirection являющийся вектором отклонения левого стика.
GamePadState gamePadState = GamePad.GetState(0);
- vectorMovementDirection = gamePadState.ThumbSticks.Left;
+ InputMovementDirection = gamePadState.ThumbSticks.Left;
+ InputAttackDirection = gamePadState.ThumbSticks.Right;
#endregion
#region читы
@@ -78,60 +82,71 @@ namespace ZoFo.GameCore.GameManagers
}
#endregion // Cheats
- #region Обработка нажатия прыжка и спуска. Вызывает события MovEvent.
- if (vectorMovementDirection.Y < -0.2 && gamePadState.Buttons.A == ButtonState.Pressed && !isJumpDown)
- {
- isJumpDown = true;
- MovEventDown?.Invoke();
- Debug.WriteLine("Спуск");
- }
- else if (gamePadState.Buttons.A == ButtonState.Pressed && lastGamePadState.Buttons.A == ButtonState.Released)
- {
- MovEventJump?.Invoke();
- Debug.WriteLine("Прыжок");
- }
- #endregion
-
- #region Обработка положения оружия. Задает значение полю scopeState.
- if (vectorMovementDirection.Y >= 0.7)
- {
- scopeState = ScopeState.Up;
- }
- else if (vectorMovementDirection.Y <= -0.7 && !isJumpDown)
- {
- scopeState = ScopeState.Down;
- }
- else
- {
- scopeState = ScopeState.Middle;
+ #region set ScopeState
+ int currentSection = (int)Math.Ceiling(Math.Atan2(InputMovementDirection.Y,
+ InputMovementDirection.X) * 180 / Math.PI * 16 / 360);
+ switch(currentSection){
+ case 1 or 0 or 16:
+ currentScopeState = ScopeState.Right;
+ break;
+ case 2 or 3:
+ currentScopeState = ScopeState.StraightRight;
+ break;
+ case 4 or 5:
+ currentScopeState = ScopeState.Straight;
+ break;
+ case 6 or 7:
+ currentScopeState = ScopeState.StraightLeft;
+ break;
+ case 8 or 9:
+ currentScopeState = ScopeState.Left;
+ break;
+ case 10 or 11:
+ currentScopeState = ScopeState.BackLeft;
+ break;
+ case 12 or 13:
+ currentScopeState = ScopeState.Back;
+ break;
+ case 14 or 15:
+ currentScopeState = ScopeState.BackRight;
+ break;
+ default:
+ break;
}
+
#endregion
#region Обработка нажатия выстрела. Вызывает событие ShootEvent
- if (gamePadState.Buttons.X == ButtonState.Pressed && !isJumpDown && !isShoot)
+ if (gamePadState.Buttons.X == ButtonState.Pressed && !isShoot)
{
isShoot = true;
ShootEvent?.Invoke();
Debug.WriteLine("Выстрел");
}
- else if (gamePadState.Buttons.X == ButtonState.Released && !isJumpDown)
+ else if (gamePadState.Buttons.X == ButtonState.Released)
{
isShoot = false;
}
#endregion
lastGamePadState = gamePadState;
- }
#endregion
#region Работа с KeyBoard
- else
- {
- controlsState = ControlsState.Keyboard;
+
+ #region InputAttack with mouse
+ MouseState mouseState = Mouse.GetState();
+ AppManager.Instance.debugHud.Set("mouse position", $"({mouseState.X}, {mouseState.Y}");
+ // TODO: CurentScreenResolution
+ Vector2 a = (AppManager.Instance.CurentScreenResolution / new Point(2, 2)).ToVector2();
+
+ InputAttackDirection = Vector2.Normalize(new Vector2(mouseState.X - a.X, mouseState.Y - a.Y));
+ AppManager.Instance.debugHud.Set("AttackDir(normalize)", $"({a.X}, {a.Y})");
+ #endregion
#region Состояние клавиатуры
KeyboardState keyBoardState = Keyboard.GetState(); // Состояние клавиатуры
#endregion
-
+
#region читы
if (keyBoardState.IsKeyDown(Keys.LeftShift) && keyBoardState.IsKeyDown(Keys.RightShift))
_cheatsEnabled = true;
@@ -154,76 +169,84 @@ namespace ZoFo.GameCore.GameManagers
}
#endregion // Cheats
- #region Обработка движения вправо-влево. Меняет у вектора vectorMovementDirection значение X на -1/0/1.
- if (keyBoardState.IsKeyDown(Keys.Left))
+ #region Обработка состояния объекта. Задает значение полю scopeState.
+ if (keyBoardState.IsKeyDown(Keys.Up) || keyBoardState.IsKeyDown(Keys.W))
{
- vectorMovementDirection.X = -1;
+ currentScopeState = ScopeState.Straight;
}
- else if (keyBoardState.IsKeyDown(Keys.Right))
+ else if (keyBoardState.IsKeyDown(Keys.Down) || keyBoardState.IsKeyDown(Keys.S))
{
- vectorMovementDirection.X = 1;
+ currentScopeState = ScopeState.Back;
}
- else
+ else if(keyBoardState.IsKeyDown(Keys.Left) || keyBoardState.IsKeyDown(Keys.A))
{
- vectorMovementDirection.X = 0;
+ currentScopeState = ScopeState.Left;
}
- #endregion
-
- #region Обработка прыжка и спуска. Вызываются события MovEvent.
- if (keyBoardState.IsKeyDown(Keys.LeftShift) && !isJumpDown && keyBoardState.IsKeyDown(Keys.Down))
+ else if(keyBoardState.IsKeyDown(Keys.Right) || keyBoardState.IsKeyDown(Keys.D))
{
- isJumpDown = true;
- MovEventDown?.Invoke();
- Debug.WriteLine("Спуск");
+ currentScopeState = ScopeState.Right;
}
- else if (keyBoardState.IsKeyDown(Keys.LeftShift) && !isJumpDown)
+ else if(keyBoardState.IsKeyDown(Keys.Right) && keyBoardState.IsKeyDown(Keys.Up) ||
+ keyBoardState.IsKeyDown(Keys.D) && keyBoardState.IsKeyDown(Keys.W))
{
- isJumpDown = true;
- MovEventJump?.Invoke();
- Debug.WriteLine("Прыжок");
+ currentScopeState = ScopeState.StraightRight;
}
- else if (keyBoardState.IsKeyUp(Keys.LeftShift))
+ else if(keyBoardState.IsKeyDown(Keys.Left) && keyBoardState.IsKeyDown(Keys.Up) ||
+ keyBoardState.IsKeyDown(Keys.A) && keyBoardState.IsKeyDown(Keys.W))
{
- isJumpDown = false;
+ currentScopeState = ScopeState.StraightLeft;
}
- #endregion
-
- #region Обработка положения оружия. Задает значение полю scopeState.
- if (keyBoardState.IsKeyDown(Keys.Up))
+ else if(keyBoardState.IsKeyDown(Keys.Right) && keyBoardState.IsKeyDown(Keys.Down) ||
+ keyBoardState.IsKeyDown(Keys.D) && keyBoardState.IsKeyDown(Keys.S))
{
- scopeState = ScopeState.Up;
+ currentScopeState = ScopeState.BackRight;
}
- else if (keyBoardState.IsKeyDown(Keys.Down) && !isJumpDown)
+ else if(keyBoardState.IsKeyDown(Keys.Left) && keyBoardState.IsKeyDown(Keys.Down) ||
+ keyBoardState.IsKeyDown(Keys.A) && keyBoardState.IsKeyDown(Keys.S))
{
- scopeState = ScopeState.Down;
- }
- else
- {
- scopeState = ScopeState.Middle;
+ currentScopeState = ScopeState.BackLeft;
}
#endregion
#region Обработка нажатия выстрела. Вызывает событие ShootEvent
- if (keyBoardState.IsKeyDown(Keys.X) && !isJumpDown && !isShoot)
+ if (keyBoardState.IsKeyDown(Keys.P) && !isShoot)
{
isShoot = true;
ShootEvent?.Invoke();
Debug.WriteLine("Выстрел");
}
- else if (keyBoardState.IsKeyUp(Keys.X) && !isJumpDown)
+ else if (keyBoardState.IsKeyUp(Keys.P))
{
isShoot = false;
}
#endregion
- SetState(ControlsState.Keyboard);
+ #region Обработка взаимодействия с collectable(например лутом). Вызывает событие OnInteract
+ if (keyBoardState.IsKeyDown(Keys.E) && !isInteract)
+ {
+
+ OnInteract?.Invoke();
+ Debug.WriteLine("взаимодействие с Collectable");
+ }
+ else if (keyBoardState.IsKeyUp(Keys.E))
+ {
+ isInteract = false;
+ }
+ #endregion
lastKeyboardState = keyBoardState;
- }
+
#endregion
- }
- public void SetState(ControlsState controlsState)
- {
- currentControlsState = controlsState.ToString();
+ #region ActionEvent
+ if(InputMovementDirection != prevInputMovementDirection ||
+ InputAttackDirection != prevInputAttackDirection ||
+ currentScopeState != prevCurrentScopeState)
+ {
+ ActionEvent?.Invoke();
+ }
+ prevInputMovementDirection = InputMovementDirection;
+ prevInputAttackDirection = InputAttackDirection;
+ prevCurrentScopeState = currentScopeState;
+ #endregion
}
}
}
diff --git a/ZoFo/GameCore/GameManagers/ItemManager/ItemInfo.cs b/ZoFo/GameCore/GameManagers/ItemManager/ItemInfo.cs
index 375d745..6461dc6 100644
--- a/ZoFo/GameCore/GameManagers/ItemManager/ItemInfo.cs
+++ b/ZoFo/GameCore/GameManagers/ItemManager/ItemInfo.cs
@@ -7,14 +7,14 @@ using System.Threading.Tasks;
namespace ZoFo.GameCore.GameManagers.ItemManager
{
- class ItemInfo
+ public class ItemInfo
{
//поля
string tag;
- string textureName;
+ public string textureName;
Texture2D itemTexture;
- bool isCraftable;
- Dictionary resourcesNeededToCraft;
+ public bool isCraftable;
+ public Dictionary resourcesNeededToCraft;
public ItemInfo (string tag)
{
this.tag = tag;
diff --git a/ZoFo/GameCore/GameManagers/ItemManager/ItemManager.cs b/ZoFo/GameCore/GameManagers/ItemManager/ItemManager.cs
index 6d00e0c..3b982e6 100644
--- a/ZoFo/GameCore/GameManagers/ItemManager/ItemManager.cs
+++ b/ZoFo/GameCore/GameManagers/ItemManager/ItemManager.cs
@@ -9,24 +9,30 @@ namespace ZoFo.GameCore.GameManagers.ItemManager
public class ItemManager
{
//поля
- Dictionary tagItemPairs;
+ public Dictionary tagItemPairs;
//методы
- ItemInfo GetItemInfo(string tag)
+ public ItemInfo GetItemInfo(string tag)
{
- return tagItemPairs.GetValueOrDefault(tag);
+ return tagItemPairs[tag];
}
- void LoadItemTextures()
+ public void LoadItemTextures()
{
foreach (var item in tagItemPairs)
{
item.Value.LoadTexture();
}
}
- void Initialize()
- {
- tagItemPairs.Add("wood", new ItemInfo("wood","wood",false,null));
- tagItemPairs.Add("rock", new ItemInfo("rock", "rock", false, null));
- tagItemPairs.Add("steel", new ItemInfo("steel", "steel", false, null));
+ public void Initialize()
+ {
+ tagItemPairs = new Dictionary();
+ tagItemPairs.Add("wood", new ItemInfo("wood","Textures\\Test\\wood",false,null));
+ tagItemPairs.Add("rock", new ItemInfo("rock", "Textures\\Test\\rock", false, null));
+ tagItemPairs.Add("steel", new ItemInfo("steel", "Textures\\Test\\steel", false, null));
+ tagItemPairs.Add("pickaxe", new ItemInfo("steel", "Textures\\Test\\pickaxe", true, new Dictionary()
+ {
+ {"wood", 2},
+ {"Steel", 3}
+ }));
}
}
diff --git a/ZoFo/GameCore/GameManagers/ItemManager/PlayerData.cs b/ZoFo/GameCore/GameManagers/ItemManager/PlayerData.cs
index 1dfc351..5a6c78e 100644
--- a/ZoFo/GameCore/GameManagers/ItemManager/PlayerData.cs
+++ b/ZoFo/GameCore/GameManagers/ItemManager/PlayerData.cs
@@ -9,16 +9,42 @@ namespace ZoFo.GameCore.GameManagers.ItemManager
///
/// Класс хранит информацю о количестве ресурсов у игрока
///
- internal class PlayerData
+ public class PlayerData
{
- Dictionary items;
+ public PlayerData()
+ {
+ LoadPlayerData();
+ }
+ public Dictionary items;
///
/// Принимает тэг и крафтит этот объект
///
///
- public void CraftItem(string itemTag)
+ public bool CraftItem(string itemTag)
+ {
+ Dictionary needToCraft = AppManager.Instance.ItemManager.GetItemInfo(itemTag).resourcesNeededToCraft;
+ foreach (var item in needToCraft)
+ {
+ if (items[item.Key] < item.Value)
+ {
+ return false;
+ }
+ }
+
+ foreach (var item in needToCraft)
+ {
+ items[item.Key] -= item.Value;
+ }
+ return true;
+ }
+
+ public void LoadPlayerData()
{
//TODO
+ items = new Dictionary();
+ items.Add("wood", 2);
+ items.Add("steel", 110);
+ items.Add("rock", 6);
}
}
}
diff --git a/ZoFo/GameCore/GameManagers/MapManager/MapElements/Layer.cs b/ZoFo/GameCore/GameManagers/MapManager/MapElements/Layer.cs
index f598efe..09f9894 100644
--- a/ZoFo/GameCore/GameManagers/MapManager/MapElements/Layer.cs
+++ b/ZoFo/GameCore/GameManagers/MapManager/MapElements/Layer.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Text.Json.Serialization;
using System.Threading.Tasks;
namespace ZoFo.GameCore.GameManagers.MapManager.MapElements
@@ -13,5 +14,6 @@ namespace ZoFo.GameCore.GameManagers.MapManager.MapElements
public int Width { get; set; }
public int Id { get; set; }
public bool Visibility { get; set; }
+ public string Class { get; set; }
}
}
diff --git a/ZoFo/GameCore/GameManagers/MapManager/MapElements/Object.cs b/ZoFo/GameCore/GameManagers/MapManager/MapElements/Object.cs
new file mode 100644
index 0000000..f4c4336
--- /dev/null
+++ b/ZoFo/GameCore/GameManagers/MapManager/MapElements/Object.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ZoFo.GameCore.GameManagers.MapManager.MapElements
+{
+ public class Object
+ {
+ public double Height { get; set; }
+ public double Width { get; set; }
+ public double X { get; set; }
+ public double Y { get; set; }
+ }
+}
diff --git a/ZoFo/GameCore/GameManagers/MapManager/MapElements/ObjectGroup.cs b/ZoFo/GameCore/GameManagers/MapManager/MapElements/ObjectGroup.cs
new file mode 100644
index 0000000..ac77f14
--- /dev/null
+++ b/ZoFo/GameCore/GameManagers/MapManager/MapElements/ObjectGroup.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ZoFo.GameCore.GameManagers.MapManager.MapElements
+{
+ public class ObjectGroup
+ {
+ public string Name { get; set; }
+ public List