diff --git a/AnimationsFileCreator/AnimationsFileCreator.csproj b/AnimationsFileCreator/AnimationsFileCreator.csproj
new file mode 100644
index 0000000..b8c3b86
--- /dev/null
+++ b/AnimationsFileCreator/AnimationsFileCreator.csproj
@@ -0,0 +1,17 @@
+
+
+
+ Exe
+ net8.0
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AnimationsFileCreator/Program.cs b/AnimationsFileCreator/Program.cs
new file mode 100644
index 0000000..45c6a06
--- /dev/null
+++ b/AnimationsFileCreator/Program.cs
@@ -0,0 +1,73 @@
+using DangerousD.GameCore.Graphics;
+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;
+
+namespace AnimationsFileCreator
+{
+ class Program
+ {
+ [STAThread]
+ static void Main(string[] args)
+ {
+ Console.WriteLine("Добро пожаловать в костыльную программу по созданию файлов анимации для игры DungerousD");
+ Console.Write("Введите название текстуры (нажмите enter, чтобы выбрать файл во всплывающем окошке): ");
+ string textureName = Console.ReadLine();
+ if (textureName == "")
+ {
+
+ DialogResult result = Dialog.FileOpen();
+ var temp = result.Path.Split('\\');
+ textureName = temp[temp.Length-2] + "/"+temp[temp.Length - 1];
+ textureName = textureName.Split('.')[0];
+ }
+ Console.WriteLine("Введите количество кадров анимации: ");
+ int framesCount = int.Parse(Console.ReadLine());
+ Console.WriteLine("Введите длительность кадра в анимации: ");
+ int interval = int.Parse(Console.ReadLine());
+ Console.WriteLine("Введите начальную позицию X ректенгла анимации: ");
+ Rectangle rectangle = new Rectangle();
+ rectangle.X = int.Parse(Console.ReadLine());
+ Console.WriteLine("Введите начальную позицию Y ректенгла анимации: ");
+ rectangle.Y = int.Parse(Console.ReadLine());
+ Console.WriteLine("Введите начальную позицию Width ректенгла анимации: ");
+ rectangle.Width = int.Parse(Console.ReadLine());
+ Console.WriteLine("Введите начальную позицию Height ректенгла анимации: ");
+ rectangle.Height = int.Parse(Console.ReadLine());
+ Console.WriteLine("Введите название для этого файла - id анимации");
+ string id = Console.ReadLine();
+ Console.WriteLine("Введите 1 если анимация зациклена, и 0 если нет");
+ AnimationContainer container = new AnimationContainer();
+
+ int a = int.Parse(Console.ReadLine());
+ if (a==1)
+ {
+ container.IsCycle = true;
+ }
+ else
+ {
+ container.IsCycle = false;
+ }
+ Console.WriteLine("Введите отклонение анимации от стандартной (сначала X, потом enter, потом Y): ");
+ int otklx = int.Parse(Console.ReadLine());
+ int otkly = int.Parse(Console.ReadLine());
+ container.Offset =new Vector2(otklx,otkly);
+ container.FramesCount = framesCount;
+ container.FrameTime = new System.Collections.Generic.List>();
+ container.FrameTime.Add(new Tuple(0, interval));
+ container.StartSpriteRectangle = rectangle;
+ container.TextureName = "Textures/AnimationTextures/"+textureName;
+ container.TextureFrameInterval = 0;
+ container.Id = id;
+ string json = JsonConvert.SerializeObject(container);
+ StreamWriter writer = new StreamWriter("../../../../ZoFo/Content/Textures/Animations/"+id+ ".animation");
+ writer.WriteLine(json);
+ writer.Close();
+ }
+ }
+}
diff --git a/MonogameLibrary/UI/Base/UIManager.cs b/MonogameLibrary/UI/Base/UIManager.cs
index 826a0a1..125df25 100644
--- a/MonogameLibrary/UI/Base/UIManager.cs
+++ b/MonogameLibrary/UI/Base/UIManager.cs
@@ -59,8 +59,8 @@ namespace MonogameLibrary.UI.Base
{
keyboardState = Keyboard.GetState();
mouseState = Mouse.GetState();
- mouseState = new MouseState((int)(mouseState.X*(float)resolutionInGame.X/resolution.X),
- (int)(mouseState.Y * (float)resolutionInGame.Y / resolution.Y), mouseState.ScrollWheelValue, mouseState.LeftButton, mouseState.MiddleButton, mouseState.RightButton, mouseState.XButton1, mouseState.XButton2);
+ //mouseState = new MouseState((int)(mouseState.X*(float)resolutionInGame.X/resolution.X),
+ // (int)(mouseState.Y * (float)resolutionInGame.Y / resolution.Y), mouseState.ScrollWheelValue, mouseState.LeftButton, mouseState.MiddleButton, mouseState.RightButton, mouseState.XButton1, mouseState.XButton2);
}
catch
{
diff --git a/MonogameLibrary/UI/Elements/CheckBox.cs b/MonogameLibrary/UI/Elements/CheckBox.cs
index 5dc400f..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\\ui\\checkboxs_off");
- texture2 = content.Load("textures\\ui\\checkboxs_off-on");
- texture3 = content.Load("textures\\ui\\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/Slider.cs b/MonogameLibrary/UI/Elements/Slider.cs
index b496cdf..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\\ui\\slider");
+ 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/ZoFo.sln b/ZoFo.sln
index 81a0c18..3ea9985 100644
--- a/ZoFo.sln
+++ b/ZoFo.sln
@@ -7,6 +7,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZoFo", "ZoFo\ZoFo.csproj",
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MonogameLibrary", "MonogameLibrary\MonogameLibrary.csproj", "{40880E68-4B3A-417B-A39B-95DE46AA2E7E}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AnimationsFileCreator", "AnimationsFileCreator\AnimationsFileCreator.csproj", "{7B143D5C-5198-4ADE-9291-ECC924B78633}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -21,6 +23,10 @@ Global
{40880E68-4B3A-417B-A39B-95DE46AA2E7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{40880E68-4B3A-417B-A39B-95DE46AA2E7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{40880E68-4B3A-417B-A39B-95DE46AA2E7E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7B143D5C-5198-4ADE-9291-ECC924B78633}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7B143D5C-5198-4ADE-9291-ECC924B78633}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7B143D5C-5198-4ADE-9291-ECC924B78633}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7B143D5C-5198-4ADE-9291-ECC924B78633}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/ZoFo/Content/Content.mgcb b/ZoFo/Content/Content.mgcb
index ddc4c36..ea0d2f4 100644
--- a/ZoFo/Content/Content.mgcb
+++ b/ZoFo/Content/Content.mgcb
@@ -13,3 +13,345 @@
#---------------------------------- Content ---------------------------------#
+#begin Fonts/Font.spritefont
+/importer:FontDescriptionImporter
+/processor:FontDescriptionProcessor
+/processorParam:PremultiplyAlpha=True
+/processorParam:TextureFormat=Compressed
+/build:Fonts/Font.spritefont
+
+#begin Fonts/Font2.spritefont
+/importer:FontDescriptionImporter
+/processor:FontDescriptionProcessor
+/processorParam:PremultiplyAlpha=True
+/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/TileSet 1.tsj
+/copy:MapData/TileSets/TileSet 1.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/Tabletki.mp3
+/importer:Mp3Importer
+/processor:SongProcessor
+/processorParam:Quality=Best
+/build:sounds/Tabletki.mp3
+
+#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/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.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/checkboxs_off.png
+
+#begin Textures/GUI/checkboxs_off-on.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/checkboxs_off-on.png
+
+#begin Textures/GUI/checkboxs_on.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/checkboxs_on.png
+
+#begin Textures/GUI/MenuBackground.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/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.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/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/TileSetImages/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/TileSetImages/TilesetFloor.png
+
diff --git a/ZoFo/Content/Fonts/CarltineRegular-K7z5l.ttf b/ZoFo/Content/Fonts/CarltineRegular-K7z5l.ttf
new file mode 100644
index 0000000..1496983
Binary files /dev/null and b/ZoFo/Content/Fonts/CarltineRegular-K7z5l.ttf differ
diff --git a/ZoFo/Content/Fonts/Debrosee-ALPnL.ttf b/ZoFo/Content/Fonts/Debrosee-ALPnL.ttf
new file mode 100644
index 0000000..311dd61
Binary files /dev/null and b/ZoFo/Content/Fonts/Debrosee-ALPnL.ttf differ
diff --git a/ZoFo/Content/Fonts/Font.spritefont b/ZoFo/Content/Fonts/Font.spritefont
new file mode 100644
index 0000000..754d1ee
--- /dev/null
+++ b/ZoFo/Content/Fonts/Font.spritefont
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+ Debrosee-ALPnL.ttf
+
+
+ 100
+
+
+ 0
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+ ~
+
+
+
+
diff --git a/ZoFo/Content/Fonts/Font2.spritefont b/ZoFo/Content/Fonts/Font2.spritefont
new file mode 100644
index 0000000..3aaf8e7
--- /dev/null
+++ b/ZoFo/Content/Fonts/Font2.spritefont
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+ CarltineRegular-K7z5l.ttf
+
+
+ 15
+
+
+ 0
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+ ~
+
+
+
+
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..b075b59
--- /dev/null
+++ b/ZoFo/Content/MapData/MapSession.tiled-session
@@ -0,0 +1,43 @@
+{
+ "Map/SizeTest": {
+ "height": 4300,
+ "width": 2
+ },
+ "activeFile": "TileSets/TileSet 1.tsj",
+ "expandedProjectPaths": [
+ "TileMaps",
+ ".",
+ "TileSets"
+ ],
+ "fileStates": {
+ "TileMaps/TileSets/TileSet 1.tsj": {
+ "scaleInDock": 1
+ },
+ "TileMaps/main.tmj": {
+ "scale": 0.25,
+ "selectedLayer": 0,
+ "viewCenter": {
+ "x": 1734,
+ "y": 1652
+ }
+ },
+ "TileSets/TileSet 1.tsj": {
+ "scaleInDock": 1,
+ "scaleInEditor": 1.5
+ },
+ "TileSets/WallSet.tsj": {
+ "scaleInDock": 1,
+ "scaleInEditor": 1
+ }
+ },
+ "openFiles": [
+ "TileSets/TileSet 1.tsj",
+ "TileSets/WallSet.tsj",
+ "TileMaps/main.tmj"
+ ],
+ "recentFiles": [
+ "TileMaps/main.tmj",
+ "TileSets/WallSet.tsj",
+ "TileSets/TileSet 1.tsj"
+ ]
+}
diff --git a/ZoFo/Content/MapData/TileMaps/main.tmj b/ZoFo/Content/MapData/TileMaps/main.tmj
new file mode 100644
index 0000000..fa928f7
--- /dev/null
+++ b/ZoFo/Content/MapData/TileMaps/main.tmj
@@ -0,0 +1,1093 @@
+{ "compressionlevel":-1,
+ "height":20,
+ "infinite":true,
+ "layers":[
+ {
+ "chunks":[
+ {
+ "data":[24, 50, 51, 24, 24, 24, 28, 29, 24, 24, 28, 46, 29, 24, 24, 50,
+ 24, 28, 46, 46, 29, 24, 50, 51, 24, 90, 25, 111, 23, 28, 29, 89,
+ 29, 50, 2, 2, 51, 24, 24, 28, 29, 28, 10, 3, 23, 25, 23, 89,
+ 23, 90, 24, 24, 24, 24, 24, 25, 23, 50, 32, 10, 32, 47, 23, 89,
+ 51, 24, 24, 24, 28, 29, 24, 50, 51, 24, 50, 51, 50, 2, 51, 24,
+ 28, 46, 29, 24, 50, 51, 24, 24, 24, 24, 28, 46, 46, 46, 29, 89,
+ 50, 2, 51, 24, 24, 24, 24, 28, 29, 24, 50, 2, 2, 2, 51, 89,
+ 24, 24, 28, 29, 24, 89, 24, 50, 32, 29, 24, 90, 24, 24, 24, 24,
+ 24, 89, 25, 23, 24, 90, 24, 24, 50, 51, 24, 24, 24, 24, 24, 24,
+ 89, 24, 25, 23, 24, 24, 24, 24, 24, 24, 24, 24, 28, 46, 29, 24,
+ 24, 24, 25, 23, 24, 28, 46, 29, 24, 89, 28, 29, 25, 111, 45, 29,
+ 24, 24, 50, 51, 89, 50, 3, 45, 29, 24, 50, 51, 50, 2, 3, 45,
+ 24, 90, 24, 24, 24, 24, 50, 2, 32, 29, 24, 24, 24, 24, 25, 1,
+ 24, 89, 24, 24, 24, 24, 89, 24, 50, 51, 24, 24, 24, 24, 50, 32,
+ 29, 90, 90, 24, 24, 89, 24, 24, 24, 24, 24, 24, 28, 29, 24, 50,
+ 32, 29, 24, 24, 90, 24, 24, 24, 24, 24, 24, 24, 25, 45, 29, 24],
+ "height":16,
+ "width":16,
+ "x":0,
+ "y":0
+ },
+ {
+ "data":[51, 28, 46, 29, 24, 24, 24, 24, 24, 50, 2, 51, 24, 24, 24, 24,
+ 24, 50, 2, 51, 28, 29, 24, 24, 24, 28, 29, 89, 24, 28, 46, 29,
+ 89, 24, 90, 24, 50, 32, 29, 24, 28, 10, 51, 24, 24, 25, 1, 51,
+ 90, 24, 24, 24, 28, 10, 51, 90, 25, 45, 46, 29, 24, 25, 23, 89,
+ 24, 28, 29, 28, 10, 32, 29, 28, 10, 2, 2, 51, 24, 50, 51, 24,
+ 24, 50, 32, 10, 51, 50, 51, 25, 45, 46, 29, 24, 24, 90, 24, 24,
+ 24, 24, 50, 32, 46, 29, 24, 50, 2, 2, 32, 29, 24, 24, 24, 24,
+ 24, 24, 24, 50, 2, 32, 29, 24, 24, 24, 50, 51, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 25, 23, 90, 24, 89, 24, 28, 29, 24, 24, 28,
+ 28, 46, 29, 24, 24, 50, 51, 24, 24, 24, 24, 50, 32, 29, 24, 25,
+ 50, 2, 51, 28, 29, 28, 46, 29, 24, 24, 89, 24, 25, 45, 46, 10,
+ 29, 24, 24, 50, 32, 10, 2, 51, 24, 24, 24, 24, 50, 2, 2, 51,
+ 51, 24, 28, 29, 50, 51, 28, 46, 29, 24, 24, 24, 24, 24, 90, 28,
+ 29, 24, 25, 23, 24, 24, 50, 2, 32, 29, 24, 24, 89, 24, 89, 50,
+ 51, 24, 50, 51, 24, 24, 24, 24, 50, 32, 29, 89, 90, 24, 24, 24,
+ 24, 24, 24, 24, 24, 28, 29, 24, 24, 25, 23, 24, 24, 28, 46, 29],
+ "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,
+ 50, 2, 51, 90, 50, 32, 29, 50, 32, 46, 29, 24, 24, 24, 25, 23,
+ 89, 24, 24, 24, 90, 50, 51, 24, 25, 114, 23, 24, 90, 24, 25, 23,
+ 24, 28, 29, 24, 24, 28, 29, 89, 50, 2, 51, 24, 24, 24, 25, 23,
+ 24, 50, 51, 28, 46, 10, 51, 24, 24, 24, 90, 24, 24, 24, 50, 32,
+ 24, 24, 90, 50, 2, 32, 29, 28, 46, 29, 28, 46, 29, 24, 90, 50,
+ 46, 29, 24, 90, 24, 25, 45, 47, 1, 51, 50, 2, 32, 46, 29, 89,
+ 115, 45, 29, 24, 24, 50, 2, 2, 32, 29, 24, 24, 50, 3, 23, 24,
+ 2, 2, 51, 24, 24, 24, 24, 24, 50, 32, 46, 29, 24, 50, 51, 24,
+ 89, 24, 28, 29, 89, 24, 24, 24, 24, 25, 111, 23, 24, 28, 29, 24,
+ 46, 29, 25, 23, 89, 28, 46, 29, 24, 25, 115, 23, 24, 25, 23, 24,
+ 2, 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,
+ 90, 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":[50, 51, 24, 24, 24, 24, 28, 46, 29, 24, 89, 28, 10, 2, 51, 28,
+ 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":[29, 24, 24, 24, 24, 50, 51, 24, 24, 25, 45, 29, 24, 50, 2, 32,
+ 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":"\u0421\u043b\u043e\u0439 \u0442\u0430\u0439\u043b\u043e\u0432 1",
+ "opacity":1,
+ "startx":0,
+ "starty":0,
+ "type":"tilelayer",
+ "visible":true,
+ "width":128,
+ "x":0,
+ "y":0
+ }],
+ "nextlayerid":2,
+ "nextobjectid":1,
+ "orientation":"orthogonal",
+ "renderorder":"right-down",
+ "tiledversion":"1.10.2",
+ "tileheight":32,
+ "tilesets":[
+ {
+ "firstgid":1,
+ "source":"..\/TileSets\/TileSet 1.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/TileSet 1.tsj b/ZoFo/Content/MapData/TileSets/TileSet 1.tsj
new file mode 100644
index 0000000..d681881
--- /dev/null
+++ b/ZoFo/Content/MapData/TileSets/TileSet 1.tsj
@@ -0,0 +1,168 @@
+{ "class":"Tile",
+ "columns":22,
+ "fillmode":"preserve-aspect-fit",
+ "grid":
+ {
+ "height":24,
+ "orientation":"orthogonal",
+ "width":24
+ },
+ "image":"..\/..\/Textures\/TileSet\/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":27,
+ "probability":0.5
+ },
+ {
+ "id":28,
+ "probability":0.5
+ },
+ {
+ "id":49,
+ "probability":0.5
+ },
+ {
+ "id":50,
+ "probability":0.5
+ },
+ {
+ "id":88,
+ "probability":0.100000001490116
+ },
+ {
+ "id":89,
+ "probability":0.100000001490116
+ },
+ {
+ "id":110,
+ "probability":2
+ },
+ {
+ "id":111,
+ "probability":0.100000001490116
+ },
+ {
+ "id":112,
+ "probability":0.100000001490116
+ }],
+ "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/MapData/TileSets/WallSet.tsj b/ZoFo/Content/MapData/TileSets/WallSet.tsj
new file mode 100644
index 0000000..4cf3f82
--- /dev/null
+++ b/ZoFo/Content/MapData/TileSets/WallSet.tsj
@@ -0,0 +1,21 @@
+{ "class":"StopObject",
+ "columns":5,
+ "grid":
+ {
+ "height":16,
+ "orientation":"orthogonal",
+ "width":16
+ },
+ "image":"..\/..\/Textures\/StopObjects\/Tilelist2.png",
+ "imageheight":1302,
+ "imagewidth":652,
+ "margin":2,
+ "name":"WallSet",
+ "spacing":2,
+ "tilecount":3240,
+ "tiledversion":"1.10.2",
+ "tileheight":128,
+ "tilewidth":128,
+ "type":"tileset",
+ "version":"1.10"
+}
\ No newline at end of file
diff --git a/ZoFo/Content/MapData/TileSets/WallSet.tsx b/ZoFo/Content/MapData/TileSets/WallSet.tsx
new file mode 100644
index 0000000..35564d4
--- /dev/null
+++ b/ZoFo/Content/MapData/TileSets/WallSet.tsx
@@ -0,0 +1,5 @@
+
+
+
+
+
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_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_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/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/testAnimationExample.animation b/ZoFo/Content/Textures/Animations/testAnimationExample.animation
new file mode 100644
index 0000000..de970c1
--- /dev/null
+++ b/ZoFo/Content/Textures/Animations/testAnimationExample.animation
@@ -0,0 +1 @@
+{"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/MenuBackground.jpg b/ZoFo/Content/Textures/GUI/MenuBackground.jpg
new file mode 100644
index 0000000..79b0abe
Binary files /dev/null and b/ZoFo/Content/Textures/GUI/MenuBackground.jpg differ
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..11cbac6
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..6d45273
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..a0778fb
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
new file mode 100644
index 0000000..682b82a
Binary files /dev/null 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
new file mode 100644
index 0000000..f6533ba
Binary files /dev/null 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
new file mode 100644
index 0000000..693b0cc
Binary files /dev/null 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/StopObjects/Environment/Shadows/shadows_house_0000_Layer-1.png b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0000_Layer-1.png
new file mode 100644
index 0000000..880cd49
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0000_Layer-1.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0001_Layer-2.png b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0001_Layer-2.png
new file mode 100644
index 0000000..ad2fc2b
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0001_Layer-2.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0002_Layer-3.png b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0002_Layer-3.png
new file mode 100644
index 0000000..3d95308
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0002_Layer-3.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0003_Layer-4.png b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0003_Layer-4.png
new file mode 100644
index 0000000..3c9368c
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0003_Layer-4.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0004_Layer-5.png b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0004_Layer-5.png
new file mode 100644
index 0000000..d31fb47
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0004_Layer-5.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0005_Layer-6.png b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0005_Layer-6.png
new file mode 100644
index 0000000..fc721e5
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0005_Layer-6.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0006_Layer-7.png b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0006_Layer-7.png
new file mode 100644
index 0000000..fc1f3d1
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0006_Layer-7.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0007_Layer-8.png b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0007_Layer-8.png
new file mode 100644
index 0000000..af254f2
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0007_Layer-8.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0008_Layer-9.png b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0008_Layer-9.png
new file mode 100644
index 0000000..0879664
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0008_Layer-9.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0009_Layer-10.png b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0009_Layer-10.png
new file mode 100644
index 0000000..8fda383
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0009_Layer-10.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0010_Layer-11.png b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0010_Layer-11.png
new file mode 100644
index 0000000..6f2a493
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0010_Layer-11.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0011_Layer-12.png b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0011_Layer-12.png
new file mode 100644
index 0000000..4e7ab49
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0011_Layer-12.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0012_Layer-13.png b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0012_Layer-13.png
new file mode 100644
index 0000000..d654f41
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0012_Layer-13.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0013_Layer-14.png b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0013_Layer-14.png
new file mode 100644
index 0000000..2eeb752
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0013_Layer-14.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0014_Layer-15.png b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0014_Layer-15.png
new file mode 100644
index 0000000..cf2f09d
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0014_Layer-15.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0015_Layer-16.png b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0015_Layer-16.png
new file mode 100644
index 0000000..c13af22
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0015_Layer-16.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0016_Layer-0.png b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0016_Layer-0.png
new file mode 100644
index 0000000..44a6ab4
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/Shadows/shadows_house_0016_Layer-0.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0000_Layer-1.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0000_Layer-1.png
new file mode 100644
index 0000000..4655585
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0000_Layer-1.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0001_Layer-2.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0001_Layer-2.png
new file mode 100644
index 0000000..3823f71
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0001_Layer-2.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0002_Layer-3.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0002_Layer-3.png
new file mode 100644
index 0000000..05ef220
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0002_Layer-3.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0003_Layer-4.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0003_Layer-4.png
new file mode 100644
index 0000000..87f4ecf
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0003_Layer-4.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0004_Layer-5.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0004_Layer-5.png
new file mode 100644
index 0000000..62b95fc
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0004_Layer-5.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0005_Layer-6.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0005_Layer-6.png
new file mode 100644
index 0000000..0bf58ea
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0005_Layer-6.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0006_Layer-7.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0006_Layer-7.png
new file mode 100644
index 0000000..a5efeaf
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0006_Layer-7.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0007_Layer-8.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0007_Layer-8.png
new file mode 100644
index 0000000..da72a26
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0007_Layer-8.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0008_Layer-9.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0008_Layer-9.png
new file mode 100644
index 0000000..19e371c
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0008_Layer-9.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0009_Layer-10.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0009_Layer-10.png
new file mode 100644
index 0000000..121ebe2
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0009_Layer-10.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0010_Layer-11.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0010_Layer-11.png
new file mode 100644
index 0000000..634a7cd
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0010_Layer-11.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0011_Layer-12.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0011_Layer-12.png
new file mode 100644
index 0000000..e3715af
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0011_Layer-12.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0012_Layer-13.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0012_Layer-13.png
new file mode 100644
index 0000000..d53022c
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0012_Layer-13.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0013_Layer-14.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0013_Layer-14.png
new file mode 100644
index 0000000..bacb44a
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0013_Layer-14.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0014_Layer-15.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0014_Layer-15.png
new file mode 100644
index 0000000..8b7d74f
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0014_Layer-15.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0015_Layer-16.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0015_Layer-16.png
new file mode 100644
index 0000000..baa78b8
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0015_Layer-16.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0016_Layer-17.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0016_Layer-17.png
new file mode 100644
index 0000000..ba73b4b
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0016_Layer-17.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0017_Layer-18.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0017_Layer-18.png
new file mode 100644
index 0000000..705506a
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0017_Layer-18.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0018_Layer-19.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0018_Layer-19.png
new file mode 100644
index 0000000..f9acadc
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0018_Layer-19.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0019_Layer-20.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0019_Layer-20.png
new file mode 100644
index 0000000..5630bf3
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0019_Layer-20.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0020_Layer-21.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0020_Layer-21.png
new file mode 100644
index 0000000..c56674c
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0020_Layer-21.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0021_Layer-22.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0021_Layer-22.png
new file mode 100644
index 0000000..394c48b
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0021_Layer-22.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0022_Layer-23.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0022_Layer-23.png
new file mode 100644
index 0000000..8edeed6
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0022_Layer-23.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0023_Layer-24.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0023_Layer-24.png
new file mode 100644
index 0000000..043499e
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0023_Layer-24.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0024_Layer-25.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0024_Layer-25.png
new file mode 100644
index 0000000..0cf74a0
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0024_Layer-25.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0025_Layer-26.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0025_Layer-26.png
new file mode 100644
index 0000000..ed9dc8d
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0025_Layer-26.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0026_Layer-27.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0026_Layer-27.png
new file mode 100644
index 0000000..f531421
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0026_Layer-27.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0027_Layer-28.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0027_Layer-28.png
new file mode 100644
index 0000000..6f4ecca
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0027_Layer-28.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0028_Layer-29.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0028_Layer-29.png
new file mode 100644
index 0000000..f3a2131
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0028_Layer-29.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0029_Layer-30.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0029_Layer-30.png
new file mode 100644
index 0000000..75eea87
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0029_Layer-30.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0030_Layer-31.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0030_Layer-31.png
new file mode 100644
index 0000000..8c4eaa1
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0030_Layer-31.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0031_Layer-32.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0031_Layer-32.png
new file mode 100644
index 0000000..dc64505
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0031_Layer-32.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0032_Layer-33.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0032_Layer-33.png
new file mode 100644
index 0000000..f5a7b8f
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0032_Layer-33.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0033_Layer-34.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0033_Layer-34.png
new file mode 100644
index 0000000..50b8e5b
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0033_Layer-34.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0034_Layer-35.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0034_Layer-35.png
new file mode 100644
index 0000000..963376a
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0034_Layer-35.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0035_Layer-36.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0035_Layer-36.png
new file mode 100644
index 0000000..986dd9a
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0035_Layer-36.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0036_Layer-37.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0036_Layer-37.png
new file mode 100644
index 0000000..c28721b
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0036_Layer-37.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0037_Layer-38.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0037_Layer-38.png
new file mode 100644
index 0000000..0a479fd
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0037_Layer-38.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0038_Layer-39.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0038_Layer-39.png
new file mode 100644
index 0000000..b2c273a
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0038_Layer-39.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0039_Layer-40.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0039_Layer-40.png
new file mode 100644
index 0000000..5d3d948
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0039_Layer-40.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0040_Layer-41.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0040_Layer-41.png
new file mode 100644
index 0000000..71068e6
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0040_Layer-41.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0041_Layer-42.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0041_Layer-42.png
new file mode 100644
index 0000000..85624be
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0041_Layer-42.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0042_Layer-43.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0042_Layer-43.png
new file mode 100644
index 0000000..c411dfb
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0042_Layer-43.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0043_Layer-44.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0043_Layer-44.png
new file mode 100644
index 0000000..58d2288
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0043_Layer-44.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0044_Layer-45.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0044_Layer-45.png
new file mode 100644
index 0000000..079b5cc
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0044_Layer-45.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0045_Layer-46.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0045_Layer-46.png
new file mode 100644
index 0000000..65234d0
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0045_Layer-46.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0046_Layer-47.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0046_Layer-47.png
new file mode 100644
index 0000000..b5898ca
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0046_Layer-47.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0047_Layer-48.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0047_Layer-48.png
new file mode 100644
index 0000000..417ecb3
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0047_Layer-48.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0048_Layer-49.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0048_Layer-49.png
new file mode 100644
index 0000000..3e04981
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0048_Layer-49.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0049_Layer-50.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0049_Layer-50.png
new file mode 100644
index 0000000..1972504
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0049_Layer-50.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0050_Layer-51.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0050_Layer-51.png
new file mode 100644
index 0000000..cd8dc23
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0050_Layer-51.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0051_Layer-52.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0051_Layer-52.png
new file mode 100644
index 0000000..a1470c1
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0051_Layer-52.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0052_Layer-53.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0052_Layer-53.png
new file mode 100644
index 0000000..7b5711c
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0052_Layer-53.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0053_Layer-54.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0053_Layer-54.png
new file mode 100644
index 0000000..0047c8c
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0053_Layer-54.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0054_Layer-55.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0054_Layer-55.png
new file mode 100644
index 0000000..e8930bb
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0054_Layer-55.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0055_Layer-56.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0055_Layer-56.png
new file mode 100644
index 0000000..d0e820d
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0055_Layer-56.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0056_Layer-57.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0056_Layer-57.png
new file mode 100644
index 0000000..2f09fa8
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0056_Layer-57.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0057_Layer-58.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0057_Layer-58.png
new file mode 100644
index 0000000..0facdc6
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0057_Layer-58.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0058_Layer-59.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0058_Layer-59.png
new file mode 100644
index 0000000..8bcd07b
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0058_Layer-59.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0059_Layer-60.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0059_Layer-60.png
new file mode 100644
index 0000000..4ad861b
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0059_Layer-60.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0060_Layer-0.png b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0060_Layer-0.png
new file mode 100644
index 0000000..d5acd84
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Environment/objects_house_0060_Layer-0.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0000_Layer-1.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0000_Layer-1.png
new file mode 100644
index 0000000..fe36619
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0000_Layer-1.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0001_Layer-2.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0001_Layer-2.png
new file mode 100644
index 0000000..e5b9f39
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0001_Layer-2.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0002_Layer-3.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0002_Layer-3.png
new file mode 100644
index 0000000..e31b605
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0002_Layer-3.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0003_Layer-4.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0003_Layer-4.png
new file mode 100644
index 0000000..09ab958
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0003_Layer-4.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0004_Layer-5.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0004_Layer-5.png
new file mode 100644
index 0000000..0c520e5
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0004_Layer-5.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0005_Layer-6.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0005_Layer-6.png
new file mode 100644
index 0000000..13c0408
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0005_Layer-6.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0006_Layer-7.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0006_Layer-7.png
new file mode 100644
index 0000000..36bf1ba
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0006_Layer-7.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0007_Layer-8.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0007_Layer-8.png
new file mode 100644
index 0000000..d39616c
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0007_Layer-8.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0008_Layer-9.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0008_Layer-9.png
new file mode 100644
index 0000000..48ad4d7
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0008_Layer-9.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0009_Layer-10.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0009_Layer-10.png
new file mode 100644
index 0000000..5d1f2ca
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0009_Layer-10.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0010_Layer-11.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0010_Layer-11.png
new file mode 100644
index 0000000..ab4c856
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0010_Layer-11.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0011_Layer-12.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0011_Layer-12.png
new file mode 100644
index 0000000..4b8f0d0
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0011_Layer-12.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0012_Layer-13.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0012_Layer-13.png
new file mode 100644
index 0000000..9e25f96
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0012_Layer-13.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0013_Layer-14.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0013_Layer-14.png
new file mode 100644
index 0000000..3319e48
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0013_Layer-14.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0014_Layer-15.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0014_Layer-15.png
new file mode 100644
index 0000000..24f5bba
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0014_Layer-15.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0015_Layer-16.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0015_Layer-16.png
new file mode 100644
index 0000000..31f7a36
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0015_Layer-16.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0016_Layer-17.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0016_Layer-17.png
new file mode 100644
index 0000000..224400a
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0016_Layer-17.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0017_Layer-18.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0017_Layer-18.png
new file mode 100644
index 0000000..1facb1f
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0017_Layer-18.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0018_Layer-19.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0018_Layer-19.png
new file mode 100644
index 0000000..1d20c2f
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0018_Layer-19.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0019_Layer-20.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0019_Layer-20.png
new file mode 100644
index 0000000..30abbfb
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0019_Layer-20.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0020_Layer-21.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0020_Layer-21.png
new file mode 100644
index 0000000..cd32dda
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0020_Layer-21.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0021_Layer-22.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0021_Layer-22.png
new file mode 100644
index 0000000..2414a5d
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0021_Layer-22.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0022_Layer-23.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0022_Layer-23.png
new file mode 100644
index 0000000..46cebba
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0022_Layer-23.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0023_Layer-24.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0023_Layer-24.png
new file mode 100644
index 0000000..95e467f
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0023_Layer-24.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0024_Layer-25.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0024_Layer-25.png
new file mode 100644
index 0000000..1f81a4c
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0024_Layer-25.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0025_Layer-26.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0025_Layer-26.png
new file mode 100644
index 0000000..4f13a41
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0025_Layer-26.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0026_Layer-27.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0026_Layer-27.png
new file mode 100644
index 0000000..827f729
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0026_Layer-27.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0027_Layer-28.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0027_Layer-28.png
new file mode 100644
index 0000000..56ab75e
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0027_Layer-28.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0028_Layer-29.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0028_Layer-29.png
new file mode 100644
index 0000000..6caeaeb
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0028_Layer-29.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0029_Layer-30.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0029_Layer-30.png
new file mode 100644
index 0000000..dc6eab7
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0029_Layer-30.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0030_Layer-31.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0030_Layer-31.png
new file mode 100644
index 0000000..663615f
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0030_Layer-31.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0031_Layer-32.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0031_Layer-32.png
new file mode 100644
index 0000000..95cd3ca
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0031_Layer-32.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0032_Layer-33.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0032_Layer-33.png
new file mode 100644
index 0000000..1861b3e
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0032_Layer-33.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0033_Layer-34.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0033_Layer-34.png
new file mode 100644
index 0000000..3ef79e1
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0033_Layer-34.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0034_Layer-35.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0034_Layer-35.png
new file mode 100644
index 0000000..8186f19
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0034_Layer-35.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0035_Layer-36.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0035_Layer-36.png
new file mode 100644
index 0000000..eb5194d
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0035_Layer-36.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Roof/roof_0036_Layer-0.png b/ZoFo/Content/Textures/StopObjects/Roof/roof_0036_Layer-0.png
new file mode 100644
index 0000000..e94a995
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Roof/roof_0036_Layer-0.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Tilelist1.png b/ZoFo/Content/Textures/StopObjects/Tilelist1.png
new file mode 100644
index 0000000..5252c86
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Tilelist1.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Tilelist2.png b/ZoFo/Content/Textures/StopObjects/Tilelist2.png
new file mode 100644
index 0000000..3ce1921
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Tilelist2.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Tilelist3.png b/ZoFo/Content/Textures/StopObjects/Tilelist3.png
new file mode 100644
index 0000000..861af90
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Tilelist3.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Tilelist4.png b/ZoFo/Content/Textures/StopObjects/Tilelist4.png
new file mode 100644
index 0000000..14a4566
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Tilelist4.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0000_Layer-1.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0000_Layer-1.png
new file mode 100644
index 0000000..c6e23e7
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0000_Layer-1.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0001_Layer-2.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0001_Layer-2.png
new file mode 100644
index 0000000..1c8205c
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0001_Layer-2.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0002_Layer-3.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0002_Layer-3.png
new file mode 100644
index 0000000..adeab17
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0002_Layer-3.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0003_Layer-4.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0003_Layer-4.png
new file mode 100644
index 0000000..fcd01a8
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0003_Layer-4.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0004_Layer-5.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0004_Layer-5.png
new file mode 100644
index 0000000..a715cf5
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0004_Layer-5.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0005_Layer-6.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0005_Layer-6.png
new file mode 100644
index 0000000..443b2d7
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0005_Layer-6.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0006_Layer-7.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0006_Layer-7.png
new file mode 100644
index 0000000..375a15f
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0006_Layer-7.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0007_Layer-8.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0007_Layer-8.png
new file mode 100644
index 0000000..66d1f0e
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0007_Layer-8.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0008_Layer-9.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0008_Layer-9.png
new file mode 100644
index 0000000..183c938
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0008_Layer-9.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0009_Layer-10.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0009_Layer-10.png
new file mode 100644
index 0000000..0082f7c
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0009_Layer-10.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0010_Layer-11.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0010_Layer-11.png
new file mode 100644
index 0000000..c02a29b
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0010_Layer-11.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0011_Layer-12.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0011_Layer-12.png
new file mode 100644
index 0000000..9ec94d7
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0011_Layer-12.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0012_Layer-13.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0012_Layer-13.png
new file mode 100644
index 0000000..50c376f
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0012_Layer-13.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0013_Layer-14.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0013_Layer-14.png
new file mode 100644
index 0000000..099baa7
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0013_Layer-14.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0014_Layer-15.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0014_Layer-15.png
new file mode 100644
index 0000000..51b7d43
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0014_Layer-15.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0015_Layer-16.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0015_Layer-16.png
new file mode 100644
index 0000000..99b0f10
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0015_Layer-16.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0016_Layer-17.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0016_Layer-17.png
new file mode 100644
index 0000000..a9f1329
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0016_Layer-17.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0017_Layer-18.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0017_Layer-18.png
new file mode 100644
index 0000000..38f9c00
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0017_Layer-18.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0018_Layer-19.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0018_Layer-19.png
new file mode 100644
index 0000000..a8367dd
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0018_Layer-19.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0019_Layer-20.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0019_Layer-20.png
new file mode 100644
index 0000000..c1b2805
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0019_Layer-20.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0020_Layer-21.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0020_Layer-21.png
new file mode 100644
index 0000000..bc18b15
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0020_Layer-21.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0021_Layer-22.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0021_Layer-22.png
new file mode 100644
index 0000000..d8599d6
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0021_Layer-22.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0022_Layer-23.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0022_Layer-23.png
new file mode 100644
index 0000000..4e3336e
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0022_Layer-23.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0023_Layer-24.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0023_Layer-24.png
new file mode 100644
index 0000000..95b8964
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0023_Layer-24.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0024_Layer-25.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0024_Layer-25.png
new file mode 100644
index 0000000..7b8e21a
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0024_Layer-25.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0025_Layer-26.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0025_Layer-26.png
new file mode 100644
index 0000000..ad088f8
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0025_Layer-26.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0026_Layer-27.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0026_Layer-27.png
new file mode 100644
index 0000000..dbc20bb
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0026_Layer-27.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0027_Layer-28.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0027_Layer-28.png
new file mode 100644
index 0000000..220d937
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0027_Layer-28.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0028_Layer-29.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0028_Layer-29.png
new file mode 100644
index 0000000..d990509
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0028_Layer-29.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0029_Layer-30.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0029_Layer-30.png
new file mode 100644
index 0000000..4bbe70a
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0029_Layer-30.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0030_Layer-31.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0030_Layer-31.png
new file mode 100644
index 0000000..3185cce
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0030_Layer-31.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0031_Layer-32.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0031_Layer-32.png
new file mode 100644
index 0000000..01cf9d8
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0031_Layer-32.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0032_Layer-33.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0032_Layer-33.png
new file mode 100644
index 0000000..80cfa34
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0032_Layer-33.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0033_Layer-34.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0033_Layer-34.png
new file mode 100644
index 0000000..8472016
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0033_Layer-34.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0034_Layer-35.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0034_Layer-35.png
new file mode 100644
index 0000000..742552f
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0034_Layer-35.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0035_Layer-36.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0035_Layer-36.png
new file mode 100644
index 0000000..328595e
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0035_Layer-36.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0036_Layer-37.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0036_Layer-37.png
new file mode 100644
index 0000000..ec80148
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0036_Layer-37.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0037_Layer-38.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0037_Layer-38.png
new file mode 100644
index 0000000..e7e7a39
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0037_Layer-38.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0038_Layer-39.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0038_Layer-39.png
new file mode 100644
index 0000000..c03fabe
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0038_Layer-39.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0039_Layer-40.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0039_Layer-40.png
new file mode 100644
index 0000000..c281b0d
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0039_Layer-40.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0040_Layer-41.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0040_Layer-41.png
new file mode 100644
index 0000000..3325002
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0040_Layer-41.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0041_Layer-42.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0041_Layer-42.png
new file mode 100644
index 0000000..1ecbd46
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0041_Layer-42.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0042_Layer-43.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0042_Layer-43.png
new file mode 100644
index 0000000..bcdb8d1
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0042_Layer-43.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0043_Layer-44.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0043_Layer-44.png
new file mode 100644
index 0000000..d411060
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0043_Layer-44.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0044_Layer-45.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0044_Layer-45.png
new file mode 100644
index 0000000..0d9981c
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0044_Layer-45.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0045_Layer-46.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0045_Layer-46.png
new file mode 100644
index 0000000..395d4b7
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0045_Layer-46.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0046_Layer-47.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0046_Layer-47.png
new file mode 100644
index 0000000..9df9a3e
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0046_Layer-47.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0047_Layer-48.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0047_Layer-48.png
new file mode 100644
index 0000000..32a5283
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0047_Layer-48.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0048_Layer-49.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0048_Layer-49.png
new file mode 100644
index 0000000..ae9b2ef
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0048_Layer-49.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0049_Layer-50.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0049_Layer-50.png
new file mode 100644
index 0000000..b28e5b7
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0049_Layer-50.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0050_Layer-51.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0050_Layer-51.png
new file mode 100644
index 0000000..702d9d9
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0050_Layer-51.png differ
diff --git a/ZoFo/Content/Textures/StopObjects/Walls/walls_0051_Layer-0.png b/ZoFo/Content/Textures/StopObjects/Walls/walls_0051_Layer-0.png
new file mode 100644
index 0000000..b984c11
Binary files /dev/null and b/ZoFo/Content/Textures/StopObjects/Walls/walls_0051_Layer-0.png differ
diff --git a/ZoFo/Content/Textures/TileSetImages/TilesetFloor.png b/ZoFo/Content/Textures/TileSetImages/TilesetFloor.png
new file mode 100644
index 0000000..b959118
Binary files /dev/null and b/ZoFo/Content/Textures/TileSetImages/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/Tabletki.mp3 b/ZoFo/Content/sounds/Tabletki.mp3
new file mode 100644
index 0000000..1a44967
Binary files /dev/null and b/ZoFo/Content/sounds/Tabletki.mp3 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 f8a9288..91a607c 100644
--- a/ZoFo/GameCore/Client.cs
+++ b/ZoFo/GameCore/Client.cs
@@ -1,14 +1,104 @@
+using System.Collections.Generic;
+using System.Text.Json;
+using ZoFo.GameCore.GameManagers.NetworkManager;
+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 ZoFo.GameCore.GameObjects.MapObjects.Tiles;
+using System.Drawing;
+using System.Reflection;
+using ZoFo.GameCore.GameObjects.Entities;
+
namespace ZoFo.GameCore
{
public class Client
{
- public void OnDataSend(string Data){ }
+ ClientNetworkManager networkManager;
- public void GameEndedUnexpectedly(){ }
+ public bool IsConnected { get { return networkManager.IsConnected; } }
+ public Client()
+ {
+ networkManager = new ClientNetworkManager();
+ networkManager.GetDataSent += OnDataSend;
+ }
- public void JoinRoom(){ }
+ public void OnDataSend(string data)
+ {
+ List updateDatas = JsonSerializer.Deserialize>(data);
+ // тут будет switch
+ foreach (var item in updateDatas)
+ {
+ GotData(item);
+ }
- public void JoinYourself(){ }
+ }
+ public void GameEndedUnexpectedly() { }
+ public void JoinRoom(string ip,int port)
+ {
+ networkManager.JoinRoom(ip,port);
+ }
+ public void JoinYourself(int port) { networkManager.JoinYourself(port); }
+
+
+ List mapObjects = new List();
+ List gameObjects = new List();
+ ///
+ /// Клиент должен обнговлять игру анимаций
+ ///
+ ///
+ internal void Update(GameTime gameTime)
+ {
+ for (int i = 0; i < gameObjects.Count; i++)
+ {
+ 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 < gameObjects.Count; i++)
+ {
+ gameObjects[i].Draw(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 UpdateGameObjectCreated)
+ {
+ var a = Assembly.GetAssembly(typeof(GameObject));
+ if ((update as UpdateGameObjectCreated).GameObjectType == "EntittyForAnimationTests")
+ {
+
+ gameObjects.Add(
+ new EntittyForAnimationTests(new Vector2(100,100))
+ );
+ }
+ //gameObjects.Add( TODO reflection
+ //Activator.CreateInstance(Type.GetType("ZoFo.GameCore.GameObjects.Entities.EntittyForAnimationTests")
+ ///*(update as UpdateGameObjectCreated).GameObjectType*/, new []{ new Vector2(100, 100) })
+ //as GameObject
+ //);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GUI/AbstractGUI.cs b/ZoFo/GameCore/GUI/AbstractGUI.cs
index d2b69ce..0134477 100644
--- a/ZoFo/GameCore/GUI/AbstractGUI.cs
+++ b/ZoFo/GameCore/GUI/AbstractGUI.cs
@@ -9,6 +9,7 @@ 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;
@@ -20,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()
{
@@ -29,22 +32,27 @@ public abstract class AbstractGUI
private GraphicsDevice graphicsDevice;
public virtual void Initialize()
{
- // Manager.Initialize(AppManager.Instance.GraphicsDevice);
+ Manager.Initialize(AppManager.Instance.GraphicsDevice);
CreateUI();
}
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);
+ spriteBatch.Begin();
+ spriteBatch.Draw(mouse, new Rectangle(mouseState.Position.X, mouseState.Position.Y, 20, 40), Color.Red);
+ spriteBatch.End();
}
}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GUI/DebugHUD.cs b/ZoFo/GameCore/GUI/DebugHUD.cs
new file mode 100644
index 0000000..fdc5371
--- /dev/null
+++ b/ZoFo/GameCore/GUI/DebugHUD.cs
@@ -0,0 +1,72 @@
+using System.Collections.Generic;
+using System.Linq;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using MonogameLibrary.UI.Elements;
+using static System.String;
+using ZoFo.GameCore.GameManagers;
+
+namespace ZoFo.GameCore.GUI;
+
+public class DebugHUD
+{
+ private SpriteFont _spriteFont;
+ private Dictionary _text = new();
+ private List _log = new();
+
+ public void Initialize()
+ {
+ }
+
+ public void LoadContent()
+ {
+ _spriteFont = AppManager.Instance.Content.Load("Fonts/Font2");
+ }
+
+ public void Update(GameTime gameTime)
+ {
+ }
+
+ public void Draw(SpriteBatch spriteBatch)
+ {
+ var keysString = Join("\n", _text.Select(el => el.Key + ": " + el.Value).ToList());
+ spriteBatch.Begin();
+ spriteBatch.DrawString(
+ _spriteFont,
+ keysString,
+ new Vector2(10, 10),
+ Color.Cyan,
+ 0,
+ Vector2.Zero,
+ 1,
+ SpriteEffects.None,
+ 0
+ );
+ spriteBatch.DrawString(
+ _spriteFont,
+ Join("\n", _log),
+ new Vector2(10, 10 + _spriteFont.MeasureString(keysString).Y),
+ Color.Green,
+ 0,
+ Vector2.Zero,
+ 1,
+ SpriteEffects.None,
+ 0
+ );
+ spriteBatch.End();
+ }
+
+ public void Set(string key, string value)
+ {
+ _text[key] = value;
+ }
+
+ public void Log(string value)
+ {
+ _log.Add(value);
+ if (_log.Count > 30)
+ {
+ _log.RemoveAt(0);
+ }
+ }
+}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GUI/HUD.cs b/ZoFo/GameCore/GUI/HUD.cs
index c20ead1..a2b1892 100644
--- a/ZoFo/GameCore/GUI/HUD.cs
+++ b/ZoFo/GameCore/GUI/HUD.cs
@@ -12,14 +12,8 @@ using MonogameLibrary.UI.Elements;
namespace ZoFo.GameCore.GUI;
-public class HUD
-{
- protected UIManager Manager = new();
- protected List Elements = new();
- private List ActiveElements;
- protected DrawableUIElement SelectedElement;
- private bool isStartedPrint = false;
- private bool isPressed = false;
+public class HUD : AbstractGUI
+{
private GraphicsDevice graphicsDevice;
public virtual void Initialize()
@@ -39,6 +33,10 @@ public class HUD
public virtual void Draw(SpriteBatch spriteBatch)
{
- Manager.Draw(spriteBatch);
+ //Manager.Draw(spriteBatch);
+ }
+
+ protected override void CreateUI()
+ {
}
}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GUI/MainMenuGUI.cs b/ZoFo/GameCore/GUI/MainMenuGUI.cs
index 850181d..e0d0c15 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;
@@ -9,19 +10,72 @@ 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 MainMenuGUI : 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/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.Black, mainColor = Color.Transparent, scale = 0.9f, fontName = "Fonts/Font"});
+
+
+ Button playButton = new Button(Manager)
+ {
+ rectangle = new Rectangle(width / 2 - (int)(width / 10), height / 3 + height / 20 + height / 40, (int)(width / 5), (int)(height / 20)),
+ text = "Play",
+ scale = 0.2f,
+ fontColor = Color.White,
+ mainColor = Color.Gray,
+ fontName = "Fonts/Font"
+ };
+ playButton.LeftButtonPressed += () =>
+ {
+ AppManager.Instance.SetGUI(new SelectModeMenu());
+ };
+ Elements.Add(playButton);
+ Button optionButton = 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 = "Options",
+ scale = 0.2f,
+ fontColor = Color.White,
+ mainColor = Color.Gray,
+ fontName = "Fonts/Font"
+ };
+ optionButton.LeftButtonPressed += () =>
+ {
+ AppManager.Instance.SetGUI(new OptionsGUI());
+ };
+ Elements.Add(optionButton);
+ 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)),
+ text = "Exit",
+ scale = 0.2f,
+ fontColor = Color.White,
+ mainColor = Color.Gray,
+ fontName = "Fonts/Font"
+ };
+ exitButton.LeftButtonPressed += () =>
+ {
+ AppManager.Instance.Exit();
+ };
+ Elements.Add(exitButton);
+
+ }
public override void Update(GameTime gameTime)
{
-
+ base.Update(gameTime);
}
}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GUI/OptionsGUI.cs b/ZoFo/GameCore/GUI/OptionsGUI.cs
index 7282f70..464da7d 100644
--- a/ZoFo/GameCore/GUI/OptionsGUI.cs
+++ b/ZoFo/GameCore/GUI/OptionsGUI.cs
@@ -9,19 +9,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 OptionsGUI : 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/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.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.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 = 7, textureName = "Textures/GUI/Switch_backgrownd", MinValue = 0, MaxValue = 1 };
+ slider_OverallVolume.SetValue(AppManager.Instance.SettingsManager.MainVolume);
+ 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.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 = 7, textureName = "Textures/GUI/Switch_backgrownd", MinValue = 0, MaxValue = 1 };
+ slider_MusicVolume.SetValue(AppManager.Instance.SettingsManager.MusicVolume);
+ 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.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 = 7, textureName = "Textures/GUI/Switch_backgrownd", MinValue = 0, MaxValue = 1 };
+ slider_EffectsVolume.SetValue(AppManager.Instance.SettingsManager.SoundEffectsVolume);
+ 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 = "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) };
+ //button_left_right_mode.Checked += (newCheckState) => { };
+ //Elements.Add(button_left_right_mode);
+
+
+ Label label_IsFullScreen = new Label(Manager)
+ { 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 / 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/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/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..fafc259 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,107 @@ 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.2f,
+ fontColor = Color.White,
+ mainColor = Color.Gray,
+ textAligment = MonogameLibrary.UI.Enums.TextAligment.Left,
+ fontName = "Fonts/Font"
+ };
+ 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;
+ if (int.TryParse(endpoint[1], out port))
+ {
+ client.JoinRoom(endpoint[0], port);
+ AppManager.Instance.SetClient(client);
+ AppManager.Instance.SetGUI(new WaitingForPlayersGUI(false));
+ }
+ // ваш код здесь
+ };
+ 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
+ server.CreateRoom(5);
+ AppManager.Instance.SetServer(server);
+ 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..12a67b9 100644
--- a/ZoFo/GameCore/GUI/WaitingForPlayersGUI.cs
+++ b/ZoFo/GameCore/GUI/WaitingForPlayersGUI.cs
@@ -9,19 +9,62 @@ 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 =
+ 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)
+ {
+ 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
+
+ // ваш код здесь
+ };
+ Elements.Add(startButton);
+ }
+
+ 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 495a618..4381cfd 100644
--- a/ZoFo/GameCore/GameManagers/AppManager.cs
+++ b/ZoFo/GameCore/GameManagers/AppManager.cs
@@ -8,8 +8,10 @@ using DangerousD.GameCore.Graphics;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
+using ZoFo.GameCore.GameManagers.ItemManager;
using ZoFo.GameCore.GUI;
using static System.Collections.Specialized.BitVector32;
+using MonogameLibrary.UI.Base;
namespace ZoFo.GameCore.GameManagers
{
@@ -19,39 +21,56 @@ namespace ZoFo.GameCore.GameManagers
private GraphicsDeviceManager _graphics;
private SpriteBatch _spriteBatch;
-
+
+
public static AppManager Instance { get; private set; }
public GameState gamestate;
public AbstractGUI currentGUI;
- //public Client client;
- //public Server server;
+ public DebugHUD debugHud;
+ public Point CurentScreenResolution = new Point(1920, 1080);
+ public Client client;
+ public Server server;
+
-
#region Managers
-
- public InputManager InputManager;
- public AnimationBuilder animationBuilder{get;set; }
+ public InputManager InputManager;
+ public ItemManager.ItemManager ItemManager;
+ public SettingsManager SettingsManager;
+ public SoundManager SoundManager;
+
+ public AnimationBuilder animationBuilder { get; set; }
#endregion
public AppManager()
{
_graphics = new GraphicsDeviceManager(this);
+ SetResolution(CurentScreenResolution.X, CurentScreenResolution.Y);
+ // FulscrreenSwitch();
+
+
Content.RootDirectory = "Content";
IsMouseVisible = true;
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();
base.Initialize();
@@ -60,9 +79,10 @@ namespace ZoFo.GameCore.GameManagers
protected override void LoadContent()
{
_spriteBatch = new SpriteBatch(GraphicsDevice);
-
-
-
+ debugHud.LoadContent();
+ currentGUI.LoadContent();
+ animationBuilder = new AnimationBuilder();
+ animationBuilder.LoadAnimations();
}
@@ -72,18 +92,20 @@ namespace ZoFo.GameCore.GameManagers
Keyboard.GetState().IsKeyDown(Keys.Escape))
Exit();
+ debugHud.Set("key", "value");
+
InputManager.Update();
- //currentGUI.Update();
+ currentGUI.Update(gameTime);
switch (gamestate)
{
case GameState.NotPlaying:
break;
case GameState.HostPlaying:
- //server.Update(GameTime gameTime);
- //client.Update(GameTime gameTime);
+ server.Update(gameTime);
+ client.Update(gameTime);
break;
case GameState.ClientPlaying:
- //server.Update(GameTime gameTime);
+ server.Update(gameTime);
break;
default:
break;
@@ -96,18 +118,22 @@ namespace ZoFo.GameCore.GameManagers
{
GraphicsDevice.Clear(Color.CornflowerBlue);
-
- //currentGUI.Draw(_spriteBatch);
+ currentGUI.Draw(_spriteBatch);
+ debugHud.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();
base.Draw(gameTime);
}
@@ -118,13 +144,29 @@ namespace ZoFo.GameCore.GameManagers
public void SetGUI(AbstractGUI gui)
{
currentGUI = gui;
+ currentGUI.Initialize();
+ currentGUI.LoadContent();
- //TODO
+ //TODO
}
public void GameEnded(Dictionary lootIGot)
{
//TODO
}
+
+ public void SetResolution(int x, int y)
+ {
+ _graphics.PreferredBackBufferWidth = x;
+ _graphics.PreferredBackBufferHeight = y;
+ }
+
+ public void FulscrreenSwitch()
+ {
+ _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 5f69441..f22b906 100644
--- a/ZoFo/GameCore/GameManagers/CollisionManager/CollisionComponent.cs
+++ b/ZoFo/GameCore/GameManagers/CollisionManager/CollisionComponent.cs
@@ -5,7 +5,7 @@ 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
{
diff --git a/ZoFo/GameCore/GameManagers/CollisionManager/CollisionManager.cs b/ZoFo/GameCore/GameManagers/CollisionManager/CollisionManager.cs
index 05808b4..193d540 100644
--- a/ZoFo/GameCore/GameManagers/CollisionManager/CollisionManager.cs
+++ b/ZoFo/GameCore/GameManagers/CollisionManager/CollisionManager.cs
@@ -88,27 +88,15 @@ namespace ZoFo.GameCore.GameManagers.CollisionManager
{
newRect.Y = tryingRectY.Y;//значение по X для нового РЕК приравниваем к значению испытуемого РЕК
}
-
-
-
-
- //}
}
//обновление позиции объекта
public void UpdateObjectsPositions()
{
-
+
}
- //получение объекта на поле(карте)
- //public void GetObjectInArea(Rectangle area)
- //{
-
- //}
-
-
//регистрация компонента(его коллизии)
public void Register(CollisionComponent component)
{
diff --git a/ZoFo/GameCore/GameManagers/InputManager.cs b/ZoFo/GameCore/GameManagers/InputManager.cs
index 642aefc..4ee0980 100644
--- a/ZoFo/GameCore/GameManagers/InputManager.cs
+++ b/ZoFo/GameCore/GameManagers/InputManager.cs
@@ -3,63 +3,60 @@ using Microsoft.Xna.Framework.Input;
using System;
using System.Collections.Generic;
using System.Diagnostics;
+using System.Formats.Tar;
using System.Linq;
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 { 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 Delegat ShootEvent; // событие удара(когда нажат X, событие срабатывает)
+
+ public event Delegat OnInteract; // событие взаимодействия с collectable(например, лутом)
+ //с помощью кнопки E.
+
+ public event Delegat TalkEvent;
Vector2 vectorMovementDirection;
- ScopeState scopeState; // Положение оружия. Up, Middle, Down.
- ControlsState controlsState;
- private bool _overrideControls = false;
+ ScopeState currentScopeState; // Положение оружия. Left, Right, Straight, Back, StraightLeft, StraightRight, BackLeft, BackRight.
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;
this.isShoot = false;
- scopeState = ScopeState.Middle;
- controlsState = ControlsState.Keyboard;
+ currentScopeState = ScopeState.Straight;
vectorMovementDirection = new Vector2(0, 0);
}
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;
@@ -78,56 +75,57 @@ 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)
+ if (vectorMovementDirection.Y >= 0.6)
{
- scopeState = ScopeState.Up;
+ currentScopeState = ScopeState.Straight;
}
- else if (vectorMovementDirection.Y <= -0.7 && !isJumpDown)
+ else if(vectorMovementDirection.Y <= 0.6)
{
- scopeState = ScopeState.Down;
+ currentScopeState = ScopeState.Back;
}
- else
+ else if(vectorMovementDirection.X >= 0.6)
{
- scopeState = ScopeState.Middle;
+ currentScopeState = ScopeState.Right;
+ }
+ else if(vectorMovementDirection.X <= 0.6)
+ {
+ currentScopeState = ScopeState.Left;
+ }
+ else if(vectorMovementDirection.Y >= 0.6 && vectorMovementDirection.X >= 0.6)
+ {
+ currentScopeState = ScopeState.StraightRight;
+ }
+ else if(vectorMovementDirection.Y >= 0.6 && vectorMovementDirection.X <= 0.6)
+ {
+ currentScopeState = ScopeState.StraightLeft;
+ }
+ else if(vectorMovementDirection.Y <= 0.6 && vectorMovementDirection.X >= 0.6)
+ {
+ currentScopeState = ScopeState.BackRight;
+ }
+ else if(vectorMovementDirection.Y <= 0.6 && vectorMovementDirection.X <= 0.6)
+ {
+ currentScopeState = ScopeState.BackLeft;
}
#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 Состояние клавиатуры
KeyboardState keyBoardState = Keyboard.GetState(); // Состояние клавиатуры
#endregion
@@ -154,76 +152,73 @@ 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();
- }
}
}
diff --git a/ZoFo/GameCore/GameManagers/ItemManager/EquippableItemInfo.cs b/ZoFo/GameCore/GameManagers/ItemManager/EquippableItemInfo.cs
new file mode 100644
index 0000000..5bffce5
--- /dev/null
+++ b/ZoFo/GameCore/GameManagers/ItemManager/EquippableItemInfo.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ZoFo.GameCore.GameManagers.ItemManager
+{
+ class EquippableItemInfo : ItemInfo
+ {
+ bool IsEquiped; //экипирован ли предмет
+ public EquippableItemInfo(string tag) : base(tag)
+ {
+
+ }
+ }
+}
diff --git a/ZoFo/GameCore/GameManagers/ItemManager/ItemInfo.cs b/ZoFo/GameCore/GameManagers/ItemManager/ItemInfo.cs
index 68873e4..375d745 100644
--- a/ZoFo/GameCore/GameManagers/ItemManager/ItemInfo.cs
+++ b/ZoFo/GameCore/GameManagers/ItemManager/ItemInfo.cs
@@ -15,10 +15,23 @@ namespace ZoFo.GameCore.GameManagers.ItemManager
Texture2D itemTexture;
bool isCraftable;
Dictionary resourcesNeededToCraft;
+ public ItemInfo (string tag)
+ {
+ this.tag = tag;
+ }
+ public ItemInfo(string tag,string textureName,bool isCraftable, Dictionary resourcesNeededToCraft)
+ {
+ this.tag = tag;
+ this.textureName = textureName;
+
+ this.isCraftable = isCraftable;
+ this.resourcesNeededToCraft = resourcesNeededToCraft;
+ }
//методы
- private void LoadTexture()
+ public void LoadTexture()
{
//я что-то хз как это
+ itemTexture=AppManager.Instance.Content.Load(textureName);
}
}
}
diff --git a/ZoFo/GameCore/GameManagers/ItemManager/ItemManager.cs b/ZoFo/GameCore/GameManagers/ItemManager/ItemManager.cs
index 3585ec4..6d00e0c 100644
--- a/ZoFo/GameCore/GameManagers/ItemManager/ItemManager.cs
+++ b/ZoFo/GameCore/GameManagers/ItemManager/ItemManager.cs
@@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace ZoFo.GameCore.GameManagers.ItemManager
{
- class ItemManager
+ public class ItemManager
{
//поля
Dictionary tagItemPairs;
@@ -15,9 +15,18 @@ namespace ZoFo.GameCore.GameManagers.ItemManager
{
return tagItemPairs.GetValueOrDefault(tag);
}
- void LoadItemTexture()
+ 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));
}
}
diff --git a/ZoFo/GameCore/GameManagers/ItemManager/PlayerData.cs b/ZoFo/GameCore/GameManagers/ItemManager/PlayerData.cs
new file mode 100644
index 0000000..1dfc351
--- /dev/null
+++ b/ZoFo/GameCore/GameManagers/ItemManager/PlayerData.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ZoFo.GameCore.GameManagers.ItemManager
+{
+ ///
+ /// Класс хранит информацю о количестве ресурсов у игрока
+ ///
+ internal class PlayerData
+ {
+ Dictionary items;
+ ///
+ /// Принимает тэг и крафтит этот объект
+ ///
+ ///
+ public void CraftItem(string itemTag)
+ {
+ //TODO
+ }
+ }
+}
diff --git a/ZoFo/GameCore/GameManagers/ItemManager/WeaponItemInfo.cs b/ZoFo/GameCore/GameManagers/ItemManager/WeaponItemInfo.cs
index dcea75f..3917575 100644
--- a/ZoFo/GameCore/GameManagers/ItemManager/WeaponItemInfo.cs
+++ b/ZoFo/GameCore/GameManagers/ItemManager/WeaponItemInfo.cs
@@ -6,9 +6,13 @@ using System.Threading.Tasks;
namespace ZoFo.GameCore.GameManagers.ItemManager
{
- class WeaponItemInfo:ItemInfo
+ class WeaponItemInfo: EquippableItemInfo
{
//поля
float damage;
+
+ public WeaponItemInfo(string tag) : base(tag)
+ {
+ }
}
}
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/TileMap.cs b/ZoFo/GameCore/GameManagers/MapManager/MapElements/TileMap.cs
index 4cd2de9..dda6f25 100644
--- a/ZoFo/GameCore/GameManagers/MapManager/MapElements/TileMap.cs
+++ b/ZoFo/GameCore/GameManagers/MapManager/MapElements/TileMap.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
@@ -11,6 +12,7 @@ namespace ZoFo.GameCore.GameManagers.MapManager.MapElements
public bool Infinite { get; set; }
public int TileHeight { get; set; }
public int TileWidth { get; set; }
- public List TileSets { get; set; }
+ public List TileSets { get; set; }
+ public List Layers { get; set; }
}
}
diff --git a/ZoFo/GameCore/GameManagers/MapManager/MapElements/TileSet.cs b/ZoFo/GameCore/GameManagers/MapManager/MapElements/TileSet.cs
index 26b3627..61eddce 100644
--- a/ZoFo/GameCore/GameManagers/MapManager/MapElements/TileSet.cs
+++ b/ZoFo/GameCore/GameManagers/MapManager/MapElements/TileSet.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -8,5 +9,16 @@ namespace ZoFo.GameCore.GameManagers.MapManager.MapElements
{
public class TileSet
{
+ public string Image { get; set; }
+ public string Name { get; set; }
+ public int ImageHeight { get; set; }
+ public int ImageWidth { get; set; }
+ public int Margin { get; set; }
+ public int Spacing { get; set; }
+ public int TileCount { get; set; }
+ public int TileHeight { get; set; }
+ public int TileWidth { get; set; }
+ public int Columns { get; set; }
+ public int FirstGid { get; set; }
}
}
diff --git a/ZoFo/GameCore/GameManagers/MapManager/MapElements/TileSetInfo.cs b/ZoFo/GameCore/GameManagers/MapManager/MapElements/TileSetInfo.cs
new file mode 100644
index 0000000..f53d448
--- /dev/null
+++ b/ZoFo/GameCore/GameManagers/MapManager/MapElements/TileSetInfo.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 TileSetInfo
+ {
+ public int FirstGid { get; set; }
+ public string Source { get; set; }
+ }
+}
diff --git a/ZoFo/GameCore/GameManagers/MapManager/MapManager.cs b/ZoFo/GameCore/GameManagers/MapManager/MapManager.cs
index d9325e0..d65d74c 100644
--- a/ZoFo/GameCore/GameManagers/MapManager/MapManager.cs
+++ b/ZoFo/GameCore/GameManagers/MapManager/MapManager.cs
@@ -1,21 +1,106 @@
-using System;
+using Microsoft.Xna.Framework;
+using System;
using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
using System.Linq;
+using System.Security.Cryptography;
using System.Text;
+using System.Text.Json;
using System.Threading.Tasks;
+using ZoFo.GameCore.GameManagers.MapManager.MapElements;
+using ZoFo.GameCore.GameObjects.MapObjects;
+using ZoFo.GameCore.GameObjects.MapObjects.StopObjects;
+using ZoFo.GameCore.GameObjects.MapObjects.Tiles;
namespace ZoFo.GameCore.GameManagers.MapManager
{
public class MapManager
{
- public void LoadMap()
- {
- }
- private void LoadTileSet()
- {
+ private static readonly string _templatePath = "Content/MapData/TileMaps/{0}.tmj";
+ //private static readonly float _scale = 1.0f;
+ private List _tileSets = new List();
+ ///
+ /// Загрузка карты. Передаётся название файла карты. По умолчанию main.
+ ///
+ ///
+ public void LoadMap(string mapName = "main")
+ {
+ // Загрузка TileMap
+ var options = new JsonSerializerOptions
+ {
+ PropertyNameCaseInsensitive = true
+ };
+ TileMap tileMap = JsonSerializer.Deserialize(File.ReadAllText(string.Format(_templatePath, mapName)), options);
+
+ // Загрузка TileSet-ов по TileSetInfo
+ List tileSets = new List();
+ foreach (TileSetInfo tileSetInfo in tileMap.TileSets)
+ {
+ TileSet tileSet = LoadTileSet(Path.Combine("Content", "MapData", "TileMaps", tileSetInfo.Source));
+ tileSet.FirstGid = tileSetInfo.FirstGid;
+ tileSets.Add(tileSet);
+ }
+
+ foreach (var layer in tileMap.Layers)
+ {
+ foreach (var chunk in layer.Chunks)
+ {
+ for (int i = 0; i < chunk.Data.Length; i++)
+ {
+ foreach (var tileSet in tileSets)
+ {
+ if (tileSet.FirstGid - chunk.Data[i] <= 0)
+ {
+ int number = chunk.Data[i] - tileSet.FirstGid;
+
+ int relativeColumn = number % tileSet.Columns;
+ int relativeRow = number / tileSet.Columns;
+
+ Rectangle sourceRectangle = new Rectangle(relativeColumn * tileSet.TileWidth, relativeRow * tileSet.TileHeight,
+ tileSet.TileWidth, tileSet.TileHeight);
+
+ Vector2 position = new Vector2((i % chunk.Width) * tileSet.TileWidth + chunk.X * tileSet.TileWidth,
+ (i / chunk.Height) * tileSet.TileHeight + chunk.Y * tileSet.TileHeight) ;
+
+ switch (layer.Class)
+ {
+ case "Tile":
+ AppManager.Instance.server.RegisterGameObject(new MapObject(position, new Vector2(tileSet.TileWidth, tileSet.TileHeight),
+ sourceRectangle, "Textures/TileSetImages/" + Path.GetFileName(tileSet.Image).Replace(".png", "")));
+ break;
+ case "StopObject":
+ // new StopObject(position, new Vector2(tileSet.TileWidth * _scale, tileSet.TileHeight * _scale), sourceRectangle, tileSet.Name);
+ break;
+ default:
+ break;
+ }
+
+ }
+ }
+ }
+ }
+ }
}
+ ///
+ /// Загружает и парсит TileSet по его пути.
+ ///
+ ///
+ ///
+ private TileSet LoadTileSet(string path)
+ {
+ using (StreamReader reader = new StreamReader(path))
+ {
+ var options = new JsonSerializerOptions //TODO Remove
+ {
+ PropertyNameCaseInsensitive = true
+ };
+ string data = reader.ReadToEnd();
+ return JsonSerializer.Deserialize(data, options);
+ }
+ }
}
}
diff --git a/ZoFo/GameCore/GameManagers/MapManager/MapProject.tiled-session b/ZoFo/GameCore/GameManagers/MapManager/MapProject.tiled-session
new file mode 100644
index 0000000..daf2ffb
--- /dev/null
+++ b/ZoFo/GameCore/GameManagers/MapManager/MapProject.tiled-session
@@ -0,0 +1,17 @@
+{
+ "activeFile": "",
+ "expandedProjectPaths": [
+ ],
+ "fileStates": {
+ "TileSets/TileSet 1.tsj": {
+ "scaleInDock": 1,
+ "scaleInEditor": 1
+ }
+ },
+ "openFiles": [
+ ],
+ "project": "",
+ "recentFiles": [
+ "TileSets/TileSet 1.tsj"
+ ]
+}
diff --git a/ZoFo/GameCore/GameManagers/MapManager/MapSession.tiled-project b/ZoFo/GameCore/GameManagers/MapManager/MapSession.tiled-project
new file mode 100644
index 0000000..d0eb592
--- /dev/null
+++ b/ZoFo/GameCore/GameManagers/MapManager/MapSession.tiled-project
@@ -0,0 +1,14 @@
+{
+ "automappingRulesFile": "",
+ "commands": [
+ ],
+ "compatibilityVersion": 1100,
+ "extensionsPath": "extensions",
+ "folders": [
+ "."
+ ],
+ "properties": [
+ ],
+ "propertyTypes": [
+ ]
+}
diff --git a/ZoFo/GameCore/GameManagers/MapManager/MapSession.tiled-session b/ZoFo/GameCore/GameManagers/MapManager/MapSession.tiled-session
new file mode 100644
index 0000000..cec4797
--- /dev/null
+++ b/ZoFo/GameCore/GameManagers/MapManager/MapSession.tiled-session
@@ -0,0 +1,21 @@
+{
+ "Map/SizeTest": {
+ "height": 4300,
+ "width": 2
+ },
+ "activeFile": "",
+ "expandedProjectPaths": [
+ ],
+ "fileStates": {
+ },
+ "last.imagePath": "D:/C#/Я смотрел ваши ХАКАТОНЫ/ZoFo/ZoFo/Content/Textures/Background",
+ "map.fixedSize": false,
+ "map.lastUsedFormat": "json",
+ "map.tileHeight": 16,
+ "map.tileWidth": 16,
+ "openFiles": [
+ ],
+ "project": "MapSession.tiled-project",
+ "recentFiles": [
+ ]
+}
diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/ClientNetworkManager.cs b/ZoFo/GameCore/GameManagers/NetworkManager/ClientNetworkManager.cs
index 033cc30..2a93f71 100644
--- a/ZoFo/GameCore/GameManagers/NetworkManager/ClientNetworkManager.cs
+++ b/ZoFo/GameCore/GameManagers/NetworkManager/ClientNetworkManager.cs
@@ -1,55 +1,117 @@
using System;
+using System.Collections.Generic;
using System.Data.SqlTypes;
using System.Net;
using System.Net.Sockets;
using System.Security.Cryptography.X509Certificates;
using System.Text;
+using System.Text.Json;
using System.Threading;
+using System.Threading.Tasks;
+using ZoFo.GameCore.GameManagers.NetworkManager.Updates;
namespace ZoFo.GameCore.GameManagers.NetworkManager
{
public class ClientNetworkManager
{
- private IPAddress iPAddress = IPAddress.Any;
- private int port = 7632;
- private EndPoint endPoint;
+ private int port = 0;
+ private IPEndPoint endPoint;
private Socket socket;
- delegate void OnDataSent(string Data);
- event OnDataSent GetDataSent; // event
+ List updates = new List();
+ public delegate void OnDataSent(string Data);
+ public event OnDataSent GetDataSent; // event
+ public bool IsConnected { get { return socket.Connected; } }
+ public IPEndPoint InfoConnect => (IPEndPoint)socket.LocalEndPoint ?? endPoint;
+
+ public ClientNetworkManager()
+ {
+ Init();
+ }
+
+ public bool SocketConnected()
+ {
+ return socket.Connected;
+ }
+
public void Init() //create endPoint, socket
{
- endPoint = new IPEndPoint(iPAddress, port);
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
}
public void SendData()
{
-
+ byte[] bytes = Encoding.UTF8.GetBytes(JsonSerializer.Serialize(updates)); //нужно сериализовать
+ socket.Send(bytes);
}
- public void JoinRoom() // multyplayer
+ public void AddData(UpdateData UpdateData)
{
- SendData();
- StartListening();
+ updates.Add(UpdateData);
}
- public void JoinYourself() // single player
+ public void StopConnection()
+ {
+ socket.Shutdown(SocketShutdown.Both);
+ socket.Close();
+ }
+
+ ///
+ /// приложение пытается подключиться к комнате
+ ///
+ ///
+ ///
+ public void JoinRoom(string ip, int port) // multyplayer
{
+
+ endPoint = new IPEndPoint(IPAddress.Parse(ip), port);
+ socket.Connect(endPoint);
SendData();
- StartListening();
+ Thread listen = new Thread(StartListening);
+ listen.IsBackground = true;
+ listen.Start();
+ }
+ public void JoinRoom(IPEndPoint endPoint) // multyplayer
+ {
+
+ this.endPoint = endPoint;
+ socket.Connect(endPoint);
+ SendData();
+ Thread listen = new Thread(StartListening);
+ listen.IsBackground = true;
+ listen.Start();
+ }
+
+ ///
+ /// создается одиночная комната к которой ты подключаешься
+ ///
+ public void JoinYourself(int port) // single player
+ {
+ endPoint = new IPEndPoint(GetIp(), port);
+ socket.Connect(endPoint);
+ SendData();
+ Thread listen = new Thread(StartListening);
+ listen.IsBackground = true;
+ listen.Start();
+ }
+
+ public static IPAddress GetIp()
+ {
+ string hostName = Dns.GetHostName(); // Retrive the Name of HOST
+ string myIP = Dns.GetHostByName(hostName).AddressList[1].ToString();// Get the IP
+ return IPAddress.Parse(myIP);
}
//поток 2
public void StartListening()
{
- socket.Connect(endPoint);
-
- byte[] bytes = new byte[2048];
-
- var countAnsw = socket.Receive(bytes);
-
- string updates = Encoding.UTF8.GetString(bytes, 0, countAnsw); // обновления отосланные сервером
+ while(socket.Connected)
+ {
+ byte[] bytes = new byte[2048];
+ var countAnsw = socket.Receive(bytes);
+ string update = Encoding.UTF8.GetString(bytes, 0, countAnsw); // обновление отосланные сервером
+ GetDataSent(update);
+ }
}
}
}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/ServerNetworkManager.cs b/ZoFo/GameCore/GameManagers/NetworkManager/ServerNetworkManager.cs
index 899f610..27e2448 100644
--- a/ZoFo/GameCore/GameManagers/NetworkManager/ServerNetworkManager.cs
+++ b/ZoFo/GameCore/GameManagers/NetworkManager/ServerNetworkManager.cs
@@ -1,8 +1,11 @@
-using Microsoft.Xna.Framework.Graphics.PackedVector;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Graphics.PackedVector;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
+using System.Net.Http;
using System.Net.Sockets;
using System.Text;
using System.Text.Json;
@@ -15,50 +18,156 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
{
public class ServerNetworkManager
{
- private IPAddress ip = IPAddress.Any;
- private int port = 7632;
+ private IPAddress ip = IPAddress.Parse("127.0.0.1");
+ private const int port = 0;
private IPEndPoint endPoint;
private Socket socket;
private List clients;
- private List updates;
- delegate void OnDataSend(string data); //
+ public List updates;
+ public delegate void OnDataSend(string data);
+ public event OnDataSend GetDataSend; // event
+ Dictionary managerThread;
+ Thread serverTheread;
+ public IPEndPoint InfoConnect => (IPEndPoint)socket.LocalEndPoint ?? endPoint;
- public void Init() //create Socket
+ public ServerNetworkManager() { Init(); }
+
+ ///
+ /// Initialize varibles and Sockets
+ ///
+ private void Init()
{
+ ip = GetIp();
endPoint = new IPEndPoint(ip, port);
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+ managerThread = new Dictionary();
+ clients = new List();
+ updates = new List();
+ managerThread = new Dictionary();
+ socket.Bind(endPoint);
}
+ ///
+ /// Получает IP устройства
+ ///
+ ///
+ public static IPAddress GetIp()
+ {
+ string hostName = Dns.GetHostName(); // Retrive the Name of HOST
+ string myIP = Dns.GetHostByName(hostName).AddressList[1].ToString();// Get the IP
+ return IPAddress.Parse(myIP);
+ }
+
+ ///
+ /// отправляет клиенту Data
+ ///
public void SendData()
{
+ for (int i = 0; i < updates.Count; i++)
+ {
+ AppManager.Instance.client.GotData(updates[i]);
+ }
+ updates.Clear();
+ return; //TODO TODO REMOVE TO ADD NETWORK TODO REMOVE TO ADD NETWORK TODO REMOVE TO ADD NETWORK TODO REMOVE TO ADD NETWORK
+
+ //по 10 паков за раз TODO FIXITFIXITFIXITFIXITFIXITFIXITFIXITFIXITFIXITFIXITFIXITFIXIT
+ List datasToSend = new List();
+ for (int i = 0; i < 5 && i
+ /// добавляет в лист updates новую data
+ ///
+ ///
+ public void AddData(UpdateData data)
{
- socket.Bind(endPoint);
- socket.Listen(10);
- for (int i = 0; i < 10; i++)
+ updates.Add(data);
+ }
+
+ ///
+ /// По сути конец игры и отключение игроков
+ ///
+ public void CloseConnection()
+ {
+ foreach (var item in clients)
+ {
+ //Закрывает сокеты клиентов
+ item.Shutdown(SocketShutdown.Both);
+ item.Close();
+ }
+ foreach (var item in managerThread)
+ {
+ foreach (var socket in clients)
+ {
+ //Закрывает потоки клиентов
+ managerThread[socket].Interrupt();
+ }
+ }
+ //очищает листы
+ managerThread.Clear();
+ clients.Clear();
+ }
+
+ ///
+ /// Начинает работу сервера (Ожидает подключений)
+ ///
+ ///
+ public void Start(object players)
+ {
+ serverTheread = new Thread(StartWaitingForPlayers);
+ serverTheread.IsBackground = true;
+ serverTheread.Start(players);
+ }
+
+ //Потоки Клиентов
+ ///
+ /// Слушает игроков, которые хотят подключиться
+ ///
+ ///
+ public void StartWaitingForPlayers(object players)
+ {
+ int playNumber = (int)players;
+
+ socket.Listen(playNumber);
+ for (int i = 0; i < playNumber; i++)
{
Socket client = socket.Accept();
+ Thread thread = new Thread(StartListening);
+ thread.IsBackground = true;
+ thread.Start(client);
+ managerThread.Add(client, thread);
clients.Add(client); //добавляем клиентов в лист
}
- StartListening();
}
- public void StartListening()//начать слушать клиентов в самой игре активируют Ивент
+ ///
+ /// начать слушать клиентов в самой игре активируют Ивент
+ ///
+ ///
+ private void StartListening(object socket)
{
- var buff = new byte[1024];
- foreach (var client in clients)
+ // obj to Socket
+ Socket client = (Socket)socket;
+ while (client.Connected)
{
+ var buff = new byte[1024];
var answ = client.Receive(buff);
string response = Encoding.UTF8.GetString(buff, 0, answ);
- // List updateDatas =
+ GetDataSend(response);
}
+ Thread.Sleep(-1);
+
}
}
}
diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ClientToServer/UpdateInput.cs b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ClientToServer/UpdateInput.cs
index 81af1d9..bb2ea93 100644
--- a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ClientToServer/UpdateInput.cs
+++ b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ClientToServer/UpdateInput.cs
@@ -6,9 +6,12 @@ using System.Threading.Tasks;
namespace ZoFo.GameCore.GameManagers.NetworkManager.Updates.ClientToServer
{
- public class UpdateInput :IUpdateData
+ public class UpdateInput :UpdateData
{
- public int IdEntity { get; set; }
- public string UpdateType { get; set; }
+ // public int IdEntity { get; set; }
+ public UpdateInput()
+ {
+ UpdateType = "UpdateInput";
+ }
}
}
diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ClientToServer/UpdatePlayerExit.cs b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ClientToServer/UpdatePlayerExit.cs
index ba6c6ca..7cb0b44 100644
--- a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ClientToServer/UpdatePlayerExit.cs
+++ b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ClientToServer/UpdatePlayerExit.cs
@@ -6,9 +6,8 @@ using System.Threading.Tasks;
namespace ZoFo.GameCore.GameManagers.NetworkManager.Updates.ClientToServer
{
- public class UpdatePlayerExit : IUpdateData
+ public class UpdatePlayerExit : UpdateData
{
- public int IdEntity { get; set; }
- public string UpdateType { get; set; }
+ public UpdatePlayerExit() { UpdateType = "UpdatePlayerExit"; }
}
}
diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/IUpdateData.cs b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/IUpdateData.cs
deleted file mode 100644
index edf1cd5..0000000
--- a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/IUpdateData.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace ZoFo.GameCore.GameManagers.NetworkManager.Updates
-{
- public interface IUpdateData
- {
- public int IdEntity { get; set; } //Id объекта
- public string UpdateType { get; set; } //тип обновления
- }
-}
diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateAnimation.cs b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateAnimation.cs
index 6f07770..4e9b972 100644
--- a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateAnimation.cs
+++ b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateAnimation.cs
@@ -6,9 +6,11 @@ using System.Threading.Tasks;
namespace ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient
{
- public class UpdateAnimation : IUpdateData //хранит новую анимации
+ ///
+ /// Хранит новое сосотяние анимации
+ ///
+ public class UpdateAnimation : UpdateData
{
- public int IdEntity { get; set; }
- public string UpdateType { get; set; }
+ public UpdateAnimation() { UpdateType = "UpdateAnimation"; }
}
}
diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateEntityHealth.cs b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateEntityHealth.cs
index 618770e..71f95a2 100644
--- a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateEntityHealth.cs
+++ b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateEntityHealth.cs
@@ -6,9 +6,11 @@ using System.Threading.Tasks;
namespace ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient
{
- public class UpdateEntityHealth : IUpdateData//хранит новое хп entity
+ ///
+ /// Обнивляет хп сущности
+ ///
+ public class UpdateEntityHealth : UpdateData
{
- public int IdEntity { get; set; }
- public string UpdateType { get; set; }
+ public UpdateEntityHealth() { UpdateType = "UpdateEntityHealth"; }
}
}
diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateGameEnded.cs b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateGameEnded.cs
index 10173b7..d89c9a7 100644
--- a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateGameEnded.cs
+++ b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateGameEnded.cs
@@ -6,9 +6,11 @@ using System.Threading.Tasks;
namespace ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient
{
- public class UpdateGameEnded : IUpdateData //хранит полученый лут и уведомляет о конце игры
+ ///
+ /// Хранит полученый лут и уведомляет о конце игры
+ ///
+ public class UpdateGameEnded : UpdateData
{
- public int IdEntity { get; set; }
- public string UpdateType { get; set; }
+ public UpdateGameEnded() { UpdateType = "UpdateGameEnded"; }
}
}
diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateGameObjectCreated.cs b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateGameObjectCreated.cs
index 4cf8a42..0ca86a4 100644
--- a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateGameObjectCreated.cs
+++ b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateGameObjectCreated.cs
@@ -6,9 +6,13 @@ using System.Threading.Tasks;
namespace ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient
{
- public class UpdateGameObjectCreated : IUpdateData //Хранит объект, который только отправили
+ ///
+ /// Хранит объект, который только отправили
+ ///
+ public class UpdateGameObjectCreated : UpdateData
{
- public int IdEntity { get; set; }
- public string UpdateType { get; set; }
+ public UpdateGameObjectCreated() { UpdateType = "UpdateGameObjectCreated"; }
+ public string GameObjectType;
+ public string GameObjectId;
}
}
diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateGameObjectDeleted.cs b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateGameObjectDeleted.cs
new file mode 100644
index 0000000..88d4e98
--- /dev/null
+++ b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateGameObjectDeleted.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.NetworkManager.Updates.ServerToClient
+{
+ ///
+ /// Хранит объект, который надо удлить
+ ///
+ public class UpdateGameObjectDeleted : UpdateData
+ {
+ public UpdateGameObjectDeleted() { UpdateType = "UpdateGameObjectDeleted"; }
+ }
+}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateInteraction.cs b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateInteraction.cs
new file mode 100644
index 0000000..e42f0f4
--- /dev/null
+++ b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateInteraction.cs
@@ -0,0 +1,10 @@
+namespace ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient;
+
+///
+/// При попытке взаимодействия с объектом
+///
+public class UpdateInteraction : UpdateData
+{
+ public int IdEntity { get; set; }
+ public string UpdateType { get; set; }
+}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateInteractionReady.cs b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateInteractionReady.cs
new file mode 100644
index 0000000..db4d01d
--- /dev/null
+++ b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateInteractionReady.cs
@@ -0,0 +1,14 @@
+namespace ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient;
+
+///
+/// При изменении возможности повзаимодействовать с объектом
+///
+///
+///
+public class UpdateInteractionReady(int idEntity, bool isReady)
+ : UpdateData
+{
+ public int IdEntity { get; set; } = idEntity;
+ public string UpdateType { get; set; }
+ public bool IsReady { get; set; } = isReady;
+}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateLoot.cs b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateLoot.cs
index e7f8a51..2337f74 100644
--- a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateLoot.cs
+++ b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateLoot.cs
@@ -6,9 +6,11 @@ using System.Threading.Tasks;
namespace ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient
{
- public class UpdateLoot : IUpdateData //Хранит лут
+ ///
+ /// Хранит лут
+ ///
+ public class UpdateLoot : UpdateData
{
- public int IdEntity { get; set; }
- public string UpdateType { get; set; }
+ public UpdateLoot() { UpdateType = "UpdateLoot"; }
}
}
diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdatePlayerParametrs.cs b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdatePlayerParametrs.cs
index 36a2544..100c8d0 100644
--- a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdatePlayerParametrs.cs
+++ b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdatePlayerParametrs.cs
@@ -6,9 +6,11 @@ using System.Threading.Tasks;
namespace ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient
{
- public class UpdatePlayerParametrs : IUpdateData //Хранит хп, радиацию
+ ///
+ /// Хранит хп, радиацию
+ ///
+ public class UpdatePlayerParametrs : UpdateData
{
- public int IdEntity { get; set; }
- public string UpdateType { get; set; }
+ public UpdatePlayerParametrs() { UpdateType = "UpdatePlayerParametrs"; }
}
}
diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdatePosition.cs b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdatePosition.cs
index fda8a39..8d93d7b 100644
--- a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdatePosition.cs
+++ b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdatePosition.cs
@@ -6,9 +6,11 @@ using System.Threading.Tasks;
namespace ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient
{
- public class UpdatePosition : IUpdateData //Хранит новую позицию
+ ///
+ /// Хранит новую позицию
+ ///
+ public class UpdatePosition : UpdateData
{
- public int IdEntity { get; set; }
- public string UpdateType { get; set; }
+ public UpdatePosition() { UpdateType = "UpdatePosition"; }
}
}
diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateTileCreated.cs b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateTileCreated.cs
new file mode 100644
index 0000000..0799653
--- /dev/null
+++ b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/ServerToClient/UpdateTileCreated.cs
@@ -0,0 +1,26 @@
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Text.Json.Serialization;
+using System.Threading.Tasks;
+using ZoFo.GameCore.GameManagers.NetworkManager.Updates.ClientToServer;
+
+namespace ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient
+{
+
+ ///
+ /// При создании тайла
+ ///
+ public class UpdateTileCreated : UpdateData
+ {
+ public UpdateTileCreated() { UpdateType = "UpdateTileCreated"; }
+ public Texture2D TextureTile { get; set; }
+ public Vector2 Position { get; set; }
+ public Point Size { get; set; }
+ public Rectangle sourceRectangle { get; set; }
+ public string tileSetName { get; set; }
+ }
+}
diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/UpdateData.cs b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/UpdateData.cs
new file mode 100644
index 0000000..a96b270
--- /dev/null
+++ b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/UpdateData.cs
@@ -0,0 +1,32 @@
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Text.Json.Serialization;
+using System.Threading.Tasks;
+using ZoFo.GameCore.GameManagers.NetworkManager.Updates.ClientToServer;
+using ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient;
+
+namespace ZoFo.GameCore.GameManagers.NetworkManager.Updates
+{
+ [JsonDerivedType(typeof(UpdateAnimation))]
+ [JsonDerivedType(typeof(UpdateEntityHealth))]
+ [JsonDerivedType(typeof(UpdateGameEnded))]
+ [JsonDerivedType(typeof(UpdateGameObjectCreated))]
+ [JsonDerivedType(typeof(UpdateGameObjectDeleted))]
+ [JsonDerivedType(typeof(UpdateLoot))]
+ [JsonDerivedType(typeof(UpdatePlayerParametrs))]
+ [JsonDerivedType(typeof(UpdatePosition))]
+ [JsonDerivedType(typeof(UpdateTileCreated))]
+ [JsonDerivedType(typeof(UpdateInput))]
+ [JsonDerivedType(typeof(UpdatePlayerExit))]
+ [JsonDerivedType(typeof(UpdateInteractionReady))]
+ [JsonDerivedType(typeof(UpdateInteraction))]
+
+ public class UpdateData
+ {
+ public int IdEntity { get; set; } //Id объекта
+ public string UpdateType { get; protected set; } //тип обновления
+ }
+}
diff --git a/ZoFo/GameCore/GameManagers/SettingsManager.cs b/ZoFo/GameCore/GameManagers/SettingsManager.cs
new file mode 100644
index 0000000..25dd40d
--- /dev/null
+++ b/ZoFo/GameCore/GameManagers/SettingsManager.cs
@@ -0,0 +1,93 @@
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using Microsoft.Xna;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Microsoft.Xna.Framework;
+using Newtonsoft.Json.Serialization;
+using Microsoft.Xna.Framework.Graphics;
+
+namespace ZoFo.GameCore.GameManagers
+{
+ public class SettingsManager //нужно что-то менять с разрешением
+ {
+ private SettingsContainer settingsContainer = new SettingsContainer();
+ public bool IsFullScreen { get => settingsContainer.IsFullScreen; }
+ public float MainVolume { get => settingsContainer.MainVolume; }
+ public float MusicVolume { get => settingsContainer.MusicVolume; }
+ public float SoundEffectsVolume { get => settingsContainer.SoundEffectsVolume; }
+ public Point Resolution { get => settingsContainer.Resolution; }
+ public void SetResolution(Point resolution)
+ {
+ settingsContainer.Resolution = resolution;
+ //AppManager.Instance.resolution = resolution;
+ }
+ public void SetMainVolume(float volume)
+ {
+ settingsContainer.MainVolume = volume;
+ //AppManager.Instance.SoundManager.Update();
+ SaveSettings();
+ }
+ public void SetMusicVolume(float volume)
+ {
+ settingsContainer.MusicVolume = volume;
+ SaveSettings();
+
+ }
+ public void SetSoundEffectsVolume(float volume)
+ {
+ settingsContainer.SoundEffectsVolume = volume;
+ SaveSettings();
+
+ }
+ public void SetIsFullScreen(bool isFullScreen)
+ {
+ settingsContainer.IsFullScreen = isFullScreen;
+ //AppManager.Instance.SetIsFullScreen(isFullScreen);
+ SaveSettings();
+ }
+ public void LoadSettings()
+ {
+ if (!File.Exists("GameSettings.txt"))
+ {
+ SaveSettings();
+ return;
+ }
+
+ settingsContainer = JsonConvert.DeserializeObject(File.ReadAllText("GameSettings.txt"));
+ SetIsFullScreen(settingsContainer.IsFullScreen);
+ SetMainVolume(settingsContainer.MainVolume);
+ SetMusicVolume(settingsContainer.MusicVolume);
+ SetResolution(settingsContainer.Resolution);
+ SetSoundEffectsVolume(settingsContainer.SoundEffectsVolume);
+
+
+ }
+ public void SaveSettings()
+ {
+ using (StreamWriter streamWriter = new StreamWriter("GameSettings.txt"))
+ {
+ string _str = JsonConvert.SerializeObject(settingsContainer);
+ streamWriter.Write(_str);
+ }
+ }
+
+ }
+ [Serializable]
+ public class SettingsContainer
+ {
+ [JsonProperty("IsFullScreen")]
+ public bool IsFullScreen { get; set; } = false;
+ [JsonProperty("MainVolume")]
+ public float MainVolume { get; set; } = 1;
+ [JsonProperty("MusicVolume")]
+ public float MusicVolume { get; set; } = 1;
+ [JsonProperty("SoundEffectsVolume")]
+ public float SoundEffectsVolume { get; set; } = 1;
+ [JsonProperty("Resolution")]
+ public Point Resolution { get; set; } = new Point(GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width, GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height);
+ }
+}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GameManagers/SoundManager.cs b/ZoFo/GameCore/GameManagers/SoundManager.cs
new file mode 100644
index 0000000..0494dae
--- /dev/null
+++ b/ZoFo/GameCore/GameManagers/SoundManager.cs
@@ -0,0 +1,131 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Audio;
+using Microsoft.Xna.Framework.Content;
+using System.Linq;
+using DangerousD.GameCore.Graphics;
+using Newtonsoft.Json;
+using Microsoft.Xna.Framework.Media;
+
+namespace ZoFo.GameCore.GameManagers
+{
+ public class SoundManager
+ {
+ public Dictionary Sounds = new Dictionary(); // словарь со звуками где строка - название файла
+ public List PlayingSounds = new List(); // список со всеми звуками, которые проигрываются
+ public static float MaxSoundDistance = 100; // максимальная дальность звука(возможно не нужна)
+
+ public void LoadSounds() // метод для загрузки звуков из папки
+ {
+ var k = Directory.GetFiles("../../..//Content//sounds").Where(x => x.EndsWith("wav"));
+
+ if (k.Count() > 0)
+ {
+
+ string[] soundFiles = k.Select(x => x.Split("\\").Last().Split("/").Last().Replace(".wav", "")).ToArray();// папка со звуками там где exe
+ foreach (var soundFile in soundFiles)
+ {
+ Sounds.Add(soundFile, AppManager.Instance.Content.Load("sounds//" + soundFile));
+ }
+
+ }
+
+ if (k.Count() > 0)
+ {
+
+ }
+ }
+
+ public void StartAmbientSound(string soundName) // запустить звук у которого нет позиции
+ {
+ var sound = new Sound(Sounds[soundName].CreateInstance(), Vector2.One, true);
+ sound.SoundEffect.Volume = sound.baseVolume * AppManager.Instance.SettingsManager.MusicVolume * AppManager.Instance.SettingsManager.MainVolume;
+ sound.SoundEffect.IsLooped = false;
+
+ sound.SoundEffect.Play();
+ PlayingSounds.Add(sound);
+
+ /*/ if (AppManager.Instance.multiPlayerStatus == MultiPlayerStatus.Host)
+ {
+ AppManager.Instance.NetworkTasks.Add(new Network.NetworkTask(Vector2.Zero, soundName));
+ }/*/ //Ждать пока закончат работу с сетями
+ }
+ public void StartSound(string soundName, Vector2 soundPos, Vector2 playerPos, float baseVolume = 1, float pitch = 0) // запустить звук у которого есть позиция
+ {
+ var sound = new Sound(Sounds[soundName].CreateInstance(), soundPos, false) { baseVolume = baseVolume, basePich = pitch };
+ sound.SoundEffect.IsLooped = false;
+ sound.SoundEffect.Volume = sound.baseVolume * AppManager.Instance.SettingsManager.SoundEffectsVolume * AppManager.Instance.SettingsManager.MainVolume;
+ sound.SoundEffect.Pitch = pitch;
+ sound.SoundEffect.Play();
+ PlayingSounds.Add(sound);
+
+ /*/ if (AppManager.Instance.multiPlayerStatus == MultiPlayerStatus.Host)
+ {
+ AppManager.Instance.NetworkTasks.Add(new Network.NetworkTask(soundPos, soundName));
+ }/*/ //Ждать пока закончат работу с сетями
+ }
+ public void StopAllSounds() // остановка всех звуков
+ {
+ foreach (var sound in PlayingSounds)
+ sound.SoundEffect.Stop();
+ PlayingSounds.Clear();
+ }
+
+ public void Update() // апдейт, тут происходит изменение громкости
+ {
+ for (int i = 0; i < PlayingSounds.Count; i++)
+ {
+ PlayingSounds[i].UpdateVolume(Vector2.Zero);
+ if (PlayingSounds[i].SoundEffect.State == SoundState.Stopped)
+ {
+ PlayingSounds.Remove(PlayingSounds[i]);
+ i--;
+ }
+ }
+ return;
+
+ /*/var player = AppManager.Instance.GameManager.GetPlayer1;
+ if (player != null)
+ {
+ for (int i = 0; i < PlayingSounds.Count; i++)
+ {
+ if (!PlayingSounds[i].isAmbient)
+ PlayingSounds[i].SoundEffect.Volume = (float)(MaxSoundDistance - PlayingSounds[i].GetDistanceVol(player.Pos)) / MaxSoundDistance;
+ if (PlayingSounds[i].SoundEffect.State == SoundState.Stopped)
+ PlayingSounds.Remove(PlayingSounds[i]);
+ }
+ }/*/
+ }
+ }
+
+ public class Sound
+ {
+ public SoundEffectInstance SoundEffect { get; set; }
+ public Vector2 Position { get; set; } // позиция для эффекта
+ public bool isAmbient { get; }
+ public float baseVolume { get; set; } = 1;
+ public float basePich { get; set; } = 0;
+ public Sound(SoundEffectInstance soundEffect, Vector2 position, bool isAmbient) // конструктор для эффектов по типу криков зомби
+ {
+ this.isAmbient = isAmbient;
+ SoundEffect = soundEffect;
+ Position = position;
+ }
+ public void UpdateVolume(Vector2 playerPos)
+ {
+ if (isAmbient)
+ SoundEffect.Volume = baseVolume * AppManager.Instance.SettingsManager.MusicVolume * AppManager.Instance.SettingsManager.MainVolume;
+ else
+ SoundEffect.Volume = baseVolume * AppManager.Instance.SettingsManager.SoundEffectsVolume * AppManager.Instance.SettingsManager.MainVolume;// * (float)Math.Clamp(1 - GetDistanceVol(playerPos),0,1);
+
+ }
+
+ public double GetDistanceVol(Vector2 playerPos) // получение дистанции до объедка от игрока
+ {
+ return Math.Sqrt(Math.Pow(Position.X - playerPos.X, 2) + Math.Pow(Position.Y - playerPos.Y, 2)) - SoundManager.MaxSoundDistance;
+ }
+ }
+}
diff --git a/ZoFo/GameCore/GameObjects/Bullet.cs b/ZoFo/GameCore/GameObjects/Bullet.cs
deleted file mode 100644
index 4e2197d..0000000
--- a/ZoFo/GameCore/GameObjects/Bullet.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-using System;
-
-namespace ZoFo.GameCore.GameObjects;
-public class Bullet : Projectile
-{
-
-}
diff --git a/ZoFo/GameCore/GameObjects/Collectable.cs b/ZoFo/GameCore/GameObjects/Collectable.cs
deleted file mode 100644
index 7a32b43..0000000
--- a/ZoFo/GameCore/GameObjects/Collectable.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-using System;
-
-namespace ZoFo.GameCore.GameObjects;
-public class Collectable : Entity
-{
-
-}
diff --git a/ZoFo/GameCore/GameObjects/Entities/EntittyForAnimationTests.cs b/ZoFo/GameCore/GameObjects/Entities/EntittyForAnimationTests.cs
new file mode 100644
index 0000000..fb545a1
--- /dev/null
+++ b/ZoFo/GameCore/GameObjects/Entities/EntittyForAnimationTests.cs
@@ -0,0 +1,24 @@
+using Microsoft.Xna.Framework;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZoFo.GameCore.ZoFo_graphics;
+
+namespace ZoFo.GameCore.GameObjects.Entities
+{
+ internal class EntittyForAnimationTests : Entity
+ {
+
+ //public override GraphicsComponent graphicsComponent { get; } = new GraphicsComponent(new List { "тут пишите название анимации" }, "сдублируйте " +
+ public override GraphicsComponent graphicsComponent { get; } = new GraphicsComponent(new List { "player_idle_top-right_noweapon" }, "player_idle_top-right_noweapon");
+ public EntittyForAnimationTests(Vector2 position) : base(position)
+ {
+ graphicsComponent.ObjectDrawRectangle = new Rectangle(0,0,50,50);
+ position = new Vector2(10, 10);
+
+ }
+
+ }
+}
diff --git a/ZoFo/GameCore/GameObjects/Entities/Entity.cs b/ZoFo/GameCore/GameObjects/Entities/Entity.cs
new file mode 100644
index 0000000..0c7d453
--- /dev/null
+++ b/ZoFo/GameCore/GameObjects/Entities/Entity.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using ZoFo.GameCore.GameManagers.CollisionManager;
+using ZoFo.GameCore.ZoFo_graphics;
+
+namespace ZoFo.GameCore.GameObjects.Entities
+{
+ public abstract class Entity : GameObject
+ {
+ //public override GraphicsComponent graphicsComponent => null;
+ public CollisionComponent collisionComponent { get; protected set; }
+ public int Id { get; set; }
+ protected Entity(Vector2 position) : base(position)
+ {
+ }
+ public virtual void Update()
+ {
+
+ }
+ }
+}
+
diff --git a/ZoFo/GameCore/GameObjects/Entities/Interactables/Collectables/Collectable.cs b/ZoFo/GameCore/GameObjects/Entities/Interactables/Collectables/Collectable.cs
new file mode 100644
index 0000000..d31d536
--- /dev/null
+++ b/ZoFo/GameCore/GameObjects/Entities/Interactables/Collectables/Collectable.cs
@@ -0,0 +1,10 @@
+using Microsoft.Xna.Framework;
+using System;
+
+namespace ZoFo.GameCore.GameObjects.Entities.Interactables.Collectables;
+public class Collectable : Interactable
+{
+ public Collectable(Vector2 position) : base(position)
+ {
+ }
+}
diff --git a/ZoFo/GameCore/GameObjects/Entities/Interactables/Door.cs b/ZoFo/GameCore/GameObjects/Entities/Interactables/Door.cs
new file mode 100644
index 0000000..f82fe12
--- /dev/null
+++ b/ZoFo/GameCore/GameObjects/Entities/Interactables/Door.cs
@@ -0,0 +1,24 @@
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+using ZoFo.GameCore.ZoFo_graphics;
+
+namespace ZoFo.GameCore.GameObjects.Entities.Interactables;
+
+public class Door : Interactable
+{
+ public bool isOpened;
+
+ public override GraphicsComponent graphicsComponent { get; } = new(new List { "DoorInteraction" }, "DoorInteraction");
+
+ public Door(Vector2 position) : base(position)
+ {
+ graphicsComponent.actionOfAnimationEnd += _ => { isOpened = !isOpened; };
+ }
+
+ public override void OnInteraction()
+ {
+ graphicsComponent.StartAnimation("DoorInteraction", isOpened);
+ }
+
+
+}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GameObjects/Entities/Interactables/Interactable.cs b/ZoFo/GameCore/GameObjects/Entities/Interactables/Interactable.cs
new file mode 100644
index 0000000..35a124f
--- /dev/null
+++ b/ZoFo/GameCore/GameObjects/Entities/Interactables/Interactable.cs
@@ -0,0 +1,29 @@
+using Microsoft.Xna.Framework;
+using ZoFo.GameCore.GameManagers;
+using ZoFo.GameCore.GameManagers.CollisionManager;
+using ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient;
+using ZoFo.GameCore.GameObjects.Entities.LivingEntities.Player;
+using ZoFo.GameCore.ZoFo_graphics;
+
+namespace ZoFo.GameCore.GameObjects.Entities.Interactables;
+
+public class Interactable : Entity
+{
+ public override GraphicsComponent graphicsComponent => throw new System.NotImplementedException();
+
+ public Interactable(Vector2 position) : base(position)
+ {
+ collisionComponent.OnTriggerEnter += (sender, e) => ChangeInteraction(sender, e, true);
+ collisionComponent.OnTriggerExit += (sender, e) => ChangeInteraction(sender, e, false);
+ }
+
+ private void ChangeInteraction(object sender, CollisionComponent e, bool isReady)
+ {
+ AppManager.Instance.server.AddData(new UpdateInteractionReady((sender as Player).Id, isReady));
+ }
+
+ public virtual void OnInteraction()
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GameObjects/Enemy.cs b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Enemies/Enemy.cs
similarity index 51%
rename from ZoFo/GameCore/GameObjects/Enemy.cs
rename to ZoFo/GameCore/GameObjects/Entities/LivingEntities/Enemies/Enemy.cs
index 934da77..f948689 100644
--- a/ZoFo/GameCore/GameObjects/Enemy.cs
+++ b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Enemies/Enemy.cs
@@ -1,11 +1,14 @@
-using System;
-using System.Collections.Generic;
-using System.Net.Mime;
-using System.Reflection;
-using Microsoft.Xna.Framework.Content;
-
-namespace ZoFo.GameCore.GameObjects;
-public class Enemy : LivingEntity
-{
-
+using System;
+using System.Collections.Generic;
+using System.Net.Mime;
+using System.Reflection;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Content;
+
+namespace ZoFo.GameCore.GameObjects.Entities.LivingEntities.Enemies;
+public class Enemy : LivingEntity
+{
+ public Enemy(Vector2 position) : base(position)
+ {
+ }
}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GameObjects/Entities/LivingEntities/LivingEntity.cs b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/LivingEntity.cs
new file mode 100644
index 0000000..6842723
--- /dev/null
+++ b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/LivingEntity.cs
@@ -0,0 +1,33 @@
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using System;
+using ZoFo.GameCore.GameObjects.Entities;
+using ZoFo.GameCore.ZoFo_graphics;
+using ZoFo.GameCore.GameManagers;
+
+namespace ZoFo.GameCore.GameObjects.Entities.LivingEntities;
+public class LivingEntity : Entity
+{
+ public Vector2 velocity;
+
+ private InputManager inputManager;
+
+ public LivingEntity(Vector2 position) : base(position)
+ {
+ inputManager = new InputManager();
+ }
+
+ public override GraphicsComponent graphicsComponent { get; } = null;
+
+ #region Server side
+ /*public override void Update()
+ {
+
+ }*/
+ #endregion
+
+}
+
+
+
+
diff --git a/ZoFo/GameCore/GameObjects/IPlayerWeaponAttack.cs b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/IPlayerWeaponAttack.cs
similarity index 72%
rename from ZoFo/GameCore/GameObjects/IPlayerWeaponAttack.cs
rename to ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/IPlayerWeaponAttack.cs
index f47220e..3fafa2b 100644
--- a/ZoFo/GameCore/GameObjects/IPlayerWeaponAttack.cs
+++ b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/IPlayerWeaponAttack.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace ZoFo.GameCore.GameObjects
+namespace ZoFo.GameCore.GameObjects.Entities.LivingEntities.Player
{
internal interface IPlayerWeaponAttack
{
diff --git a/ZoFo/GameCore/GameObjects/LootData.cs b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/LootData.cs
similarity index 81%
rename from ZoFo/GameCore/GameObjects/LootData.cs
rename to ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/LootData.cs
index 93f67f1..5336e7b 100644
--- a/ZoFo/GameCore/GameObjects/LootData.cs
+++ b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/LootData.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace ZoFo.GameCore.GameObjects
+namespace ZoFo.GameCore.GameObjects.Entities.LivingEntities.Player
{
internal class LootData
{
diff --git a/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/Player.cs b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/Player.cs
new file mode 100644
index 0000000..20bbe18
--- /dev/null
+++ b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/Player.cs
@@ -0,0 +1,27 @@
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using System;
+using ZoFo.GameCore.GameManagers;
+using ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient;
+
+namespace ZoFo.GameCore.GameObjects.Entities.LivingEntities.Player;
+
+public class Player : LivingEntity
+{
+ public Vector2 InputWeaponRotation{ get; set; }
+ public Vector2 InputPlayerRotation{ get; set;}
+ public bool IsTryingToShoot{get;set;}
+ Texture2D texture;
+ private float speed;
+ private int health;
+ public Player(Vector2 position) : base(position)
+ {
+ //InputWeaponRotation = new Vector2(0, 0);
+ //InputPlayerRotation = new Vector2(0, 0);
+ }
+
+ public void Update(GameTime gameTime)
+ {
+
+ }
+}
diff --git a/ZoFo/GameCore/GameObjects/GunAttack.cs b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/PlayerAttacks/GunAttack.cs
similarity index 50%
rename from ZoFo/GameCore/GameObjects/GunAttack.cs
rename to ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/PlayerAttacks/GunAttack.cs
index b3a611e..ffa2869 100644
--- a/ZoFo/GameCore/GameObjects/GunAttack.cs
+++ b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/PlayerAttacks/GunAttack.cs
@@ -4,9 +4,9 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace ZoFo.GameCore.GameObjects
+namespace ZoFo.GameCore.GameObjects.Entities.LivingEntities.Player.PlayerAttacks
{
- internal class GunAttack:IPlayerWeaponAttack
+ internal class GunAttack : IPlayerWeaponAttack
{
}
diff --git a/ZoFo/GameCore/GameObjects/HandAttack.cs b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/PlayerAttacks/HandAttack.cs
similarity index 50%
rename from ZoFo/GameCore/GameObjects/HandAttack.cs
rename to ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/PlayerAttacks/HandAttack.cs
index 3d73249..b993cc0 100644
--- a/ZoFo/GameCore/GameObjects/HandAttack.cs
+++ b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/PlayerAttacks/HandAttack.cs
@@ -4,9 +4,9 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace ZoFo.GameCore.GameObjects
+namespace ZoFo.GameCore.GameObjects.Entities.LivingEntities.Player.PlayerAttacks
{
- internal class HandAttack:IPlayerWeaponAttack
+ internal class HandAttack : IPlayerWeaponAttack
{
}
diff --git a/ZoFo/GameCore/GameObjects/SwordAttack.cs b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/PlayerAttacks/SwordAttack.cs
similarity index 50%
rename from ZoFo/GameCore/GameObjects/SwordAttack.cs
rename to ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/PlayerAttacks/SwordAttack.cs
index 507ae6b..508f02f 100644
--- a/ZoFo/GameCore/GameObjects/SwordAttack.cs
+++ b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/PlayerAttacks/SwordAttack.cs
@@ -4,9 +4,9 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace ZoFo.GameCore.GameObjects
+namespace ZoFo.GameCore.GameObjects.Entities.LivingEntities.Player.PlayerAttacks
{
- internal class SwordAttack:IPlayerWeaponAttack
+ internal class SwordAttack : IPlayerWeaponAttack
{
}
diff --git a/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Projectiles/Bullet.cs b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Projectiles/Bullet.cs
new file mode 100644
index 0000000..b72f394
--- /dev/null
+++ b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Projectiles/Bullet.cs
@@ -0,0 +1,10 @@
+using Microsoft.Xna.Framework;
+using System;
+
+namespace ZoFo.GameCore.GameObjects.Entities.LivingEntities.Projectiles;
+public class Bullet : Projectile
+{
+ public Bullet(Vector2 position) : base(position)
+ {
+ }
+}
diff --git a/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Projectiles/Projectile.cs b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Projectiles/Projectile.cs
new file mode 100644
index 0000000..3ae0f0b
--- /dev/null
+++ b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Projectiles/Projectile.cs
@@ -0,0 +1,10 @@
+using Microsoft.Xna.Framework;
+using System;
+
+namespace ZoFo.GameCore.GameObjects.Entities.LivingEntities.Projectiles;
+public class Projectile : LivingEntity
+{
+ public Projectile(Vector2 position) : base(position)
+ {
+ }
+}
diff --git a/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Projectiles/Rock.cs b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Projectiles/Rock.cs
new file mode 100644
index 0000000..fa20896
--- /dev/null
+++ b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Projectiles/Rock.cs
@@ -0,0 +1,10 @@
+using Microsoft.Xna.Framework;
+using System;
+
+namespace ZoFo.GameCore.GameObjects.Entities.LivingEntities.Projectiles;
+public class Rock : Projectile
+{
+ public Rock(Vector2 position) : base(position)
+ {
+ }
+}
diff --git a/ZoFo/GameCore/GameObjects/Entity.cs b/ZoFo/GameCore/GameObjects/Entity.cs
deleted file mode 100644
index 0600b1d..0000000
--- a/ZoFo/GameCore/GameObjects/Entity.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using System;
-using ZoFo.GameCore.GameObjects;
-using Microsoft.Xna.Framework.Content;
-
-namespace ZoFo.GameCore.GameObjects;
-public class Entity : GameObject
-{
- public int Id{ get; set; }
- //public CollisionComponent collisionComponents{ get; set; }
- //public AnimationComponent animationComponent{ get; set; }
-
- // в апдейте может заявляет изменения позиции
- public void UpdateLogic()
- {
-
- }
-
-
-
- // Методы для клиента
- public void UpdateAnimation()
- {
-
- }
- public void Draw(ContentManager manager)
- {
-
- }
-}
diff --git a/ZoFo/GameCore/GameObjects/GameObject.cs b/ZoFo/GameCore/GameObjects/GameObject.cs
index 510f160..d3c5d64 100644
--- a/ZoFo/GameCore/GameObjects/GameObject.cs
+++ b/ZoFo/GameCore/GameObjects/GameObject.cs
@@ -1,6 +1,97 @@
-namespace ZoFo.GameCore.GameObjects;
+
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using System;
+using ZoFo.GameCore.GameManagers;
+using ZoFo.GameCore.ZoFo_graphics;
+using ZoFo.GameCore;
-public class GameObject
+namespace ZoFo.GameCore.GameObjects;
+
+public abstract class GameObject
{
-
+ public Vector2 position;
+
+ public Vector2 rotation; //вектор направления объекта
+ public abstract GraphicsComponent graphicsComponent { get; }
+
+ #region ServerSide
+ public GameObject(Vector2 position)
+ {
+ this.position = position;
+
+ graphicsComponent.LoadContent();
+ }
+ public virtual void UpdateLogic(GameTime gameTime)
+ {
+ PlayAnimation_OnServer();
+ }
+
+
+ ///
+ /// Это вызывается в логике игры, которая на сервере, здесь будет вызываться уведомление об анимации
+ ///
+ public void PlayAnimation_OnServer()
+ {
+ graphicsComponent.Update();
+ }
+
+ #endregion
+
+
+ #region Client Side
+
+ ///
+ /// Для клиента
+ /// Это вызывается в клиентской части игры
+ ///
+ public void PlayAnimation_OnClient()
+ {
+ graphicsComponent.Update();
+ }
+
+ ///
+ /// Для клиента
+ /// Загрузка графического компонента
+ ///
+ public void LoadContent()
+ {
+ graphicsComponent.LoadContent();
+ }
+
+ ///
+ /// Для клиента
+ /// Обновление, которое вызывается у клиента, для просмотра анимаций
+ ///
+ public virtual void UpdateAnimations()
+ {
+ graphicsComponent.ObjectDrawRectangle.X = (int)position.X; //Move To place where Updates Sets your position
+ graphicsComponent.ObjectDrawRectangle.Y = (int)position.Y;
+ PlayAnimation_OnClient();
+ }
+
+ ///
+ /// Для клиента
+ ///
+ public virtual void Draw(SpriteBatch spriteBatch)
+ {
+ graphicsComponent.DrawAnimation(graphicsComponent.ObjectDrawRectangle, spriteBatch);
+ //debug
+ if (AppManager.Instance.InputManager.CollisionsCheat)
+ DrawDebugRectangle(spriteBatch, graphicsComponent.ObjectDrawRectangle);
+
+ }
+ public void DrawDebugRectangle(SpriteBatch spriteBatch, Rectangle _rectangle, Nullable color = null)
+ {
+ if (color is null) color = new Color(1, 0, 0, 0.25f);
+ if (color.Value.A == 255) color = new Color(color.Value, 0.25f);
+ //spriteBatch.Draw(debugTexture,
+ // new Rectangle((_rectangle.X - graphicsComponent.CameraPosition.X) * graphicsComponent.scaling,
+ // (_rectangle.Y - graphicsComponent.CameraPosition.Y) * graphicsComponent.scaling,
+ // _rectangle.Width * graphicsComponent.scaling,
+ // _rectangle.Height * graphicsComponent.scaling), color.Value);
+
+ //TODO: debugTexture
+ }
+ #endregion
}
\ No newline at end of file
diff --git a/ZoFo/GameCore/GameObjects/LivingEntity.cs b/ZoFo/GameCore/GameObjects/LivingEntity.cs
deleted file mode 100644
index 44270fa..0000000
--- a/ZoFo/GameCore/GameObjects/LivingEntity.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-using System;
-
-namespace ZoFo.GameCore.GameObjects;
-public class LivingEntity : Entity
-{
-
-}
diff --git a/ZoFo/GameCore/GameObjects/MapObjects/MapObject.cs b/ZoFo/GameCore/GameObjects/MapObjects/MapObject.cs
new file mode 100644
index 0000000..51a3a4e
--- /dev/null
+++ b/ZoFo/GameCore/GameObjects/MapObjects/MapObject.cs
@@ -0,0 +1,42 @@
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZoFo.GameCore.GameManagers;
+using ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient;
+using ZoFo.GameCore.ZoFo_graphics;
+
+namespace ZoFo.GameCore.GameObjects.MapObjects
+{
+ public class MapObject : GameObject
+ {
+ public virtual bool IsColliderOn { get; protected set; } = true;//Who added that?
+ public Rectangle sourceRectangle;
+ public override GraphicsComponent graphicsComponent { get; } = new();
+
+ ///
+ /// Создается простой объект на карте - no animations, только где, насколько крупно рисовать, по какой сорс ректанглу рисовать и из какой текстуры
+ ///
+ ///
+ ///
+ ///
+ ///
+ public MapObject(Vector2 position, Vector2 size, Rectangle sourceRectangle, string textureName) : base(position)
+ {
+ this.sourceRectangle = sourceRectangle;
+ graphicsComponent.ObjectDrawRectangle = new Rectangle((int)position.X, (int)position.Y, (int)size.X, (int)size.Y);
+ graphicsComponent.BuildComponent(textureName);
+ graphicsComponent.LoadContent();
+
+ }
+ public override void Draw(SpriteBatch spriteBatch)
+ {
+ graphicsComponent.DrawAnimation(graphicsComponent.ObjectDrawRectangle, spriteBatch, sourceRectangle);
+ }
+
+ }
+}
diff --git a/ZoFo/GameCore/GameObjects/MapObjects/StopObjects/StopObject.cs b/ZoFo/GameCore/GameObjects/MapObjects/StopObjects/StopObject.cs
new file mode 100644
index 0000000..02f828e
--- /dev/null
+++ b/ZoFo/GameCore/GameObjects/MapObjects/StopObjects/StopObject.cs
@@ -0,0 +1,17 @@
+using Microsoft.Xna.Framework;
+using System;
+using ZoFo.GameCore.GameManagers.CollisionManager;
+using ZoFo.GameCore.ZoFo_graphics;
+
+namespace ZoFo.GameCore.GameObjects.MapObjects.StopObjects;
+
+public class StopObject : MapObject
+{
+ CollisionComponent collisionComponent;
+
+ protected StopObject(Vector2 position, Vector2 size, Rectangle sourceRectangle, string textureName) : base(position, size, sourceRectangle, textureName)
+ {
+ // TODO: Написать коллизию, пусть тразмер будет чисто таким же как и текстурка.
+ // Поменяйте уровень защиты конструктора, после снимите в MapManager комментарий в методе LoadMap с создания StopObject-а
+ }
+}
diff --git a/ZoFo/GameCore/GameObjects/MapObjects/Tiles/Tile.cs b/ZoFo/GameCore/GameObjects/MapObjects/Tiles/Tile.cs
new file mode 100644
index 0000000..eb166b8
--- /dev/null
+++ b/ZoFo/GameCore/GameObjects/MapObjects/Tiles/Tile.cs
@@ -0,0 +1,8 @@
+using System;
+
+namespace ZoFo.GameCore.GameObjects.MapObjects.Tiles;
+
+public class Tile
+{
+
+}
diff --git a/ZoFo/GameCore/GameObjects/Player.cs b/ZoFo/GameCore/GameObjects/Player.cs
deleted file mode 100644
index 5a033e3..0000000
--- a/ZoFo/GameCore/GameObjects/Player.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-using System;
-
-namespace ZoFo.GameCore.GameObjects;
-public class Player : LivingEntity
-{
-
-}
diff --git a/ZoFo/GameCore/GameObjects/Projectile.cs b/ZoFo/GameCore/GameObjects/Projectile.cs
deleted file mode 100644
index 80cbf5a..0000000
--- a/ZoFo/GameCore/GameObjects/Projectile.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-using System;
-
-namespace ZoFo.GameCore.GameObjects;
-public class Projectile : LivingEntity
-{
-
-}
diff --git a/ZoFo/GameCore/GameObjects/Rock.cs b/ZoFo/GameCore/GameObjects/Rock.cs
deleted file mode 100644
index 1ff7a29..0000000
--- a/ZoFo/GameCore/GameObjects/Rock.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-using System;
-
-namespace ZoFo.GameCore.GameObjects;
-public class Rock : Projectile
-{
-
-}
diff --git a/ZoFo/GameCore/GameObjects/StopObject.cs b/ZoFo/GameCore/GameObjects/StopObject.cs
deleted file mode 100644
index cddb0d5..0000000
--- a/ZoFo/GameCore/GameObjects/StopObject.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using System;
-
-namespace ZoFo.GameCore.GameObjects;
-
-public class StopObject
-{
-
-}
diff --git a/ZoFo/GameCore/GameObjects/Tile.cs b/ZoFo/GameCore/GameObjects/Tile.cs
deleted file mode 100644
index 16cc1c9..0000000
--- a/ZoFo/GameCore/GameObjects/Tile.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using System;
-
-namespace ZoFo.GameCore.GameObjects;
-
-public class Tile
-{
-
-}
diff --git a/ZoFo/GameCore/Server.cs b/ZoFo/GameCore/Server.cs
index 948ee0e..d11eee1 100644
--- a/ZoFo/GameCore/Server.cs
+++ b/ZoFo/GameCore/Server.cs
@@ -1,22 +1,139 @@
-using System;
+using Microsoft.Xna.Framework;
+using System;
using System.Collections.Generic;
using System.Linq;
+using System.Net;
using System.Text;
+using System.Text.Json;
using System.Threading.Tasks;
+using ZoFo.GameCore.GameManagers;
+using ZoFo.GameCore.GameManagers.MapManager;
+using ZoFo.GameCore.GameManagers.NetworkManager;
+using ZoFo.GameCore.GameManagers.NetworkManager.Updates;
+using ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient;
using ZoFo.GameCore.GameObjects;
+using ZoFo.GameCore.GameObjects.Entities;
+using ZoFo.GameCore.GameObjects.MapObjects;
namespace ZoFo.GameCore
{
public class Server
{
- private List gameObjects;
- // private List<> entity; //entity
+ private ServerNetworkManager networkManager;
+ private int ticks = 0;
+ public IPEndPoint MyIp { get { return networkManager.InfoConnect; } }
+ public Server()
+ {
+ networkManager = new ServerNetworkManager();
+ networkManager.GetDataSend += OnDataSend;
- public void OnDataSend(string data) { }
- public void CreateRoom() { }
- public void StartGame() { }
- public void EndGame() { }
+ }
+ #region server logic as App
+ //TODO Comment pls
+ public void OnDataSend(string data)
+ {
+ List updateDatas = JsonSerializer.Deserialize>(data);
+ for (int i = 0; i < updateDatas.Count; i++)
+ {
+ ProcessIUpdateData(updateDatas[i]);
+ }
+ }
+ ///
+ /// Обработка апдейтсов, которые нам прислал клиент
+ ///
+ ///
+ public void ProcessIUpdateData(UpdateData updateData)
+ {
+
+ //ТУТ Switch case будет честное слово
+ }
+
+ ///
+ /// Для красоты) Отдел Серверов
+ /// добавляет в лист updates новую data
+ ///
+ ///
+ public void AddData(UpdateData data)//добавляет в лист updates новую data
+ {
+ networkManager.AddData(data);
+ }
+
+ ///
+ /// Создает комнату и запускает ожидание подключений
+ ///
+ ///
+ public void CreateRoom(int players)
+ {
+ networkManager.Start(players);
+ }
+
+ ///
+ /// Запуск игры в комнате
+ ///
+ public void StartGame()
+ {
+
+ //TODO начинает рассылку и обмен пакетами игры
+ //Грузит карту
+
+ gameObjects = new List();
+ entities = new List();
+ new MapManager().LoadMap();
+
+ AppManager.Instance.server.RegisterGameObject(new EntittyForAnimationTests(new Vector2(40, 40)));
+ }
+
+ ///
+ /// Добавляет UpdateGameEnded и отключает игроков
+ ///
+ public void EndGame()
+ {
+ UpdateGameEnded gameEnded = new UpdateGameEnded();
+ networkManager.AddData(gameEnded);
+ networkManager.CloseConnection();
+ }
+ private List gameObjects = new List();
+ private List entities; //entity
+ public void Update(GameTime gameTime)
+ {
+ if (ticks == 3) //ОБРАБАТЫВАЕТСЯ 20 РАЗ В СЕКУНДУ
+ {
+ foreach (var go in gameObjects)
+ {
+ go.UpdateLogic(gameTime);
+ }
+ ticks = 0;
+ networkManager.SendData();
+ }
+ ticks++;
+ }
+
+ ///
+ /// Регистрирует игровой объект
+ ///
+ ///
+ public void RegisterGameObject(GameObject gameObject)
+ {
+ gameObjects.Add(gameObject);
+ if (gameObject is MapObject)
+ {
+ AddData(new UpdateTileCreated()
+ {
+ Position = (gameObject as MapObject).position,
+ sourceRectangle = (gameObject as MapObject).sourceRectangle,
+ Size = (gameObject as MapObject).graphicsComponent.ObjectDrawRectangle.Size,
+ tileSetName = (gameObject as MapObject).graphicsComponent.mainTextureName
+ });//TODO
+ return;
+ }
+
+ AddData(new UpdateGameObjectCreated()
+ { GameObjectType = gameObject.GetType().Name }
+ );
+
+ }
}
+ #endregion
}
diff --git a/ZoFo/GameCore/ZoFo_grafics/AnimationBuilder.cs b/ZoFo/GameCore/ZoFo_grafics/AnimationBuilder.cs
index d18303c..04b2cbf 100644
--- a/ZoFo/GameCore/ZoFo_grafics/AnimationBuilder.cs
+++ b/ZoFo/GameCore/ZoFo_grafics/AnimationBuilder.cs
@@ -13,11 +13,12 @@ namespace DangerousD.GameCore.Graphics
public void LoadAnimations()
{
Animations = new List();
- string[] animationFilesNames = Directory.GetFiles("../../../Content/animations");
+ string[] animationFilesNames = Directory.GetFiles("../../../Content/Textures/Animations");
StreamReader reader;
foreach (var fileName in animationFilesNames)
{
+ if (!fileName.EndsWith(".animation")) continue;
reader = new StreamReader(fileName);
string json = reader.ReadToEnd();
AnimationContainer animation = JsonConvert.DeserializeObject(json);
diff --git a/ZoFo/GameCore/ZoFo_grafics/GraphicsComponent.cs b/ZoFo/GameCore/ZoFo_grafics/GraphicsComponent.cs
index a60cee1..c0c0631 100644
--- a/ZoFo/GameCore/ZoFo_grafics/GraphicsComponent.cs
+++ b/ZoFo/GameCore/ZoFo_grafics/GraphicsComponent.cs
@@ -15,13 +15,18 @@ namespace ZoFo.GameCore.ZoFo_graphics
public class GraphicsComponent
{
+ public Rectangle ObjectDrawRectangle;
+
+
+
public event Action actionOfAnimationEnd;
private List animations;
private List textures;
- private List texturesNames;
+ public List texturesNames; //rethink public and following that errors
private AnimationContainer currentAnimation;
- static public int scaling = 4;
+ static public int scaling = 1;
public int parentId;
+ public bool reverse;
public AnimationContainer CurrentAnimation
{
get
@@ -60,8 +65,18 @@ namespace ZoFo.GameCore.ZoFo_graphics
buildSourceRectangle();
}
+ public string mainTextureName;//TODO костыль - пофиксить
public GraphicsComponent(string textureName)
{
+ BuildComponent(textureName);
+ }
+ public GraphicsComponent()
+ {
+ }
+ public void BuildComponent(string textureName)
+ {
+ mainTextureName = textureName;
+ //texturesNames.Add(textureName);//Added by SD
animations = new List();
textures = new List();
var texture = AppManager.Instance.Content.Load(textureName);
@@ -97,6 +112,11 @@ namespace ZoFo.GameCore.ZoFo_graphics
textures = new List();
texturesNames = new List();
+ if (animations is null)
+ {
+ return;
+ }
+
foreach (var animation in animations)
{
if (!texturesNames.Contains(animation.TextureName))
@@ -107,7 +127,7 @@ namespace ZoFo.GameCore.ZoFo_graphics
}
}
- public void StartAnimation(string startedanimationId)
+ public void StartAnimation(string startedanimationId, bool reverse = false)
{
/*
if (AppManager.Instance.multiPlayerStatus != MultiPlayerStatus.SinglePlayer)
@@ -119,8 +139,13 @@ namespace ZoFo.GameCore.ZoFo_graphics
}
}
*/
- currentFrame = 0;
+ this.reverse = reverse;
+
currentAnimation = animations.Find(x => x.Id == startedanimationId);
+ if (reverse)
+ currentFrame = currentAnimation.FramesCount;
+ else
+ currentFrame = 0;
buildSourceRectangle();
SetInterval();
@@ -135,25 +160,45 @@ namespace ZoFo.GameCore.ZoFo_graphics
SetInterval();
}
+ private void AnimationEnd()
+ {
+ if (!currentAnimation.IsCycle)
+ {
+ if (actionOfAnimationEnd != null)
+ {
+ actionOfAnimationEnd(currentAnimation.Id);
+ }
+ currentAnimation = neitralAnimation;
+
+ }
+
+ currentFrame = 0;
+ }
+
public void Update()
{
+ if (currentAnimation is null)
+ {
+ return;
+ }
if (interval == 0)
{
- currentFrame++;
- if (currentAnimation.FramesCount <= currentFrame)
+ if (reverse)
{
- if (!currentAnimation.IsCycle)
+ currentFrame--;
+ if (currentFrame <= 0)
{
- if (actionOfAnimationEnd != null)
- {
- actionOfAnimationEnd(currentAnimation.Id);
- }
- currentAnimation = neitralAnimation;
-
+ AnimationEnd();
+ reverse = false;
+ }
+ }
+ else
+ {
+ currentFrame++;
+ if (currentAnimation.FramesCount <= currentFrame)
+ {
+ AnimationEnd();
}
-
- currentFrame = 0;
-
}
buildSourceRectangle();
@@ -277,6 +322,6 @@ namespace ZoFo.GameCore.ZoFo_graphics
AppManager.Instance.DebugHUD.Set("CameraPosition", $"{CameraPosition.X}, {CameraPosition.Y}");
*/
}
- public static Point CameraPosition = new Point(-700, 300);
+ public static Point CameraPosition = new Point(0, 0);
}
}
diff --git a/ZoFo/ZoFo.csproj b/ZoFo/ZoFo.csproj
index afb5dfe..c3a2b36 100644
--- a/ZoFo/ZoFo.csproj
+++ b/ZoFo/ZoFo.csproj
@@ -10,6 +10,11 @@
app.manifest
Icon.ico
+
+
+
+
+
@@ -26,6 +31,10 @@
+
+
+
+