From 2a9d8ce41641af28a0a0894b26dab9b93ac05004 Mon Sep 17 00:00:00 2001 From: Magnus von Wachenfeldt Date: Fri, 4 Dec 2015 10:23:49 +0100 Subject: [PATCH] move to github --- .gitignore | 34 + Library/ICSharpCode.SharpZipLib.dll | Bin 0 -> 192512 bytes Library/NAudio.WindowsMediaFormat.dll | Bin 0 -> 82944 bytes Library/NAudio.dll | Bin 0 -> 457728 bytes Library/NVorbis.NAudioSupport.dll | Bin 0 -> 7168 bytes Library/NVorbis.OpenTKSupport.dll | Bin 0 -> 14336 bytes Library/NVorbis.dll | Bin 0 -> 68096 bytes .../Documentation/ChangedFromV2.txt | 10 + Lidgren.Network/Documentation/Discovery.html | 113 + .../Documentation/Improvements.txt | 22 + .../Documentation/PacketLayout.txt | 17 + .../Documentation/SimulatingBadNetwork.html | 115 + Lidgren.Network/Documentation/TODO.txt | 17 + Lidgren.Network/Documentation/Tutorial.html | 206 ++ .../Encryption/NetAESEncryption.cs | 26 + .../Encryption/NetBlockEncryptionBase.cs | 89 + .../Encryption/NetCryptoProviderBase.cs | 76 + .../Encryption/NetDESEncryption.cs | 26 + Lidgren.Network/Encryption/NetEncryption.cs | 45 + .../Encryption/NetRC2Encryption.cs | 26 + .../Encryption/NetTripleDESEncryption.cs | 26 + .../Encryption/NetXorEncryption.cs | 66 + .../Encryption/NetXteaEncryption.cs | 154 + Lidgren.Network/Lidgren.Network.csproj | 171 + Lidgren.Network/NamespaceDoc.cs | 14 + Lidgren.Network/NetBigInteger.cs | 2337 +++++++++++++ Lidgren.Network/NetBitVector.cs | 172 + Lidgren.Network/NetBitWriter.cs | 513 +++ Lidgren.Network/NetBuffer.Peek.cs | 312 ++ Lidgren.Network/NetBuffer.Read.Reflection.cs | 107 + Lidgren.Network/NetBuffer.Read.cs | 675 ++++ Lidgren.Network/NetBuffer.Write.Reflection.cs | 98 + Lidgren.Network/NetBuffer.Write.cs | 676 ++++ Lidgren.Network/NetBuffer.cs | 98 + Lidgren.Network/NetClient.cs | 171 + Lidgren.Network/NetConnection.Handshake.cs | 493 +++ Lidgren.Network/NetConnection.Latency.cs | 149 + Lidgren.Network/NetConnection.MTU.cs | 182 + Lidgren.Network/NetConnection.cs | 563 +++ Lidgren.Network/NetConnectionStatistics.cs | 212 ++ Lidgren.Network/NetConnectionStatus.cs | 68 + Lidgren.Network/NetConstants.cs | 57 + Lidgren.Network/NetDeliveryMethod.cs | 46 + Lidgren.Network/NetException.cs | 74 + Lidgren.Network/NetFragmentationHelper.cs | 175 + Lidgren.Network/NetFragmentationInfo.cs | 12 + Lidgren.Network/NetIncomingMessage.cs | 115 + Lidgren.Network/NetIncomingMessageType.cs | 105 + Lidgren.Network/NetMessageType.cs | 175 + Lidgren.Network/NetNatIntroduction.cs | 113 + Lidgren.Network/NetOutgoingMessage.cs | 135 + Lidgren.Network/NetPeer.Discovery.cs | 60 + Lidgren.Network/NetPeer.Fragmentation.cs | 167 + Lidgren.Network/NetPeer.Internal.cs | 762 +++++ Lidgren.Network/NetPeer.LatencySimulation.cs | 308 ++ Lidgren.Network/NetPeer.Logging.cs | 63 + Lidgren.Network/NetPeer.MessagePools.cs | 223 ++ Lidgren.Network/NetPeer.Send.cs | 237 ++ Lidgren.Network/NetPeer.cs | 357 ++ Lidgren.Network/NetPeerConfiguration.cs | 509 +++ Lidgren.Network/NetPeerStatistics.cs | 164 + Lidgren.Network/NetPeerStatus.cs | 49 + Lidgren.Network/NetQueue.cs | 335 ++ Lidgren.Network/NetRandom.Implementations.cs | 281 ++ Lidgren.Network/NetRandom.cs | 177 + Lidgren.Network/NetRandomSeed.cs | 47 + Lidgren.Network/NetReceiverChannelBase.cs | 18 + Lidgren.Network/NetReliableOrderedReceiver.cs | 87 + Lidgren.Network/NetReliableSenderChannel.cs | 257 ++ .../NetReliableSequencedReceiver.cs | 63 + .../NetReliableUnorderedReceiver.cs | 87 + Lidgren.Network/NetSRP.cs | 204 ++ Lidgren.Network/NetSendResult.cs | 30 + Lidgren.Network/NetSenderChannelBase.cs | 19 + Lidgren.Network/NetServer.cs | 70 + Lidgren.Network/NetStoredReliableMessage.cs | 19 + Lidgren.Network/NetTime.cs | 61 + Lidgren.Network/NetTuple.cs | 19 + Lidgren.Network/NetUPnP.cs | 266 ++ Lidgren.Network/NetUnreliableSenderChannel.cs | 128 + .../NetUnreliableSequencedReceiver.cs | 29 + .../NetUnreliableUnorderedReceiver.cs | 20 + Lidgren.Network/NetUtility.cs | 632 ++++ Lidgren.Network/Properties/AssemblyInfo.cs | 37 + Neoforce/ArchiveManager.cs | 286 ++ Neoforce/Bevel.cs | 306 ++ Neoforce/Button.cs | 294 ++ Neoforce/ButtonBase.cs | 117 + Neoforce/CheckBox.cs | 158 + Neoforce/ClipBox.cs | 65 + Neoforce/ClipControl.cs | 181 + Neoforce/ComboBox.cs | 418 +++ Neoforce/Component.cs | 105 + Neoforce/Console.cs | 595 ++++ Neoforce/Container.cs | 554 +++ Neoforce/ContentReaders.cs | 155 + Neoforce/ContextMenu.cs | 575 ++++ Neoforce/Control.cs | 3045 +++++++++++++++++ Neoforce/Cursor.cs | 56 + Neoforce/Delegates.cs | 53 + Neoforce/Dialog.cs | 148 + Neoforce/Disposable.cs | 93 + Neoforce/EventArgs.cs | 427 +++ Neoforce/EventedList.cs | 146 + Neoforce/ExitDialog.cs | 130 + Neoforce/External/Zip/Crc32.cs | 84 + Neoforce/External/Zip/Shared.cs | 112 + Neoforce/External/Zip/ZipDirEntry.cs | 149 + Neoforce/External/Zip/ZipEntry.cs | 699 ++++ Neoforce/External/Zip/ZipFile.cs | 505 +++ Neoforce/GroupBox.cs | 139 + Neoforce/GroupPanel.cs | 94 + Neoforce/ImageBox.cs | 197 ++ Neoforce/InputSystem.cs | 735 ++++ Neoforce/KeyboardLayout.cs | 461 +++ Neoforce/Label.cs | 104 + Neoforce/Layout.cs | 182 + Neoforce/ListBox.cs | 485 +++ Neoforce/MainMenu.cs | 362 ++ Neoforce/Manager.cs | 1849 ++++++++++ Neoforce/MenuBase.cs | 141 + Neoforce/ModalContainer.cs | 194 ++ Neoforce/NativeMethods.cs | 69 + Neoforce/Panel.cs | 280 ++ Neoforce/ProgressBar.cs | 264 ++ Neoforce/Properties/AssemblyInfo.cs | 36 + Neoforce/RadioButton.cs | 159 + Neoforce/Renderer.cs | 767 +++++ Neoforce/ScrollBar.cs | 493 +++ Neoforce/Sidebar.cs | 89 + Neoforce/SidebarPanel.cs | 77 + Neoforce/Skin.cs | 1259 +++++++ Neoforce/SpinBox.cs | 391 +++ Neoforce/StackPanel.cs | 160 + Neoforce/StatusBar.cs | 93 + Neoforce/TabControl.cs | 390 +++ Neoforce/TextBox.cs | 1445 ++++++++ Neoforce/TomShane.Neoforce.Controls.csproj | 115 + Neoforce/ToolBar.cs | 113 + Neoforce/ToolBarButton.cs | 90 + Neoforce/ToolBarPanel.cs | 135 + Neoforce/ToolTip.cs | 110 + Neoforce/TrackBar.cs | 341 ++ Neoforce/Types.cs | 178 + Neoforce/Unknown.cs | 61 + Neoforce/Utilities.cs | 85 + Neoforce/Window.cs | 491 +++ SpacePew.Common/Constants.cs | 15 + SpacePew.Common/Properties/AssemblyInfo.cs | 36 + SpacePew.Common/SpacePew.Common.csproj | 55 + SpacePew.Common/UdpNetworkPacketType.cs | 29 + .../SpacePew.Content/SpacePew.Content.csproj | 64 + .../SpacePew.Content.csproj.Linux.cachefile | 27 + .../SpacePew.Content.csproj.PSM.cachefile | 24 + .../SpacePew.Content.csproj.Windows.cachefile | 27 + .../Audio/Waves/beep.wav | Bin 0 -> 9702 bytes .../Audio/Waves/bingo.wav | Bin 0 -> 105884 bytes .../Audio/Waves/bullet_hit.wav | Bin 0 -> 25866 bytes .../Audio/Waves/bullet_sound.wav | Bin 0 -> 18524 bytes .../Audio/Waves/engine.wav | Bin 0 -> 237684 bytes .../Audio/Waves/explosion.wav | Bin 0 -> 180110 bytes .../Audio/Waves/land.wav | Bin 0 -> 66202 bytes .../Audio/Waves/message.wav | Bin 0 -> 140588 bytes .../Audio/Waves/thump.wav | Bin 0 -> 16346 bytes .../Fonts/ConsoleFont.spritefont | 60 + .../Fonts/Default.spritefont | 66 + .../Fonts/NetFont.spritefont | 60 + .../Fonts/ScoreBoardFont.spritefont | 60 + .../ParticleTextures/explosion.png | Bin 0 -> 102248 bytes .../ParticleTextures/smoke.bmp | Bin 0 -> 1048632 bytes .../SpacePew.ContentContent.contentproj | 192 ++ .../SpacePew.ContentContent/bullet.png | Bin 0 -> 1234 bytes .../SpacePew.ContentContent/explosion.png | Bin 0 -> 293314 bytes .../explosion_small.png | Bin 0 -> 1242 bytes .../SpacePew.ContentContent/longshot.png | Bin 0 -> 172 bytes .../SpacePew.ContentContent/player.png | Bin 0 -> 1283 bytes .../player_thrusting.png | Bin 0 -> 1281 bytes .../SpacePew.ContentContent/scoreboard.png | Bin 0 -> 7162 bytes .../SpacePew.ContentContent/stars.png | Bin 0 -> 2862 bytes .../transparent_pixel.png | Bin 0 -> 900 bytes SpacePew.MasterServer/App.config | 6 + SpacePew.MasterServer/GameServer.cs | 16 + SpacePew.MasterServer/Program.cs | 19 + .../Properties/AssemblyInfo.cs | 36 + SpacePew.MasterServer/Server.cs | 121 + .../SpacePew.MasterServer.csproj | 71 + SpacePew.sln | 561 +++ SpacePew/Arena.cs | 31 + SpacePew/Camera/Camera2D.cs | 93 + SpacePew/Camera/ICamera2D.cs | 72 + SpacePew/Camera/IFocusable.cs | 9 + SpacePew/Content/Skins/Blue.skin | Bin 0 -> 135023 bytes SpacePew/Content/Skins/Default.skin | Bin 0 -> 131349 bytes SpacePew/Content/Skins/Green.skin | Bin 0 -> 134943 bytes SpacePew/Content/Skins/Magenta.skin | Bin 0 -> 134915 bytes SpacePew/Content/Skins/Purple.skin | Bin 0 -> 135129 bytes SpacePew/Downloads/Levels/dummy.txt | 0 SpacePew/EntityFactory.cs | 88 + SpacePew/Extensions/LidgrenExtensions.cs | 294 ++ SpacePew/Extensions/RenderExtensions.cs | 42 + SpacePew/Game.ico | Bin 0 -> 4286 bytes SpacePew/GameThumbnail.png | Bin 0 -> 5734 bytes SpacePew/Hud.cs | 112 + SpacePew/Icon.ico | Bin 0 -> 32038 bytes SpacePew/KeyboardHelper.cs | 663 ++++ SpacePew/LevelLoader.cs | 181 + SpacePew/Levels/hippie.zip | Bin 0 -> 761321 bytes SpacePew/MainGame.cs | 483 +++ SpacePew/Minimap.cs | 111 + SpacePew/Models/EntityBase.cs | 197 ++ SpacePew/Models/Explosion.cs | 28 + SpacePew/Models/IEntity.cs | 28 + SpacePew/Models/IKillable.cs | 12 + SpacePew/Models/Level.cs | 301 ++ SpacePew/Models/MapHit.cs | 21 + SpacePew/Models/Player.cs | 295 ++ SpacePew/Models/Projectiles/BouncingBullet.cs | 18 + SpacePew/Models/Projectiles/Bullet.cs | 70 + SpacePew/Models/Projectiles/ClusterBomb.cs | 93 + SpacePew/Models/Projectiles/CollisionType.cs | 8 + SpacePew/Models/Projectiles/HomingBullet.cs | 91 + SpacePew/Models/Projectiles/IProjectile.cs | 12 + SpacePew/Models/Projectiles/LongShot.cs | 29 + SpacePew/Models/Projectiles/Missile.cs | 75 + SpacePew/Models/Projectiles/ProjectileBase.cs | 48 + SpacePew/Models/Weapons/Cannon.cs | 20 + SpacePew/Models/Weapons/ClusterLauncher.cs | 20 + SpacePew/Models/Weapons/IWeapon.cs | 13 + SpacePew/Models/Weapons/Launcher.cs | 20 + SpacePew/Models/Weapons/SecondaryCannon.cs | 24 + SpacePew/Models/Weapons/TriCannon.cs | 64 + SpacePew/Models/Weapons/WeaponBase.cs | 82 + SpacePew/Networking/NetworkMessage.cs | 19 + SpacePew/Networking/NetworkMessenger.cs | 374 ++ SpacePew/Networking/ScoreBoard.cs | 135 + SpacePew/Networking/ScoreBoardItem.cs | 16 + SpacePew/Networking/StreamingClient.cs | 64 + SpacePew/Networking/UdpBase.cs | 62 + SpacePew/Networking/UdpClient.cs | 586 ++++ SpacePew/Networking/UdpNetworkGui.cs | 361 ++ SpacePew/Networking/UdpServer.cs | 405 +++ .../ParticleSystem/ExplosionParticleSystem.cs | 46 + .../ExplosionSmokeParticleSystem.cs | 41 + SpacePew/ParticleSystem/Particle.cs | 55 + SpacePew/ParticleSystem/ParticleSystem.cs | 194 ++ .../SmokePlumeParticleSystem.cs | 61 + SpacePew/Program.cs | 26 + SpacePew/Properties/AssemblyInfo.cs | 33 + SpacePew/SoundManager.cs | 41 + SpacePew/SpacePew.csproj | 236 ++ SpacePew/TextureManager.cs | 29 + SpacePew/app.config | 3 + 252 files changed, 45041 insertions(+) create mode 100644 .gitignore create mode 100644 Library/ICSharpCode.SharpZipLib.dll create mode 100644 Library/NAudio.WindowsMediaFormat.dll create mode 100644 Library/NAudio.dll create mode 100644 Library/NVorbis.NAudioSupport.dll create mode 100644 Library/NVorbis.OpenTKSupport.dll create mode 100644 Library/NVorbis.dll create mode 100644 Lidgren.Network/Documentation/ChangedFromV2.txt create mode 100644 Lidgren.Network/Documentation/Discovery.html create mode 100644 Lidgren.Network/Documentation/Improvements.txt create mode 100644 Lidgren.Network/Documentation/PacketLayout.txt create mode 100644 Lidgren.Network/Documentation/SimulatingBadNetwork.html create mode 100644 Lidgren.Network/Documentation/TODO.txt create mode 100644 Lidgren.Network/Documentation/Tutorial.html create mode 100644 Lidgren.Network/Encryption/NetAESEncryption.cs create mode 100644 Lidgren.Network/Encryption/NetBlockEncryptionBase.cs create mode 100644 Lidgren.Network/Encryption/NetCryptoProviderBase.cs create mode 100644 Lidgren.Network/Encryption/NetDESEncryption.cs create mode 100644 Lidgren.Network/Encryption/NetEncryption.cs create mode 100644 Lidgren.Network/Encryption/NetRC2Encryption.cs create mode 100644 Lidgren.Network/Encryption/NetTripleDESEncryption.cs create mode 100644 Lidgren.Network/Encryption/NetXorEncryption.cs create mode 100644 Lidgren.Network/Encryption/NetXteaEncryption.cs create mode 100644 Lidgren.Network/Lidgren.Network.csproj create mode 100644 Lidgren.Network/NamespaceDoc.cs create mode 100644 Lidgren.Network/NetBigInteger.cs create mode 100644 Lidgren.Network/NetBitVector.cs create mode 100644 Lidgren.Network/NetBitWriter.cs create mode 100644 Lidgren.Network/NetBuffer.Peek.cs create mode 100644 Lidgren.Network/NetBuffer.Read.Reflection.cs create mode 100644 Lidgren.Network/NetBuffer.Read.cs create mode 100644 Lidgren.Network/NetBuffer.Write.Reflection.cs create mode 100644 Lidgren.Network/NetBuffer.Write.cs create mode 100644 Lidgren.Network/NetBuffer.cs create mode 100644 Lidgren.Network/NetClient.cs create mode 100644 Lidgren.Network/NetConnection.Handshake.cs create mode 100644 Lidgren.Network/NetConnection.Latency.cs create mode 100644 Lidgren.Network/NetConnection.MTU.cs create mode 100644 Lidgren.Network/NetConnection.cs create mode 100644 Lidgren.Network/NetConnectionStatistics.cs create mode 100644 Lidgren.Network/NetConnectionStatus.cs create mode 100644 Lidgren.Network/NetConstants.cs create mode 100644 Lidgren.Network/NetDeliveryMethod.cs create mode 100644 Lidgren.Network/NetException.cs create mode 100644 Lidgren.Network/NetFragmentationHelper.cs create mode 100644 Lidgren.Network/NetFragmentationInfo.cs create mode 100644 Lidgren.Network/NetIncomingMessage.cs create mode 100644 Lidgren.Network/NetIncomingMessageType.cs create mode 100644 Lidgren.Network/NetMessageType.cs create mode 100644 Lidgren.Network/NetNatIntroduction.cs create mode 100644 Lidgren.Network/NetOutgoingMessage.cs create mode 100644 Lidgren.Network/NetPeer.Discovery.cs create mode 100644 Lidgren.Network/NetPeer.Fragmentation.cs create mode 100644 Lidgren.Network/NetPeer.Internal.cs create mode 100644 Lidgren.Network/NetPeer.LatencySimulation.cs create mode 100644 Lidgren.Network/NetPeer.Logging.cs create mode 100644 Lidgren.Network/NetPeer.MessagePools.cs create mode 100644 Lidgren.Network/NetPeer.Send.cs create mode 100644 Lidgren.Network/NetPeer.cs create mode 100644 Lidgren.Network/NetPeerConfiguration.cs create mode 100644 Lidgren.Network/NetPeerStatistics.cs create mode 100644 Lidgren.Network/NetPeerStatus.cs create mode 100644 Lidgren.Network/NetQueue.cs create mode 100644 Lidgren.Network/NetRandom.Implementations.cs create mode 100644 Lidgren.Network/NetRandom.cs create mode 100644 Lidgren.Network/NetRandomSeed.cs create mode 100644 Lidgren.Network/NetReceiverChannelBase.cs create mode 100644 Lidgren.Network/NetReliableOrderedReceiver.cs create mode 100644 Lidgren.Network/NetReliableSenderChannel.cs create mode 100644 Lidgren.Network/NetReliableSequencedReceiver.cs create mode 100644 Lidgren.Network/NetReliableUnorderedReceiver.cs create mode 100644 Lidgren.Network/NetSRP.cs create mode 100644 Lidgren.Network/NetSendResult.cs create mode 100644 Lidgren.Network/NetSenderChannelBase.cs create mode 100644 Lidgren.Network/NetServer.cs create mode 100644 Lidgren.Network/NetStoredReliableMessage.cs create mode 100644 Lidgren.Network/NetTime.cs create mode 100644 Lidgren.Network/NetTuple.cs create mode 100644 Lidgren.Network/NetUPnP.cs create mode 100644 Lidgren.Network/NetUnreliableSenderChannel.cs create mode 100644 Lidgren.Network/NetUnreliableSequencedReceiver.cs create mode 100644 Lidgren.Network/NetUnreliableUnorderedReceiver.cs create mode 100644 Lidgren.Network/NetUtility.cs create mode 100644 Lidgren.Network/Properties/AssemblyInfo.cs create mode 100644 Neoforce/ArchiveManager.cs create mode 100644 Neoforce/Bevel.cs create mode 100644 Neoforce/Button.cs create mode 100644 Neoforce/ButtonBase.cs create mode 100644 Neoforce/CheckBox.cs create mode 100644 Neoforce/ClipBox.cs create mode 100644 Neoforce/ClipControl.cs create mode 100644 Neoforce/ComboBox.cs create mode 100644 Neoforce/Component.cs create mode 100644 Neoforce/Console.cs create mode 100644 Neoforce/Container.cs create mode 100644 Neoforce/ContentReaders.cs create mode 100644 Neoforce/ContextMenu.cs create mode 100644 Neoforce/Control.cs create mode 100644 Neoforce/Cursor.cs create mode 100644 Neoforce/Delegates.cs create mode 100644 Neoforce/Dialog.cs create mode 100644 Neoforce/Disposable.cs create mode 100644 Neoforce/EventArgs.cs create mode 100644 Neoforce/EventedList.cs create mode 100644 Neoforce/ExitDialog.cs create mode 100644 Neoforce/External/Zip/Crc32.cs create mode 100644 Neoforce/External/Zip/Shared.cs create mode 100644 Neoforce/External/Zip/ZipDirEntry.cs create mode 100644 Neoforce/External/Zip/ZipEntry.cs create mode 100644 Neoforce/External/Zip/ZipFile.cs create mode 100644 Neoforce/GroupBox.cs create mode 100644 Neoforce/GroupPanel.cs create mode 100644 Neoforce/ImageBox.cs create mode 100644 Neoforce/InputSystem.cs create mode 100644 Neoforce/KeyboardLayout.cs create mode 100644 Neoforce/Label.cs create mode 100644 Neoforce/Layout.cs create mode 100644 Neoforce/ListBox.cs create mode 100644 Neoforce/MainMenu.cs create mode 100644 Neoforce/Manager.cs create mode 100644 Neoforce/MenuBase.cs create mode 100644 Neoforce/ModalContainer.cs create mode 100644 Neoforce/NativeMethods.cs create mode 100644 Neoforce/Panel.cs create mode 100644 Neoforce/ProgressBar.cs create mode 100644 Neoforce/Properties/AssemblyInfo.cs create mode 100644 Neoforce/RadioButton.cs create mode 100644 Neoforce/Renderer.cs create mode 100644 Neoforce/ScrollBar.cs create mode 100644 Neoforce/Sidebar.cs create mode 100644 Neoforce/SidebarPanel.cs create mode 100644 Neoforce/Skin.cs create mode 100644 Neoforce/SpinBox.cs create mode 100644 Neoforce/StackPanel.cs create mode 100644 Neoforce/StatusBar.cs create mode 100644 Neoforce/TabControl.cs create mode 100644 Neoforce/TextBox.cs create mode 100644 Neoforce/TomShane.Neoforce.Controls.csproj create mode 100644 Neoforce/ToolBar.cs create mode 100644 Neoforce/ToolBarButton.cs create mode 100644 Neoforce/ToolBarPanel.cs create mode 100644 Neoforce/ToolTip.cs create mode 100644 Neoforce/TrackBar.cs create mode 100644 Neoforce/Types.cs create mode 100644 Neoforce/Unknown.cs create mode 100644 Neoforce/Utilities.cs create mode 100644 Neoforce/Window.cs create mode 100644 SpacePew.Common/Constants.cs create mode 100644 SpacePew.Common/Properties/AssemblyInfo.cs create mode 100644 SpacePew.Common/SpacePew.Common.csproj create mode 100644 SpacePew.Common/UdpNetworkPacketType.cs create mode 100644 SpacePew.Content/SpacePew.Content/SpacePew.Content.csproj create mode 100644 SpacePew.Content/SpacePew.Content/SpacePew.Content.csproj.Linux.cachefile create mode 100644 SpacePew.Content/SpacePew.Content/SpacePew.Content.csproj.PSM.cachefile create mode 100644 SpacePew.Content/SpacePew.Content/SpacePew.Content.csproj.Windows.cachefile create mode 100644 SpacePew.Content/SpacePew.ContentContent/Audio/Waves/beep.wav create mode 100644 SpacePew.Content/SpacePew.ContentContent/Audio/Waves/bingo.wav create mode 100644 SpacePew.Content/SpacePew.ContentContent/Audio/Waves/bullet_hit.wav create mode 100644 SpacePew.Content/SpacePew.ContentContent/Audio/Waves/bullet_sound.wav create mode 100644 SpacePew.Content/SpacePew.ContentContent/Audio/Waves/engine.wav create mode 100644 SpacePew.Content/SpacePew.ContentContent/Audio/Waves/explosion.wav create mode 100644 SpacePew.Content/SpacePew.ContentContent/Audio/Waves/land.wav create mode 100644 SpacePew.Content/SpacePew.ContentContent/Audio/Waves/message.wav create mode 100644 SpacePew.Content/SpacePew.ContentContent/Audio/Waves/thump.wav create mode 100644 SpacePew.Content/SpacePew.ContentContent/Fonts/ConsoleFont.spritefont create mode 100644 SpacePew.Content/SpacePew.ContentContent/Fonts/Default.spritefont create mode 100644 SpacePew.Content/SpacePew.ContentContent/Fonts/NetFont.spritefont create mode 100644 SpacePew.Content/SpacePew.ContentContent/Fonts/ScoreBoardFont.spritefont create mode 100644 SpacePew.Content/SpacePew.ContentContent/ParticleTextures/explosion.png create mode 100644 SpacePew.Content/SpacePew.ContentContent/ParticleTextures/smoke.bmp create mode 100644 SpacePew.Content/SpacePew.ContentContent/SpacePew.ContentContent.contentproj create mode 100644 SpacePew.Content/SpacePew.ContentContent/bullet.png create mode 100644 SpacePew.Content/SpacePew.ContentContent/explosion.png create mode 100644 SpacePew.Content/SpacePew.ContentContent/explosion_small.png create mode 100644 SpacePew.Content/SpacePew.ContentContent/longshot.png create mode 100644 SpacePew.Content/SpacePew.ContentContent/player.png create mode 100644 SpacePew.Content/SpacePew.ContentContent/player_thrusting.png create mode 100644 SpacePew.Content/SpacePew.ContentContent/scoreboard.png create mode 100644 SpacePew.Content/SpacePew.ContentContent/stars.png create mode 100644 SpacePew.Content/SpacePew.ContentContent/transparent_pixel.png create mode 100644 SpacePew.MasterServer/App.config create mode 100644 SpacePew.MasterServer/GameServer.cs create mode 100644 SpacePew.MasterServer/Program.cs create mode 100644 SpacePew.MasterServer/Properties/AssemblyInfo.cs create mode 100644 SpacePew.MasterServer/Server.cs create mode 100644 SpacePew.MasterServer/SpacePew.MasterServer.csproj create mode 100644 SpacePew.sln create mode 100644 SpacePew/Arena.cs create mode 100644 SpacePew/Camera/Camera2D.cs create mode 100644 SpacePew/Camera/ICamera2D.cs create mode 100644 SpacePew/Camera/IFocusable.cs create mode 100644 SpacePew/Content/Skins/Blue.skin create mode 100644 SpacePew/Content/Skins/Default.skin create mode 100644 SpacePew/Content/Skins/Green.skin create mode 100644 SpacePew/Content/Skins/Magenta.skin create mode 100644 SpacePew/Content/Skins/Purple.skin create mode 100644 SpacePew/Downloads/Levels/dummy.txt create mode 100644 SpacePew/EntityFactory.cs create mode 100644 SpacePew/Extensions/LidgrenExtensions.cs create mode 100644 SpacePew/Extensions/RenderExtensions.cs create mode 100644 SpacePew/Game.ico create mode 100644 SpacePew/GameThumbnail.png create mode 100644 SpacePew/Hud.cs create mode 100644 SpacePew/Icon.ico create mode 100644 SpacePew/KeyboardHelper.cs create mode 100644 SpacePew/LevelLoader.cs create mode 100644 SpacePew/Levels/hippie.zip create mode 100644 SpacePew/MainGame.cs create mode 100644 SpacePew/Minimap.cs create mode 100644 SpacePew/Models/EntityBase.cs create mode 100644 SpacePew/Models/Explosion.cs create mode 100644 SpacePew/Models/IEntity.cs create mode 100644 SpacePew/Models/IKillable.cs create mode 100644 SpacePew/Models/Level.cs create mode 100644 SpacePew/Models/MapHit.cs create mode 100644 SpacePew/Models/Player.cs create mode 100644 SpacePew/Models/Projectiles/BouncingBullet.cs create mode 100644 SpacePew/Models/Projectiles/Bullet.cs create mode 100644 SpacePew/Models/Projectiles/ClusterBomb.cs create mode 100644 SpacePew/Models/Projectiles/CollisionType.cs create mode 100644 SpacePew/Models/Projectiles/HomingBullet.cs create mode 100644 SpacePew/Models/Projectiles/IProjectile.cs create mode 100644 SpacePew/Models/Projectiles/LongShot.cs create mode 100644 SpacePew/Models/Projectiles/Missile.cs create mode 100644 SpacePew/Models/Projectiles/ProjectileBase.cs create mode 100644 SpacePew/Models/Weapons/Cannon.cs create mode 100644 SpacePew/Models/Weapons/ClusterLauncher.cs create mode 100644 SpacePew/Models/Weapons/IWeapon.cs create mode 100644 SpacePew/Models/Weapons/Launcher.cs create mode 100644 SpacePew/Models/Weapons/SecondaryCannon.cs create mode 100644 SpacePew/Models/Weapons/TriCannon.cs create mode 100644 SpacePew/Models/Weapons/WeaponBase.cs create mode 100644 SpacePew/Networking/NetworkMessage.cs create mode 100644 SpacePew/Networking/NetworkMessenger.cs create mode 100644 SpacePew/Networking/ScoreBoard.cs create mode 100644 SpacePew/Networking/ScoreBoardItem.cs create mode 100644 SpacePew/Networking/StreamingClient.cs create mode 100644 SpacePew/Networking/UdpBase.cs create mode 100644 SpacePew/Networking/UdpClient.cs create mode 100644 SpacePew/Networking/UdpNetworkGui.cs create mode 100644 SpacePew/Networking/UdpServer.cs create mode 100644 SpacePew/ParticleSystem/ExplosionParticleSystem.cs create mode 100644 SpacePew/ParticleSystem/ExplosionSmokeParticleSystem.cs create mode 100644 SpacePew/ParticleSystem/Particle.cs create mode 100644 SpacePew/ParticleSystem/ParticleSystem.cs create mode 100644 SpacePew/ParticleSystem/SmokePlumeParticleSystem.cs create mode 100644 SpacePew/Program.cs create mode 100644 SpacePew/Properties/AssemblyInfo.cs create mode 100644 SpacePew/SoundManager.cs create mode 100644 SpacePew/SpacePew.csproj create mode 100644 SpacePew/TextureManager.cs create mode 100644 SpacePew/app.config diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0698168 --- /dev/null +++ b/.gitignore @@ -0,0 +1,34 @@ +# User-specific files +*.suo +*.user + +# Build results +Debug/ +Release/ +*.ncb +*.aps +*.obj +.builds +TestResult.xml +output/ +*.vshost.exe +*.Publish.xml + +# ReSharper is a .NET coding add-in +_ReSharper* +*.ReSharper + +# Others +**/[Bb]in +**/[Oo]bj +sql +TestResults +*.Cache +ClientBin +stylecop.* +~$* +*.dbmdl +*.log +*.log.20* +AssemblyCache.config +GravityForce/Content/obj/GravityForceContent.contentproj.XactOutput.FileList.txt diff --git a/Library/ICSharpCode.SharpZipLib.dll b/Library/ICSharpCode.SharpZipLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..e829ebf4baa5601ed650a56b821e266ef0c0d9cc GIT binary patch literal 192512 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�|E}~iBJT{unWB(}k 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 literal 0 HcmV?d00001 diff --git a/Library/NAudio.WindowsMediaFormat.dll b/Library/NAudio.WindowsMediaFormat.dll new file mode 100644 index 0000000000000000000000000000000000000000..ca046ea4bf5d397944337c257d4c22e1221b6756 GIT binary patch literal 82944 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 kp@hy6Drk#4|qPrLz- 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

cVBZkHvy`x^~tDvxk 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 z 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 B>IVP- literal 0 HcmV?d00001 diff --git a/Library/NVorbis.NAudioSupport.dll b/Library/NVorbis.NAudioSupport.dll new file mode 100644 index 0000000000000000000000000000000000000000..b4c3d60852b31bc4c050c41192223279f5970bf8 GIT binary patch literal 7168 zcmeHLYiu0V6+Sbwv)-&9*lXg%35H3W$J!)|<2-;8fgNw0m^ilaI(A;IGu|EBlg#dH zXJ(x^1R5lgDiu_qidOVVfgh!mwy0GJR7e4#RDDnhRFzZ}ZKx;(wSxXYr9uMwojbGM zT{}G5f313V=gd8id+vGMd*;sU-hU4%L=?jH!3RWVap%@0;75a#VAoysR2}_z(eo?L zO8w8T7@0O*E$`SYF@NnTMcRTEtfO4z6VVI%Gut}a|e^`bBPb~AzP7wse<=-d?QI>n;=FWm!_NoaRM z?-+Nwh%Ry<=C?ycHK6r(5?wK$_ffb;6e;6JfbT5B6P|I*1O93w0C>XJz;0loX+(z- zj_ag>3ER5RVMm*Am9;KdpKuJzh9KKYhj6j3Ww^>(7tyvdRCLdAT+!GznN+%~mFQd@ zktC@9K6p`%!-S};xV5<51~nmBzLjq_v_^yOW$4C{mFR6SGt~au;-DtC;ggU0va)WO zuWwx}&>Q0^F860u;s|ZD{Yv>(F$Y{}?2zet++j^aFaRqo8jVqWF%J}iHi8?q_6Nuk zfgmQ_>bv$IZpZx+dX`q`nRA!*2!tKB_RrI!bSN|=G-Itc9qwGD$aXUXH&ih#P(63%! zyGFemlS->kG9C?o(NwRgtsu$aCN;hYJ8{|m>Tr`1s)}EU8LHZE3``5D_EkJ(XE1?Q zj;tt0Rx*NwU=4@bSIWw5qB9py7|no^n_Dxw=NlVkGx zi;;`v5i!r)Bv*qwhpa0{)|VrRa^#wFq@x_!z(}~Awxw>~CIvf>_wh_;q9d`nj=H!PS8K|1%-odA5*ZBQn$o%_MHkTLve&v}PhS%E*MVPvC#~Bo zdjdE&tPN>w$%BiKTcUSYZ{)fH5o+;yqSRn%h?;`j5bPv`ThLjK``E8y4C9D3S~Tz= zOrN1)V6)_)h@V0~O!ooS(WCSb`sW1qFZ42GPDl>uyXA*iUYSy&bdP|K33y(>KML3! zdKcXFA(rVCa3+)v?V>MW@+dtSx<3@9-wC*0bwDu${Dy!(67VSjpAqn7_5M(dI>Rpu z%h?C^hJW?6iZ&zWK6VzGB>E+6Y@l|j1N|d%frd1eKfUxNih*)!4qJlA{#0Pk(VK{- zLazwyeB>Xr5>fhFfT_}2V4GGD+WAPmz)l2Mi*z-37krGiN}FKI4cG-luSr{_t$4QV z64>cTx0Ix6+UsL9ChY`f1UyUX2j&FW=cOTF#{=wZ(q3S92IGDJEj9G>fcGrM)zF0i z`;DXnOSJOrrz5X{S4%ep*gFE-8DLSFd3yqExjYGMBEZ(jhk@AvwozUS>_mX+vJLEv z!0ugoOSoCWCPhrwD-5>?*dyR>0aJi7?FUpy{}75Vxm%HG5oBv|HP9`@x!Nb7E}$vk zX9b)EY@s_u|BQh50zORN2Gr>hz@5;=unjN<_)e%FFs$}tZ#1gk74*je--OKdBKK{y zMLkQ8Q&N2zGAzGA$hXlR(61+615XNVkJBCMd5pbV{S`eUW_f{rroIHq3+h%t&U2f{ zZyRx5UlB4j^iP%PYMAr)66S29%foEds_=XChR|F?JHoQmhLyu~&R83sb__W~ZN!;r zBhE-0aV8S9oQ9+XwUQ2)qQ?NMsRgi+IsgyQPXMo`9N z3n(e~fg4fo2W(JS!&>E=$ZiO0fln~JXRGj&QDYcJMgD8x0k48uaO=cssHe-&Zvd2$ z%Lc$k{A3)&76UFO-o;JS47ddGkZCE_#_JS1i3u?WN^j6M<1T^XS3f515*%4TA4p^d zSfotup-ad)#Zg;#+nIu8+(-kXwliV6iGl7y#knXN>7H#;~Dh4Cm6K z?cyJhcma=Zzb}Vy(QnRjSWT`J{x_R5xCoF^dQhGLT8AFaeW3v7}9yf;t zh6QE>CX7QVi?U>|?PPV2#*dcziL_@s!BmO9K?;oU=QL=_@W#tVGTLwCro3sv8M0l| zGwmF?pwA)WX*)M#I4&653X_wVn@te|`rIKMZz6_gI6c#PZpxq@%g~+qM4rYsq{lAg zJQ^ri7W;o_gU~X7le*9D%VmsXV)ps89fmib#9Dg_j$`D4(PCgFg=O~S^Myu z12AA`&75wPlltwWl`^A7E`vadIqYl}bGQML^K>(3ID-huG~xg)F7^2<#djj*>0ZH? z=B`Uy=UIN^k@4|udin^C6}_fmWhh9&T*McKwIX`+!d2;Ug}3uOt?)ANu&3x4tTMU$`+ z&8(5=%VG7}`IOX=tf`s|!na3_exl?W*2s#I7*s%0tqUV;>4f}qHPzvh$ZXN-&x=ys+G zymtl*-r(dg7l`f0(uPPb^*VO8IF9R0`M8m3u5!Hg%yh}K6k>#;85E&z$I)jAr|t9+ zPO>OUzGotbB4|4d>{R%aDJkIq?9|;+v0{78T&A=+g+JwmD0S5I($hW#n>>eQZf26Y zrI2=@FX7T_YFJ!j;DRgFzWV@o;W8Ae#kdLPDb)+2CuS zY2<4$h3qKk4ow77E@X-$SBR(Cnw?K7`97BvzP_nJrqOc|Gi3p85XutJJNAS^mO ziY4lxrv-YcCAK;o_E~Y(9H%HQ8CRq#?hi)4E)-{RfY@p_reSxOHu} zl8s4JTk)tTx=NyDK1p-^$Gm(q0C5`Xr}33#IF(Fg2i|xz_S{Var)y5NeeSKHZ}FJSrw$GqIBy&b>^)fF z`$2o+F!*?AyGBuB-a#mznSh%A>h`_h8yq|FYwl~@TiA-<>MA+oJ+_mytlfC*`-eHh z5T`?y`d~G5@n?Wf*!aDdaMGodl><2SL|7IJ=q$(I4)=E9TPoIXvE8X`LU$Bz595H_ z@vfhuJ{qI};C+C-=yQ8I^w#_S`I)gW&e8t;CUN(_DfkO9AmEn7B|)o>I@61)!MAqGp;ST*!K~9RF*`v`AOlxGJcwrtgZAeQ4y2MxfAfg!jI?>-mE0*hrTJHjU$^E z-;GRArr`^TXjjrSypd}k5*v*=VeJM$ZU=?UgCa6hBHL_pF>dUEAL;+Zc0YbY&~3w? zf_Q?KqQPsTGTWO(yesABM}2%52RaC!GH{fTZHnAYCl0 OK_55d|NQ@*2>c5@9n56_ literal 0 HcmV?d00001 diff --git a/Library/NVorbis.OpenTKSupport.dll b/Library/NVorbis.OpenTKSupport.dll new file mode 100644 index 0000000000000000000000000000000000000000..305c83053adcef23b065b0b7c158e306a1127e14 GIT binary patch literal 14336 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 L-v3|!XCm;Qc7^fM literal 0 HcmV?d00001 diff --git a/Library/NVorbis.dll b/Library/NVorbis.dll new file mode 100644 index 0000000000000000000000000000000000000000..282aca69eb65adc73295418cb9f5bdd7a652eb60 GIT binary patch literal 68096 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 + + + + Peer/server discovery + + + + + + +
+

Peer/server discovery

+

+ Peer discovery is the process of clients detecting what servers are available. Discovery requests can be made in two ways; + locally as a broadcast, which will send a signal to all peers on your subnet. Secondly you can contact an ip address directly + and query it if a server is running. +

+

Responding to discovery requests are done in the same way regardless of how the request is made.

+ +

Here's how to do on the client side; ie. the side which makes a request:

+
+
// Enable DiscoveryResponse messages
+
config.EnableMessageType(NetIncomingMessageType.DiscoveryResponse);
+
 
+
// Emit a discovery signal
+
Client.DiscoverLocalPeers(14242);
+
+ +

This will send a discovery signal to your subnet; Here's how to receive the signal on the server side, and send a response back to the client:

+ +
+
// Enable DiscoveryRequest messages
+
config.EnableMessageType(NetIncomingMessageType.DiscoveryRequest);
+
 
+
// Standard message reading loop
+
while ((inc = Server.ReadMessage()) != null)
+
{
+
    switch (inc.MessageType)
+
    {
+
        case NetIncomingMessageType.DiscoveryRequest:
+
 
+
            // Create a response and write some example data to it
+
            NetOutgoingMessage response = Server.CreateMessage();
+
            response.Write("My server name");
+
 
+
            // Send the response to the sender of the request
+
            Server.SendDiscoveryResponse(response, inc.SenderEndpoint);
+
            break;
+
+ +

When the response then reaches the client, you can read the data you wrote on the server:

+ +
+
// Standard message reading loop
+
while ((inc = Client.ReadMessage()) != null)
+
{
+
    switch (inc.MessageType)
+
    {
+
        case NetIncomingMessageType.DiscoveryResponse:
+
 
+
            Console.WriteLine("Found server at " + inc.SenderEndpoint + " name: " + inc.ReadString());
+
            break;
+
+
+ + diff --git a/Lidgren.Network/Documentation/Improvements.txt b/Lidgren.Network/Documentation/Improvements.txt new file mode 100644 index 0000000..5ef9228 --- /dev/null +++ b/Lidgren.Network/Documentation/Improvements.txt @@ -0,0 +1,22 @@ + +Improvements over last version of library: + +* New delivery type: Reliable sequenced (Lost packets are resent but late arrivals are dropped) +* Disconnects and shutdown requests are now queued properly, so calling shutdown will still send any queued messages before shutting down +* All messages are pooled/recycled for zero garbage +* Reduced CPU usage and lower latencies (in the <1 ms range, but still) due to better socket polling +* All public members of NetPeer/NetConnection are completely thread safe +* Larger number of delivery channels +* More exact roundtrip measurement +* Method serialize entire objects via reflection +* Unique identifier now exists for all peers/connections +* More flexible peer discovery; filters possible and arbitrary data can be sent with response +* Much better protection against malformed messages crashing the app + +API enhancements: +* NetPeerConfiguration immutable properties now locked once NetPeer is initialized +* Messages cannot be send twice by accident +* Impossible to confuse sending and receiving buffers since they're different classes +* No more confusion if user should create a buffer or preallocate and reuse + + diff --git a/Lidgren.Network/Documentation/PacketLayout.txt b/Lidgren.Network/Documentation/PacketLayout.txt new file mode 100644 index 0000000..d709619 --- /dev/null +++ b/Lidgren.Network/Documentation/PacketLayout.txt @@ -0,0 +1,17 @@ + +PER MESSAGE: +7 bits - NetMessageType +1 bit - Is a message fragment? + +[8 bits NetMessageLibraryType, if NetMessageType == Library] + +[16 bits sequence number, if NetMessageType >= UserSequenced] + +8/16 bits - Payload length in bits (variable size ushort) + +[16 bits fragments group id, if fragmented] +[16 bits fragments total count, if fragmented] +[16 bits fragment number, if fragmented] + +[x - Payload] if length > 0 + diff --git a/Lidgren.Network/Documentation/SimulatingBadNetwork.html b/Lidgren.Network/Documentation/SimulatingBadNetwork.html new file mode 100644 index 0000000..80c6a18 --- /dev/null +++ b/Lidgren.Network/Documentation/SimulatingBadNetwork.html @@ -0,0 +1,115 @@ + + + + + Lidgren tutorial + + + + + + +
+

Simulating bad network conditions

+

+ On the internet, your packets are likely to run in to all kinds of trouble. They will be delayed and lost and they might even arrive multiple times at the destination. Lidgren has a few option to simulate how your application or game will react when this happens.
+ They are all configured using the NetPeerConfiguration class - these properties exists:

+

+

+ + + + + + + + + + + + + + + + + + + + + + +
+ SimulatedLoss + +   + + This is a float which simulates lost packets. A value of 0 will disable this feature, a value of 0.5f will make half of your sent packets disappear, chosen randomly. Note that packets may contain several messages - this is the amount of packets lost. +
+   +
+ SimulatedDuplicatesChance + +   + + This is a float which determines the chance that a packet will be duplicated at the destination. 0 means no packets will be duplicated, 0.5f means that on average, every other packet will be duplicated. +
+   +
+ SimulatedMinimumLatency
+ SimulatedRandomLatency +
+   + + These two properties control simulating delay of packets in seconds (not milliseconds, use 0.05 for 50 ms of lag). They work on top of the actual network delay and the total delay will be:
+ Actual one way latency + SimulatedMinimumLatency + [Randomly per packet 0 to SimulatedRandomLatency seconds] +
+ +
+

It's recommended to assume symmetric condtions and configure server and client with the same simulation settings.

+

Simulating bad network conditions only works in DEBUG builds.

+ +
+ + diff --git a/Lidgren.Network/Documentation/TODO.txt b/Lidgren.Network/Documentation/TODO.txt new file mode 100644 index 0000000..e8a7597 --- /dev/null +++ b/Lidgren.Network/Documentation/TODO.txt @@ -0,0 +1,17 @@ + +Completed features: +* Message coalescing +* Peer, connection statistics +* Lag, loss and duplication simulation for testing +* Connection approval +* Throttling +* Clock synchronization to detect jitter per packet (NetTime.RemoteNow) +* Peer discovery +* Message fragmentation + +Missing features: +* Receipts 25% done, need design +* More realistic lag/loss (lumpy) +* Detect estimated packet loss +* More advanced ack packet + diff --git a/Lidgren.Network/Documentation/Tutorial.html b/Lidgren.Network/Documentation/Tutorial.html new file mode 100644 index 0000000..af1c7d7 --- /dev/null +++ b/Lidgren.Network/Documentation/Tutorial.html @@ -0,0 +1,206 @@ + + + + + Lidgren basics tutorial + + + + + + +
+

+ Lidgren basics

+

+ Lidgren network library is all about messages. There are two types of messages:

+
  • Library messages telling you things like a peer has connected or diagnostics messages (warnings, errors) when unexpected things happen.
  • +
  • Data messages which is data sent from a remote (connected or unconnected) peer.
  • +

    + The base class for establishing connections, receiving and sending message are the NetPeer class. Using it you can make a peer-to-peer network, but if you are creating a server/client topology there are special classes called NetServer and NetClient. They inherit NetPeer but sets some defaults and includes some helper methods/properties.

    +

    + Here's how to set up a NetServer:

    +
    +
    NetPeerConfiguration config = new NetPeerConfiguration("MyExampleName");
    +
    config.Port = 14242;
    +
     
    +
    NetServer server = new NetServer(config);
    +
    server.Start();
    +
    +

    + The code above first creates a configuration. It has lots of properties you can change, but the default values should be pretty good for most applications. The string you provide in the constructor (MyExampleName) is an identifier to distinquish it from other applications using the lidgren library. Just make sure you use the same string in both server and client - or you will be unable to communicate between them.

    +

    + Secondly we've set the local port the server should listen to. This is the port number we tell the client(s) what port number to connect to. The local port can be set for a client too, but it's not needed and not recommended.

    +

    + Thirdly we create our server object and fourth we Start() it. Starting the server will create a new network thread and bind to a socket and start listening for connections.

    +

    + Early on we spoke about messages; now is the time to start receiving and sending some. Here's a code snippet for receiving messages:

    +
    +
    NetIncomingMessage msg;
    +
    while ((msg = server.ReadMessage()) != null)
    +
    {
    +
        switch (msg.MessageType)
    +
        {
    +
            case NetIncomingMessageType.VerboseDebugMessage:
    +
            case NetIncomingMessageType.DebugMessage:
    +
            case NetIncomingMessageType.WarningMessage:
    +
            case NetIncomingMessageType.ErrorMessage:
    +
                Console.WriteLine(msg.ReadString());
    +
                break;
    +
            default:
    +
                Console.WriteLine("Unhandled type: " + msg.MessageType);
    +
                break;
    +
        }
    +
        server.Recycle(msg);
    +
    }
    +
    +

    + So, lets dissect the above code. First we declare a NetIncomingMessage, which is the type of incoming messages. Then we read a message and handles it, looping back as long as there are messages to fetch. For each message we find, we switch on sometime called MessageType - it's a description what the message contains. In this code example we only catch messages of type VerboseDebugMessage, DebugMessage, WarningMessage and ErrorMessage. All those four types are emitted by the library to inform about various events. They all contains a single string, so we use the method ReadString() to extract a copy of that string and print it in the console.

    +

    + Reading data will increment the internal message pointer so you can read subsequent data using the Read*() methods.

    +

    + For all other message type we just print that it's currently unhandled.

    +

    + Finally, we recycle the message after we're done with it - this will enable the library to reuse the object and create less garbage.

    +

    + Sending messages are even easier:

    +
    +
    NetOutgoingMessage sendMsg = server.CreateMessage();
    +
    sendMsg.Write("Hello");
    +
    sendMsg.Write(42);
    +
     
    +
    server.SendMessage(sendMsg, recipient, NetDeliveryMethod.ReliableOrdered);
    +
    +

    + The above code first creates a new message, or uses a recycled message, which is why it's not possible to just create a message using new(). It then writes a string ("Hello") and an integer (System.Int32, 4 bytes in size) to the message.

    +

    + Then the message is sent using the SendMessage() method. The first argument is the message to send, the second argument is the recipient connection - which we'll not go into detail about just yet - and the third argument are HOW to deliver the message, or rather how to behave if network conditions are bad and a packet gets lost, duplicated or reordered.

    +

    + There are five delivery methods available:

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Unreliable + +   + + This is just UDP. Messages can be lost, received more than once and messages sent after other messages may be received before them. +
    +   +
    + UnreliableSequenced + +   + + Using this delivery method messages can still be lost; but you're protected against duplicated messages and if a message arrives late; that is, if a message sent after this one has already been received - it will be dropped. This means you will never receive "older" data than what you already have received. +
    +   +
    + ReliableUnordered + +   + + This delivery method ensures that every message sent will be received eventually. It does not however guarantee what order they will be received; late messages may be delivered before older ones. +
    +   +
    + ReliableSequenced + +   + + This delivery method is similar to UnreliableSequenced; except that is guarantees that SOME messages will be received - if you only send one message - it will be received. If you sent two messages quickly, and they get reordered in transit, only the newest message will be received - but at least ONE of them will be received guaranteed. +
    +   +
    ReliableOrdered  + This delivery method guarantees that messages will always be received in the exact order they were sent. +
    +
    +

    + Here's how to read and decode the message above:

    +
    +
    NetIncomingMessage incMsg = server.ReadMessage();
    +
    string str = incMsg.ReadString();
    +
    int a = incMsg.ReadInt32();
    +
    +
    + + diff --git a/Lidgren.Network/Encryption/NetAESEncryption.cs b/Lidgren.Network/Encryption/NetAESEncryption.cs new file mode 100644 index 0000000..0fec6d5 --- /dev/null +++ b/Lidgren.Network/Encryption/NetAESEncryption.cs @@ -0,0 +1,26 @@ +using System; +using System.IO; +using System.Security.Cryptography; + +namespace Lidgren.Network +{ + public class NetAESEncryption : NetCryptoProviderBase + { + public NetAESEncryption(NetPeer peer) + : base(peer, new AesCryptoServiceProvider()) + { + } + + public NetAESEncryption(NetPeer peer, string key) + : base(peer, new AesCryptoServiceProvider()) + { + SetKey(key); + } + + public NetAESEncryption(NetPeer peer, byte[] data, int offset, int count) + : base(peer, new AesCryptoServiceProvider()) + { + SetKey(data, offset, count); + } + } +} diff --git a/Lidgren.Network/Encryption/NetBlockEncryptionBase.cs b/Lidgren.Network/Encryption/NetBlockEncryptionBase.cs new file mode 100644 index 0000000..f16aeba --- /dev/null +++ b/Lidgren.Network/Encryption/NetBlockEncryptionBase.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; + +namespace Lidgren.Network +{ + ///

    + /// Base for a non-threadsafe encryption class + /// + public abstract class NetBlockEncryptionBase : NetEncryption + { + // temporary space for one block to avoid reallocating every time + private byte[] m_tmp; + + /// + /// Block size in bytes for this cipher + /// + public abstract int BlockSize { get; } + + /// + /// NetBlockEncryptionBase constructor + /// + public NetBlockEncryptionBase(NetPeer peer) + : base(peer) + { + m_tmp = new byte[BlockSize]; + } + + /// + /// Encrypt am outgoing message with this algorithm; no writing can be done to the message after encryption, or message will be corrupted + /// + public override bool Encrypt(NetOutgoingMessage msg) + { + int payloadBitLength = msg.LengthBits; + int numBytes = msg.LengthBytes; + int blockSize = BlockSize; + int numBlocks = (int)Math.Ceiling((double)numBytes / (double)blockSize); + int dstSize = numBlocks * blockSize; + + msg.EnsureBufferSize(dstSize * 8 + (4 * 8)); // add 4 bytes for payload length at end + msg.LengthBits = dstSize * 8; // length will automatically adjust +4 bytes when payload length is written + + for(int i=0;i + /// Decrypt an incoming message encrypted with corresponding Encrypt + /// + /// message to decrypt + /// true if successful; false if failed + public override bool Decrypt(NetIncomingMessage msg) + { + int numEncryptedBytes = msg.LengthBytes - 4; // last 4 bytes is true bit length + int blockSize = BlockSize; + int numBlocks = numEncryptedBytes / blockSize; + if (numBlocks * blockSize != numEncryptedBytes) + return false; + + for (int i = 0; i < numBlocks; i++) + { + DecryptBlock(msg.m_data, (i * blockSize), m_tmp); + Buffer.BlockCopy(m_tmp, 0, msg.m_data, (i * blockSize), m_tmp.Length); + } + + // read 32 bits of true payload length + uint realSize = NetBitWriter.ReadUInt32(msg.m_data, 32, (numEncryptedBytes * 8)); + msg.m_bitLength = (int)realSize; + return true; + } + + /// + /// Encrypt a block of bytes + /// + protected abstract void EncryptBlock(byte[] source, int sourceOffset, byte[] destination); + + /// + /// Decrypt a block of bytes + /// + protected abstract void DecryptBlock(byte[] source, int sourceOffset, byte[] destination); + } +} diff --git a/Lidgren.Network/Encryption/NetCryptoProviderBase.cs b/Lidgren.Network/Encryption/NetCryptoProviderBase.cs new file mode 100644 index 0000000..9c3e7bc --- /dev/null +++ b/Lidgren.Network/Encryption/NetCryptoProviderBase.cs @@ -0,0 +1,76 @@ +using System; +using System.IO; +using System.Security.Cryptography; + +namespace Lidgren.Network +{ + public abstract class NetCryptoProviderBase : NetEncryption + { + protected SymmetricAlgorithm m_algorithm; + + public NetCryptoProviderBase(NetPeer peer, SymmetricAlgorithm algo) + : base(peer) + { + m_algorithm = algo; + m_algorithm.GenerateKey(); + m_algorithm.GenerateIV(); + } + + public override void SetKey(byte[] data, int offset, int count) + { + int len = m_algorithm.Key.Length; + var key = new byte[len]; + for (int i = 0; i < len; i++) + key[i] = data[offset + (i % count)]; + m_algorithm.Key = key; + + len = m_algorithm.IV.Length; + key = new byte[len]; + for (int i = 0; i < len; i++) + key[len - 1 - i] = data[offset + (i % count)]; + m_algorithm.IV = key; + } + + public override bool Encrypt(NetOutgoingMessage msg) + { + int unEncLenBits = msg.LengthBits; + + var ms = new MemoryStream(); + var cs = new CryptoStream(ms, m_algorithm.CreateEncryptor(), CryptoStreamMode.Write); + cs.Write(msg.m_data, 0, msg.LengthBytes); + cs.Close(); + + // get results + var arr = ms.ToArray(); + ms.Close(); + + msg.EnsureBufferSize((arr.Length + 4) * 8); + msg.LengthBits = 0; // reset write pointer + msg.Write((uint)unEncLenBits); + msg.Write(arr); + msg.LengthBits = (arr.Length + 4) * 8; + + return true; + } + + public override bool Decrypt(NetIncomingMessage msg) + { + int unEncLenBits = (int)msg.ReadUInt32(); + + var ms = new MemoryStream(msg.m_data, 4, msg.LengthBytes - 4); + var cs = new CryptoStream(ms, m_algorithm.CreateDecryptor(), CryptoStreamMode.Read); + + var result = m_peer.GetStorage(unEncLenBits); + cs.Read(result, 0, NetUtility.BytesToHoldBits(unEncLenBits)); + cs.Close(); + + // TODO: recycle existing msg + + msg.m_data = result; + msg.m_bitLength = unEncLenBits; + msg.m_readPosition = 0; + + return true; + } + } +} diff --git a/Lidgren.Network/Encryption/NetDESEncryption.cs b/Lidgren.Network/Encryption/NetDESEncryption.cs new file mode 100644 index 0000000..b6ab813 --- /dev/null +++ b/Lidgren.Network/Encryption/NetDESEncryption.cs @@ -0,0 +1,26 @@ +using System; +using System.IO; +using System.Security.Cryptography; + +namespace Lidgren.Network +{ + public class NetDESEncryption : NetCryptoProviderBase + { + public NetDESEncryption(NetPeer peer) + : base(peer, new DESCryptoServiceProvider()) + { + } + + public NetDESEncryption(NetPeer peer, string key) + : base(peer, new DESCryptoServiceProvider()) + { + SetKey(key); + } + + public NetDESEncryption(NetPeer peer, byte[] data, int offset, int count) + : base(peer, new DESCryptoServiceProvider()) + { + SetKey(data, offset, count); + } + } +} diff --git a/Lidgren.Network/Encryption/NetEncryption.cs b/Lidgren.Network/Encryption/NetEncryption.cs new file mode 100644 index 0000000..fea1e7c --- /dev/null +++ b/Lidgren.Network/Encryption/NetEncryption.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Security.Cryptography; + +namespace Lidgren.Network +{ + /// + /// Interface for an encryption algorithm + /// + public abstract class NetEncryption + { + /// + /// NetPeer + /// + protected NetPeer m_peer; + + /// + /// Constructor + /// + public NetEncryption(NetPeer peer) + { + if (peer == null) + throw new NetException("Peer must not be null"); + m_peer = peer; + } + + public void SetKey(string str) + { + var bytes = System.Text.Encoding.ASCII.GetBytes(str); + SetKey(bytes, 0, bytes.Length); + } + + public abstract void SetKey(byte[] data, int offset, int count); + + /// + /// Encrypt an outgoing message in place + /// + public abstract bool Encrypt(NetOutgoingMessage msg); + + /// + /// Decrypt an incoming message in place + /// + public abstract bool Decrypt(NetIncomingMessage msg); + } +} diff --git a/Lidgren.Network/Encryption/NetRC2Encryption.cs b/Lidgren.Network/Encryption/NetRC2Encryption.cs new file mode 100644 index 0000000..a2d0c23 --- /dev/null +++ b/Lidgren.Network/Encryption/NetRC2Encryption.cs @@ -0,0 +1,26 @@ +using System; +using System.IO; +using System.Security.Cryptography; + +namespace Lidgren.Network +{ + public class NetRC2Encryption : NetCryptoProviderBase + { + public NetRC2Encryption(NetPeer peer) + : base(peer, new RC2CryptoServiceProvider()) + { + } + + public NetRC2Encryption(NetPeer peer, string key) + : base(peer, new RC2CryptoServiceProvider()) + { + SetKey(key); + } + + public NetRC2Encryption(NetPeer peer, byte[] data, int offset, int count) + : base(peer, new RC2CryptoServiceProvider()) + { + SetKey(data, offset, count); + } + } +} diff --git a/Lidgren.Network/Encryption/NetTripleDESEncryption.cs b/Lidgren.Network/Encryption/NetTripleDESEncryption.cs new file mode 100644 index 0000000..58044d5 --- /dev/null +++ b/Lidgren.Network/Encryption/NetTripleDESEncryption.cs @@ -0,0 +1,26 @@ +using System; +using System.IO; +using System.Security.Cryptography; + +namespace Lidgren.Network +{ + public class NetTripleDESEncryption : NetCryptoProviderBase + { + public NetTripleDESEncryption(NetPeer peer) + : base(peer, new TripleDESCryptoServiceProvider()) + { + } + + public NetTripleDESEncryption(NetPeer peer, string key) + : base(peer, new TripleDESCryptoServiceProvider()) + { + SetKey(key); + } + + public NetTripleDESEncryption(NetPeer peer, byte[] data, int offset, int count) + : base(peer, new TripleDESCryptoServiceProvider()) + { + SetKey(data, offset, count); + } + } +} diff --git a/Lidgren.Network/Encryption/NetXorEncryption.cs b/Lidgren.Network/Encryption/NetXorEncryption.cs new file mode 100644 index 0000000..04d8e50 --- /dev/null +++ b/Lidgren.Network/Encryption/NetXorEncryption.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Lidgren.Network +{ + /// + /// Example class; not very good encryption + /// + public class NetXorEncryption : NetEncryption + { + private byte[] m_key; + + /// + /// NetXorEncryption constructor + /// + public NetXorEncryption(NetPeer peer, byte[] key) + : base(peer) + { + m_key = key; + } + + public override void SetKey(byte[] data, int offset, int count) + { + m_key = new byte[count]; + Array.Copy(data, offset, m_key, 0, count); + } + + /// + /// NetXorEncryption constructor + /// + public NetXorEncryption(NetPeer peer, string key) + : base(peer) + { + m_key = Encoding.UTF8.GetBytes(key); + } + + /// + /// Encrypt an outgoing message + /// + public override bool Encrypt(NetOutgoingMessage msg) + { + int numBytes = msg.LengthBytes; + for (int i = 0; i < numBytes; i++) + { + int offset = i % m_key.Length; + msg.m_data[i] = (byte)(msg.m_data[i] ^ m_key[offset]); + } + return true; + } + + /// + /// Decrypt an incoming message + /// + public override bool Decrypt(NetIncomingMessage msg) + { + int numBytes = msg.LengthBytes; + for (int i = 0; i < numBytes; i++) + { + int offset = i % m_key.Length; + msg.m_data[i] = (byte)(msg.m_data[i] ^ m_key[offset]); + } + return true; + } + } +} diff --git a/Lidgren.Network/Encryption/NetXteaEncryption.cs b/Lidgren.Network/Encryption/NetXteaEncryption.cs new file mode 100644 index 0000000..2d58cfc --- /dev/null +++ b/Lidgren.Network/Encryption/NetXteaEncryption.cs @@ -0,0 +1,154 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +using System; +using System.Security.Cryptography; +using System.Text; +using System.Security; + +namespace Lidgren.Network +{ + /// + /// Methods to encrypt and decrypt data using the XTEA algorithm + /// + public sealed class NetXtea : NetBlockEncryptionBase + { + private const int c_blockSize = 8; + private const int c_keySize = 16; + private const int c_delta = unchecked((int)0x9E3779B9); + + private readonly int m_numRounds; + private readonly uint[] m_sum0; + private readonly uint[] m_sum1; + + /// + /// Gets the block size for this cipher + /// + public override int BlockSize { get { return c_blockSize; } } + + /// + /// 16 byte key + /// + public NetXtea(NetPeer peer, byte[] key, int rounds) + : base(peer) + { + if (key.Length < c_keySize) + throw new NetException("Key too short!"); + + m_numRounds = rounds; + m_sum0 = new uint[m_numRounds]; + m_sum1 = new uint[m_numRounds]; + uint[] tmp = new uint[8]; + + int num2; + int index = num2 = 0; + while (index < 4) + { + tmp[index] = BitConverter.ToUInt32(key, num2); + index++; + num2 += 4; + } + for (index = num2 = 0; index < 32; index++) + { + m_sum0[index] = ((uint)num2) + tmp[num2 & 3]; + num2 += -1640531527; + m_sum1[index] = ((uint)num2) + tmp[(num2 >> 11) & 3]; + } + } + + /// + /// 16 byte key + /// + public NetXtea(NetPeer peer, byte[] key) + : this(peer, key, 32) + { + } + + /// + /// String to hash for key + /// + public NetXtea(NetPeer peer, string key) + : this(peer, NetUtility.CreateSHA1Hash(key), 32) + { + } + + public override void SetKey(byte[] data, int offset, int length) + { + var key = NetUtility.CreateSHA1Hash(data, offset, length); + NetException.Assert(key.Length == 16); + SetKey(key, 0, 16); + } + + /// + /// Encrypts a block of bytes + /// + protected override void EncryptBlock(byte[] source, int sourceOffset, byte[] destination) + { + uint v0 = BytesToUInt(source, sourceOffset); + uint v1 = BytesToUInt(source, sourceOffset + 4); + + for (int i = 0; i != m_numRounds; i++) + { + v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ m_sum0[i]; + v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ m_sum1[i]; + } + + UIntToBytes(v0, destination, 0); + UIntToBytes(v1, destination, 0 + 4); + + return; + } + + /// + /// Decrypts a block of bytes + /// + protected override void DecryptBlock(byte[] source, int sourceOffset, byte[] destination) + { + // Pack bytes into integers + uint v0 = BytesToUInt(source, sourceOffset); + uint v1 = BytesToUInt(source, sourceOffset + 4); + + for (int i = m_numRounds - 1; i >= 0; i--) + { + v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ m_sum1[i]; + v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ m_sum0[i]; + } + + UIntToBytes(v0, destination, 0); + UIntToBytes(v1, destination, 0 + 4); + + return; + } + + private static uint BytesToUInt(byte[] bytes, int offset) + { + uint retval = (uint)(bytes[offset] << 24); + retval |= (uint)(bytes[++offset] << 16); + retval |= (uint)(bytes[++offset] << 8); + return (retval | bytes[++offset]); + } + + private static void UIntToBytes(uint value, byte[] destination, int destinationOffset) + { + destination[destinationOffset++] = (byte)(value >> 24); + destination[destinationOffset++] = (byte)(value >> 16); + destination[destinationOffset++] = (byte)(value >> 8); + destination[destinationOffset++] = (byte)value; + } + } +} diff --git a/Lidgren.Network/Lidgren.Network.csproj b/Lidgren.Network/Lidgren.Network.csproj new file mode 100644 index 0000000..1fc4d23 --- /dev/null +++ b/Lidgren.Network/Lidgren.Network.csproj @@ -0,0 +1,171 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8} + Library + Properties + Lidgren.Network + Lidgren.Network + v4.5.1 + 512 + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + AllRules.ruleset + bin\Debug\Lidgren.Network.XML + false + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + AllRules.ruleset + false + + + + + + + + + + + Code + + + + Code + + + + + Code + + + Code + + + Code + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + Microsoft .NET Framework 4 %28x86 and x64%29 + true + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + false + + + False + Windows Installer 3.1 + true + + + + + \ No newline at end of file diff --git a/Lidgren.Network/NamespaceDoc.cs b/Lidgren.Network/NamespaceDoc.cs new file mode 100644 index 0000000..b7d6db0 --- /dev/null +++ b/Lidgren.Network/NamespaceDoc.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Lidgren.Network +{ + /// + /// Lidgren Network Library + /// + internal class NamespaceDoc + { + // + } +} diff --git a/Lidgren.Network/NetBigInteger.cs b/Lidgren.Network/NetBigInteger.cs new file mode 100644 index 0000000..3f5c2db --- /dev/null +++ b/Lidgren.Network/NetBigInteger.cs @@ -0,0 +1,2337 @@ +using System; +using System.Text; +using System.Collections; +using System.Diagnostics; +using System.Globalization; + +namespace Lidgren.Network +{ + /// + /// Big integer class based on BouncyCastle (http://www.bouncycastle.org) big integer code + /// + internal class NetBigInteger + { + private const long IMASK = 0xffffffffL; + private const ulong UIMASK = (ulong)IMASK; + + private static readonly int[] ZeroMagnitude = new int[0]; + private static readonly byte[] ZeroEncoding = new byte[0]; + + public static readonly NetBigInteger Zero = new NetBigInteger(0, ZeroMagnitude, false); + public static readonly NetBigInteger One = createUValueOf(1); + public static readonly NetBigInteger Two = createUValueOf(2); + public static readonly NetBigInteger Three = createUValueOf(3); + public static readonly NetBigInteger Ten = createUValueOf(10); + + private const int chunk2 = 1; + private static readonly NetBigInteger radix2 = ValueOf(2); + private static readonly NetBigInteger radix2E = radix2.Pow(chunk2); + + private const int chunk10 = 19; + private static readonly NetBigInteger radix10 = ValueOf(10); + private static readonly NetBigInteger radix10E = radix10.Pow(chunk10); + + private const int chunk16 = 16; + private static readonly NetBigInteger radix16 = ValueOf(16); + private static readonly NetBigInteger radix16E = radix16.Pow(chunk16); + + private const int BitsPerByte = 8; + private const int BitsPerInt = 32; + private const int BytesPerInt = 4; + + private int m_sign; // -1 means -ve; +1 means +ve; 0 means 0; + private int[] m_magnitude; // array of ints with [0] being the most significant + private int m_numBits = -1; // cache BitCount() value + private int m_numBitLength = -1; // cache calcBitLength() value + private long m_quote = -1L; // -m^(-1) mod b, b = 2^32 (see Montgomery mult.) + + private static int GetByteLength( + int nBits) + { + return (nBits + BitsPerByte - 1) / BitsPerByte; + } + + private NetBigInteger() + { + } + + private NetBigInteger( + int signum, + int[] mag, + bool checkMag) + { + if (checkMag) + { + int i = 0; + while (i < mag.Length && mag[i] == 0) + { + ++i; + } + + if (i == mag.Length) + { + // sign = 0; + m_magnitude = ZeroMagnitude; + } + else + { + m_sign = signum; + + if (i == 0) + { + m_magnitude = mag; + } + else + { + // strip leading 0 words + m_magnitude = new int[mag.Length - i]; + Array.Copy(mag, i, m_magnitude, 0, m_magnitude.Length); + } + } + } + else + { + m_sign = signum; + m_magnitude = mag; + } + } + + public NetBigInteger( + string value) + : this(value, 10) + { + } + + public NetBigInteger( + string str, + int radix) + { + if (str.Length == 0) + throw new FormatException("Zero length BigInteger"); + + NumberStyles style; + int chunk; + NetBigInteger r; + NetBigInteger rE; + + switch (radix) + { + case 2: + // Is there anyway to restrict to binary digits? + style = NumberStyles.Integer; + chunk = chunk2; + r = radix2; + rE = radix2E; + break; + case 10: + // This style seems to handle spaces and minus sign already (our processing redundant?) + style = NumberStyles.Integer; + chunk = chunk10; + r = radix10; + rE = radix10E; + break; + case 16: + // TODO Should this be HexNumber? + style = NumberStyles.AllowHexSpecifier; + chunk = chunk16; + r = radix16; + rE = radix16E; + break; + default: + throw new FormatException("Only bases 2, 10, or 16 allowed"); + } + + + int index = 0; + m_sign = 1; + + if (str[0] == '-') + { + if (str.Length == 1) + throw new FormatException("Zero length BigInteger"); + + m_sign = -1; + index = 1; + } + + // strip leading zeros from the string str + while (index < str.Length && Int32.Parse(str[index].ToString(), style) == 0) + { + index++; + } + + if (index >= str.Length) + { + // zero value - we're done + m_sign = 0; + m_magnitude = ZeroMagnitude; + return; + } + + ////// + // could we work out the max number of ints required to store + // str.Length digits in the given base, then allocate that + // storage in one hit?, then Generate the magnitude in one hit too? + ////// + + NetBigInteger b = Zero; + + + int next = index + chunk; + + if (next <= str.Length) + { + do + { + string s = str.Substring(index, chunk); + ulong i = ulong.Parse(s, style); + NetBigInteger bi = createUValueOf(i); + + switch (radix) + { + case 2: + if (i > 1) + throw new FormatException("Bad character in radix 2 string: " + s); + + b = b.ShiftLeft(1); + break; + case 16: + b = b.ShiftLeft(64); + break; + default: + b = b.Multiply(rE); + break; + } + + b = b.Add(bi); + + index = next; + next += chunk; + } + while (next <= str.Length); + } + + if (index < str.Length) + { + string s = str.Substring(index); + ulong i = ulong.Parse(s, style); + NetBigInteger bi = createUValueOf(i); + + if (b.m_sign > 0) + { + if (radix == 2) + { + // NB: Can't reach here since we are parsing one char at a time + Debug.Assert(false); + } + else if (radix == 16) + { + b = b.ShiftLeft(s.Length << 2); + } + else + { + b = b.Multiply(r.Pow(s.Length)); + } + + b = b.Add(bi); + } + else + { + b = bi; + } + } + + // Note: This is the previous (slower) algorithm + // while (index < value.Length) + // { + // char c = value[index]; + // string s = c.ToString(); + // int i = Int32.Parse(s, style); + // + // b = b.Multiply(r).Add(ValueOf(i)); + // index++; + // } + + m_magnitude = b.m_magnitude; + } + + public NetBigInteger( + byte[] bytes) + : this(bytes, 0, bytes.Length) + { + } + + public NetBigInteger( + byte[] bytes, + int offset, + int length) + { + if (length == 0) + throw new FormatException("Zero length BigInteger"); + if ((sbyte)bytes[offset] < 0) + { + m_sign = -1; + + int end = offset + length; + + int iBval; + // strip leading sign bytes + for (iBval = offset; iBval < end && ((sbyte)bytes[iBval] == -1); iBval++) + { + } + + if (iBval >= end) + { + m_magnitude = One.m_magnitude; + } + else + { + int numBytes = end - iBval; + byte[] inverse = new byte[numBytes]; + + int index = 0; + while (index < numBytes) + { + inverse[index++] = (byte)~bytes[iBval++]; + } + + Debug.Assert(iBval == end); + + while (inverse[--index] == byte.MaxValue) + { + inverse[index] = byte.MinValue; + } + + inverse[index]++; + + m_magnitude = MakeMagnitude(inverse, 0, inverse.Length); + } + } + else + { + // strip leading zero bytes and return magnitude bytes + m_magnitude = MakeMagnitude(bytes, offset, length); + m_sign = m_magnitude.Length > 0 ? 1 : 0; + } + } + + private static int[] MakeMagnitude( + byte[] bytes, + int offset, + int length) + { + int end = offset + length; + + // strip leading zeros + int firstSignificant; + for (firstSignificant = offset; firstSignificant < end + && bytes[firstSignificant] == 0; firstSignificant++) + { + } + + if (firstSignificant >= end) + { + return ZeroMagnitude; + } + + int nInts = (end - firstSignificant + 3) / BytesPerInt; + int bCount = (end - firstSignificant) % BytesPerInt; + if (bCount == 0) + { + bCount = BytesPerInt; + } + + if (nInts < 1) + { + return ZeroMagnitude; + } + + int[] mag = new int[nInts]; + + int v = 0; + int magnitudeIndex = 0; + for (int i = firstSignificant; i < end; ++i) + { + v <<= 8; + v |= bytes[i] & 0xff; + bCount--; + if (bCount <= 0) + { + mag[magnitudeIndex] = v; + magnitudeIndex++; + bCount = BytesPerInt; + v = 0; + } + } + + if (magnitudeIndex < mag.Length) + { + mag[magnitudeIndex] = v; + } + + return mag; + } + + public NetBigInteger( + int sign, + byte[] bytes) + : this(sign, bytes, 0, bytes.Length) + { + } + + public NetBigInteger( + int sign, + byte[] bytes, + int offset, + int length) + { + if (sign < -1 || sign > 1) + throw new FormatException("Invalid sign value"); + + if (sign == 0) + { + //sign = 0; + m_magnitude = ZeroMagnitude; + } + else + { + // copy bytes + m_magnitude = MakeMagnitude(bytes, offset, length); + m_sign = m_magnitude.Length < 1 ? 0 : sign; + } + } + + public NetBigInteger Abs() + { + return m_sign >= 0 ? this : Negate(); + } + + // return a = a + b - b preserved. + private static int[] AddMagnitudes( + int[] a, + int[] b) + { + int tI = a.Length - 1; + int vI = b.Length - 1; + long m = 0; + + while (vI >= 0) + { + m += ((long)(uint)a[tI] + (long)(uint)b[vI--]); + a[tI--] = (int)m; + m = (long)((ulong)m >> 32); + } + + if (m != 0) + { + while (tI >= 0 && ++a[tI--] == 0) + { + } + } + + return a; + } + + public NetBigInteger Add( + NetBigInteger value) + { + if (m_sign == 0) + return value; + + if (m_sign != value.m_sign) + { + if (value.m_sign == 0) + return this; + + if (value.m_sign < 0) + return Subtract(value.Negate()); + + return value.Subtract(Negate()); + } + + return AddToMagnitude(value.m_magnitude); + } + + private NetBigInteger AddToMagnitude( + int[] magToAdd) + { + int[] big, small; + if (m_magnitude.Length < magToAdd.Length) + { + big = magToAdd; + small = m_magnitude; + } + else + { + big = m_magnitude; + small = magToAdd; + } + + // Conservatively avoid over-allocation when no overflow possible + uint limit = uint.MaxValue; + if (big.Length == small.Length) + limit -= (uint)small[0]; + + bool possibleOverflow = (uint)big[0] >= limit; + + int[] bigCopy; + if (possibleOverflow) + { + bigCopy = new int[big.Length + 1]; + big.CopyTo(bigCopy, 1); + } + else + { + bigCopy = (int[])big.Clone(); + } + + bigCopy = AddMagnitudes(bigCopy, small); + + return new NetBigInteger(m_sign, bigCopy, possibleOverflow); + } + + public NetBigInteger And( + NetBigInteger value) + { + if (m_sign == 0 || value.m_sign == 0) + { + return Zero; + } + + int[] aMag = m_sign > 0 + ? m_magnitude + : Add(One).m_magnitude; + + int[] bMag = value.m_sign > 0 + ? value.m_magnitude + : value.Add(One).m_magnitude; + + bool resultNeg = m_sign < 0 && value.m_sign < 0; + int resultLength = System.Math.Max(aMag.Length, bMag.Length); + int[] resultMag = new int[resultLength]; + + int aStart = resultMag.Length - aMag.Length; + int bStart = resultMag.Length - bMag.Length; + + for (int i = 0; i < resultMag.Length; ++i) + { + int aWord = i >= aStart ? aMag[i - aStart] : 0; + int bWord = i >= bStart ? bMag[i - bStart] : 0; + + if (m_sign < 0) + { + aWord = ~aWord; + } + + if (value.m_sign < 0) + { + bWord = ~bWord; + } + + resultMag[i] = aWord & bWord; + + if (resultNeg) + { + resultMag[i] = ~resultMag[i]; + } + } + + NetBigInteger result = new NetBigInteger(1, resultMag, true); + + if (resultNeg) + { + result = result.Not(); + } + + return result; + } + + private int calcBitLength( + int indx, + int[] mag) + { + for (; ; ) + { + if (indx >= mag.Length) + return 0; + + if (mag[indx] != 0) + break; + + ++indx; + } + + // bit length for everything after the first int + int bitLength = 32 * ((mag.Length - indx) - 1); + + // and determine bitlength of first int + int firstMag = mag[indx]; + bitLength += BitLen(firstMag); + + // Check for negative powers of two + if (m_sign < 0 && ((firstMag & -firstMag) == firstMag)) + { + do + { + if (++indx >= mag.Length) + { + --bitLength; + break; + } + } + while (mag[indx] == 0); + } + + return bitLength; + } + + public int BitLength + { + get + { + if (m_numBitLength == -1) + { + m_numBitLength = m_sign == 0 + ? 0 + : calcBitLength(0, m_magnitude); + } + + return m_numBitLength; + } + } + + // + // BitLen(value) is the number of bits in value. + // + private static int BitLen( + int w) + { + // Binary search - decision tree (5 tests, rarely 6) + return (w < 1 << 15 ? (w < 1 << 7 + ? (w < 1 << 3 ? (w < 1 << 1 + ? (w < 1 << 0 ? (w < 0 ? 32 : 0) : 1) + : (w < 1 << 2 ? 2 : 3)) : (w < 1 << 5 + ? (w < 1 << 4 ? 4 : 5) + : (w < 1 << 6 ? 6 : 7))) + : (w < 1 << 11 + ? (w < 1 << 9 ? (w < 1 << 8 ? 8 : 9) : (w < 1 << 10 ? 10 : 11)) + : (w < 1 << 13 ? (w < 1 << 12 ? 12 : 13) : (w < 1 << 14 ? 14 : 15)))) : (w < 1 << 23 ? (w < 1 << 19 + ? (w < 1 << 17 ? (w < 1 << 16 ? 16 : 17) : (w < 1 << 18 ? 18 : 19)) + : (w < 1 << 21 ? (w < 1 << 20 ? 20 : 21) : (w < 1 << 22 ? 22 : 23))) : (w < 1 << 27 + ? (w < 1 << 25 ? (w < 1 << 24 ? 24 : 25) : (w < 1 << 26 ? 26 : 27)) + : (w < 1 << 29 ? (w < 1 << 28 ? 28 : 29) : (w < 1 << 30 ? 30 : 31))))); + } + + private bool QuickPow2Check() + { + return m_sign > 0 && m_numBits == 1; + } + + public int CompareTo( + object obj) + { + return CompareTo((NetBigInteger)obj); + } + + + // unsigned comparison on two arrays - note the arrays may + // start with leading zeros. + private static int CompareTo( + int xIndx, + int[] x, + int yIndx, + int[] y) + { + while (xIndx != x.Length && x[xIndx] == 0) + { + xIndx++; + } + + while (yIndx != y.Length && y[yIndx] == 0) + { + yIndx++; + } + + return CompareNoLeadingZeroes(xIndx, x, yIndx, y); + } + + private static int CompareNoLeadingZeroes( + int xIndx, + int[] x, + int yIndx, + int[] y) + { + int diff = (x.Length - y.Length) - (xIndx - yIndx); + + if (diff != 0) + { + return diff < 0 ? -1 : 1; + } + + // lengths of magnitudes the same, test the magnitude values + + while (xIndx < x.Length) + { + uint v1 = (uint)x[xIndx++]; + uint v2 = (uint)y[yIndx++]; + + if (v1 != v2) + return v1 < v2 ? -1 : 1; + } + + return 0; + } + + public int CompareTo( + NetBigInteger value) + { + return m_sign < value.m_sign ? -1 + : m_sign > value.m_sign ? 1 + : m_sign == 0 ? 0 + : m_sign * CompareNoLeadingZeroes(0, m_magnitude, 0, value.m_magnitude); + } + + // return z = x / y - done in place (z value preserved, x contains the remainder) + private int[] Divide( + int[] x, + int[] y) + { + int xStart = 0; + while (xStart < x.Length && x[xStart] == 0) + { + ++xStart; + } + + int yStart = 0; + while (yStart < y.Length && y[yStart] == 0) + { + ++yStart; + } + + Debug.Assert(yStart < y.Length); + + int xyCmp = CompareNoLeadingZeroes(xStart, x, yStart, y); + int[] count; + + if (xyCmp > 0) + { + int yBitLength = calcBitLength(yStart, y); + int xBitLength = calcBitLength(xStart, x); + int shift = xBitLength - yBitLength; + + int[] iCount; + int iCountStart = 0; + + int[] c; + int cStart = 0; + int cBitLength = yBitLength; + if (shift > 0) + { + // iCount = ShiftLeft(One.magnitude, shift); + iCount = new int[(shift >> 5) + 1]; + iCount[0] = 1 << (shift % 32); + + c = ShiftLeft(y, shift); + cBitLength += shift; + } + else + { + iCount = new int[] { 1 }; + + int len = y.Length - yStart; + c = new int[len]; + Array.Copy(y, yStart, c, 0, len); + } + + count = new int[iCount.Length]; + + for (; ; ) + { + if (cBitLength < xBitLength + || CompareNoLeadingZeroes(xStart, x, cStart, c) >= 0) + { + Subtract(xStart, x, cStart, c); + AddMagnitudes(count, iCount); + + while (x[xStart] == 0) + { + if (++xStart == x.Length) + return count; + } + + //xBitLength = calcBitLength(xStart, x); + xBitLength = 32 * (x.Length - xStart - 1) + BitLen(x[xStart]); + + if (xBitLength <= yBitLength) + { + if (xBitLength < yBitLength) + return count; + + xyCmp = CompareNoLeadingZeroes(xStart, x, yStart, y); + + if (xyCmp <= 0) + break; + } + } + + shift = cBitLength - xBitLength; + + // NB: The case where c[cStart] is 1-bit is harmless + if (shift == 1) + { + uint firstC = (uint)c[cStart] >> 1; + uint firstX = (uint)x[xStart]; + if (firstC > firstX) + ++shift; + } + + if (shift < 2) + { + c = ShiftRightOneInPlace(cStart, c); + --cBitLength; + iCount = ShiftRightOneInPlace(iCountStart, iCount); + } + else + { + c = ShiftRightInPlace(cStart, c, shift); + cBitLength -= shift; + iCount = ShiftRightInPlace(iCountStart, iCount, shift); + } + + //cStart = c.Length - ((cBitLength + 31) / 32); + while (c[cStart] == 0) + { + ++cStart; + } + + while (iCount[iCountStart] == 0) + { + ++iCountStart; + } + } + } + else + { + count = new int[1]; + } + + if (xyCmp == 0) + { + AddMagnitudes(count, One.m_magnitude); + Array.Clear(x, xStart, x.Length - xStart); + } + + return count; + } + + public NetBigInteger Divide( + NetBigInteger val) + { + if (val.m_sign == 0) + throw new ArithmeticException("Division by zero error"); + + if (m_sign == 0) + return Zero; + + if (val.QuickPow2Check()) // val is power of two + { + NetBigInteger result = Abs().ShiftRight(val.Abs().BitLength - 1); + return val.m_sign == m_sign ? result : result.Negate(); + } + + int[] mag = (int[])m_magnitude.Clone(); + + return new NetBigInteger(m_sign * val.m_sign, Divide(mag, val.m_magnitude), true); + } + + public NetBigInteger[] DivideAndRemainder( + NetBigInteger val) + { + if (val.m_sign == 0) + throw new ArithmeticException("Division by zero error"); + + NetBigInteger[] biggies = new NetBigInteger[2]; + + if (m_sign == 0) + { + biggies[0] = Zero; + biggies[1] = Zero; + } + else if (val.QuickPow2Check()) // val is power of two + { + int e = val.Abs().BitLength - 1; + NetBigInteger quotient = Abs().ShiftRight(e); + int[] remainder = LastNBits(e); + + biggies[0] = val.m_sign == m_sign ? quotient : quotient.Negate(); + biggies[1] = new NetBigInteger(m_sign, remainder, true); + } + else + { + int[] remainder = (int[])m_magnitude.Clone(); + int[] quotient = Divide(remainder, val.m_magnitude); + + biggies[0] = new NetBigInteger(m_sign * val.m_sign, quotient, true); + biggies[1] = new NetBigInteger(m_sign, remainder, true); + } + + return biggies; + } + + public override bool Equals( + object obj) + { + if (obj == this) + return true; + + NetBigInteger biggie = obj as NetBigInteger; + if (biggie == null) + return false; + + if (biggie.m_sign != m_sign || biggie.m_magnitude.Length != m_magnitude.Length) + return false; + + for (int i = 0; i < m_magnitude.Length; i++) + { + if (biggie.m_magnitude[i] != m_magnitude[i]) + { + return false; + } + } + + return true; + } + + public NetBigInteger Gcd( + NetBigInteger value) + { + if (value.m_sign == 0) + return Abs(); + + if (m_sign == 0) + return value.Abs(); + + NetBigInteger r; + NetBigInteger u = this; + NetBigInteger v = value; + + while (v.m_sign != 0) + { + r = u.Mod(v); + u = v; + v = r; + } + + return u; + } + + public override int GetHashCode() + { + int hc = m_magnitude.Length; + if (m_magnitude.Length > 0) + { + hc ^= m_magnitude[0]; + + if (m_magnitude.Length > 1) + { + hc ^= m_magnitude[m_magnitude.Length - 1]; + } + } + + return m_sign < 0 ? ~hc : hc; + } + + private NetBigInteger Inc() + { + if (m_sign == 0) + return One; + + if (m_sign < 0) + return new NetBigInteger(-1, doSubBigLil(m_magnitude, One.m_magnitude), true); + + return AddToMagnitude(One.m_magnitude); + } + + public int IntValue + { + get + { + return m_sign == 0 ? 0 + : m_sign > 0 ? m_magnitude[m_magnitude.Length - 1] + : -m_magnitude[m_magnitude.Length - 1]; + } + } + + public NetBigInteger Max( + NetBigInteger value) + { + return CompareTo(value) > 0 ? this : value; + } + + public NetBigInteger Min( + NetBigInteger value) + { + return CompareTo(value) < 0 ? this : value; + } + + public NetBigInteger Mod( + NetBigInteger m) + { + if (m.m_sign < 1) + throw new ArithmeticException("Modulus must be positive"); + + NetBigInteger biggie = Remainder(m); + + return (biggie.m_sign >= 0 ? biggie : biggie.Add(m)); + } + + public NetBigInteger ModInverse( + NetBigInteger m) + { + if (m.m_sign < 1) + throw new ArithmeticException("Modulus must be positive"); + + NetBigInteger x = new NetBigInteger(); + NetBigInteger gcd = ExtEuclid(this, m, x, null); + + if (!gcd.Equals(One)) + throw new ArithmeticException("Numbers not relatively prime."); + + if (x.m_sign < 0) + { + x.m_sign = 1; + //x = m.Subtract(x); + x.m_magnitude = doSubBigLil(m.m_magnitude, x.m_magnitude); + } + + return x; + } + + private static NetBigInteger ExtEuclid( + NetBigInteger a, + NetBigInteger b, + NetBigInteger u1Out, + NetBigInteger u2Out) + { + NetBigInteger u1 = One; + NetBigInteger u3 = a; + NetBigInteger v1 = Zero; + NetBigInteger v3 = b; + + while (v3.m_sign > 0) + { + NetBigInteger[] q = u3.DivideAndRemainder(v3); + + NetBigInteger tmp = v1.Multiply(q[0]); + NetBigInteger tn = u1.Subtract(tmp); + u1 = v1; + v1 = tn; + + u3 = v3; + v3 = q[1]; + } + + if (u1Out != null) + { + u1Out.m_sign = u1.m_sign; + u1Out.m_magnitude = u1.m_magnitude; + } + + if (u2Out != null) + { + NetBigInteger tmp = u1.Multiply(a); + tmp = u3.Subtract(tmp); + NetBigInteger res = tmp.Divide(b); + u2Out.m_sign = res.m_sign; + u2Out.m_magnitude = res.m_magnitude; + } + + return u3; + } + + private static void ZeroOut( + int[] x) + { + Array.Clear(x, 0, x.Length); + } + + public NetBigInteger ModPow( + NetBigInteger exponent, + NetBigInteger m) + { + if (m.m_sign < 1) + throw new ArithmeticException("Modulus must be positive"); + + if (m.Equals(One)) + return Zero; + + if (exponent.m_sign == 0) + return One; + + if (m_sign == 0) + return Zero; + + int[] zVal = null; + int[] yAccum = null; + int[] yVal; + + // Montgomery exponentiation is only possible if the modulus is odd, + // but AFAIK, this is always the case for crypto algo's + bool useMonty = ((m.m_magnitude[m.m_magnitude.Length - 1] & 1) == 1); + long mQ = 0; + if (useMonty) + { + mQ = m.GetMQuote(); + + // tmp = this * R mod m + NetBigInteger tmp = ShiftLeft(32 * m.m_magnitude.Length).Mod(m); + zVal = tmp.m_magnitude; + + useMonty = (zVal.Length <= m.m_magnitude.Length); + + if (useMonty) + { + yAccum = new int[m.m_magnitude.Length + 1]; + if (zVal.Length < m.m_magnitude.Length) + { + int[] longZ = new int[m.m_magnitude.Length]; + zVal.CopyTo(longZ, longZ.Length - zVal.Length); + zVal = longZ; + } + } + } + + if (!useMonty) + { + if (m_magnitude.Length <= m.m_magnitude.Length) + { + //zAccum = new int[m.magnitude.Length * 2]; + zVal = new int[m.m_magnitude.Length]; + m_magnitude.CopyTo(zVal, zVal.Length - m_magnitude.Length); + } + else + { + // + // in normal practice we'll never see .. + // + NetBigInteger tmp = Remainder(m); + + //zAccum = new int[m.magnitude.Length * 2]; + zVal = new int[m.m_magnitude.Length]; + tmp.m_magnitude.CopyTo(zVal, zVal.Length - tmp.m_magnitude.Length); + } + + yAccum = new int[m.m_magnitude.Length * 2]; + } + + yVal = new int[m.m_magnitude.Length]; + + // + // from LSW to MSW + // + for (int i = 0; i < exponent.m_magnitude.Length; i++) + { + int v = exponent.m_magnitude[i]; + int bits = 0; + + if (i == 0) + { + while (v > 0) + { + v <<= 1; + bits++; + } + + // + // first time in initialise y + // + zVal.CopyTo(yVal, 0); + + v <<= 1; + bits++; + } + + while (v != 0) + { + if (useMonty) + { + // Montgomery square algo doesn't exist, and a normal + // square followed by a Montgomery reduction proved to + // be almost as heavy as a Montgomery mulitply. + MultiplyMonty(yAccum, yVal, yVal, m.m_magnitude, mQ); + } + else + { + Square(yAccum, yVal); + Remainder(yAccum, m.m_magnitude); + Array.Copy(yAccum, yAccum.Length - yVal.Length, yVal, 0, yVal.Length); + ZeroOut(yAccum); + } + bits++; + + if (v < 0) + { + if (useMonty) + { + MultiplyMonty(yAccum, yVal, zVal, m.m_magnitude, mQ); + } + else + { + Multiply(yAccum, yVal, zVal); + Remainder(yAccum, m.m_magnitude); + Array.Copy(yAccum, yAccum.Length - yVal.Length, yVal, 0, + yVal.Length); + ZeroOut(yAccum); + } + } + + v <<= 1; + } + + while (bits < 32) + { + if (useMonty) + { + MultiplyMonty(yAccum, yVal, yVal, m.m_magnitude, mQ); + } + else + { + Square(yAccum, yVal); + Remainder(yAccum, m.m_magnitude); + Array.Copy(yAccum, yAccum.Length - yVal.Length, yVal, 0, yVal.Length); + ZeroOut(yAccum); + } + bits++; + } + } + + if (useMonty) + { + // Return y * R^(-1) mod m by doing y * 1 * R^(-1) mod m + ZeroOut(zVal); + zVal[zVal.Length - 1] = 1; + MultiplyMonty(yAccum, yVal, zVal, m.m_magnitude, mQ); + } + + NetBigInteger result = new NetBigInteger(1, yVal, true); + + return exponent.m_sign > 0 + ? result + : result.ModInverse(m); + } + + // return w with w = x * x - w is assumed to have enough space. + private static int[] Square( + int[] w, + int[] x) + { + // Note: this method allows w to be only (2 * x.Length - 1) words if result will fit + // if (w.Length != 2 * x.Length) + // throw new ArgumentException("no I don't think so..."); + + ulong u1, u2, c; + + int wBase = w.Length - 1; + + for (int i = x.Length - 1; i != 0; i--) + { + ulong v = (ulong)(uint)x[i]; + + u1 = v * v; + u2 = u1 >> 32; + u1 = (uint)u1; + + u1 += (ulong)(uint)w[wBase]; + + w[wBase] = (int)(uint)u1; + c = u2 + (u1 >> 32); + + for (int j = i - 1; j >= 0; j--) + { + --wBase; + u1 = v * (ulong)(uint)x[j]; + u2 = u1 >> 31; // multiply by 2! + u1 = (uint)(u1 << 1); // multiply by 2! + u1 += c + (ulong)(uint)w[wBase]; + + w[wBase] = (int)(uint)u1; + c = u2 + (u1 >> 32); + } + + c += (ulong)(uint)w[--wBase]; + w[wBase] = (int)(uint)c; + + if (--wBase >= 0) + { + w[wBase] = (int)(uint)(c >> 32); + } + else + { + Debug.Assert((uint)(c >> 32) == 0); + } + wBase += i; + } + + u1 = (ulong)(uint)x[0]; + u1 = u1 * u1; + u2 = u1 >> 32; + u1 = u1 & IMASK; + + u1 += (ulong)(uint)w[wBase]; + + w[wBase] = (int)(uint)u1; + if (--wBase >= 0) + { + w[wBase] = (int)(uint)(u2 + (u1 >> 32) + (ulong)(uint)w[wBase]); + } + else + { + Debug.Assert((uint)(u2 + (u1 >> 32)) == 0); + } + + return w; + } + + // return x with x = y * z - x is assumed to have enough space. + private static int[] Multiply( + int[] x, + int[] y, + int[] z) + { + int i = z.Length; + + if (i < 1) + return x; + + int xBase = x.Length - y.Length; + + for (; ; ) + { + long a = z[--i] & IMASK; + long val = 0; + + for (int j = y.Length - 1; j >= 0; j--) + { + val += a * (y[j] & IMASK) + (x[xBase + j] & IMASK); + + x[xBase + j] = (int)val; + + val = (long)((ulong)val >> 32); + } + + --xBase; + + if (i < 1) + { + if (xBase >= 0) + { + x[xBase] = (int)val; + } + else + { + Debug.Assert(val == 0); + } + break; + } + + x[xBase] = (int)val; + } + + return x; + } + + private static long FastExtEuclid( + long a, + long b, + long[] uOut) + { + long u1 = 1; + long u3 = a; + long v1 = 0; + long v3 = b; + + while (v3 > 0) + { + long q, tn; + + q = u3 / v3; + + tn = u1 - (v1 * q); + u1 = v1; + v1 = tn; + + tn = u3 - (v3 * q); + u3 = v3; + v3 = tn; + } + + uOut[0] = u1; + uOut[1] = (u3 - (u1 * a)) / b; + + return u3; + } + + private static long FastModInverse( + long v, + long m) + { + if (m < 1) + throw new ArithmeticException("Modulus must be positive"); + + long[] x = new long[2]; + long gcd = FastExtEuclid(v, m, x); + + if (gcd != 1) + throw new ArithmeticException("Numbers not relatively prime."); + + if (x[0] < 0) + { + x[0] += m; + } + + return x[0]; + } + + private long GetMQuote() + { + Debug.Assert(m_sign > 0); + + if (m_quote != -1) + { + return m_quote; // already calculated + } + + if (m_magnitude.Length == 0 || (m_magnitude[m_magnitude.Length - 1] & 1) == 0) + { + return -1; // not for even numbers + } + + long v = (((~m_magnitude[m_magnitude.Length - 1]) | 1) & 0xffffffffL); + m_quote = FastModInverse(v, 0x100000000L); + + return m_quote; + } + + private static void MultiplyMonty( + int[] a, + int[] x, + int[] y, + int[] m, + long mQuote) + // mQuote = -m^(-1) mod b + { + if (m.Length == 1) + { + x[0] = (int)MultiplyMontyNIsOne((uint)x[0], (uint)y[0], (uint)m[0], (ulong)mQuote); + return; + } + + int n = m.Length; + int nMinus1 = n - 1; + long y_0 = y[nMinus1] & IMASK; + + // 1. a = 0 (Notation: a = (a_{n} a_{n-1} ... a_{0})_{b} ) + Array.Clear(a, 0, n + 1); + + // 2. for i from 0 to (n - 1) do the following: + for (int i = n; i > 0; i--) + { + long x_i = x[i - 1] & IMASK; + + // 2.1 u = ((a[0] + (x[i] * y[0]) * mQuote) mod b + long u = ((((a[n] & IMASK) + ((x_i * y_0) & IMASK)) & IMASK) * mQuote) & IMASK; + + // 2.2 a = (a + x_i * y + u * m) / b + long prod1 = x_i * y_0; + long prod2 = u * (m[nMinus1] & IMASK); + long tmp = (a[n] & IMASK) + (prod1 & IMASK) + (prod2 & IMASK); + long carry = (long)((ulong)prod1 >> 32) + (long)((ulong)prod2 >> 32) + (long)((ulong)tmp >> 32); + for (int j = nMinus1; j > 0; j--) + { + prod1 = x_i * (y[j - 1] & IMASK); + prod2 = u * (m[j - 1] & IMASK); + tmp = (a[j] & IMASK) + (prod1 & IMASK) + (prod2 & IMASK) + (carry & IMASK); + carry = (long)((ulong)carry >> 32) + (long)((ulong)prod1 >> 32) + + (long)((ulong)prod2 >> 32) + (long)((ulong)tmp >> 32); + a[j + 1] = (int)tmp; // division by b + } + carry += (a[0] & IMASK); + a[1] = (int)carry; + a[0] = (int)((ulong)carry >> 32); // OJO!!!!! + } + + // 3. if x >= m the x = x - m + if (CompareTo(0, a, 0, m) >= 0) + { + Subtract(0, a, 0, m); + } + + // put the result in x + Array.Copy(a, 1, x, 0, n); + } + + private static uint MultiplyMontyNIsOne( + uint x, + uint y, + uint m, + ulong mQuote) + { + ulong um = m; + ulong prod1 = (ulong)x * (ulong)y; + ulong u = (prod1 * mQuote) & UIMASK; + ulong prod2 = u * um; + ulong tmp = (prod1 & UIMASK) + (prod2 & UIMASK); + ulong carry = (prod1 >> 32) + (prod2 >> 32) + (tmp >> 32); + + if (carry > um) + { + carry -= um; + } + + return (uint)(carry & UIMASK); + } + + public NetBigInteger Modulus( + NetBigInteger val) + { + return Mod(val); + } + + public NetBigInteger Multiply( + NetBigInteger val) + { + if (m_sign == 0 || val.m_sign == 0) + return Zero; + + if (val.QuickPow2Check()) // val is power of two + { + NetBigInteger result = ShiftLeft(val.Abs().BitLength - 1); + return val.m_sign > 0 ? result : result.Negate(); + } + + if (QuickPow2Check()) // this is power of two + { + NetBigInteger result = val.ShiftLeft(Abs().BitLength - 1); + return m_sign > 0 ? result : result.Negate(); + } + + int maxBitLength = BitLength + val.BitLength; + int resLength = (maxBitLength + BitsPerInt - 1) / BitsPerInt; + + int[] res = new int[resLength]; + + if (val == this) + { + Square(res, m_magnitude); + } + else + { + Multiply(res, m_magnitude, val.m_magnitude); + } + + return new NetBigInteger(m_sign * val.m_sign, res, true); + } + + public NetBigInteger Negate() + { + if (m_sign == 0) + return this; + + return new NetBigInteger(-m_sign, m_magnitude, false); + } + + public NetBigInteger Not() + { + return Inc().Negate(); + } + + public NetBigInteger Pow(int exp) + { + if (exp < 0) + { + throw new ArithmeticException("Negative exponent"); + } + + if (exp == 0) + { + return One; + } + + if (m_sign == 0 || Equals(One)) + { + return this; + } + + NetBigInteger y = One; + NetBigInteger z = this; + + for (; ; ) + { + if ((exp & 0x1) == 1) + { + y = y.Multiply(z); + } + exp >>= 1; + if (exp == 0) break; + z = z.Multiply(z); + } + + return y; + } + + private int Remainder( + int m) + { + Debug.Assert(m > 0); + + long acc = 0; + for (int pos = 0; pos < m_magnitude.Length; ++pos) + { + long posVal = (uint)m_magnitude[pos]; + acc = (acc << 32 | posVal) % m; + } + + return (int)acc; + } + + // return x = x % y - done in place (y value preserved) + private int[] Remainder( + int[] x, + int[] y) + { + int xStart = 0; + while (xStart < x.Length && x[xStart] == 0) + { + ++xStart; + } + + int yStart = 0; + while (yStart < y.Length && y[yStart] == 0) + { + ++yStart; + } + + Debug.Assert(yStart < y.Length); + + int xyCmp = CompareNoLeadingZeroes(xStart, x, yStart, y); + + if (xyCmp > 0) + { + int yBitLength = calcBitLength(yStart, y); + int xBitLength = calcBitLength(xStart, x); + int shift = xBitLength - yBitLength; + + int[] c; + int cStart = 0; + int cBitLength = yBitLength; + if (shift > 0) + { + c = ShiftLeft(y, shift); + cBitLength += shift; + Debug.Assert(c[0] != 0); + } + else + { + int len = y.Length - yStart; + c = new int[len]; + Array.Copy(y, yStart, c, 0, len); + } + + for (; ; ) + { + if (cBitLength < xBitLength + || CompareNoLeadingZeroes(xStart, x, cStart, c) >= 0) + { + Subtract(xStart, x, cStart, c); + + while (x[xStart] == 0) + { + if (++xStart == x.Length) + return x; + } + + //xBitLength = calcBitLength(xStart, x); + xBitLength = 32 * (x.Length - xStart - 1) + BitLen(x[xStart]); + + if (xBitLength <= yBitLength) + { + if (xBitLength < yBitLength) + return x; + + xyCmp = CompareNoLeadingZeroes(xStart, x, yStart, y); + + if (xyCmp <= 0) + break; + } + } + + shift = cBitLength - xBitLength; + + // NB: The case where c[cStart] is 1-bit is harmless + if (shift == 1) + { + uint firstC = (uint)c[cStart] >> 1; + uint firstX = (uint)x[xStart]; + if (firstC > firstX) + ++shift; + } + + if (shift < 2) + { + c = ShiftRightOneInPlace(cStart, c); + --cBitLength; + } + else + { + c = ShiftRightInPlace(cStart, c, shift); + cBitLength -= shift; + } + + //cStart = c.Length - ((cBitLength + 31) / 32); + while (c[cStart] == 0) + { + ++cStart; + } + } + } + + if (xyCmp == 0) + { + Array.Clear(x, xStart, x.Length - xStart); + } + + return x; + } + + public NetBigInteger Remainder( + NetBigInteger n) + { + if (n.m_sign == 0) + throw new ArithmeticException("Division by zero error"); + + if (m_sign == 0) + return Zero; + + // For small values, use fast remainder method + if (n.m_magnitude.Length == 1) + { + int val = n.m_magnitude[0]; + + if (val > 0) + { + if (val == 1) + return Zero; + + int rem = Remainder(val); + + return rem == 0 + ? Zero + : new NetBigInteger(m_sign, new int[] { rem }, false); + } + } + + if (CompareNoLeadingZeroes(0, m_magnitude, 0, n.m_magnitude) < 0) + return this; + + int[] result; + if (n.QuickPow2Check()) // n is power of two + { + result = LastNBits(n.Abs().BitLength - 1); + } + else + { + result = (int[])m_magnitude.Clone(); + result = Remainder(result, n.m_magnitude); + } + + return new NetBigInteger(m_sign, result, true); + } + + private int[] LastNBits( + int n) + { + if (n < 1) + return ZeroMagnitude; + + int numWords = (n + BitsPerInt - 1) / BitsPerInt; + numWords = System.Math.Min(numWords, m_magnitude.Length); + int[] result = new int[numWords]; + + Array.Copy(m_magnitude, m_magnitude.Length - numWords, result, 0, numWords); + + int hiBits = n % 32; + if (hiBits != 0) + { + result[0] &= ~(-1 << hiBits); + } + + return result; + } + + + // do a left shift - this returns a new array. + private static int[] ShiftLeft( + int[] mag, + int n) + { + int nInts = (int)((uint)n >> 5); + int nBits = n & 0x1f; + int magLen = mag.Length; + int[] newMag; + + if (nBits == 0) + { + newMag = new int[magLen + nInts]; + mag.CopyTo(newMag, 0); + } + else + { + int i = 0; + int nBits2 = 32 - nBits; + int highBits = (int)((uint)mag[0] >> nBits2); + + if (highBits != 0) + { + newMag = new int[magLen + nInts + 1]; + newMag[i++] = highBits; + } + else + { + newMag = new int[magLen + nInts]; + } + + int m = mag[0]; + for (int j = 0; j < magLen - 1; j++) + { + int next = mag[j + 1]; + + newMag[i++] = (m << nBits) | (int)((uint)next >> nBits2); + m = next; + } + + newMag[i] = mag[magLen - 1] << nBits; + } + + return newMag; + } + + public NetBigInteger ShiftLeft( + int n) + { + if (m_sign == 0 || m_magnitude.Length == 0) + return Zero; + + if (n == 0) + return this; + + if (n < 0) + return ShiftRight(-n); + + NetBigInteger result = new NetBigInteger(m_sign, ShiftLeft(m_magnitude, n), true); + + if (m_numBits != -1) + { + result.m_numBits = m_sign > 0 + ? m_numBits + : m_numBits + n; + } + + if (m_numBitLength != -1) + { + result.m_numBitLength = m_numBitLength + n; + } + + return result; + } + + // do a right shift - this does it in place. + private static int[] ShiftRightInPlace( + int start, + int[] mag, + int n) + { + int nInts = (int)((uint)n >> 5) + start; + int nBits = n & 0x1f; + int magEnd = mag.Length - 1; + + if (nInts != start) + { + int delta = (nInts - start); + + for (int i = magEnd; i >= nInts; i--) + { + mag[i] = mag[i - delta]; + } + for (int i = nInts - 1; i >= start; i--) + { + mag[i] = 0; + } + } + + if (nBits != 0) + { + int nBits2 = 32 - nBits; + int m = mag[magEnd]; + + for (int i = magEnd; i > nInts; --i) + { + int next = mag[i - 1]; + + mag[i] = (int)((uint)m >> nBits) | (next << nBits2); + m = next; + } + + mag[nInts] = (int)((uint)mag[nInts] >> nBits); + } + + return mag; + } + + // do a right shift by one - this does it in place. + private static int[] ShiftRightOneInPlace( + int start, + int[] mag) + { + int i = mag.Length; + int m = mag[i - 1]; + + while (--i > start) + { + int next = mag[i - 1]; + mag[i] = ((int)((uint)m >> 1)) | (next << 31); + m = next; + } + + mag[start] = (int)((uint)mag[start] >> 1); + + return mag; + } + + public NetBigInteger ShiftRight( + int n) + { + if (n == 0) + return this; + + if (n < 0) + return ShiftLeft(-n); + + if (n >= BitLength) + return (m_sign < 0 ? One.Negate() : Zero); + + // int[] res = (int[]) magnitude.Clone(); + // + // res = ShiftRightInPlace(0, res, n); + // + // return new BigInteger(sign, res, true); + + int resultLength = (BitLength - n + 31) >> 5; + int[] res = new int[resultLength]; + + int numInts = n >> 5; + int numBits = n & 31; + + if (numBits == 0) + { + Array.Copy(m_magnitude, 0, res, 0, res.Length); + } + else + { + int numBits2 = 32 - numBits; + + int magPos = m_magnitude.Length - 1 - numInts; + for (int i = resultLength - 1; i >= 0; --i) + { + res[i] = (int)((uint)m_magnitude[magPos--] >> numBits); + + if (magPos >= 0) + { + res[i] |= m_magnitude[magPos] << numBits2; + } + } + } + + Debug.Assert(res[0] != 0); + + return new NetBigInteger(m_sign, res, false); + } + + public int SignValue + { + get { return m_sign; } + } + + // returns x = x - y - we assume x is >= y + private static int[] Subtract( + int xStart, + int[] x, + int yStart, + int[] y) + { + Debug.Assert(yStart < y.Length); + Debug.Assert(x.Length - xStart >= y.Length - yStart); + + int iT = x.Length; + int iV = y.Length; + long m; + int borrow = 0; + + do + { + m = (x[--iT] & IMASK) - (y[--iV] & IMASK) + borrow; + x[iT] = (int)m; + + // borrow = (m < 0) ? -1 : 0; + borrow = (int)(m >> 63); + } + while (iV > yStart); + + if (borrow != 0) + { + while (--x[--iT] == -1) + { + } + } + + return x; + } + + public NetBigInteger Subtract( + NetBigInteger n) + { + if (n.m_sign == 0) + return this; + + if (m_sign == 0) + return n.Negate(); + + if (m_sign != n.m_sign) + return Add(n.Negate()); + + int compare = CompareNoLeadingZeroes(0, m_magnitude, 0, n.m_magnitude); + if (compare == 0) + return Zero; + + NetBigInteger bigun, lilun; + if (compare < 0) + { + bigun = n; + lilun = this; + } + else + { + bigun = this; + lilun = n; + } + + return new NetBigInteger(m_sign * compare, doSubBigLil(bigun.m_magnitude, lilun.m_magnitude), true); + } + + private static int[] doSubBigLil( + int[] bigMag, + int[] lilMag) + { + int[] res = (int[])bigMag.Clone(); + + return Subtract(0, res, 0, lilMag); + } + + public byte[] ToByteArray() + { + return ToByteArray(false); + } + + public byte[] ToByteArrayUnsigned() + { + return ToByteArray(true); + } + + private byte[] ToByteArray( + bool unsigned) + { + if (m_sign == 0) + return unsigned ? ZeroEncoding : new byte[1]; + + int nBits = (unsigned && m_sign > 0) + ? BitLength + : BitLength + 1; + + int nBytes = GetByteLength(nBits); + byte[] bytes = new byte[nBytes]; + + int magIndex = m_magnitude.Length; + int bytesIndex = bytes.Length; + + if (m_sign > 0) + { + while (magIndex > 1) + { + uint mag = (uint)m_magnitude[--magIndex]; + bytes[--bytesIndex] = (byte)mag; + bytes[--bytesIndex] = (byte)(mag >> 8); + bytes[--bytesIndex] = (byte)(mag >> 16); + bytes[--bytesIndex] = (byte)(mag >> 24); + } + + uint lastMag = (uint)m_magnitude[0]; + while (lastMag > byte.MaxValue) + { + bytes[--bytesIndex] = (byte)lastMag; + lastMag >>= 8; + } + + bytes[--bytesIndex] = (byte)lastMag; + } + else // sign < 0 + { + bool carry = true; + + while (magIndex > 1) + { + uint mag = ~((uint)m_magnitude[--magIndex]); + + if (carry) + { + carry = (++mag == uint.MinValue); + } + + bytes[--bytesIndex] = (byte)mag; + bytes[--bytesIndex] = (byte)(mag >> 8); + bytes[--bytesIndex] = (byte)(mag >> 16); + bytes[--bytesIndex] = (byte)(mag >> 24); + } + + uint lastMag = (uint)m_magnitude[0]; + + if (carry) + { + // Never wraps because magnitude[0] != 0 + --lastMag; + } + + while (lastMag > byte.MaxValue) + { + bytes[--bytesIndex] = (byte)~lastMag; + lastMag >>= 8; + } + + bytes[--bytesIndex] = (byte)~lastMag; + + if (bytesIndex > 0) + { + bytes[--bytesIndex] = byte.MaxValue; + } + } + + return bytes; + } + + public override string ToString() + { + return ToString(10); + } + + public string ToString( + int radix) + { + switch (radix) + { + case 2: + case 10: + case 16: + break; + default: + throw new FormatException("Only bases 2, 10, 16 are allowed"); + } + + // NB: Can only happen to internally managed instances + if (m_magnitude == null) + return "null"; + + if (m_sign == 0) + return "0"; + + Debug.Assert(m_magnitude.Length > 0); + + StringBuilder sb = new StringBuilder(); + + if (radix == 16) + { + sb.Append(m_magnitude[0].ToString("x")); + + for (int i = 1; i < m_magnitude.Length; i++) + { + sb.Append(m_magnitude[i].ToString("x8")); + } + } + else if (radix == 2) + { + sb.Append('1'); + + for (int i = BitLength - 2; i >= 0; --i) + { + sb.Append(TestBit(i) ? '1' : '0'); + } + } + else + { + // This is algorithm 1a from chapter 4.4 in Seminumerical Algorithms, slow but it works + Stack S = new Stack(); + NetBigInteger bs = ValueOf(radix); + + NetBigInteger u = Abs(); + NetBigInteger b; + + while (u.m_sign != 0) + { + b = u.Mod(bs); + if (b.m_sign == 0) + { + S.Push("0"); + } + else + { + // see how to interact with different bases + S.Push(b.m_magnitude[0].ToString("d")); + } + u = u.Divide(bs); + } + + // Then pop the stack + while (S.Count != 0) + { + sb.Append((string)S.Pop()); + } + } + + string s = sb.ToString(); + + Debug.Assert(s.Length > 0); + + // Strip leading zeros. (We know this number is not all zeroes though) + if (s[0] == '0') + { + int nonZeroPos = 0; + while (s[++nonZeroPos] == '0') { } + + s = s.Substring(nonZeroPos); + } + + if (m_sign == -1) + { + s = "-" + s; + } + + return s; + } + + private static NetBigInteger createUValueOf( + ulong value) + { + int msw = (int)(value >> 32); + int lsw = (int)value; + + if (msw != 0) + return new NetBigInteger(1, new int[] { msw, lsw }, false); + + if (lsw != 0) + { + NetBigInteger n = new NetBigInteger(1, new int[] { lsw }, false); + // Check for a power of two + if ((lsw & -lsw) == lsw) + { + n.m_numBits = 1; + } + return n; + } + + return Zero; + } + + private static NetBigInteger createValueOf( + long value) + { + if (value < 0) + { + if (value == long.MinValue) + return createValueOf(~value).Not(); + + return createValueOf(-value).Negate(); + } + + return createUValueOf((ulong)value); + } + + public static NetBigInteger ValueOf( + long value) + { + switch (value) + { + case 0: + return Zero; + case 1: + return One; + case 2: + return Two; + case 3: + return Three; + case 10: + return Ten; + } + + return createValueOf(value); + } + + public int GetLowestSetBit() + { + if (m_sign == 0) + return -1; + + int w = m_magnitude.Length; + + while (--w > 0) + { + if (m_magnitude[w] != 0) + break; + } + + int word = (int)m_magnitude[w]; + Debug.Assert(word != 0); + + int b = (word & 0x0000FFFF) == 0 + ? (word & 0x00FF0000) == 0 + ? 7 + : 15 + : (word & 0x000000FF) == 0 + ? 23 + : 31; + + while (b > 0) + { + if ((word << b) == int.MinValue) + break; + + b--; + } + + return ((m_magnitude.Length - w) * 32 - (b + 1)); + } + + public bool TestBit( + int n) + { + if (n < 0) + throw new ArithmeticException("Bit position must not be negative"); + + if (m_sign < 0) + return !Not().TestBit(n); + + int wordNum = n / 32; + if (wordNum >= m_magnitude.Length) + return false; + + int word = m_magnitude[m_magnitude.Length - 1 - wordNum]; + return ((word >> (n % 32)) & 1) > 0; + } + } +} \ No newline at end of file diff --git a/Lidgren.Network/NetBitVector.cs b/Lidgren.Network/NetBitVector.cs new file mode 100644 index 0000000..af4b4d7 --- /dev/null +++ b/Lidgren.Network/NetBitVector.cs @@ -0,0 +1,172 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ +using System; +using System.Text; + +namespace Lidgren.Network +{ + /// + /// Fixed size vector of booleans + /// + public sealed class NetBitVector + { + private readonly int m_capacity; + private readonly int[] m_data; + private int m_numBitsSet; + + /// + /// Gets the number of bits/booleans stored in this vector + /// + public int Capacity { get { return m_capacity; } } + + /// + /// NetBitVector constructor + /// + public NetBitVector(int bitsCapacity) + { + m_capacity = bitsCapacity; + m_data = new int[(bitsCapacity + 31) / 32]; + } + + /// + /// Returns true if all bits/booleans are set to zero/false + /// + public bool IsEmpty() + { + return (m_numBitsSet == 0); + } + + /// + /// Returns the number of bits/booleans set to one/true + /// + /// + public int Count() + { + return m_numBitsSet; + } + + /// + /// Shift all bits one step down, cycling the first bit to the top + /// + public void RotateDown() + { + int lenMinusOne = m_data.Length - 1; + + int firstBit = m_data[0] & 1; + for (int i = 0; i < lenMinusOne; i++) + m_data[i] = ((m_data[i] >> 1) & ~(1 << 31)) | m_data[i + 1] << 31; + + int lastIndex = m_capacity - 1 - (32 * lenMinusOne); + + // special handling of last int + int cur = m_data[lenMinusOne]; + cur = cur >> 1; + cur |= firstBit << lastIndex; + + m_data[lenMinusOne] = cur; + } + + /// + /// Gets the first (lowest) index set to true + /// + public int GetFirstSetIndex() + { + int idx = 0; + + int data = m_data[0]; + while (data == 0) + { + idx++; + data = m_data[idx]; + } + + int a = 0; + while (((data >> a) & 1) == 0) + a++; + + return (idx * 32) + a; + } + + /// + /// Gets the bit/bool at the specified index + /// + public bool Get(int bitIndex) + { + NetException.Assert(bitIndex >= 0 && bitIndex < m_capacity); + + return (m_data[bitIndex / 32] & (1 << (bitIndex % 32))) != 0; + } + + /// + /// Sets or clears the bit/bool at the specified index + /// + public void Set(int bitIndex, bool value) + { + NetException.Assert(bitIndex >= 0 && bitIndex < m_capacity); + + int idx = bitIndex / 32; + if (value) + { + if ((m_data[idx] & (1 << (bitIndex % 32))) == 0) + m_numBitsSet++; + m_data[idx] |= (1 << (bitIndex % 32)); + } + else + { + if ((m_data[idx] & (1 << (bitIndex % 32))) != 0) + m_numBitsSet--; + m_data[idx] &= (~(1 << (bitIndex % 32))); + } + } + + /// + /// Gets the bit/bool at the specified index + /// + [System.Runtime.CompilerServices.IndexerName("Bit")] + public bool this[int index] + { + get { return Get(index); } + set { Set(index, value); } + } + + /// + /// Sets all bits/booleans to zero/false + /// + public void Clear() + { + Array.Clear(m_data, 0, m_data.Length); + m_numBitsSet = 0; + NetException.Assert(this.IsEmpty()); + } + + /// + /// Returns a string that represents this object + /// + public override string ToString() + { + StringBuilder bdr = new StringBuilder(m_capacity + 2); + bdr.Append('['); + for (int i = 0; i < m_capacity; i++) + bdr.Append(Get(m_capacity - i - 1) ? '1' : '0'); + bdr.Append(']'); + return bdr.ToString(); + } + } +} diff --git a/Lidgren.Network/NetBitWriter.cs b/Lidgren.Network/NetBitWriter.cs new file mode 100644 index 0000000..c641c49 --- /dev/null +++ b/Lidgren.Network/NetBitWriter.cs @@ -0,0 +1,513 @@ +//#define UNSAFE +//#define BIGENDIAN +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ +using System; +using System.Collections.Generic; + +using System.Diagnostics; + +namespace Lidgren.Network +{ + /// + /// Helper class for NetBuffer to write/read bits + /// + public static class NetBitWriter + { + /// + /// Read 1-8 bits from a buffer into a byte + /// + public static byte ReadByte(byte[] fromBuffer, int numberOfBits, int readBitOffset) + { + NetException.Assert(((numberOfBits > 0) && (numberOfBits < 9)), "Read() can only read between 1 and 8 bits"); + + int bytePtr = readBitOffset >> 3; + int startReadAtIndex = readBitOffset - (bytePtr * 8); // (readBitOffset % 8); + + if (startReadAtIndex == 0 && numberOfBits == 8) + return fromBuffer[bytePtr]; + + // mask away unused bits lower than (right of) relevant bits in first byte + byte returnValue = (byte)(fromBuffer[bytePtr] >> startReadAtIndex); + + int numberOfBitsInSecondByte = numberOfBits - (8 - startReadAtIndex); + + if (numberOfBitsInSecondByte < 1) + { + // we don't need to read from the second byte, but we DO need + // to mask away unused bits higher than (left of) relevant bits + return (byte)(returnValue & (255 >> (8 - numberOfBits))); + } + + byte second = fromBuffer[bytePtr + 1]; + + // mask away unused bits higher than (left of) relevant bits in second byte + second &= (byte)(255 >> (8 - numberOfBitsInSecondByte)); + + return (byte)(returnValue | (byte)(second << (numberOfBits - numberOfBitsInSecondByte))); + } + + /// + /// Read several bytes from a buffer + /// + public static void ReadBytes(byte[] fromBuffer, int numberOfBytes, int readBitOffset, byte[] destination, int destinationByteOffset) + { + int readPtr = readBitOffset >> 3; + int startReadAtIndex = readBitOffset - (readPtr * 8); // (readBitOffset % 8); + + if (startReadAtIndex == 0) + { + Buffer.BlockCopy(fromBuffer, readPtr, destination, destinationByteOffset, numberOfBytes); + return; + } + + int secondPartLen = 8 - startReadAtIndex; + int secondMask = 255 >> secondPartLen; + + for (int i = 0; i < numberOfBytes; i++) + { + // mask away unused bits lower than (right of) relevant bits in byte + int b = fromBuffer[readPtr] >> startReadAtIndex; + + readPtr++; + + // mask away unused bits higher than (left of) relevant bits in second byte + int second = fromBuffer[readPtr] & secondMask; + + destination[destinationByteOffset++] = (byte)(b | (second << secondPartLen)); + } + + return; + } + + /// + /// Write 0-8 bits of data to buffer + /// + public static void WriteByte(byte source, int numberOfBits, byte[] destination, int destBitOffset) + { + if (numberOfBits == 0) + return; + + NetException.Assert(((numberOfBits >= 0) && (numberOfBits <= 8)), "Must write between 0 and 8 bits!"); + + // Mask out all the bits we dont want + source = (byte)(source & (0xFF >> (8 - numberOfBits))); + + int p = destBitOffset >> 3; + int bitsUsed = destBitOffset & 0x7; // mod 8 + int bitsFree = 8 - bitsUsed; + int bitsLeft = bitsFree - numberOfBits; + + // Fast path, everything fits in the first byte + if (bitsLeft >= 0) + { + int mask = (0xFF >> bitsFree) | (0xFF << (8 - bitsLeft)); + + destination[p] = (byte)( + // Mask out lower and upper bits + (destination[p] & mask) | + + // Insert new bits + (source << bitsUsed) + ); + + return; + } + + destination[p] = (byte)( + // Mask out upper bits + (destination[p] & (0xFF >> bitsFree)) | + + // Write the lower bits to the upper bits in the first byte + (source << bitsUsed) + ); + + p += 1; + + destination[p] = (byte)( + // Mask out lower bits + (destination[p] & (0xFF << (numberOfBits - bitsFree))) | + + // Write the upper bits to the lower bits of the second byte + (source >> bitsFree) + ); + } + + /// + /// Write several whole bytes + /// + public static void WriteBytes(byte[] source, int sourceByteOffset, int numberOfBytes, byte[] destination, int destBitOffset) + { + int dstBytePtr = destBitOffset >> 3; + int firstPartLen = (destBitOffset % 8); + + if (firstPartLen == 0) + { + Buffer.BlockCopy(source, sourceByteOffset, destination, dstBytePtr, numberOfBytes); + return; + } + + int lastPartLen = 8 - firstPartLen; + + for (int i = 0; i < numberOfBytes; i++) + { + byte src = source[sourceByteOffset + i]; + + // write last part of this byte + destination[dstBytePtr] &= (byte)(255 >> lastPartLen); // clear before writing + destination[dstBytePtr] |= (byte)(src << firstPartLen); // write first half + + dstBytePtr++; + + // write first part of next byte + destination[dstBytePtr] &= (byte)(255 << firstPartLen); // clear before writing + destination[dstBytePtr] |= (byte)(src >> lastPartLen); // write second half + } + + return; + } + + /// + /// Reads an unsigned 16 bit integer + /// + [CLSCompliant(false)] +#if UNSAFE + public static unsafe ushort ReadUInt16(byte[] fromBuffer, int numberOfBits, int readBitOffset) + { + Debug.Assert(((numberOfBits > 0) && (numberOfBits <= 16)), "ReadUInt16() can only read between 1 and 16 bits"); + + if (numberOfBits == 16 && ((readBitOffset % 8) == 0)) + { + fixed (byte* ptr = &(fromBuffer[readBitOffset / 8])) + { + return *(((ushort*)ptr)); + } + } +#else + public static ushort ReadUInt16(byte[] fromBuffer, int numberOfBits, int readBitOffset) + { + Debug.Assert(((numberOfBits > 0) && (numberOfBits <= 16)), "ReadUInt16() can only read between 1 and 16 bits"); +#endif + ushort returnValue; + if (numberOfBits <= 8) + { + returnValue = ReadByte(fromBuffer, numberOfBits, readBitOffset); + return returnValue; + } + returnValue = ReadByte(fromBuffer, 8, readBitOffset); + numberOfBits -= 8; + readBitOffset += 8; + + if (numberOfBits <= 8) + { + returnValue |= (ushort)(ReadByte(fromBuffer, numberOfBits, readBitOffset) << 8); + } + +#if BIGENDIAN + // reorder bytes + uint retVal = returnValue; + retVal = ((retVal & 0x0000ff00) >> 8) | ((retVal & 0x000000ff) << 8); + return (ushort)retVal; +#else + return returnValue; +#endif + } + + /// + /// Reads the specified number of bits into an UInt32 + /// + [CLSCompliant(false)] +#if UNSAFE + public static unsafe uint ReadUInt32(byte[] fromBuffer, int numberOfBits, int readBitOffset) + { + NetException.Assert(((numberOfBits > 0) && (numberOfBits <= 32)), "ReadUInt32() can only read between 1 and 32 bits"); + + if (numberOfBits == 32 && ((readBitOffset % 8) == 0)) + { + fixed (byte* ptr = &(fromBuffer[readBitOffset / 8])) + { + return *(((uint*)ptr)); + } + } +#else + + public static uint ReadUInt32(byte[] fromBuffer, int numberOfBits, int readBitOffset) + { + NetException.Assert(((numberOfBits > 0) && (numberOfBits <= 32)), "ReadUInt32() can only read between 1 and 32 bits"); +#endif + uint returnValue; + if (numberOfBits <= 8) + { + returnValue = ReadByte(fromBuffer, numberOfBits, readBitOffset); + return returnValue; + } + returnValue = ReadByte(fromBuffer, 8, readBitOffset); + numberOfBits -= 8; + readBitOffset += 8; + + if (numberOfBits <= 8) + { + returnValue |= (uint)(ReadByte(fromBuffer, numberOfBits, readBitOffset) << 8); + return returnValue; + } + returnValue |= (uint)(ReadByte(fromBuffer, 8, readBitOffset) << 8); + numberOfBits -= 8; + readBitOffset += 8; + + if (numberOfBits <= 8) + { + uint r = ReadByte(fromBuffer, numberOfBits, readBitOffset); + r <<= 16; + returnValue |= r; + return returnValue; + } + returnValue |= (uint)(ReadByte(fromBuffer, 8, readBitOffset) << 16); + numberOfBits -= 8; + readBitOffset += 8; + + returnValue |= (uint)(ReadByte(fromBuffer, numberOfBits, readBitOffset) << 24); + +#if BIGENDIAN + // reorder bytes + return + ((returnValue & 0xff000000) >> 24) | + ((returnValue & 0x00ff0000) >> 8) | + ((returnValue & 0x0000ff00) << 8) | + ((returnValue & 0x000000ff) << 24); +#else + return returnValue; +#endif + } + + //[CLSCompliant(false)] + //public static ulong ReadUInt64(byte[] fromBuffer, int numberOfBits, int readBitOffset) + + /// + /// Writes an unsigned 16 bit integer + /// + [CLSCompliant(false)] + public static void WriteUInt16(ushort source, int numberOfBits, byte[] destination, int destinationBitOffset) + { + if (numberOfBits == 0) + return; + + NetException.Assert((numberOfBits >= 0 && numberOfBits <= 16), "numberOfBits must be between 0 and 16"); +#if BIGENDIAN + // reorder bytes + uint intSource = source; + intSource = ((intSource & 0x0000ff00) >> 8) | ((intSource & 0x000000ff) << 8); + source = (ushort)intSource; +#endif + if (numberOfBits <= 8) + { + NetBitWriter.WriteByte((byte)source, numberOfBits, destination, destinationBitOffset); + return; + } + + NetBitWriter.WriteByte((byte)source, 8, destination, destinationBitOffset); + + numberOfBits -= 8; + if (numberOfBits > 0) + NetBitWriter.WriteByte((byte)(source >> 8), numberOfBits, destination, destinationBitOffset + 8); + } + + /// + /// Writes the specified number of bits into a byte array + /// + [CLSCompliant(false)] + public static int WriteUInt32(uint source, int numberOfBits, byte[] destination, int destinationBitOffset) + { +#if BIGENDIAN + // reorder bytes + source = ((source & 0xff000000) >> 24) | + ((source & 0x00ff0000) >> 8) | + ((source & 0x0000ff00) << 8) | + ((source & 0x000000ff) << 24); +#endif + + int returnValue = destinationBitOffset + numberOfBits; + if (numberOfBits <= 8) + { + NetBitWriter.WriteByte((byte)source, numberOfBits, destination, destinationBitOffset); + return returnValue; + } + NetBitWriter.WriteByte((byte)source, 8, destination, destinationBitOffset); + destinationBitOffset += 8; + numberOfBits -= 8; + + if (numberOfBits <= 8) + { + NetBitWriter.WriteByte((byte)(source >> 8), numberOfBits, destination, destinationBitOffset); + return returnValue; + } + NetBitWriter.WriteByte((byte)(source >> 8), 8, destination, destinationBitOffset); + destinationBitOffset += 8; + numberOfBits -= 8; + + if (numberOfBits <= 8) + { + NetBitWriter.WriteByte((byte)(source >> 16), numberOfBits, destination, destinationBitOffset); + return returnValue; + } + NetBitWriter.WriteByte((byte)(source >> 16), 8, destination, destinationBitOffset); + destinationBitOffset += 8; + numberOfBits -= 8; + + NetBitWriter.WriteByte((byte)(source >> 24), numberOfBits, destination, destinationBitOffset); + return returnValue; + } + + /// + /// Writes the specified number of bits into a byte array + /// + [CLSCompliant(false)] + public static int WriteUInt64(ulong source, int numberOfBits, byte[] destination, int destinationBitOffset) + { +#if BIGENDIAN + source = ((source & 0xff00000000000000L) >> 56) | + ((source & 0x00ff000000000000L) >> 40) | + ((source & 0x0000ff0000000000L) >> 24) | + ((source & 0x000000ff00000000L) >> 8) | + ((source & 0x00000000ff000000L) << 8) | + ((source & 0x0000000000ff0000L) << 24) | + ((source & 0x000000000000ff00L) << 40) | + ((source & 0x00000000000000ffL) << 56); +#endif + + int returnValue = destinationBitOffset + numberOfBits; + if (numberOfBits <= 8) + { + NetBitWriter.WriteByte((byte)source, numberOfBits, destination, destinationBitOffset); + return returnValue; + } + NetBitWriter.WriteByte((byte)source, 8, destination, destinationBitOffset); + destinationBitOffset += 8; + numberOfBits -= 8; + + if (numberOfBits <= 8) + { + NetBitWriter.WriteByte((byte)(source >> 8), numberOfBits, destination, destinationBitOffset); + return returnValue; + } + NetBitWriter.WriteByte((byte)(source >> 8), 8, destination, destinationBitOffset); + destinationBitOffset += 8; + numberOfBits -= 8; + + if (numberOfBits <= 8) + { + NetBitWriter.WriteByte((byte)(source >> 16), numberOfBits, destination, destinationBitOffset); + return returnValue; + } + NetBitWriter.WriteByte((byte)(source >> 16), 8, destination, destinationBitOffset); + destinationBitOffset += 8; + numberOfBits -= 8; + + if (numberOfBits <= 8) + { + NetBitWriter.WriteByte((byte)(source >> 24), numberOfBits, destination, destinationBitOffset); + return returnValue; + } + NetBitWriter.WriteByte((byte)(source >> 24), 8, destination, destinationBitOffset); + destinationBitOffset += 8; + numberOfBits -= 8; + + if (numberOfBits <= 8) + { + NetBitWriter.WriteByte((byte)(source >> 32), numberOfBits, destination, destinationBitOffset); + return returnValue; + } + NetBitWriter.WriteByte((byte)(source >> 32), 8, destination, destinationBitOffset); + destinationBitOffset += 8; + numberOfBits -= 8; + + if (numberOfBits <= 8) + { + NetBitWriter.WriteByte((byte)(source >> 40), numberOfBits, destination, destinationBitOffset); + return returnValue; + } + NetBitWriter.WriteByte((byte)(source >> 40), 8, destination, destinationBitOffset); + destinationBitOffset += 8; + numberOfBits -= 8; + + if (numberOfBits <= 8) + { + NetBitWriter.WriteByte((byte)(source >> 48), numberOfBits, destination, destinationBitOffset); + return returnValue; + } + NetBitWriter.WriteByte((byte)(source >> 48), 8, destination, destinationBitOffset); + destinationBitOffset += 8; + numberOfBits -= 8; + + if (numberOfBits <= 8) + { + NetBitWriter.WriteByte((byte)(source >> 56), numberOfBits, destination, destinationBitOffset); + return returnValue; + } + NetBitWriter.WriteByte((byte)(source >> 56), 8, destination, destinationBitOffset); + destinationBitOffset += 8; + numberOfBits -= 8; + + return returnValue; + } + + // + // Variable size + // + + /// + /// Write Base128 encoded variable sized unsigned integer + /// + /// number of bytes written + [CLSCompliant(false)] + public static int WriteVariableUInt32(byte[] intoBuffer, int offset, uint value) + { + int retval = 0; + uint num1 = (uint)value; + while (num1 >= 0x80) + { + intoBuffer[offset + retval] = (byte)(num1 | 0x80); + num1 = num1 >> 7; + retval++; + } + intoBuffer[offset + retval] = (byte)num1; + return retval + 1; + } + + /// + /// Reads a UInt32 written using WriteUnsignedVarInt(); will increment offset! + /// + [CLSCompliant(false)] + public static uint ReadVariableUInt32(byte[] buffer, ref int offset) + { + int num1 = 0; + int num2 = 0; + while (true) + { + NetException.Assert(num2 != 0x23, "Bad 7-bit encoded integer"); + + byte num3 = buffer[offset++]; + num1 |= (num3 & 0x7f) << (num2 & 0x1f); + num2 += 7; + if ((num3 & 0x80) == 0) + return (uint)num1; + } + } + } +} diff --git a/Lidgren.Network/NetBuffer.Peek.cs b/Lidgren.Network/NetBuffer.Peek.cs new file mode 100644 index 0000000..fa4adc9 --- /dev/null +++ b/Lidgren.Network/NetBuffer.Peek.cs @@ -0,0 +1,312 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ +using System; +using System.Diagnostics; +using System.Net; + +namespace Lidgren.Network +{ + public partial class NetBuffer + { + /// + /// Gets the internal data buffer + /// + public byte[] PeekDataBuffer() { return m_data; } + + // + // 1 bit + // + /// + /// Reads a 1-bit Boolean without advancing the read pointer + /// + public bool PeekBoolean() + { + NetException.Assert(m_bitLength - m_readPosition >= 1, c_readOverflowError); + byte retval = NetBitWriter.ReadByte(m_data, 1, m_readPosition); + return (retval > 0 ? true : false); + } + + // + // 8 bit + // + /// + /// Reads a Byte without advancing the read pointer + /// + public byte PeekByte() + { + NetException.Assert(m_bitLength - m_readPosition >= 8, c_readOverflowError); + byte retval = NetBitWriter.ReadByte(m_data, 8, m_readPosition); + return retval; + } + + /// + /// Reads an SByte without advancing the read pointer + /// + [CLSCompliant(false)] + public sbyte PeekSByte() + { + NetException.Assert(m_bitLength - m_readPosition >= 8, c_readOverflowError); + byte retval = NetBitWriter.ReadByte(m_data, 8, m_readPosition); + return (sbyte)retval; + } + + /// + /// Reads the specified number of bits into a Byte without advancing the read pointer + /// + public byte PeekByte(int numberOfBits) + { + byte retval = NetBitWriter.ReadByte(m_data, numberOfBits, m_readPosition); + return retval; + } + + /// + /// Reads the specified number of bytes without advancing the read pointer + /// + public byte[] PeekBytes(int numberOfBytes) + { + NetException.Assert(m_bitLength - m_readPosition >= (numberOfBytes * 8), c_readOverflowError); + + byte[] retval = new byte[numberOfBytes]; + NetBitWriter.ReadBytes(m_data, numberOfBytes, m_readPosition, retval, 0); + return retval; + } + + /// + /// Reads the specified number of bytes without advancing the read pointer + /// + public void PeekBytes(byte[] into, int offset, int numberOfBytes) + { + NetException.Assert(m_bitLength - m_readPosition >= (numberOfBytes * 8), c_readOverflowError); + NetException.Assert(offset + numberOfBytes <= into.Length); + + NetBitWriter.ReadBytes(m_data, numberOfBytes, m_readPosition, into, offset); + return; + } + + // + // 16 bit + // + /// + /// Reads an Int16 without advancing the read pointer + /// + public Int16 PeekInt16() + { + NetException.Assert(m_bitLength - m_readPosition >= 16, c_readOverflowError); + uint retval = NetBitWriter.ReadUInt16(m_data, 16, m_readPosition); + return (short)retval; + } + + /// + /// Reads a UInt16 without advancing the read pointer + /// + [CLSCompliant(false)] + public UInt16 PeekUInt16() + { + NetException.Assert(m_bitLength - m_readPosition >= 16, c_readOverflowError); + uint retval = NetBitWriter.ReadUInt16(m_data, 16, m_readPosition); + return (ushort)retval; + } + + // + // 32 bit + // + /// + /// Reads an Int32 without advancing the read pointer + /// + public Int32 PeekInt32() + { + NetException.Assert(m_bitLength - m_readPosition >= 32, c_readOverflowError); + uint retval = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition); + return (Int32)retval; + } + + /// + /// Reads the specified number of bits into an Int32 without advancing the read pointer + /// + public Int32 PeekInt32(int numberOfBits) + { + NetException.Assert((numberOfBits > 0 && numberOfBits <= 32), "ReadInt() can only read between 1 and 32 bits"); + NetException.Assert(m_bitLength - m_readPosition >= numberOfBits, c_readOverflowError); + + uint retval = NetBitWriter.ReadUInt32(m_data, numberOfBits, m_readPosition); + + if (numberOfBits == 32) + return (int)retval; + + int signBit = 1 << (numberOfBits - 1); + if ((retval & signBit) == 0) + return (int)retval; // positive + + // negative + unchecked + { + uint mask = ((uint)-1) >> (33 - numberOfBits); + uint tmp = (retval & mask) + 1; + return -((int)tmp); + } + } + + /// + /// Reads a UInt32 without advancing the read pointer + /// + [CLSCompliant(false)] + public UInt32 PeekUInt32() + { + NetException.Assert(m_bitLength - m_readPosition >= 32, c_readOverflowError); + uint retval = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition); + return retval; + } + + /// + /// Reads the specified number of bits into a UInt32 without advancing the read pointer + /// + [CLSCompliant(false)] + public UInt32 PeekUInt32(int numberOfBits) + { + NetException.Assert((numberOfBits > 0 && numberOfBits <= 32), "ReadUInt() can only read between 1 and 32 bits"); + //NetException.Assert(m_bitLength - m_readBitPtr >= numberOfBits, "tried to read past buffer size"); + + UInt32 retval = NetBitWriter.ReadUInt32(m_data, numberOfBits, m_readPosition); + return retval; + } + + // + // 64 bit + // + /// + /// Reads a UInt64 without advancing the read pointer + /// + [CLSCompliant(false)] + public UInt64 PeekUInt64() + { + NetException.Assert(m_bitLength - m_readPosition >= 64, c_readOverflowError); + + ulong low = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition); + ulong high = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition + 32); + + ulong retval = low + (high << 32); + + return retval; + } + + /// + /// Reads an Int64 without advancing the read pointer + /// + public Int64 PeekInt64() + { + NetException.Assert(m_bitLength - m_readPosition >= 64, c_readOverflowError); + unchecked + { + ulong retval = PeekUInt64(); + long longRetval = (long)retval; + return longRetval; + } + } + + /// + /// Reads the specified number of bits into an UInt64 without advancing the read pointer + /// + [CLSCompliant(false)] + public UInt64 PeekUInt64(int numberOfBits) + { + NetException.Assert((numberOfBits > 0 && numberOfBits <= 64), "ReadUInt() can only read between 1 and 64 bits"); + NetException.Assert(m_bitLength - m_readPosition >= numberOfBits, c_readOverflowError); + + ulong retval; + if (numberOfBits <= 32) + { + retval = (ulong)NetBitWriter.ReadUInt32(m_data, numberOfBits, m_readPosition); + } + else + { + retval = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition); + retval |= NetBitWriter.ReadUInt32(m_data, numberOfBits - 32, m_readPosition) << 32; + } + return retval; + } + + /// + /// Reads the specified number of bits into an Int64 without advancing the read pointer + /// + public Int64 PeekInt64(int numberOfBits) + { + NetException.Assert(((numberOfBits > 0) && (numberOfBits < 65)), "ReadInt64(bits) can only read between 1 and 64 bits"); + return (long)PeekUInt64(numberOfBits); + } + + // + // Floating point + // + /// + /// Reads a 32-bit Single without advancing the read pointer + /// + public float PeekFloat() + { + return PeekSingle(); + } + + /// + /// Reads a 32-bit Single without advancing the read pointer + /// + public float PeekSingle() + { + NetException.Assert(m_bitLength - m_readPosition >= 32, c_readOverflowError); + + if ((m_readPosition & 7) == 0) // read directly + { + float retval = BitConverter.ToSingle(m_data, m_readPosition >> 3); + return retval; + } + + byte[] bytes = PeekBytes(4); + return BitConverter.ToSingle(bytes, 0); + } + + /// + /// Reads a 64-bit Double without advancing the read pointer + /// + public double PeekDouble() + { + NetException.Assert(m_bitLength - m_readPosition >= 64, c_readOverflowError); + + if ((m_readPosition & 7) == 0) // read directly + { + // read directly + double retval = BitConverter.ToDouble(m_data, m_readPosition >> 3); + return retval; + } + + byte[] bytes = PeekBytes(8); + return BitConverter.ToDouble(bytes, 0); + } + + /// + /// Reads a string without advancing the read pointer + /// + public string PeekString() + { + int wasReadPosition = m_readPosition; + string retval = ReadString(); + m_readPosition = wasReadPosition; + return retval; + } + } +} + diff --git a/Lidgren.Network/NetBuffer.Read.Reflection.cs b/Lidgren.Network/NetBuffer.Read.Reflection.cs new file mode 100644 index 0000000..82b64aa --- /dev/null +++ b/Lidgren.Network/NetBuffer.Read.Reflection.cs @@ -0,0 +1,107 @@ + /* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +using System; +using System.Reflection; + +namespace Lidgren.Network +{ + public partial class NetBuffer + { + /// + /// Reads all public and private declared instance fields of the object in alphabetical order using reflection + /// + public void ReadAllFields(object target) + { + ReadAllFields(target, BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); + } + + /// + /// Reads all fields with the specified binding of the object in alphabetical order using reflection + /// + public void ReadAllFields(object target, BindingFlags flags) + { + if (target == null) + throw new ArgumentNullException("target"); + + Type tp = target.GetType(); + + FieldInfo[] fields = tp.GetFields(flags); + NetUtility.SortMembersList(fields); + + foreach (FieldInfo fi in fields) + { + object value; + + // find read method + MethodInfo readMethod; + if (s_readMethods.TryGetValue(fi.FieldType, out readMethod)) + { + // read value + value = readMethod.Invoke(this, null); + + // set the value + fi.SetValue(target, value); + } + } + } + + /// + /// Reads all public and private declared instance fields of the object in alphabetical order using reflection + /// + public void ReadAllProperties(object target) + { + ReadAllProperties(target, BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); + } + + /// + /// Reads all fields with the specified binding of the object in alphabetical order using reflection + /// + public void ReadAllProperties(object target, BindingFlags flags) + { + if (target == null) + throw new ArgumentNullException("target"); + + Type tp = target.GetType(); + + PropertyInfo[] fields = tp.GetProperties(flags); + NetUtility.SortMembersList(fields); + foreach (PropertyInfo fi in fields) + { + object value; + + // find read method + MethodInfo readMethod; + if (s_readMethods.TryGetValue(fi.PropertyType, out readMethod)) + { + // read value + value = readMethod.Invoke(this, null); + + // set the value +#if UNITY_WEBPLAYER || UNITY_4_5 + var setMethod = fi.GetSetMethod(); +#else + var setMethod = fi.SetMethod; +#endif + if (setMethod != null) + setMethod.Invoke(target, new object[] { value }); + } + } + } + } +} \ No newline at end of file diff --git a/Lidgren.Network/NetBuffer.Read.cs b/Lidgren.Network/NetBuffer.Read.cs new file mode 100644 index 0000000..4109ab3 --- /dev/null +++ b/Lidgren.Network/NetBuffer.Read.cs @@ -0,0 +1,675 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Reflection; +using System.Net; + +namespace Lidgren.Network +{ + /// + /// Base class for NetIncomingMessage and NetOutgoingMessage + /// + public partial class NetBuffer + { + private const string c_readOverflowError = "Trying to read past the buffer size - likely caused by mismatching Write/Reads, different size or order."; + + /// + /// Reads a boolean value (stored as a single bit) written using Write(bool) + /// + public bool ReadBoolean() + { + NetException.Assert(m_bitLength - m_readPosition >= 1, c_readOverflowError); + byte retval = NetBitWriter.ReadByte(m_data, 1, m_readPosition); + m_readPosition += 1; + return (retval > 0 ? true : false); + } + + /// + /// Reads a byte + /// + public byte ReadByte() + { + NetException.Assert(m_bitLength - m_readPosition >= 8, c_readOverflowError); + byte retval = NetBitWriter.ReadByte(m_data, 8, m_readPosition); + m_readPosition += 8; + return retval; + } + + /// + /// Reads a byte and returns true or false for success + /// + public bool ReadByte(out byte result) + { + if (m_bitLength - m_readPosition < 8) + { + result = 0; + return false; + } + result = NetBitWriter.ReadByte(m_data, 8, m_readPosition); + m_readPosition += 8; + return true; + } + + /// + /// Reads a signed byte + /// + [CLSCompliant(false)] + public sbyte ReadSByte() + { + NetException.Assert(m_bitLength - m_readPosition >= 8, c_readOverflowError); + byte retval = NetBitWriter.ReadByte(m_data, 8, m_readPosition); + m_readPosition += 8; + return (sbyte)retval; + } + + /// + /// Reads 1 to 8 bits into a byte + /// + public byte ReadByte(int numberOfBits) + { + NetException.Assert(numberOfBits > 0 && numberOfBits <= 8, "ReadByte(bits) can only read between 1 and 8 bits"); + byte retval = NetBitWriter.ReadByte(m_data, numberOfBits, m_readPosition); + m_readPosition += numberOfBits; + return retval; + } + + /// + /// Reads the specified number of bytes + /// + public byte[] ReadBytes(int numberOfBytes) + { + NetException.Assert(m_bitLength - m_readPosition + 7 >= (numberOfBytes * 8), c_readOverflowError); + + byte[] retval = new byte[numberOfBytes]; + NetBitWriter.ReadBytes(m_data, numberOfBytes, m_readPosition, retval, 0); + m_readPosition += (8 * numberOfBytes); + return retval; + } + + /// + /// Reads the specified number of bytes and returns true for success + /// + public bool ReadBytes(int numberOfBytes, out byte[] result) + { + if (m_bitLength - m_readPosition + 7 < (numberOfBytes * 8)) + { + result = null; + return false; + } + + result = new byte[numberOfBytes]; + NetBitWriter.ReadBytes(m_data, numberOfBytes, m_readPosition, result, 0); + m_readPosition += (8 * numberOfBytes); + return true; + } + + /// + /// Reads the specified number of bytes into a preallocated array + /// + /// The destination array + /// The offset where to start writing in the destination array + /// The number of bytes to read + public void ReadBytes(byte[] into, int offset, int numberOfBytes) + { + NetException.Assert(m_bitLength - m_readPosition + 7 >= (numberOfBytes * 8), c_readOverflowError); + NetException.Assert(offset + numberOfBytes <= into.Length); + + NetBitWriter.ReadBytes(m_data, numberOfBytes, m_readPosition, into, offset); + m_readPosition += (8 * numberOfBytes); + return; + } + + /// + /// Reads the specified number of bits into a preallocated array + /// + /// The destination array + /// The offset where to start writing in the destination array + /// The number of bits to read + public void ReadBits(byte[] into, int offset, int numberOfBits) + { + NetException.Assert(m_bitLength - m_readPosition >= numberOfBits, c_readOverflowError); + NetException.Assert(offset + NetUtility.BytesToHoldBits(numberOfBits) <= into.Length); + + int numberOfWholeBytes = numberOfBits / 8; + int extraBits = numberOfBits - (numberOfWholeBytes * 8); + + NetBitWriter.ReadBytes(m_data, numberOfWholeBytes, m_readPosition, into, offset); + m_readPosition += (8 * numberOfWholeBytes); + + if (extraBits > 0) + into[offset + numberOfWholeBytes] = ReadByte(extraBits); + + return; + } + + /// + /// Reads a 16 bit signed integer written using Write(Int16) + /// + public Int16 ReadInt16() + { + NetException.Assert(m_bitLength - m_readPosition >= 16, c_readOverflowError); + uint retval = NetBitWriter.ReadUInt16(m_data, 16, m_readPosition); + m_readPosition += 16; + return (short)retval; + } + + /// + /// Reads a 16 bit unsigned integer written using Write(UInt16) + /// + [CLSCompliant(false)] + public UInt16 ReadUInt16() + { + NetException.Assert(m_bitLength - m_readPosition >= 16, c_readOverflowError); + uint retval = NetBitWriter.ReadUInt16(m_data, 16, m_readPosition); + m_readPosition += 16; + return (ushort)retval; + } + + /// + /// Reads a 32 bit signed integer written using Write(Int32) + /// + public Int32 ReadInt32() + { + NetException.Assert(m_bitLength - m_readPosition >= 32, c_readOverflowError); + uint retval = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition); + m_readPosition += 32; + return (Int32)retval; + } + + /// + /// Reads a 32 bit signed integer written using Write(Int32) + /// + [CLSCompliant(false)] + public bool ReadInt32(out Int32 result) + { + if (m_bitLength - m_readPosition < 32) + { + result = 0; + return false; + } + + result = (Int32)NetBitWriter.ReadUInt32(m_data, 32, m_readPosition); + m_readPosition += 32; + return true; + } + + /// + /// Reads a signed integer stored in 1 to 32 bits, written using Write(Int32, Int32) + /// + public Int32 ReadInt32(int numberOfBits) + { + NetException.Assert(numberOfBits > 0 && numberOfBits <= 32, "ReadInt32(bits) can only read between 1 and 32 bits"); + NetException.Assert(m_bitLength - m_readPosition >= numberOfBits, c_readOverflowError); + + uint retval = NetBitWriter.ReadUInt32(m_data, numberOfBits, m_readPosition); + m_readPosition += numberOfBits; + + if (numberOfBits == 32) + return (int)retval; + + int signBit = 1 << (numberOfBits - 1); + if ((retval & signBit) == 0) + return (int)retval; // positive + + // negative + unchecked + { + uint mask = ((uint)-1) >> (33 - numberOfBits); + uint tmp = (retval & mask) + 1; + return -((int)tmp); + } + } + + /// + /// Reads an 32 bit unsigned integer written using Write(UInt32) + /// + [CLSCompliant(false)] + public UInt32 ReadUInt32() + { + NetException.Assert(m_bitLength - m_readPosition >= 32, c_readOverflowError); + uint retval = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition); + m_readPosition += 32; + return retval; + } + + /// + /// Reads an 32 bit unsigned integer written using Write(UInt32) and returns true for success + /// + [CLSCompliant(false)] + public bool ReadUInt32(out UInt32 result) + { + if (m_bitLength - m_readPosition < 32) + { + result = 0; + return false; + } + result = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition); + m_readPosition += 32; + return true; + } + + /// + /// Reads an unsigned integer stored in 1 to 32 bits, written using Write(UInt32, Int32) + /// + [CLSCompliant(false)] + public UInt32 ReadUInt32(int numberOfBits) + { + NetException.Assert(numberOfBits > 0 && numberOfBits <= 32, "ReadUInt32(bits) can only read between 1 and 32 bits"); + //NetException.Assert(m_bitLength - m_readBitPtr >= numberOfBits, "tried to read past buffer size"); + + UInt32 retval = NetBitWriter.ReadUInt32(m_data, numberOfBits, m_readPosition); + m_readPosition += numberOfBits; + return retval; + } + + /// + /// Reads a 64 bit unsigned integer written using Write(UInt64) + /// + [CLSCompliant(false)] + public UInt64 ReadUInt64() + { + NetException.Assert(m_bitLength - m_readPosition >= 64, c_readOverflowError); + + ulong low = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition); + m_readPosition += 32; + ulong high = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition); + + ulong retval = low + (high << 32); + + m_readPosition += 32; + return retval; + } + + /// + /// Reads a 64 bit signed integer written using Write(Int64) + /// + public Int64 ReadInt64() + { + NetException.Assert(m_bitLength - m_readPosition >= 64, c_readOverflowError); + unchecked + { + ulong retval = ReadUInt64(); + long longRetval = (long)retval; + return longRetval; + } + } + + /// + /// Reads an unsigned integer stored in 1 to 64 bits, written using Write(UInt64, Int32) + /// + [CLSCompliant(false)] + public UInt64 ReadUInt64(int numberOfBits) + { + NetException.Assert(numberOfBits > 0 && numberOfBits <= 64, "ReadUInt64(bits) can only read between 1 and 64 bits"); + NetException.Assert(m_bitLength - m_readPosition >= numberOfBits, c_readOverflowError); + + ulong retval; + if (numberOfBits <= 32) + { + retval = (ulong)NetBitWriter.ReadUInt32(m_data, numberOfBits, m_readPosition); + } + else + { + retval = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition); + retval |= NetBitWriter.ReadUInt32(m_data, numberOfBits - 32, m_readPosition) << 32; + } + m_readPosition += numberOfBits; + return retval; + } + + /// + /// Reads a signed integer stored in 1 to 64 bits, written using Write(Int64, Int32) + /// + public Int64 ReadInt64(int numberOfBits) + { + NetException.Assert(((numberOfBits > 0) && (numberOfBits <= 64)), "ReadInt64(bits) can only read between 1 and 64 bits"); + return (long)ReadUInt64(numberOfBits); + } + + /// + /// Reads a 32 bit floating point value written using Write(Single) + /// + public float ReadFloat() + { + return ReadSingle(); + } + + /// + /// Reads a 32 bit floating point value written using Write(Single) + /// + public float ReadSingle() + { + NetException.Assert(m_bitLength - m_readPosition >= 32, c_readOverflowError); + + if ((m_readPosition & 7) == 0) // read directly + { + float retval = BitConverter.ToSingle(m_data, m_readPosition >> 3); + m_readPosition += 32; + return retval; + } + + byte[] bytes = ReadBytes(4); + return BitConverter.ToSingle(bytes, 0); + } + + /// + /// Reads a 32 bit floating point value written using Write(Single) + /// + public bool ReadSingle(out float result) + { + if (m_bitLength - m_readPosition < 32) + { + result = 0.0f; + return false; + } + + if ((m_readPosition & 7) == 0) // read directly + { + result = BitConverter.ToSingle(m_data, m_readPosition >> 3); + m_readPosition += 32; + return true; + } + + byte[] bytes = ReadBytes(4); + result = BitConverter.ToSingle(bytes, 0); + return true; + } + + /// + /// Reads a 64 bit floating point value written using Write(Double) + /// + public double ReadDouble() + { + NetException.Assert(m_bitLength - m_readPosition >= 64, c_readOverflowError); + + if ((m_readPosition & 7) == 0) // read directly + { + // read directly + double retval = BitConverter.ToDouble(m_data, m_readPosition >> 3); + m_readPosition += 64; + return retval; + } + + byte[] bytes = ReadBytes(8); + return BitConverter.ToDouble(bytes, 0); + } + + // + // Variable bit count + // + + /// + /// Reads a variable sized UInt32 written using WriteVariableUInt32() + /// + [CLSCompliant(false)] + public uint ReadVariableUInt32() + { + int num1 = 0; + int num2 = 0; + while (m_bitLength - m_readPosition >= 8) + { + byte num3 = this.ReadByte(); + num1 |= (num3 & 0x7f) << num2; + num2 += 7; + if ((num3 & 0x80) == 0) + return (uint)num1; + } + + // ouch; failed to find enough bytes; malformed variable length number? + return (uint)num1; + } + + /// + /// Reads a variable sized UInt32 written using WriteVariableUInt32() and returns true for success + /// + [CLSCompliant(false)] + public bool ReadVariableUInt32(out uint result) + { + int num1 = 0; + int num2 = 0; + while (m_bitLength - m_readPosition >= 8) + { + byte num3; + if (ReadByte(out num3) == false) + { + result = 0; + return false; + } + num1 |= (num3 & 0x7f) << num2; + num2 += 7; + if ((num3 & 0x80) == 0) + { + result = (uint)num1; + return true; + } + } + result = (uint)num1; + return false; + } + + /// + /// Reads a variable sized Int32 written using WriteVariableInt32() + /// + public int ReadVariableInt32() + { + uint n = ReadVariableUInt32(); + return (int)(n >> 1) ^ -(int)(n & 1); // decode zigzag + } + + /// + /// Reads a variable sized Int64 written using WriteVariableInt64() + /// + public Int64 ReadVariableInt64() + { + UInt64 n = ReadVariableUInt64(); + return (Int64)(n >> 1) ^ -(long)(n & 1); // decode zigzag + } + + /// + /// Reads a variable sized UInt32 written using WriteVariableInt64() + /// + [CLSCompliant(false)] + public UInt64 ReadVariableUInt64() + { + UInt64 num1 = 0; + int num2 = 0; + while (m_bitLength - m_readPosition >= 8) + { + //if (num2 == 0x23) + // throw new FormatException("Bad 7-bit encoded integer"); + + byte num3 = this.ReadByte(); + num1 |= ((UInt64)num3 & 0x7f) << num2; + num2 += 7; + if ((num3 & 0x80) == 0) + return num1; + } + + // ouch; failed to find enough bytes; malformed variable length number? + return num1; + } + + /// + /// Reads a 32 bit floating point value written using WriteSignedSingle() + /// + /// The number of bits used when writing the value + /// A floating point value larger or equal to -1 and smaller or equal to 1 + public float ReadSignedSingle(int numberOfBits) + { + uint encodedVal = ReadUInt32(numberOfBits); + int maxVal = (1 << numberOfBits) - 1; + return ((float)(encodedVal + 1) / (float)(maxVal + 1) - 0.5f) * 2.0f; + } + + /// + /// Reads a 32 bit floating point value written using WriteUnitSingle() + /// + /// The number of bits used when writing the value + /// A floating point value larger or equal to 0 and smaller or equal to 1 + public float ReadUnitSingle(int numberOfBits) + { + uint encodedVal = ReadUInt32(numberOfBits); + int maxVal = (1 << numberOfBits) - 1; + return (float)(encodedVal + 1) / (float)(maxVal + 1); + } + + /// + /// Reads a 32 bit floating point value written using WriteRangedSingle() + /// + /// The minimum value used when writing the value + /// The maximum value used when writing the value + /// The number of bits used when writing the value + /// A floating point value larger or equal to MIN and smaller or equal to MAX + public float ReadRangedSingle(float min, float max, int numberOfBits) + { + float range = max - min; + int maxVal = (1 << numberOfBits) - 1; + float encodedVal = (float)ReadUInt32(numberOfBits); + float unit = encodedVal / (float)maxVal; + return min + (unit * range); + } + + /// + /// Reads a 32 bit integer value written using WriteRangedInteger() + /// + /// The minimum value used when writing the value + /// The maximum value used when writing the value + /// A signed integer value larger or equal to MIN and smaller or equal to MAX + public int ReadRangedInteger(int min, int max) + { + uint range = (uint)(max - min); + int numBits = NetUtility.BitsToHoldUInt(range); + + uint rvalue = ReadUInt32(numBits); + return (int)(min + rvalue); + } + + /// + /// Reads a string written using Write(string) + /// + public string ReadString() + { + int byteLen = (int)ReadVariableUInt32(); + + if (byteLen <= 0) + return String.Empty; + + if ((ulong)(m_bitLength - m_readPosition) < ((ulong)byteLen * 8)) + { + // not enough data +#if DEBUG + + throw new NetException(c_readOverflowError); +#else + m_readPosition = m_bitLength; + return null; // unfortunate; but we need to protect against DDOS +#endif + } + + if ((m_readPosition & 7) == 0) + { + // read directly + string retval = System.Text.Encoding.UTF8.GetString(m_data, m_readPosition >> 3, byteLen); + m_readPosition += (8 * byteLen); + return retval; + } + + byte[] bytes = ReadBytes(byteLen); + return System.Text.Encoding.UTF8.GetString(bytes, 0, bytes.Length); + } + + /// + /// Reads a string written using Write(string) and returns true for success + /// + public bool ReadString(out string result) + { + uint byteLen; + if (ReadVariableUInt32(out byteLen) == false) + { + result = String.Empty; + return false; + } + + if (byteLen <= 0) + { + result = String.Empty; + return true; + } + + if (m_bitLength - m_readPosition < (byteLen * 8)) + { + result = String.Empty; + return false; + } + + if ((m_readPosition & 7) == 0) + { + // read directly + result = System.Text.Encoding.UTF8.GetString(m_data, m_readPosition >> 3, (int)byteLen); + m_readPosition += (8 * (int)byteLen); + return true; + } + + byte[] bytes; + if (ReadBytes((int)byteLen, out bytes) == false) + { + result = String.Empty; + return false; + } + + result = System.Text.Encoding.UTF8.GetString(bytes, 0, bytes.Length); + return true; + } + + /// + /// Reads a value, in local time comparable to NetTime.Now, written using WriteTime() for the connection supplied + /// + public double ReadTime(NetConnection connection, bool highPrecision) + { + double remoteTime = (highPrecision ? ReadDouble() : (double)ReadSingle()); + + if (connection == null) + throw new NetException("Cannot call ReadTime() on message without a connected sender (ie. unconnected messages)"); + + // lets bypass NetConnection.GetLocalTime for speed + return remoteTime - connection.m_remoteTimeOffset; + } + + /// + /// Reads a stored IPv4 endpoint description + /// + public IPEndPoint ReadIPEndPoint() + { + byte len = ReadByte(); + byte[] addressBytes = ReadBytes(len); + int port = (int)ReadUInt16(); + + IPAddress address = new IPAddress(addressBytes); + return new IPEndPoint(address, port); + } + + /// + /// Pads data with enough bits to reach a full byte. Decreases cpu usage for subsequent byte writes. + /// + public void SkipPadBits() + { + m_readPosition = ((m_readPosition + 7) >> 3) * 8; + } + + /// + /// Pads data with enough bits to reach a full byte. Decreases cpu usage for subsequent byte writes. + /// + public void ReadPadBits() + { + m_readPosition = ((m_readPosition + 7) >> 3) * 8; + } + + /// + /// Pads data with the specified number of bits. + /// + public void SkipPadBits(int numberOfBits) + { + m_readPosition += numberOfBits; + } + } +} diff --git a/Lidgren.Network/NetBuffer.Write.Reflection.cs b/Lidgren.Network/NetBuffer.Write.Reflection.cs new file mode 100644 index 0000000..2d467b9 --- /dev/null +++ b/Lidgren.Network/NetBuffer.Write.Reflection.cs @@ -0,0 +1,98 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +using System; +using System.Reflection; + +namespace Lidgren.Network +{ + public partial class NetBuffer + { + /// + /// Writes all public and private declared instance fields of the object in alphabetical order using reflection + /// + public void WriteAllFields(object ob) + { + WriteAllFields(ob, BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); + } + + /// + /// Writes all fields with specified binding in alphabetical order using reflection + /// + public void WriteAllFields(object ob, BindingFlags flags) + { + if (ob == null) + return; + Type tp = ob.GetType(); + + FieldInfo[] fields = tp.GetFields(flags); + NetUtility.SortMembersList(fields); + + foreach (FieldInfo fi in fields) + { + object value = fi.GetValue(ob); + + // find the appropriate Write method + MethodInfo writeMethod; + if (s_writeMethods.TryGetValue(fi.FieldType, out writeMethod)) + writeMethod.Invoke(this, new object[] { value }); + else + throw new NetException("Failed to find write method for type " + fi.FieldType); + } + } + + /// + /// Writes all public and private declared instance properties of the object in alphabetical order using reflection + /// + public void WriteAllProperties(object ob) + { + WriteAllProperties(ob, BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); + } + + /// + /// Writes all properties with specified binding in alphabetical order using reflection + /// + public void WriteAllProperties(object ob, BindingFlags flags) + { + if (ob == null) + return; + Type tp = ob.GetType(); + + PropertyInfo[] fields = tp.GetProperties(flags); + NetUtility.SortMembersList(fields); + + foreach (PropertyInfo fi in fields) + { +#if UNITY_WEBPLAYER || UNITY_4_5 + MethodInfo getMethod = fi.GetGetMethod(); +#else + MethodInfo getMethod = fi.GetMethod; +#endif + if (getMethod != null) + { + object value = getMethod.Invoke(ob, null); + + // find the appropriate Write method + MethodInfo writeMethod; + if (s_writeMethods.TryGetValue(fi.PropertyType, out writeMethod)) + writeMethod.Invoke(this, new object[] { value }); + } + } + } + } +} \ No newline at end of file diff --git a/Lidgren.Network/NetBuffer.Write.cs b/Lidgren.Network/NetBuffer.Write.cs new file mode 100644 index 0000000..26a7d1b --- /dev/null +++ b/Lidgren.Network/NetBuffer.Write.cs @@ -0,0 +1,676 @@ +//#define UNSAFE +//#define BIGENDIAN +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +using System; +using System.Collections.Generic; +using System.Net; +using System.Reflection; +using System.Text; +using System.Runtime.InteropServices; + +namespace Lidgren.Network +{ + /// + /// Utility struct for writing Singles + /// + [StructLayout(LayoutKind.Explicit)] + public struct SingleUIntUnion + { + /// + /// Value as a 32 bit float + /// + [FieldOffset(0)] + public float SingleValue; + + /// + /// Value as an unsigned 32 bit integer + /// + [FieldOffset(0)] + [CLSCompliant(false)] + public uint UIntValue; + } + + public partial class NetBuffer + { + /// + /// Ensures the buffer can hold this number of bits + /// + public void EnsureBufferSize(int numberOfBits) + { + int byteLen = ((numberOfBits + 7) >> 3); + if (m_data == null) + { + m_data = new byte[byteLen + c_overAllocateAmount]; + return; + } + if (m_data.Length < byteLen) + Array.Resize(ref m_data, byteLen + c_overAllocateAmount); + return; + } + + /// + /// Ensures the buffer can hold this number of bits + /// + internal void InternalEnsureBufferSize(int numberOfBits) + { + int byteLen = ((numberOfBits + 7) >> 3); + if (m_data == null) + { + m_data = new byte[byteLen]; + return; + } + if (m_data.Length < byteLen) + Array.Resize(ref m_data, byteLen); + return; + } + + /// + /// Writes a boolean value using 1 bit + /// + public void Write(bool value) + { + EnsureBufferSize(m_bitLength + 1); + NetBitWriter.WriteByte((value ? (byte)1 : (byte)0), 1, m_data, m_bitLength); + m_bitLength += 1; + } + + /// + /// Write a byte + /// + public void Write(byte source) + { + EnsureBufferSize(m_bitLength + 8); + NetBitWriter.WriteByte(source, 8, m_data, m_bitLength); + m_bitLength += 8; + } + + /// + /// Writes a signed byte + /// + [CLSCompliant(false)] + public void Write(sbyte source) + { + EnsureBufferSize(m_bitLength + 8); + NetBitWriter.WriteByte((byte)source, 8, m_data, m_bitLength); + m_bitLength += 8; + } + + /// + /// Writes 1 to 8 bits of a byte + /// + public void Write(byte source, int numberOfBits) + { + NetException.Assert((numberOfBits > 0 && numberOfBits <= 8), "Write(byte, numberOfBits) can only write between 1 and 8 bits"); + EnsureBufferSize(m_bitLength + numberOfBits); + NetBitWriter.WriteByte(source, numberOfBits, m_data, m_bitLength); + m_bitLength += numberOfBits; + } + + /// + /// Writes all bytes in an array + /// + public void Write(byte[] source) + { + if (source == null) + throw new ArgumentNullException("source"); + int bits = source.Length * 8; + EnsureBufferSize(m_bitLength + bits); + NetBitWriter.WriteBytes(source, 0, source.Length, m_data, m_bitLength); + m_bitLength += bits; + } + + /// + /// Writes the specified number of bytes from an array + /// + public void Write(byte[] source, int offsetInBytes, int numberOfBytes) + { + if (source == null) + throw new ArgumentNullException("source"); + int bits = numberOfBytes * 8; + EnsureBufferSize(m_bitLength + bits); + NetBitWriter.WriteBytes(source, offsetInBytes, numberOfBytes, m_data, m_bitLength); + m_bitLength += bits; + } + + /// + /// Writes an unsigned 16 bit integer + /// + /// + [CLSCompliant(false)] + public void Write(UInt16 source) + { + EnsureBufferSize(m_bitLength + 16); + NetBitWriter.WriteUInt16(source, 16, m_data, m_bitLength); + m_bitLength += 16; + } + + /// + /// Writes a 16 bit unsigned integer at a given offset in the buffer + /// + [CLSCompliant(false)] + public void WriteAt(Int32 offset, UInt16 source) + { + int newBitLength = Math.Max(m_bitLength, offset + 16); + EnsureBufferSize(newBitLength); + NetBitWriter.WriteUInt16(source, 16, m_data, offset); + m_bitLength = newBitLength; + } + + /// + /// Writes an unsigned integer using 1 to 16 bits + /// + [CLSCompliant(false)] + public void Write(UInt16 source, int numberOfBits) + { + NetException.Assert((numberOfBits > 0 && numberOfBits <= 16), "Write(ushort, numberOfBits) can only write between 1 and 16 bits"); + EnsureBufferSize(m_bitLength + numberOfBits); + NetBitWriter.WriteUInt16(source, numberOfBits, m_data, m_bitLength); + m_bitLength += numberOfBits; + } + + /// + /// Writes a signed 16 bit integer + /// + public void Write(Int16 source) + { + EnsureBufferSize(m_bitLength + 16); + NetBitWriter.WriteUInt16((ushort)source, 16, m_data, m_bitLength); + m_bitLength += 16; + } + + /// + /// Writes a 16 bit signed integer at a given offset in the buffer + /// + public void WriteAt(Int32 offset, Int16 source) + { + int newBitLength = Math.Max(m_bitLength, offset + 16); + EnsureBufferSize(newBitLength); + NetBitWriter.WriteUInt16((ushort)source, 16, m_data, offset); + m_bitLength = newBitLength; + } + +#if UNSAFE + /// + /// Writes a 32 bit signed integer + /// + public unsafe void Write(Int32 source) + { + EnsureBufferSize(m_bitLength + 32); + + // can write fast? + if (m_bitLength % 8 == 0) + { + fixed (byte* numRef = &Data[m_bitLength / 8]) + { + *((int*)numRef) = source; + } + } + else + { + NetBitWriter.WriteUInt32((UInt32)source, 32, Data, m_bitLength); + } + m_bitLength += 32; + } +#else + /// + /// Writes a 32 bit signed integer + /// + public void Write(Int32 source) + { + EnsureBufferSize(m_bitLength + 32); + NetBitWriter.WriteUInt32((UInt32)source, 32, m_data, m_bitLength); + m_bitLength += 32; + } +#endif + + /// + /// Writes a 32 bit signed integer at a given offset in the buffer + /// + public void WriteAt(Int32 offset, Int32 source) + { + int newBitLength = Math.Max(m_bitLength, offset + 32); + EnsureBufferSize(newBitLength); + NetBitWriter.WriteUInt32((UInt32)source, 32, m_data, offset); + m_bitLength = newBitLength; + } + +#if UNSAFE + /// + /// Writes a 32 bit unsigned integer + /// + public unsafe void Write(UInt32 source) + { + EnsureBufferSize(m_bitLength + 32); + + // can write fast? + if (m_bitLength % 8 == 0) + { + fixed (byte* numRef = &Data[m_bitLength / 8]) + { + *((uint*)numRef) = source; + } + } + else + { + NetBitWriter.WriteUInt32(source, 32, Data, m_bitLength); + } + + m_bitLength += 32; + } +#else + /// + /// Writes a 32 bit unsigned integer + /// + [CLSCompliant(false)] + public void Write(UInt32 source) + { + EnsureBufferSize(m_bitLength + 32); + NetBitWriter.WriteUInt32(source, 32, m_data, m_bitLength); + m_bitLength += 32; + } +#endif + + /// + /// Writes a 32 bit unsigned integer at a given offset in the buffer + /// + [CLSCompliant(false)] + public void WriteAt(Int32 offset, UInt32 source) + { + int newBitLength = Math.Max(m_bitLength, offset + 32); + EnsureBufferSize(newBitLength); + NetBitWriter.WriteUInt32(source, 32, m_data, offset); + m_bitLength = newBitLength; + } + + /// + /// Writes a 32 bit signed integer + /// + [CLSCompliant(false)] + public void Write(UInt32 source, int numberOfBits) + { + NetException.Assert((numberOfBits > 0 && numberOfBits <= 32), "Write(uint, numberOfBits) can only write between 1 and 32 bits"); + EnsureBufferSize(m_bitLength + numberOfBits); + NetBitWriter.WriteUInt32(source, numberOfBits, m_data, m_bitLength); + m_bitLength += numberOfBits; + } + + /// + /// Writes a signed integer using 1 to 32 bits + /// + public void Write(Int32 source, int numberOfBits) + { + NetException.Assert((numberOfBits > 0 && numberOfBits <= 32), "Write(int, numberOfBits) can only write between 1 and 32 bits"); + EnsureBufferSize(m_bitLength + numberOfBits); + + if (numberOfBits != 32) + { + // make first bit sign + int signBit = 1 << (numberOfBits - 1); + if (source < 0) + source = (-source - 1) | signBit; + else + source &= (~signBit); + } + + NetBitWriter.WriteUInt32((uint)source, numberOfBits, m_data, m_bitLength); + + m_bitLength += numberOfBits; + } + + /// + /// Writes a 64 bit unsigned integer + /// + [CLSCompliant(false)] + public void Write(UInt64 source) + { + EnsureBufferSize(m_bitLength + 64); + NetBitWriter.WriteUInt64(source, 64, m_data, m_bitLength); + m_bitLength += 64; + } + + /// + /// Writes a 64 bit unsigned integer at a given offset in the buffer + /// + [CLSCompliant(false)] + public void WriteAt(Int32 offset, UInt64 source) + { + int newBitLength = Math.Max(m_bitLength, offset + 64); + EnsureBufferSize(newBitLength); + NetBitWriter.WriteUInt64(source, 64, m_data, offset); + m_bitLength = newBitLength; + } + + /// + /// Writes an unsigned integer using 1 to 64 bits + /// + [CLSCompliant(false)] + public void Write(UInt64 source, int numberOfBits) + { + EnsureBufferSize(m_bitLength + numberOfBits); + NetBitWriter.WriteUInt64(source, numberOfBits, m_data, m_bitLength); + m_bitLength += numberOfBits; + } + + /// + /// Writes a 64 bit signed integer + /// + public void Write(Int64 source) + { + EnsureBufferSize(m_bitLength + 64); + ulong usource = (ulong)source; + NetBitWriter.WriteUInt64(usource, 64, m_data, m_bitLength); + m_bitLength += 64; + } + + /// + /// Writes a signed integer using 1 to 64 bits + /// + public void Write(Int64 source, int numberOfBits) + { + EnsureBufferSize(m_bitLength + numberOfBits); + ulong usource = (ulong)source; + NetBitWriter.WriteUInt64(usource, numberOfBits, m_data, m_bitLength); + m_bitLength += numberOfBits; + } + + // + // Floating point + // +#if UNSAFE + /// + /// Writes a 32 bit floating point value + /// + public unsafe void Write(float source) + { + uint val = *((uint*)&source); +#if BIGENDIAN + val = NetUtility.SwapByteOrder(val); +#endif + Write(val); + } +#else + /// + /// Writes a 32 bit floating point value + /// + public void Write(float source) + { + // Use union to avoid BitConverter.GetBytes() which allocates memory on the heap + SingleUIntUnion su; + su.UIntValue = 0; // must initialize every member of the union to avoid warning + su.SingleValue = source; + +#if BIGENDIAN + // swap byte order + su.UIntValue = NetUtility.SwapByteOrder(su.UIntValue); +#endif + Write(su.UIntValue); + } +#endif + +#if UNSAFE + /// + /// Writes a 64 bit floating point value + /// + public unsafe void Write(double source) + { + ulong val = *((ulong*)&source); +#if BIGENDIAN + val = NetUtility.SwapByteOrder(val); +#endif + Write(val); + } +#else + /// + /// Writes a 64 bit floating point value + /// + public void Write(double source) + { + byte[] val = BitConverter.GetBytes(source); +#if BIGENDIAN + // 0 1 2 3 4 5 6 7 + + // swap byte order + byte tmp = val[7]; + val[7] = val[0]; + val[0] = tmp; + + tmp = val[6]; + val[6] = val[1]; + val[1] = tmp; + + tmp = val[5]; + val[5] = val[2]; + val[2] = tmp; + + tmp = val[4]; + val[4] = val[3]; + val[3] = tmp; +#endif + Write(val); + } +#endif + + // + // Variable bits + // + + /// + /// Write Base128 encoded variable sized unsigned integer of up to 32 bits + /// + /// number of bytes written + [CLSCompliant(false)] + public int WriteVariableUInt32(uint value) + { + int retval = 1; + uint num1 = (uint)value; + while (num1 >= 0x80) + { + this.Write((byte)(num1 | 0x80)); + num1 = num1 >> 7; + retval++; + } + this.Write((byte)num1); + return retval; + } + + /// + /// Write Base128 encoded variable sized signed integer of up to 32 bits + /// + /// number of bytes written + public int WriteVariableInt32(int value) + { + uint zigzag = (uint)(value << 1) ^ (uint)(value >> 31); + return WriteVariableUInt32(zigzag); + } + + /// + /// Write Base128 encoded variable sized signed integer of up to 64 bits + /// + /// number of bytes written + public int WriteVariableInt64(Int64 value) + { + ulong zigzag = (ulong)(value << 1) ^ (ulong)(value >> 63); + return WriteVariableUInt64(zigzag); + } + + /// + /// Write Base128 encoded variable sized unsigned integer of up to 64 bits + /// + /// number of bytes written + [CLSCompliant(false)] + public int WriteVariableUInt64(UInt64 value) + { + int retval = 1; + UInt64 num1 = (UInt64)value; + while (num1 >= 0x80) + { + this.Write((byte)(num1 | 0x80)); + num1 = num1 >> 7; + retval++; + } + this.Write((byte)num1); + return retval; + } + + /// + /// Compress (lossy) a float in the range -1..1 using numberOfBits bits + /// + public void WriteSignedSingle(float value, int numberOfBits) + { + NetException.Assert(((value >= -1.0) && (value <= 1.0)), " WriteSignedSingle() must be passed a float in the range -1 to 1; val is " + value); + + float unit = (value + 1.0f) * 0.5f; + int maxVal = (1 << numberOfBits) - 1; + uint writeVal = (uint)(unit * (float)maxVal); + + Write(writeVal, numberOfBits); + } + + /// + /// Compress (lossy) a float in the range 0..1 using numberOfBits bits + /// + public void WriteUnitSingle(float value, int numberOfBits) + { + NetException.Assert(((value >= 0.0) && (value <= 1.0)), " WriteUnitSingle() must be passed a float in the range 0 to 1; val is " + value); + + int maxValue = (1 << numberOfBits) - 1; + uint writeVal = (uint)(value * (float)maxValue); + + Write(writeVal, numberOfBits); + } + + /// + /// Compress a float within a specified range using a certain number of bits + /// + public void WriteRangedSingle(float value, float min, float max, int numberOfBits) + { + NetException.Assert(((value >= min) && (value <= max)), " WriteRangedSingle() must be passed a float in the range MIN to MAX; val is " + value); + + float range = max - min; + float unit = ((value - min) / range); + int maxVal = (1 << numberOfBits) - 1; + Write((UInt32)((float)maxVal * unit), numberOfBits); + } + + /// + /// Writes an integer with the least amount of bits need for the specified range + /// Returns number of bits written + /// + public int WriteRangedInteger(int min, int max, int value) + { + NetException.Assert(value >= min && value <= max, "Value not within min/max range!"); + + uint range = (uint)(max - min); + int numBits = NetUtility.BitsToHoldUInt(range); + + uint rvalue = (uint)(value - min); + Write(rvalue, numBits); + + return numBits; + } + + /// + /// Write a string + /// + public void Write(string source) + { + if (string.IsNullOrEmpty(source)) + { + WriteVariableUInt32(0); + return; + } + + byte[] bytes = Encoding.UTF8.GetBytes(source); + EnsureBufferSize(m_bitLength + 8 + (bytes.Length * 8)); + WriteVariableUInt32((uint)bytes.Length); + Write(bytes); + } + + /// + /// Writes an endpoint description + /// + public void Write(IPEndPoint endPoint) + { + byte[] bytes = endPoint.Address.GetAddressBytes(); + Write((byte)bytes.Length); + Write(bytes); + Write((ushort)endPoint.Port); + } + + /// + /// Writes the current local time to a message; readable (and convertable to local time) by the remote host using ReadTime() + /// + public void WriteTime(bool highPrecision) + { + double localTime = NetTime.Now; + if (highPrecision) + Write(localTime); + else + Write((float)localTime); + } + + /// + /// Writes a local timestamp to a message; readable (and convertable to local time) by the remote host using ReadTime() + /// + public void WriteTime(double localTime, bool highPrecision) + { + if (highPrecision) + Write(localTime); + else + Write((float)localTime); + } + + /// + /// Pads data with enough bits to reach a full byte. Decreases cpu usage for subsequent byte writes. + /// + public void WritePadBits() + { + m_bitLength = ((m_bitLength + 7) >> 3) * 8; + EnsureBufferSize(m_bitLength); + } + + /// + /// Pads data with the specified number of bits. + /// + public void WritePadBits(int numberOfBits) + { + m_bitLength += numberOfBits; + EnsureBufferSize(m_bitLength); + } + + /// + /// Append all the bits of message to this message + /// + public void Write(NetBuffer buffer) + { + EnsureBufferSize(m_bitLength + (buffer.LengthBytes * 8)); + + Write(buffer.m_data, 0, buffer.LengthBytes); + + // did we write excessive bits? + int bitsInLastByte = (buffer.m_bitLength % 8); + if (bitsInLastByte != 0) + { + int excessBits = 8 - bitsInLastByte; + m_bitLength -= excessBits; + } + } + } +} diff --git a/Lidgren.Network/NetBuffer.cs b/Lidgren.Network/NetBuffer.cs new file mode 100644 index 0000000..34c783f --- /dev/null +++ b/Lidgren.Network/NetBuffer.cs @@ -0,0 +1,98 @@ +using System; +using System.Collections.Generic; +using System.Reflection; + +namespace Lidgren.Network +{ + public partial class NetBuffer + { + /// + /// Number of bytes to overallocate for each message to avoid resizing + /// + protected const int c_overAllocateAmount = 4; + + private static readonly Dictionary s_readMethods; + private static readonly Dictionary s_writeMethods; + + internal byte[] m_data; + internal int m_bitLength; + internal int m_readPosition; + + /// + /// Gets or sets the internal data buffer + /// + public byte[] Data + { + get { return m_data; } + set { m_data = value; } + } + + /// + /// Gets or sets the length of the used portion of the buffer in bytes + /// + public int LengthBytes + { + get { return ((m_bitLength + 7) >> 3); } + set + { + m_bitLength = value * 8; + InternalEnsureBufferSize(m_bitLength); + } + } + + /// + /// Gets or sets the length of the used portion of the buffer in bits + /// + public int LengthBits + { + get { return m_bitLength; } + set + { + m_bitLength = value; + InternalEnsureBufferSize(m_bitLength); + } + } + + /// + /// Gets or sets the read position in the buffer, in bits (not bytes) + /// + public long Position + { + get { return (long)m_readPosition; } + set { m_readPosition = (int)value; } + } + + /// + /// Gets the position in the buffer in bytes; note that the bits of the first returned byte may already have been read - check the Position property to make sure. + /// + public int PositionInBytes + { + get { return (int)(m_readPosition / 8); } + } + + static NetBuffer() + { + s_readMethods = new Dictionary(); + MethodInfo[] methods = typeof(NetIncomingMessage).GetMethods(BindingFlags.Instance | BindingFlags.Public); + foreach (MethodInfo mi in methods) + { + if (mi.GetParameters().Length == 0 && mi.Name.StartsWith("Read", StringComparison.InvariantCulture) && mi.Name.Substring(4) == mi.ReturnType.Name) + { + s_readMethods[mi.ReturnType] = mi; + } + } + + s_writeMethods = new Dictionary(); + methods = typeof(NetOutgoingMessage).GetMethods(BindingFlags.Instance | BindingFlags.Public); + foreach (MethodInfo mi in methods) + { + if (mi.Name.Equals("Write", StringComparison.InvariantCulture)) + { + ParameterInfo[] pis = mi.GetParameters(); + if (pis.Length == 1) + s_writeMethods[pis[0].ParameterType] = mi; + } + } + } + } +} diff --git a/Lidgren.Network/NetClient.cs b/Lidgren.Network/NetClient.cs new file mode 100644 index 0000000..588de49 --- /dev/null +++ b/Lidgren.Network/NetClient.cs @@ -0,0 +1,171 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +using System; +using System.Net; + +namespace Lidgren.Network +{ + /// + /// Specialized version of NetPeer used for a "client" connection. It does not accept any incoming connections and maintains a ServerConnection property + /// + public class NetClient : NetPeer + { + /// + /// Gets the connection to the server, if any + /// + public NetConnection ServerConnection + { + get + { + NetConnection retval = null; + if (m_connections.Count > 0) + { + try + { + retval = m_connections[0]; + } + catch + { + // preempted! + return null; + } + } + return retval; + } + } + + /// + /// Gets the connection status of the server connection (or NetConnectionStatus.Disconnected if no connection) + /// + public NetConnectionStatus ConnectionStatus + { + get + { + var conn = ServerConnection; + if (conn == null) + return NetConnectionStatus.Disconnected; + return conn.Status; + } + } + + /// + /// NetClient constructor + /// + /// + public NetClient(NetPeerConfiguration config) + : base(config) + { + config.AcceptIncomingConnections = false; + } + + /// + /// Connect to a remote server + /// + /// The remote endpoint to connect to + /// The hail message to pass + /// server connection, or null if already connected + public override NetConnection Connect(IPEndPoint remoteEndPoint, NetOutgoingMessage hailMessage) + { + lock (m_connections) + { + if (m_connections.Count > 0) + { + LogWarning("Connect attempt failed; Already connected"); + return null; + } + } + + lock (m_handshakes) + { + if (m_handshakes.Count > 0) + { + LogWarning("Connect attempt failed; Handshake already in progress"); + return null; + } + } + + return base.Connect(remoteEndPoint, hailMessage); + } + + /// + /// Disconnect from server + /// + /// reason for disconnect + public void Disconnect(string byeMessage) + { + NetConnection serverConnection = ServerConnection; + if (serverConnection == null) + { + lock (m_handshakes) + { + if (m_handshakes.Count > 0) + { + LogVerbose("Aborting connection attempt"); + foreach(var hs in m_handshakes) + hs.Value.Disconnect(byeMessage); + return; + } + } + + LogWarning("Disconnect requested when not connected!"); + return; + } + serverConnection.Disconnect(byeMessage); + } + + /// + /// Sends message to server + /// + public NetSendResult SendMessage(NetOutgoingMessage msg, NetDeliveryMethod method) + { + NetConnection serverConnection = ServerConnection; + if (serverConnection == null) + { + LogWarning("Cannot send message, no server connection!"); + return NetSendResult.FailedNotConnected; + } + + return serverConnection.SendMessage(msg, method, 0); + } + + /// + /// Sends message to server + /// + public NetSendResult SendMessage(NetOutgoingMessage msg, NetDeliveryMethod method, int sequenceChannel) + { + NetConnection serverConnection = ServerConnection; + if (serverConnection == null) + { + LogWarning("Cannot send message, no server connection!"); + return NetSendResult.FailedNotConnected; + } + + return serverConnection.SendMessage(msg, method, sequenceChannel); + } + + /// + /// Returns a string that represents this object + /// + public override string ToString() + { + return "[NetClient " + ServerConnection + "]"; + } + + } +} diff --git a/Lidgren.Network/NetConnection.Handshake.cs b/Lidgren.Network/NetConnection.Handshake.cs new file mode 100644 index 0000000..d67aa8b --- /dev/null +++ b/Lidgren.Network/NetConnection.Handshake.cs @@ -0,0 +1,493 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Lidgren.Network +{ + public partial class NetConnection + { + internal bool m_connectRequested; + internal bool m_disconnectRequested; + internal bool m_disconnectReqSendBye; + internal string m_disconnectMessage; + internal bool m_connectionInitiator; + internal NetIncomingMessage m_remoteHailMessage; + internal float m_lastHandshakeSendTime; + internal int m_handshakeAttempts; + + /// + /// The message that the remote part specified via Connect() or Approve() - can be null. + /// + public NetIncomingMessage RemoteHailMessage { get { return m_remoteHailMessage; } } + + // heartbeat called when connection still is in m_handshakes of NetPeer + internal void UnconnectedHeartbeat(float now) + { + m_peer.VerifyNetworkThread(); + + if (m_disconnectRequested) + ExecuteDisconnect(m_disconnectMessage, true); + + if (m_connectRequested) + { + switch (m_status) + { + case NetConnectionStatus.Connected: + case NetConnectionStatus.RespondedConnect: + // reconnect + ExecuteDisconnect("Reconnecting", true); + break; + + case NetConnectionStatus.InitiatedConnect: + // send another connect attempt + SendConnect(now); + break; + + case NetConnectionStatus.Disconnected: + m_peer.ThrowOrLog("This connection is Disconnected; spent. A new one should have been created"); + break; + + case NetConnectionStatus.Disconnecting: + // let disconnect finish first + break; + + case NetConnectionStatus.None: + default: + SendConnect(now); + break; + } + return; + } + + if (now - m_lastHandshakeSendTime > m_peerConfiguration.m_resendHandshakeInterval) + { + if (m_handshakeAttempts >= m_peerConfiguration.m_maximumHandshakeAttempts) + { + // failed to connect + ExecuteDisconnect("Failed to establish connection - no response from remote host", true); + return; + } + + // resend handshake + switch (m_status) + { + case NetConnectionStatus.InitiatedConnect: + SendConnect(now); + break; + case NetConnectionStatus.RespondedConnect: + SendConnectResponse(now, true); + break; + case NetConnectionStatus.RespondedAwaitingApproval: + // awaiting approval + m_lastHandshakeSendTime = now; // postpone handshake resend + break; + case NetConnectionStatus.None: + case NetConnectionStatus.ReceivedInitiation: + default: + m_peer.LogWarning("Time to resend handshake, but status is " + m_status); + break; + } + } + } + + internal void ExecuteDisconnect(string reason, bool sendByeMessage) + { + m_peer.VerifyNetworkThread(); + + // clear send queues + for (int i = 0; i < m_sendChannels.Length; i++) + { + NetSenderChannelBase channel = m_sendChannels[i]; + if (channel != null) + channel.Reset(); + } + + if (sendByeMessage) + SendDisconnect(reason, true); + + if (m_status == NetConnectionStatus.ReceivedInitiation) + { + // nothing much has happened yet; no need to send disconnected status message + m_status = NetConnectionStatus.Disconnected; + } + else + { + SetStatus(NetConnectionStatus.Disconnected, reason); + } + + // in case we're still in handshake + lock (m_peer.m_handshakes) + m_peer.m_handshakes.Remove(m_remoteEndPoint); + + m_disconnectRequested = false; + m_connectRequested = false; + m_handshakeAttempts = 0; + } + + internal void SendConnect(float now) + { + m_peer.VerifyNetworkThread(); + + int preAllocate = 13 + m_peerConfiguration.AppIdentifier.Length; + preAllocate += (m_localHailMessage == null ? 0 : m_localHailMessage.LengthBytes); + + NetOutgoingMessage om = m_peer.CreateMessage(preAllocate); + om.m_messageType = NetMessageType.Connect; + om.Write(m_peerConfiguration.AppIdentifier); + om.Write(m_peer.m_uniqueIdentifier); + om.Write(now); + + WriteLocalHail(om); + + m_peer.SendLibrary(om, m_remoteEndPoint); + + m_connectRequested = false; + m_lastHandshakeSendTime = now; + m_handshakeAttempts++; + + if (m_handshakeAttempts > 1) + m_peer.LogDebug("Resending Connect..."); + SetStatus(NetConnectionStatus.InitiatedConnect, "Locally requested connect"); + } + + internal void SendConnectResponse(float now, bool onLibraryThread) + { + if (onLibraryThread) + m_peer.VerifyNetworkThread(); + + NetOutgoingMessage om = m_peer.CreateMessage(m_peerConfiguration.AppIdentifier.Length + 13 + (m_localHailMessage == null ? 0 : m_localHailMessage.LengthBytes)); + om.m_messageType = NetMessageType.ConnectResponse; + om.Write(m_peerConfiguration.AppIdentifier); + om.Write(m_peer.m_uniqueIdentifier); + om.Write(now); + + WriteLocalHail(om); + + if (onLibraryThread) + m_peer.SendLibrary(om, m_remoteEndPoint); + else + m_peer.m_unsentUnconnectedMessages.Enqueue(new NetTuple(m_remoteEndPoint, om)); + + m_lastHandshakeSendTime = now; + m_handshakeAttempts++; + + if (m_handshakeAttempts > 1) + m_peer.LogDebug("Resending ConnectResponse..."); + + SetStatus(NetConnectionStatus.RespondedConnect, "Remotely requested connect"); + } + + internal void SendDisconnect(string reason, bool onLibraryThread) + { + if (onLibraryThread) + m_peer.VerifyNetworkThread(); + + NetOutgoingMessage om = m_peer.CreateMessage(reason); + om.m_messageType = NetMessageType.Disconnect; + if (onLibraryThread) + m_peer.SendLibrary(om, m_remoteEndPoint); + else + m_peer.m_unsentUnconnectedMessages.Enqueue(new NetTuple(m_remoteEndPoint, om)); + } + + private void WriteLocalHail(NetOutgoingMessage om) + { + if (m_localHailMessage != null) + { + byte[] hi = m_localHailMessage.Data; + if (hi != null && hi.Length >= m_localHailMessage.LengthBytes) + { + if (om.LengthBytes + m_localHailMessage.LengthBytes > m_peerConfiguration.m_maximumTransmissionUnit - 10) + m_peer.ThrowOrLog("Hail message too large; can maximally be " + (m_peerConfiguration.m_maximumTransmissionUnit - 10 - om.LengthBytes)); + om.Write(m_localHailMessage.Data, 0, m_localHailMessage.LengthBytes); + } + } + } + + internal void SendConnectionEstablished() + { + NetOutgoingMessage om = m_peer.CreateMessage(4); + om.m_messageType = NetMessageType.ConnectionEstablished; + om.Write((float)NetTime.Now); + m_peer.SendLibrary(om, m_remoteEndPoint); + + m_handshakeAttempts = 0; + + InitializePing(); + if (m_status != NetConnectionStatus.Connected) + SetStatus(NetConnectionStatus.Connected, "Connected to " + NetUtility.ToHexString(m_remoteUniqueIdentifier)); + } + + /// + /// Approves this connection; sending a connection response to the remote host + /// + public void Approve() + { + if (m_status != NetConnectionStatus.RespondedAwaitingApproval) + { + m_peer.LogWarning("Approve() called in wrong status; expected RespondedAwaitingApproval; got " + m_status); + return; + } + + m_localHailMessage = null; + m_handshakeAttempts = 0; + SendConnectResponse((float)NetTime.Now, false); + } + + /// + /// Approves this connection; sending a connection response to the remote host + /// + /// The local hail message that will be set as RemoteHailMessage on the remote host + public void Approve(NetOutgoingMessage localHail) + { + if (m_status != NetConnectionStatus.RespondedAwaitingApproval) + { + m_peer.LogWarning("Approve() called in wrong status; expected RespondedAwaitingApproval; got " + m_status); + return; + } + + m_localHailMessage = localHail; + m_handshakeAttempts = 0; + SendConnectResponse((float)NetTime.Now, false); + } + + /// + /// Denies this connection; disconnecting it + /// + public void Deny() + { + Deny(string.Empty); + } + + /// + /// Denies this connection; disconnecting it + /// + /// The stated reason for the disconnect, readable as a string in the StatusChanged message on the remote host + public void Deny(string reason) + { + // send disconnect; remove from handshakes + SendDisconnect(reason, false); + + // remove from handshakes + lock (m_peer.m_handshakes) + m_peer.m_handshakes.Remove(m_remoteEndPoint); + } + + internal void ReceivedHandshake(double now, NetMessageType tp, int ptr, int payloadLength) + { + m_peer.VerifyNetworkThread(); + + byte[] hail; + switch (tp) + { + case NetMessageType.Connect: + if (m_status == NetConnectionStatus.ReceivedInitiation) + { + // Whee! Server full has already been checked + bool ok = ValidateHandshakeData(ptr, payloadLength, out hail); + if (ok) + { + if (hail != null) + { + m_remoteHailMessage = m_peer.CreateIncomingMessage(NetIncomingMessageType.Data, hail); + m_remoteHailMessage.LengthBits = (hail.Length * 8); + } + else + { + m_remoteHailMessage = null; + } + + if (m_peerConfiguration.IsMessageTypeEnabled(NetIncomingMessageType.ConnectionApproval)) + { + // ok, let's not add connection just yet + NetIncomingMessage appMsg = m_peer.CreateIncomingMessage(NetIncomingMessageType.ConnectionApproval, (m_remoteHailMessage == null ? 0 : m_remoteHailMessage.LengthBytes)); + appMsg.m_receiveTime = now; + appMsg.m_senderConnection = this; + appMsg.m_senderEndPoint = this.m_remoteEndPoint; + if (m_remoteHailMessage != null) + appMsg.Write(m_remoteHailMessage.m_data, 0, m_remoteHailMessage.LengthBytes); + SetStatus(NetConnectionStatus.RespondedAwaitingApproval, "Awaiting approval"); + m_peer.ReleaseMessage(appMsg); + return; + } + + SendConnectResponse((float)now, true); + } + return; + } + if (m_status == NetConnectionStatus.RespondedAwaitingApproval) + { + m_peer.LogWarning("Ignoring multiple Connect() most likely due to a delayed Approval"); + return; + } + if (m_status == NetConnectionStatus.RespondedConnect) + { + // our ConnectResponse must have been lost + SendConnectResponse((float)now, true); + return; + } + m_peer.LogDebug("Unhandled Connect: " + tp + ", status is " + m_status + " length: " + payloadLength); + break; + case NetMessageType.ConnectResponse: + HandleConnectResponse(now, tp, ptr, payloadLength); + break; + + case NetMessageType.ConnectionEstablished: + switch (m_status) + { + case NetConnectionStatus.Connected: + // ok... + break; + case NetConnectionStatus.Disconnected: + case NetConnectionStatus.Disconnecting: + case NetConnectionStatus.None: + // too bad, almost made it + break; + case NetConnectionStatus.ReceivedInitiation: + // uh, a little premature... ignore + break; + case NetConnectionStatus.InitiatedConnect: + // weird, should have been RespondedConnect... + break; + case NetConnectionStatus.RespondedConnect: + // awesome + + NetIncomingMessage msg = m_peer.SetupReadHelperMessage(ptr, payloadLength); + InitializeRemoteTimeOffset(msg.ReadSingle()); + + m_peer.AcceptConnection(this); + InitializePing(); + SetStatus(NetConnectionStatus.Connected, "Connected to " + NetUtility.ToHexString(m_remoteUniqueIdentifier)); + return; + } + break; + + case NetMessageType.Disconnect: + // ouch + string reason = "Ouch"; + try + { + NetIncomingMessage inc = m_peer.SetupReadHelperMessage(ptr, payloadLength); + reason = inc.ReadString(); + } + catch + { + } + ExecuteDisconnect(reason, false); + break; + + case NetMessageType.Discovery: + m_peer.HandleIncomingDiscoveryRequest(now, m_remoteEndPoint, ptr, payloadLength); + return; + + case NetMessageType.DiscoveryResponse: + m_peer.HandleIncomingDiscoveryResponse(now, m_remoteEndPoint, ptr, payloadLength); + return; + + case NetMessageType.Ping: + // silently ignore + return; + + default: + m_peer.LogDebug("Unhandled type during handshake: " + tp + " length: " + payloadLength); + break; + } + } + + private void HandleConnectResponse(double now, NetMessageType tp, int ptr, int payloadLength) + { + byte[] hail; + switch (m_status) + { + case NetConnectionStatus.InitiatedConnect: + // awesome + bool ok = ValidateHandshakeData(ptr, payloadLength, out hail); + if (ok) + { + if (hail != null) + { + m_remoteHailMessage = m_peer.CreateIncomingMessage(NetIncomingMessageType.Data, hail); + m_remoteHailMessage.LengthBits = (hail.Length * 8); + } + else + { + m_remoteHailMessage = null; + } + + m_peer.AcceptConnection(this); + SendConnectionEstablished(); + return; + } + break; + case NetConnectionStatus.RespondedConnect: + // hello, wtf? + break; + case NetConnectionStatus.Disconnecting: + case NetConnectionStatus.Disconnected: + case NetConnectionStatus.ReceivedInitiation: + case NetConnectionStatus.None: + // wtf? anyway, bye! + break; + case NetConnectionStatus.Connected: + // my ConnectionEstablished must have been lost, send another one + SendConnectionEstablished(); + return; + } + } + + private bool ValidateHandshakeData(int ptr, int payloadLength, out byte[] hail) + { + hail = null; + + // create temporary incoming message + NetIncomingMessage msg = m_peer.SetupReadHelperMessage(ptr, payloadLength); + try + { + string remoteAppIdentifier = msg.ReadString(); + long remoteUniqueIdentifier = msg.ReadInt64(); + InitializeRemoteTimeOffset(msg.ReadSingle()); + + int remainingBytes = payloadLength - (msg.PositionInBytes - ptr); + if (remainingBytes > 0) + hail = msg.ReadBytes(remainingBytes); + + if (remoteAppIdentifier != m_peer.m_configuration.AppIdentifier) + { + ExecuteDisconnect("Wrong application identifier!", true); + return false; + } + + m_remoteUniqueIdentifier = remoteUniqueIdentifier; + } + catch(Exception ex) + { + // whatever; we failed + ExecuteDisconnect("Handshake data validation failed", true); + m_peer.LogWarning("ReadRemoteHandshakeData failed: " + ex.Message); + return false; + } + return true; + } + + /// + /// Disconnect from the remote peer + /// + /// the message to send with the disconnect message + public void Disconnect(string byeMessage) + { + // user or library thread + if (m_status == NetConnectionStatus.None || m_status == NetConnectionStatus.Disconnected) + return; + + m_peer.LogVerbose("Disconnect requested for " + this); + m_disconnectMessage = byeMessage; + + if (m_status != NetConnectionStatus.Disconnected && m_status != NetConnectionStatus.None) + SetStatus(NetConnectionStatus.Disconnecting, byeMessage); + + m_handshakeAttempts = 0; + m_disconnectRequested = true; + m_disconnectReqSendBye = true; + } + } +} diff --git a/Lidgren.Network/NetConnection.Latency.cs b/Lidgren.Network/NetConnection.Latency.cs new file mode 100644 index 0000000..832261b --- /dev/null +++ b/Lidgren.Network/NetConnection.Latency.cs @@ -0,0 +1,149 @@ +using System; + +namespace Lidgren.Network +{ + public partial class NetConnection + { + private float m_sentPingTime; + private int m_sentPingNumber; + private float m_averageRoundtripTime; + private float m_timeoutDeadline = float.MaxValue; + + // local time value + m_remoteTimeOffset = remote time value + internal double m_remoteTimeOffset; + + /// + /// Gets the current average roundtrip time in seconds + /// + public float AverageRoundtripTime { get { return m_averageRoundtripTime; } } + + /// + /// Time offset between this peer and the remote peer + /// + public float RemoteTimeOffset { get { return (float)m_remoteTimeOffset; } } + + // this might happen more than once + internal void InitializeRemoteTimeOffset(float remoteSendTime) + { + m_remoteTimeOffset = (remoteSendTime + (m_averageRoundtripTime / 2.0)) - NetTime.Now; + } + + /// + /// Gets local time value comparable to NetTime.Now from a remote value + /// + public double GetLocalTime(double remoteTimestamp) + { + return remoteTimestamp - m_remoteTimeOffset; + } + + /// + /// Gets the remote time value for a local time value produced by NetTime.Now + /// + public double GetRemoteTime(double localTimestamp) + { + return localTimestamp + m_remoteTimeOffset; + } + + internal void InitializePing() + { + float now = (float)NetTime.Now; + + // randomize ping sent time (0.25 - 1.0 x ping interval) + m_sentPingTime = now; + m_sentPingTime -= (m_peerConfiguration.PingInterval * 0.25f); // delay ping for a little while + m_sentPingTime -= (MWCRandom.Instance.NextSingle() * (m_peerConfiguration.PingInterval * 0.75f)); + m_timeoutDeadline = now + (m_peerConfiguration.m_connectionTimeout * 2.0f); // initially allow a little more time + + // make it better, quick :-) + SendPing(); + } + + internal void SendPing() + { + m_peer.VerifyNetworkThread(); + + m_sentPingNumber++; + + m_sentPingTime = (float)NetTime.Now; + NetOutgoingMessage om = m_peer.CreateMessage(1); + om.Write((byte)m_sentPingNumber); // truncating to 0-255 + om.m_messageType = NetMessageType.Ping; + + int len = om.Encode(m_peer.m_sendBuffer, 0, 0); + bool connectionReset; + m_peer.SendPacket(len, m_remoteEndPoint, 1, out connectionReset); + + m_statistics.PacketSent(len, 1); + m_peer.Recycle(om); + } + + internal void SendPong(int pingNumber) + { + m_peer.VerifyNetworkThread(); + + NetOutgoingMessage om = m_peer.CreateMessage(5); + om.Write((byte)pingNumber); + om.Write((float)NetTime.Now); // we should update this value to reflect the exact point in time the packet is SENT + om.m_messageType = NetMessageType.Pong; + + int len = om.Encode(m_peer.m_sendBuffer, 0, 0); + bool connectionReset; + + m_peer.SendPacket(len, m_remoteEndPoint, 1, out connectionReset); + + m_statistics.PacketSent(len, 1); + m_peer.Recycle(om); + } + + internal void ReceivedPong(float now, int pongNumber, float remoteSendTime) + { + if ((byte)pongNumber != (byte)m_sentPingNumber) + { + m_peer.LogVerbose("Ping/Pong mismatch; dropped message?"); + return; + } + + m_timeoutDeadline = now + m_peerConfiguration.m_connectionTimeout; + + float rtt = now - m_sentPingTime; + NetException.Assert(rtt >= 0); + + double diff = (remoteSendTime + (rtt / 2.0)) - now; + + if (m_averageRoundtripTime < 0) + { + m_remoteTimeOffset = diff; + m_averageRoundtripTime = rtt; + m_peer.LogDebug("Initiated average roundtrip time to " + NetTime.ToReadable(m_averageRoundtripTime) + " Remote time is: " + (now + diff)); + } + else + { + m_averageRoundtripTime = (m_averageRoundtripTime * 0.7f) + (float)(rtt * 0.3f); + + m_remoteTimeOffset = ((m_remoteTimeOffset * (double)(m_sentPingNumber - 1)) + diff) / (double)m_sentPingNumber; + m_peer.LogVerbose("Updated average roundtrip time to " + NetTime.ToReadable(m_averageRoundtripTime) + ", remote time to " + (now + m_remoteTimeOffset) + " (ie. diff " + m_remoteTimeOffset + ")"); + } + + // update resend delay for all channels + float resendDelay = GetResendDelay(); + foreach (var chan in m_sendChannels) + { + var rchan = chan as NetReliableSenderChannel; + if (rchan != null) + rchan.m_resendDelay = resendDelay; + } + + // m_peer.LogVerbose("Timeout deadline pushed to " + m_timeoutDeadline); + + // notify the application that average rtt changed + if (m_peer.m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.ConnectionLatencyUpdated)) + { + NetIncomingMessage update = m_peer.CreateIncomingMessage(NetIncomingMessageType.ConnectionLatencyUpdated, 4); + update.m_senderConnection = this; + update.m_senderEndPoint = this.m_remoteEndPoint; + update.Write(rtt); + m_peer.ReleaseMessage(update); + } + } + } +} diff --git a/Lidgren.Network/NetConnection.MTU.cs b/Lidgren.Network/NetConnection.MTU.cs new file mode 100644 index 0000000..d5f64da --- /dev/null +++ b/Lidgren.Network/NetConnection.MTU.cs @@ -0,0 +1,182 @@ +using System; + +namespace Lidgren.Network +{ + public partial class NetConnection + { + private enum ExpandMTUStatus + { + None, + InProgress, + Finished + } + + private const int c_protocolMaxMTU = (int)((((float)ushort.MaxValue / 8.0f) - 1.0f)); + + private ExpandMTUStatus m_expandMTUStatus; + + private int m_largestSuccessfulMTU; + private int m_smallestFailedMTU; + + private int m_lastSentMTUAttemptSize; + private double m_lastSentMTUAttemptTime; + private int m_mtuAttemptFails; + + internal int m_currentMTU; + + /// + /// Gets the current MTU in bytes. If PeerConfiguration.AutoExpandMTU is false, this will be PeerConfiguration.MaximumTransmissionUnit. + /// + public int CurrentMTU { get { return m_currentMTU; } } + + internal void InitExpandMTU(double now) + { + m_lastSentMTUAttemptTime = now + m_peerConfiguration.m_expandMTUFrequency + 1.5f + m_averageRoundtripTime; // wait a tiny bit before starting to expand mtu + m_largestSuccessfulMTU = 512; + m_smallestFailedMTU = -1; + m_currentMTU = m_peerConfiguration.MaximumTransmissionUnit; + } + + private void MTUExpansionHeartbeat(double now) + { + if (m_expandMTUStatus == ExpandMTUStatus.Finished) + return; + + if (m_expandMTUStatus == ExpandMTUStatus.None) + { + if (m_peerConfiguration.m_autoExpandMTU == false) + { + FinalizeMTU(m_currentMTU); + return; + } + + // begin expansion + ExpandMTU(now); + return; + } + + if (now > m_lastSentMTUAttemptTime + m_peerConfiguration.ExpandMTUFrequency) + { + m_mtuAttemptFails++; + if (m_mtuAttemptFails == 3) + { + FinalizeMTU(m_currentMTU); + return; + } + + // timed out; ie. failed + m_smallestFailedMTU = m_lastSentMTUAttemptSize; + ExpandMTU(now); + } + } + + private void ExpandMTU(double now) + { + int tryMTU; + + // we've nevered encountered failure + if (m_smallestFailedMTU == -1) + { + // we've never encountered failure; expand by 25% each time + tryMTU = (int)((float)m_currentMTU * 1.25f); + //m_peer.LogDebug("Trying MTU " + tryMTU); + } + else + { + // we HAVE encountered failure; so try in between + tryMTU = (int)(((float)m_smallestFailedMTU + (float)m_largestSuccessfulMTU) / 2.0f); + //m_peer.LogDebug("Trying MTU " + m_smallestFailedMTU + " <-> " + m_largestSuccessfulMTU + " = " + tryMTU); + } + + if (tryMTU > c_protocolMaxMTU) + tryMTU = c_protocolMaxMTU; + + if (tryMTU == m_largestSuccessfulMTU) + { + //m_peer.LogDebug("Found optimal MTU - exiting"); + FinalizeMTU(m_largestSuccessfulMTU); + return; + } + + SendExpandMTU(now, tryMTU); + } + + private void SendExpandMTU(double now, int size) + { + NetOutgoingMessage om = m_peer.CreateMessage(size); + byte[] tmp = new byte[size]; + om.Write(tmp); + om.m_messageType = NetMessageType.ExpandMTURequest; + int len = om.Encode(m_peer.m_sendBuffer, 0, 0); + + bool ok = m_peer.SendMTUPacket(len, m_remoteEndPoint); + if (ok == false) + { + //m_peer.LogDebug("Send MTU failed for size " + size); + + // failure + if (m_smallestFailedMTU == -1 || size < m_smallestFailedMTU) + { + m_smallestFailedMTU = size; + m_mtuAttemptFails++; + if (m_mtuAttemptFails >= m_peerConfiguration.ExpandMTUFailAttempts) + { + FinalizeMTU(m_largestSuccessfulMTU); + return; + } + } + ExpandMTU(now); + return; + } + + m_lastSentMTUAttemptSize = size; + m_lastSentMTUAttemptTime = now; + + m_statistics.PacketSent(len, 1); + m_peer.Recycle(om); + } + + private void FinalizeMTU(int size) + { + if (m_expandMTUStatus == ExpandMTUStatus.Finished) + return; + m_expandMTUStatus = ExpandMTUStatus.Finished; + m_currentMTU = size; + if (m_currentMTU != m_peerConfiguration.m_maximumTransmissionUnit) + m_peer.LogDebug("Expanded Maximum Transmission Unit to: " + m_currentMTU + " bytes"); + return; + } + + private void SendMTUSuccess(int size) + { + NetOutgoingMessage om = m_peer.CreateMessage(4); + om.Write(size); + om.m_messageType = NetMessageType.ExpandMTUSuccess; + int len = om.Encode(m_peer.m_sendBuffer, 0, 0); + bool connectionReset; + m_peer.SendPacket(len, m_remoteEndPoint, 1, out connectionReset); + m_peer.Recycle(om); + + //m_peer.LogDebug("Received MTU expand request for " + size + " bytes"); + + m_statistics.PacketSent(len, 1); + } + + private void HandleExpandMTUSuccess(double now, int size) + { + if (size > m_largestSuccessfulMTU) + m_largestSuccessfulMTU = size; + + if (size < m_currentMTU) + { + //m_peer.LogDebug("Received low MTU expand success (size " + size + "); current mtu is " + m_currentMTU); + return; + } + + //m_peer.LogDebug("Expanding MTU to " + size); + m_currentMTU = size; + + ExpandMTU(now); + } + } +} diff --git a/Lidgren.Network/NetConnection.cs b/Lidgren.Network/NetConnection.cs new file mode 100644 index 0000000..ee056b6 --- /dev/null +++ b/Lidgren.Network/NetConnection.cs @@ -0,0 +1,563 @@ +using System; +using System.Net; +using System.Threading; +using System.Diagnostics; + +namespace Lidgren.Network +{ + /// + /// Represents a connection to a remote peer + /// + [DebuggerDisplay("RemoteUniqueIdentifier={RemoteUniqueIdentifier} RemoteEndPoint={remoteEndPoint}")] + public partial class NetConnection + { + private const int m_infrequentEventsSkipFrames = 8; // number of heartbeats to skip checking for infrequent events (ping, timeout etc) + private const int m_messageCoalesceFrames = 3; // number of heartbeats to wait for more incoming messages before sending packet + + internal NetPeer m_peer; + internal NetPeerConfiguration m_peerConfiguration; + internal NetConnectionStatus m_status; + internal NetConnectionStatus m_visibleStatus; + internal IPEndPoint m_remoteEndPoint; + internal NetSenderChannelBase[] m_sendChannels; + internal NetReceiverChannelBase[] m_receiveChannels; + internal NetOutgoingMessage m_localHailMessage; + internal long m_remoteUniqueIdentifier; + internal NetQueue> m_queuedOutgoingAcks; + internal NetQueue> m_queuedIncomingAcks; + private int m_sendBufferWritePtr; + private int m_sendBufferNumMessages; + private object m_tag; + internal NetConnectionStatistics m_statistics; + + /// + /// Gets or sets the application defined object containing data about the connection + /// + public object Tag + { + get { return m_tag; } + set { m_tag = value; } + } + + /// + /// Gets the peer which holds this connection + /// + public NetPeer Peer { get { return m_peer; } } + + /// + /// Gets the current status of the connection (synced to the last status message read) + /// + public NetConnectionStatus Status { get { return m_visibleStatus; } } + + /// + /// Gets various statistics for this connection + /// + public NetConnectionStatistics Statistics { get { return m_statistics; } } + + /// + /// Gets the remote endpoint for the connection + /// + public IPEndPoint RemoteEndPoint { get { return m_remoteEndPoint; } } + + /// + /// Gets the unique identifier of the remote NetPeer for this connection + /// + public long RemoteUniqueIdentifier { get { return m_remoteUniqueIdentifier; } } + + /// + /// Gets the local hail message that was sent as part of the handshake + /// + public NetOutgoingMessage LocalHailMessage { get { return m_localHailMessage; } } + + // gets the time before automatically resending an unacked message + internal float GetResendDelay() + { + float avgRtt = m_averageRoundtripTime; + if (avgRtt <= 0) + avgRtt = 0.1f; // "default" resend is based on 100 ms roundtrip time + return 0.025f + (avgRtt * 2.1f); // 25 ms + double rtt + } + + internal NetConnection(NetPeer peer, IPEndPoint remoteEndPoint) + { + m_peer = peer; + m_peerConfiguration = m_peer.Configuration; + m_status = NetConnectionStatus.None; + m_visibleStatus = NetConnectionStatus.None; + m_remoteEndPoint = remoteEndPoint; + m_sendChannels = new NetSenderChannelBase[NetConstants.NumTotalChannels]; + m_receiveChannels = new NetReceiverChannelBase[NetConstants.NumTotalChannels]; + m_queuedOutgoingAcks = new NetQueue>(4); + m_queuedIncomingAcks = new NetQueue>(4); + m_statistics = new NetConnectionStatistics(this); + m_averageRoundtripTime = -1.0f; + m_currentMTU = m_peerConfiguration.MaximumTransmissionUnit; + } + + /// + /// Change the internal endpoint to this new one. Used when, during handshake, a switch in port is detected (due to NAT) + /// + internal void MutateEndPoint(IPEndPoint endPoint) + { + m_remoteEndPoint = endPoint; + } + + internal void SetStatus(NetConnectionStatus status, string reason) + { + // user or library thread + + if (status == m_status) + return; + + m_status = status; + if (reason == null) + reason = string.Empty; + + if (m_status == NetConnectionStatus.Connected) + { + m_timeoutDeadline = (float)NetTime.Now + m_peerConfiguration.m_connectionTimeout; + m_peer.LogVerbose("Timeout deadline initialized to " + m_timeoutDeadline); + } + + if (m_peerConfiguration.IsMessageTypeEnabled(NetIncomingMessageType.StatusChanged)) + { + NetIncomingMessage info = m_peer.CreateIncomingMessage(NetIncomingMessageType.StatusChanged, 4 + reason.Length + (reason.Length > 126 ? 2 : 1)); + info.m_senderConnection = this; + info.m_senderEndPoint = m_remoteEndPoint; + info.Write((byte)m_status); + info.Write(reason); + m_peer.ReleaseMessage(info); + } + else + { + // app dont want those messages, update visible status immediately + m_visibleStatus = m_status; + } + } + + internal void Heartbeat(float now, uint frameCounter) + { + m_peer.VerifyNetworkThread(); + + NetException.Assert(m_status != NetConnectionStatus.InitiatedConnect && m_status != NetConnectionStatus.RespondedConnect); + + if ((frameCounter % m_infrequentEventsSkipFrames) == 0) + { + if (now > m_timeoutDeadline) + { + // + // connection timed out + // + m_peer.LogVerbose("Connection timed out at " + now + " deadline was " + m_timeoutDeadline); + ExecuteDisconnect("Connection timed out", true); + return; + } + + // send ping? + if (m_status == NetConnectionStatus.Connected) + { + if (now > m_sentPingTime + m_peer.m_configuration.m_pingInterval) + SendPing(); + + // handle expand mtu + MTUExpansionHeartbeat(now); + } + + if (m_disconnectRequested) + { + ExecuteDisconnect(m_disconnectMessage, m_disconnectReqSendBye); + return; + } + } + + bool connectionReset; // TODO: handle connection reset + + // + // Note: at this point m_sendBufferWritePtr and m_sendBufferNumMessages may be non-null; resends may already be queued up + // + + byte[] sendBuffer = m_peer.m_sendBuffer; + int mtu = m_currentMTU; + + if ((frameCounter % m_messageCoalesceFrames) == 0) // coalesce a few frames + { + // + // send ack messages + // + while (m_queuedOutgoingAcks.Count > 0) + { + int acks = (mtu - (m_sendBufferWritePtr + 5)) / 3; // 3 bytes per actual ack + if (acks > m_queuedOutgoingAcks.Count) + acks = m_queuedOutgoingAcks.Count; + + NetException.Assert(acks > 0); + + m_sendBufferNumMessages++; + + // write acks header + sendBuffer[m_sendBufferWritePtr++] = (byte)NetMessageType.Acknowledge; + sendBuffer[m_sendBufferWritePtr++] = 0; // no sequence number + sendBuffer[m_sendBufferWritePtr++] = 0; // no sequence number + int len = (acks * 3) * 8; // bits + sendBuffer[m_sendBufferWritePtr++] = (byte)len; + sendBuffer[m_sendBufferWritePtr++] = (byte)(len >> 8); + + // write acks + for (int i = 0; i < acks; i++) + { + NetTuple tuple; + m_queuedOutgoingAcks.TryDequeue(out tuple); + + //m_peer.LogVerbose("Sending ack for " + tuple.Item1 + "#" + tuple.Item2); + + sendBuffer[m_sendBufferWritePtr++] = (byte)tuple.Item1; + sendBuffer[m_sendBufferWritePtr++] = (byte)tuple.Item2; + sendBuffer[m_sendBufferWritePtr++] = (byte)(tuple.Item2 >> 8); + } + + if (m_queuedOutgoingAcks.Count > 0) + { + // send packet and go for another round of acks + NetException.Assert(m_sendBufferWritePtr > 0 && m_sendBufferNumMessages > 0); + m_peer.SendPacket(m_sendBufferWritePtr, m_remoteEndPoint, m_sendBufferNumMessages, out connectionReset); + m_statistics.PacketSent(m_sendBufferWritePtr, 1); + m_sendBufferWritePtr = 0; + m_sendBufferNumMessages = 0; + } + } + + // + // Parse incoming acks (may trigger resends) + // + NetTuple incAck; + while (m_queuedIncomingAcks.TryDequeue(out incAck)) + { + //m_peer.LogVerbose("Received ack for " + acktp + "#" + seqNr); + NetSenderChannelBase chan = m_sendChannels[(int)incAck.Item1 - 1]; + + // If we haven't sent a message on this channel there is no reason to ack it + if (chan == null) + continue; + + chan.ReceiveAcknowledge(now, incAck.Item2); + } + } + + // + // send queued messages + // + if (m_peer.m_executeFlushSendQueue) + { + for (int i = m_sendChannels.Length - 1; i >= 0; i--) // Reverse order so reliable messages are sent first + { + var channel = m_sendChannels[i]; + NetException.Assert(m_sendBufferWritePtr < 1 || m_sendBufferNumMessages > 0); + if (channel != null) + channel.SendQueuedMessages(now); + NetException.Assert(m_sendBufferWritePtr < 1 || m_sendBufferNumMessages > 0); + } + } + + // + // Put on wire data has been written to send buffer but not yet sent + // + if (m_sendBufferWritePtr > 0) + { + m_peer.VerifyNetworkThread(); + NetException.Assert(m_sendBufferWritePtr > 0 && m_sendBufferNumMessages > 0); + m_peer.SendPacket(m_sendBufferWritePtr, m_remoteEndPoint, m_sendBufferNumMessages, out connectionReset); + m_statistics.PacketSent(m_sendBufferWritePtr, m_sendBufferNumMessages); + m_sendBufferWritePtr = 0; + m_sendBufferNumMessages = 0; + } + } + + // Queue an item for immediate sending on the wire + // This method is called from the ISenderChannels + internal void QueueSendMessage(NetOutgoingMessage om, int seqNr) + { + m_peer.VerifyNetworkThread(); + + int sz = om.GetEncodedSize(); + //if (sz > m_currentMTU) + // m_peer.LogWarning("Message larger than MTU! Fragmentation must have failed!"); + + bool connReset; // TODO: handle connection reset + + // can fit this message together with previously written to buffer? + if (m_sendBufferWritePtr + sz > m_currentMTU) + { + if (m_sendBufferWritePtr > 0 && m_sendBufferNumMessages > 0) + { + // previous message in buffer; send these first + m_peer.SendPacket(m_sendBufferWritePtr, m_remoteEndPoint, m_sendBufferNumMessages, out connReset); + m_statistics.PacketSent(m_sendBufferWritePtr, m_sendBufferNumMessages); + m_sendBufferWritePtr = 0; + m_sendBufferNumMessages = 0; + } + } + + // encode it into buffer regardless if it (now) fits within MTU or not + m_sendBufferWritePtr = om.Encode(m_peer.m_sendBuffer, m_sendBufferWritePtr, seqNr); + m_sendBufferNumMessages++; + + if (m_sendBufferWritePtr > m_currentMTU) + { + // send immediately; we're already over MTU + m_peer.SendPacket(m_sendBufferWritePtr, m_remoteEndPoint, m_sendBufferNumMessages, out connReset); + m_statistics.PacketSent(m_sendBufferWritePtr, m_sendBufferNumMessages); + m_sendBufferWritePtr = 0; + m_sendBufferNumMessages = 0; + } + } + + /// + /// Send a message to this remote connection + /// + /// The message to send + /// How to deliver the message + /// Sequence channel within the delivery method + public NetSendResult SendMessage(NetOutgoingMessage msg, NetDeliveryMethod method, int sequenceChannel) + { + return m_peer.SendMessage(msg, this, method, sequenceChannel); + } + + // called by SendMessage() and NetPeer.SendMessage; ie. may be user thread + internal NetSendResult EnqueueMessage(NetOutgoingMessage msg, NetDeliveryMethod method, int sequenceChannel) + { + if (m_status != NetConnectionStatus.Connected) + return NetSendResult.FailedNotConnected; + + NetMessageType tp = (NetMessageType)((int)method + sequenceChannel); + msg.m_messageType = tp; + + // TODO: do we need to make this more thread safe? + int channelSlot = (int)method - 1 + sequenceChannel; + NetSenderChannelBase chan = m_sendChannels[channelSlot]; + if (chan == null) + chan = CreateSenderChannel(tp); + + if ((method != NetDeliveryMethod.Unreliable && method != NetDeliveryMethod.UnreliableSequenced) && msg.GetEncodedSize() > m_currentMTU) + m_peer.ThrowOrLog("Reliable message too large! Fragmentation failure?"); + + var retval = chan.Enqueue(msg); + //if (retval == NetSendResult.Sent && m_peerConfiguration.m_autoFlushSendQueue == false) + // retval = NetSendResult.Queued; // queued since we're not autoflushing + return retval; + } + + // may be on user thread + private NetSenderChannelBase CreateSenderChannel(NetMessageType tp) + { + NetSenderChannelBase chan; + lock (m_sendChannels) + { + NetDeliveryMethod method = NetUtility.GetDeliveryMethod(tp); + int sequenceChannel = (int)tp - (int)method; + + int channelSlot = (int)method - 1 + sequenceChannel; + if (m_sendChannels[channelSlot] != null) + { + // we were pre-empted by another call to this method + chan = m_sendChannels[channelSlot]; + } + else + { + + switch (method) + { + case NetDeliveryMethod.Unreliable: + case NetDeliveryMethod.UnreliableSequenced: + chan = new NetUnreliableSenderChannel(this, NetUtility.GetWindowSize(method)); + break; + case NetDeliveryMethod.ReliableOrdered: + chan = new NetReliableSenderChannel(this, NetUtility.GetWindowSize(method)); + break; + case NetDeliveryMethod.ReliableSequenced: + case NetDeliveryMethod.ReliableUnordered: + default: + chan = new NetReliableSenderChannel(this, NetUtility.GetWindowSize(method)); + break; + } + m_sendChannels[channelSlot] = chan; + } + } + + return chan; + } + + // received a library message while Connected + internal void ReceivedLibraryMessage(NetMessageType tp, int ptr, int payloadLength) + { + m_peer.VerifyNetworkThread(); + + float now = (float)NetTime.Now; + + switch (tp) + { + case NetMessageType.Connect: + m_peer.LogDebug("Received handshake message (" + tp + ") despite connection being in place"); + break; + + case NetMessageType.ConnectResponse: + // handshake message must have been lost + HandleConnectResponse(now, tp, ptr, payloadLength); + break; + + case NetMessageType.ConnectionEstablished: + // do nothing, all's well + break; + + case NetMessageType.LibraryError: + m_peer.ThrowOrLog("LibraryError received by ReceivedLibraryMessage; this usually indicates a malformed message"); + break; + + case NetMessageType.Disconnect: + NetIncomingMessage msg = m_peer.SetupReadHelperMessage(ptr, payloadLength); + + m_disconnectRequested = true; + m_disconnectMessage = msg.ReadString(); + m_disconnectReqSendBye = false; + //ExecuteDisconnect(msg.ReadString(), false); + break; + case NetMessageType.Acknowledge: + for (int i = 0; i < payloadLength; i+=3) + { + NetMessageType acktp = (NetMessageType)m_peer.m_receiveBuffer[ptr++]; // netmessagetype + int seqNr = m_peer.m_receiveBuffer[ptr++]; + seqNr |= (m_peer.m_receiveBuffer[ptr++] << 8); + + // need to enqueue this and handle it in the netconnection heartbeat; so be able to send resends together with normal sends + m_queuedIncomingAcks.Enqueue(new NetTuple(acktp, seqNr)); + } + break; + case NetMessageType.Ping: + int pingNr = m_peer.m_receiveBuffer[ptr++]; + SendPong(pingNr); + break; + case NetMessageType.Pong: + NetIncomingMessage pmsg = m_peer.SetupReadHelperMessage(ptr, payloadLength); + int pongNr = pmsg.ReadByte(); + float remoteSendTime = pmsg.ReadSingle(); + ReceivedPong(now, pongNr, remoteSendTime); + break; + case NetMessageType.ExpandMTURequest: + SendMTUSuccess(payloadLength); + break; + case NetMessageType.ExpandMTUSuccess: + if (m_peer.Configuration.AutoExpandMTU == false) + { + m_peer.LogDebug("Received ExpandMTURequest altho AutoExpandMTU is turned off!"); + break; + } + NetIncomingMessage emsg = m_peer.SetupReadHelperMessage(ptr, payloadLength); + int size = emsg.ReadInt32(); + HandleExpandMTUSuccess(now, size); + break; + case NetMessageType.NatIntroduction: + // Unusual situation where server is actually already known, but got a nat introduction - oh well, lets handle it as usual + m_peer.HandleNatIntroduction(ptr); + break; + default: + m_peer.LogWarning("Connection received unhandled library message: " + tp); + break; + } + } + + internal void ReceivedMessage(NetIncomingMessage msg) + { + m_peer.VerifyNetworkThread(); + + NetMessageType tp = msg.m_receivedMessageType; + + int channelSlot = (int)tp - 1; + NetReceiverChannelBase chan = m_receiveChannels[channelSlot]; + if (chan == null) + chan = CreateReceiverChannel(tp); + + chan.ReceiveMessage(msg); + } + + private NetReceiverChannelBase CreateReceiverChannel(NetMessageType tp) + { + m_peer.VerifyNetworkThread(); + + // create receiver channel + NetReceiverChannelBase chan; + NetDeliveryMethod method = NetUtility.GetDeliveryMethod(tp); + switch (method) + { + case NetDeliveryMethod.Unreliable: + chan = new NetUnreliableUnorderedReceiver(this); + break; + case NetDeliveryMethod.ReliableOrdered: + chan = new NetReliableOrderedReceiver(this, NetConstants.ReliableOrderedWindowSize); + break; + case NetDeliveryMethod.UnreliableSequenced: + chan = new NetUnreliableSequencedReceiver(this); + break; + case NetDeliveryMethod.ReliableUnordered: + chan = new NetReliableUnorderedReceiver(this, NetConstants.ReliableOrderedWindowSize); + break; + case NetDeliveryMethod.ReliableSequenced: + chan = new NetReliableSequencedReceiver(this, NetConstants.ReliableSequencedWindowSize); + break; + default: + throw new NetException("Unhandled NetDeliveryMethod!"); + } + + int channelSlot = (int)tp - 1; + NetException.Assert(m_receiveChannels[channelSlot] == null); + m_receiveChannels[channelSlot] = chan; + + return chan; + } + + internal void QueueAck(NetMessageType tp, int sequenceNumber) + { + m_queuedOutgoingAcks.Enqueue(new NetTuple(tp, sequenceNumber)); + } + + /// + /// Zero windowSize indicates that the channel is not yet instantiated (used) + /// Negative freeWindowSlots means this amount of messages are currently queued but delayed due to closed window + /// + public void GetSendQueueInfo(NetDeliveryMethod method, int sequenceChannel, out int windowSize, out int freeWindowSlots) + { + int channelSlot = (int)method - 1 + sequenceChannel; + var chan = m_sendChannels[channelSlot]; + if (chan == null) + { + windowSize = NetUtility.GetWindowSize(method); + freeWindowSlots = windowSize; + return; + } + + windowSize = chan.WindowSize; + freeWindowSlots = chan.GetAllowedSends() - chan.m_queuedSends.Count; + return; + } + + public bool CanSendImmediately(NetDeliveryMethod method, int sequenceChannel) + { + int channelSlot = (int)method - 1 + sequenceChannel; + var chan = m_sendChannels[channelSlot]; + if (chan == null) + return true; + return (chan.GetAllowedSends() - chan.m_queuedSends.Count) > 0; + } + + internal void Shutdown(string reason) + { + ExecuteDisconnect(reason, true); + } + + /// + /// Returns a string that represents this object + /// + public override string ToString() + { + return "[NetConnection to " + m_remoteEndPoint + "]"; + } + } +} diff --git a/Lidgren.Network/NetConnectionStatistics.cs b/Lidgren.Network/NetConnectionStatistics.cs new file mode 100644 index 0000000..7d28c1d --- /dev/null +++ b/Lidgren.Network/NetConnectionStatistics.cs @@ -0,0 +1,212 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +// Uncomment the line below to get statistics in RELEASE builds +//#define USE_RELEASE_STATISTICS + +using System; +using System.Collections.Generic; +using System.Text; +using System.Diagnostics; + +namespace Lidgren.Network +{ + internal enum MessageResendReason + { + Delay, + HoleInSequence + } + + /// + /// Statistics for a NetConnection instance + /// + public sealed class NetConnectionStatistics + { + private readonly NetConnection m_connection; + + internal int m_sentPackets; + internal int m_receivedPackets; + + internal int m_sentMessages; + internal int m_receivedMessages; + internal int m_receivedFragments; + + internal int m_sentBytes; + internal int m_receivedBytes; + + internal int m_resentMessagesDueToDelay; + internal int m_resentMessagesDueToHole; + + internal NetConnectionStatistics(NetConnection conn) + { + m_connection = conn; + Reset(); + } + + internal void Reset() + { + m_sentPackets = 0; + m_receivedPackets = 0; + m_sentMessages = 0; + m_receivedMessages = 0; + m_receivedFragments = 0; + m_sentBytes = 0; + m_receivedBytes = 0; + m_resentMessagesDueToDelay = 0; + m_resentMessagesDueToHole = 0; + } + + /// + /// Gets the number of sent packets for this connection + /// + public int SentPackets { get { return m_sentPackets; } } + + /// + /// Gets the number of received packets for this connection + /// + public int ReceivedPackets { get { return m_receivedPackets; } } + + /// + /// Gets the number of sent bytes for this connection + /// + public int SentBytes { get { return m_sentBytes; } } + + /// + /// Gets the number of received bytes for this connection + /// + public int ReceivedBytes { get { return m_receivedBytes; } } + + /// + /// Gets the number of resent reliable messages for this connection + /// + public int ResentMessages { get { return m_resentMessagesDueToHole + m_resentMessagesDueToDelay; } } + + // public double LastSendRespondedTo { get { return m_connection.m_lastSendRespondedTo; } } + +#if USE_RELEASE_STATISTICS + internal void PacketSent(int numBytes, int numMessages) + { + NetException.Assert(numBytes > 0 && numMessages > 0); + m_sentPackets++; + m_sentBytes += numBytes; + m_sentMessages += numMessages; + } +#else + [Conditional("DEBUG")] + internal void PacketSent(int numBytes, int numMessages) + { + NetException.Assert(numBytes > 0 && numMessages > 0); + m_sentPackets++; + m_sentBytes += numBytes; + m_sentMessages += numMessages; + } +#endif + +#if USE_RELEASE_STATISTICS + internal void PacketReceived(int numBytes, int numMessages) + { + NetException.Assert(numBytes > 0 && numMessages > 0); + m_receivedPackets++; + m_receivedBytes += numBytes; + m_receivedMessages += numMessages; + } +#else + [Conditional("DEBUG")] + internal void PacketReceived(int numBytes, int numMessages, int numFragments) + { + NetException.Assert(numBytes > 0 && numMessages > 0); + m_receivedPackets++; + m_receivedBytes += numBytes; + m_receivedMessages += numMessages; + m_receivedFragments += numFragments; + } +#endif + +#if USE_RELEASE_STATISTICS + internal void MessageResent(MessageResendReason reason) + { + if (reason == MessageResendReason.Delay) + m_resentMessagesDueToDelay++; + else + m_resentMessagesDueToHole++; + } +#else + [Conditional("DEBUG")] + internal void MessageResent(MessageResendReason reason) + { + if (reason == MessageResendReason.Delay) + m_resentMessagesDueToDelay++; + else + m_resentMessagesDueToHole++; + } +#endif + + /// + /// Returns a string that represents this object + /// + public override string ToString() + { + StringBuilder bdr = new StringBuilder(); + //bdr.AppendLine("Average roundtrip time: " + NetTime.ToReadable(m_connection.m_averageRoundtripTime)); + bdr.AppendLine("Current MTU: " + m_connection.m_currentMTU); + bdr.AppendLine("Sent " + m_sentBytes + " bytes in " + m_sentMessages + " messages in " + m_sentPackets + " packets"); + bdr.AppendLine("Received " + m_receivedBytes + " bytes in " + m_receivedMessages + " messages (of which " + m_receivedFragments + " fragments) in " + m_receivedPackets + " packets"); + + if (m_resentMessagesDueToDelay > 0) + bdr.AppendLine("Resent messages (delay): " + m_resentMessagesDueToDelay); + if (m_resentMessagesDueToDelay > 0) + bdr.AppendLine("Resent messages (holes): " + m_resentMessagesDueToHole); + + int numUnsent = 0; + int numStored = 0; + foreach (NetSenderChannelBase sendChan in m_connection.m_sendChannels) + { + if (sendChan == null) + continue; + numUnsent += sendChan.m_queuedSends.Count; + + var relSendChan = sendChan as NetReliableSenderChannel; + if (relSendChan != null) + { + for (int i = 0; i < relSendChan.m_storedMessages.Length; i++) + if (relSendChan.m_storedMessages[i].Message != null) + numStored++; + } + } + + int numWithheld = 0; + foreach (NetReceiverChannelBase recChan in m_connection.m_receiveChannels) + { + var relRecChan = recChan as NetReliableOrderedReceiver; + if (relRecChan != null) + { + for (int i = 0; i < relRecChan.m_withheldMessages.Length; i++) + if (relRecChan.m_withheldMessages[i] != null) + numWithheld++; + } + } + + bdr.AppendLine("Unsent messages: " + numUnsent); + bdr.AppendLine("Stored messages: " + numStored); + bdr.AppendLine("Withheld messages: " + numWithheld); + + return bdr.ToString(); + } + } +} \ No newline at end of file diff --git a/Lidgren.Network/NetConnectionStatus.cs b/Lidgren.Network/NetConnectionStatus.cs new file mode 100644 index 0000000..15c1937 --- /dev/null +++ b/Lidgren.Network/NetConnectionStatus.cs @@ -0,0 +1,68 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +using System; + +namespace Lidgren.Network +{ + /// + /// Status for a NetConnection instance + /// + public enum NetConnectionStatus + { + /// + /// No connection, or attempt, in place + /// + None, + + /// + /// Connect has been sent; waiting for ConnectResponse + /// + InitiatedConnect, + + /// + /// Connect was received, but ConnectResponse hasn't been sent yet + /// + ReceivedInitiation, + + /// + /// Connect was received and ApprovalMessage released to the application; awaiting Approve() or Deny() + /// + RespondedAwaitingApproval, // We got Connect, released ApprovalMessage + + /// + /// Connect was received and ConnectResponse has been sent; waiting for ConnectionEstablished + /// + RespondedConnect, // we got Connect, sent ConnectResponse + + /// + /// Connected + /// + Connected, // we received ConnectResponse (if initiator) or ConnectionEstablished (if passive) + + /// + /// In the process of disconnecting + /// + Disconnecting, + + /// + /// Disconnected + /// + Disconnected + } +} diff --git a/Lidgren.Network/NetConstants.cs b/Lidgren.Network/NetConstants.cs new file mode 100644 index 0000000..a5a0c37 --- /dev/null +++ b/Lidgren.Network/NetConstants.cs @@ -0,0 +1,57 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +using System; + +namespace Lidgren.Network +{ + /// + /// All the constants used when compiling the library + /// + internal static class NetConstants + { + internal const int NumTotalChannels = 99; + + internal const int NetChannelsPerDeliveryMethod = 32; + + internal const int NumSequenceNumbers = 1024; + + internal const int HeaderByteSize = 5; + + internal const int UnreliableWindowSize = 128; + internal const int ReliableOrderedWindowSize = 64; + internal const int ReliableSequencedWindowSize = 64; + internal const int DefaultWindowSize = 64; + + internal const int MaxFragmentationGroups = ushort.MaxValue - 1; + + internal const int UnfragmentedMessageHeaderSize = 5; + + /// + /// Number of channels which needs a sequence number to work + /// + internal const int NumSequencedChannels = ((int)NetMessageType.UserReliableOrdered1 + NetConstants.NetChannelsPerDeliveryMethod) - (int)NetMessageType.UserSequenced1; + + /// + /// Number of reliable channels + /// + internal const int NumReliableChannels = ((int)NetMessageType.UserReliableOrdered1 + NetConstants.NetChannelsPerDeliveryMethod) - (int)NetMessageType.UserReliableUnordered; + + internal const string ConnResetMessage = "Connection was reset by remote host"; + } +} diff --git a/Lidgren.Network/NetDeliveryMethod.cs b/Lidgren.Network/NetDeliveryMethod.cs new file mode 100644 index 0000000..d04266d --- /dev/null +++ b/Lidgren.Network/NetDeliveryMethod.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Lidgren.Network +{ + /// + /// How the library deals with resends and handling of late messages + /// + public enum NetDeliveryMethod : byte + { + // + // Actually a publicly visible subset of NetMessageType + // + + /// + /// Indicates an error + /// + Unknown = 0, + + /// + /// Unreliable, unordered delivery + /// + Unreliable = 1, + + /// + /// Unreliable delivery, but automatically dropping late messages + /// + UnreliableSequenced = 2, + + /// + /// Reliable delivery, but unordered + /// + ReliableUnordered = 34, + + /// + /// Reliable delivery, except for late messages which are dropped + /// + ReliableSequenced = 35, + + /// + /// Reliable, ordered delivery + /// + ReliableOrdered = 67, + } +} diff --git a/Lidgren.Network/NetException.cs b/Lidgren.Network/NetException.cs new file mode 100644 index 0000000..41a50c7 --- /dev/null +++ b/Lidgren.Network/NetException.cs @@ -0,0 +1,74 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +using System; +using System.Diagnostics; +using System.Runtime.Serialization; + +namespace Lidgren.Network +{ + /// + /// Exception thrown in the Lidgren Network Library + /// + public sealed class NetException : Exception + { + /// + /// NetException constructor + /// + public NetException() + : base() + { + } + + /// + /// NetException constructor + /// + public NetException(string message) + : base(message) + { + } + + /// + /// NetException constructor + /// + public NetException(string message, Exception inner) + : base(message, inner) + { + } + + /// + /// Throws an exception, in DEBUG only, if first parameter is false + /// + [Conditional("DEBUG")] + public static void Assert(bool isOk, string message) + { + if (!isOk) + throw new NetException(message); + } + + /// + /// Throws an exception, in DEBUG only, if first parameter is false + /// + [Conditional("DEBUG")] + public static void Assert(bool isOk) + { + if (!isOk) + throw new NetException(); + } + } +} diff --git a/Lidgren.Network/NetFragmentationHelper.cs b/Lidgren.Network/NetFragmentationHelper.cs new file mode 100644 index 0000000..85efe4d --- /dev/null +++ b/Lidgren.Network/NetFragmentationHelper.cs @@ -0,0 +1,175 @@ +using System; + +namespace Lidgren.Network +{ + internal static class NetFragmentationHelper + { + internal static int WriteHeader( + byte[] destination, + int ptr, + int group, + int totalBits, + int chunkByteSize, + int chunkNumber) + { + uint num1 = (uint)group; + while (num1 >= 0x80) + { + destination[ptr++] = (byte)(num1 | 0x80); + num1 = num1 >> 7; + } + destination[ptr++] = (byte)num1; + + // write variable length fragment total bits + uint num2 = (uint)totalBits; + while (num2 >= 0x80) + { + destination[ptr++] = (byte)(num2 | 0x80); + num2 = num2 >> 7; + } + destination[ptr++] = (byte)num2; + + // write variable length fragment chunk size + uint num3 = (uint)chunkByteSize; + while (num3 >= 0x80) + { + destination[ptr++] = (byte)(num3 | 0x80); + num3 = num3 >> 7; + } + destination[ptr++] = (byte)num3; + + // write variable length fragment chunk number + uint num4 = (uint)chunkNumber; + while (num4 >= 0x80) + { + destination[ptr++] = (byte)(num4 | 0x80); + num4 = num4 >> 7; + } + destination[ptr++] = (byte)num4; + + return ptr; + } + + internal static int ReadHeader(byte[] buffer, int ptr, out int group, out int totalBits, out int chunkByteSize, out int chunkNumber) + { + int num1 = 0; + int num2 = 0; + while (true) + { + byte num3 = buffer[ptr++]; + num1 |= (num3 & 0x7f) << (num2 & 0x1f); + num2 += 7; + if ((num3 & 0x80) == 0) + { + group = num1; + break; + } + } + + num1 = 0; + num2 = 0; + while (true) + { + byte num3 = buffer[ptr++]; + num1 |= (num3 & 0x7f) << (num2 & 0x1f); + num2 += 7; + if ((num3 & 0x80) == 0) + { + totalBits = num1; + break; + } + } + + num1 = 0; + num2 = 0; + while (true) + { + byte num3 = buffer[ptr++]; + num1 |= (num3 & 0x7f) << (num2 & 0x1f); + num2 += 7; + if ((num3 & 0x80) == 0) + { + chunkByteSize = num1; + break; + } + } + + num1 = 0; + num2 = 0; + while (true) + { + byte num3 = buffer[ptr++]; + num1 |= (num3 & 0x7f) << (num2 & 0x1f); + num2 += 7; + if ((num3 & 0x80) == 0) + { + chunkNumber = num1; + break; + } + } + + return ptr; + } + + internal static int GetFragmentationHeaderSize(int groupId, int totalBytes, int chunkByteSize, int numChunks) + { + int len = 4; + + // write variable length fragment group id + uint num1 = (uint)groupId; + while (num1 >= 0x80) + { + len++; + num1 = num1 >> 7; + } + + // write variable length fragment total bits + uint num2 = (uint)(totalBytes * 8); + while (num2 >= 0x80) + { + len++; + num2 = num2 >> 7; + } + + // write variable length fragment chunk byte size + uint num3 = (uint)chunkByteSize; + while (num3 >= 0x80) + { + len++; + num3 = num3 >> 7; + } + + // write variable length fragment chunk number + uint num4 = (uint)numChunks; + while (num4 >= 0x80) + { + len++; + num4 = num4 >> 7; + } + + return len; + } + + internal static int GetBestChunkSize(int group, int totalBytes, int mtu) + { + int tryChunkSize = mtu - NetConstants.HeaderByteSize - 4; // naive approximation + int est = GetFragmentationHeaderSize(group, totalBytes, tryChunkSize, totalBytes / tryChunkSize); + tryChunkSize = mtu - NetConstants.HeaderByteSize - est; // slightly less naive approximation + + int headerSize = 0; + do + { + tryChunkSize--; // keep reducing chunk size until it fits within MTU including header + + int numChunks = totalBytes / tryChunkSize; + if (numChunks * tryChunkSize < totalBytes) + numChunks++; + + headerSize = GetFragmentationHeaderSize(group, totalBytes, tryChunkSize, numChunks); // 4+ bytes + + } while (tryChunkSize + headerSize + NetConstants.HeaderByteSize + 1 >= mtu); + + return tryChunkSize; + } + } +} diff --git a/Lidgren.Network/NetFragmentationInfo.cs b/Lidgren.Network/NetFragmentationInfo.cs new file mode 100644 index 0000000..2c8b70e --- /dev/null +++ b/Lidgren.Network/NetFragmentationInfo.cs @@ -0,0 +1,12 @@ +using System; + +namespace Lidgren.Network +{ + public sealed class NetFragmentationInfo + { + public int TotalFragmentCount; + public bool[] Received; + public int TotalReceived; + public int FragmentSize; + } +} diff --git a/Lidgren.Network/NetIncomingMessage.cs b/Lidgren.Network/NetIncomingMessage.cs new file mode 100644 index 0000000..3dadf77 --- /dev/null +++ b/Lidgren.Network/NetIncomingMessage.cs @@ -0,0 +1,115 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +using System; +using System.Net; +using System.Diagnostics; + +namespace Lidgren.Network +{ + /// + /// Incoming message either sent from a remote peer or generated within the library + /// + [DebuggerDisplay("Type={MessageType} LengthBits={LengthBits}")] + public sealed class NetIncomingMessage : NetBuffer + { + internal NetIncomingMessageType m_incomingMessageType; + internal IPEndPoint m_senderEndPoint; + internal NetConnection m_senderConnection; + internal int m_sequenceNumber; + internal NetMessageType m_receivedMessageType; + internal bool m_isFragment; + internal double m_receiveTime; + + /// + /// Gets the type of this incoming message + /// + public NetIncomingMessageType MessageType { get { return m_incomingMessageType; } } + + /// + /// Gets the delivery method this message was sent with (if user data) + /// + public NetDeliveryMethod DeliveryMethod { get { return NetUtility.GetDeliveryMethod(m_receivedMessageType); } } + + /// + /// Gets the sequence channel this message was sent with (if user data) + /// + public int SequenceChannel { get { return (int)m_receivedMessageType - (int)NetUtility.GetDeliveryMethod(m_receivedMessageType); } } + + /// + /// IPEndPoint of sender, if any + /// + public IPEndPoint SenderEndPoint { get { return m_senderEndPoint; } } + + /// + /// NetConnection of sender, if any + /// + public NetConnection SenderConnection { get { return m_senderConnection; } } + + /// + /// What local time the message was received from the network + /// + public double ReceiveTime { get { return m_receiveTime; } } + + internal NetIncomingMessage() + { + } + + internal NetIncomingMessage(NetIncomingMessageType tp) + { + m_incomingMessageType = tp; + } + + internal void Reset() + { + m_incomingMessageType = NetIncomingMessageType.Error; + m_readPosition = 0; + m_receivedMessageType = NetMessageType.LibraryError; + m_senderConnection = null; + m_bitLength = 0; + m_isFragment = false; + } + + /// + /// Decrypt a message + /// + /// The encryption algorithm used to encrypt the message + /// true on success + public bool Decrypt(NetEncryption encryption) + { + return encryption.Decrypt(this); + } + + /// + /// Reads a value, in local time comparable to NetTime.Now, written using WriteTime() + /// Must have a connected sender + /// + public double ReadTime(bool highPrecision) + { + return ReadTime(m_senderConnection, highPrecision); + } + + /// + /// Returns a string that represents this object + /// + public override string ToString() + { + return "[NetIncomingMessage #" + m_sequenceNumber + " " + this.LengthBytes + " bytes]"; + } + } +} diff --git a/Lidgren.Network/NetIncomingMessageType.cs b/Lidgren.Network/NetIncomingMessageType.cs new file mode 100644 index 0000000..73f4ae7 --- /dev/null +++ b/Lidgren.Network/NetIncomingMessageType.cs @@ -0,0 +1,105 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ +using System; +using System.Diagnostics.CodeAnalysis; + +namespace Lidgren.Network +{ + /// + /// The type of a NetIncomingMessage + /// + [SuppressMessage("Microsoft.Design", "CA1027:MarkEnumsWithFlags")] + public enum NetIncomingMessageType + { + // + // library note: values are power-of-two, but they are not flags - it's a convenience for NetPeerConfiguration.DisabledMessageTypes + // + + /// + /// Error; this value should never appear + /// + Error = 0, + + /// + /// Status for a connection changed + /// + StatusChanged = 1 << 0, // Data (string) + + /// + /// Data sent using SendUnconnectedMessage + /// + UnconnectedData = 1 << 1, // Data Based on data received + + /// + /// Connection approval is needed + /// + ConnectionApproval = 1 << 2, // Data + + /// + /// Application data + /// + Data = 1 << 3, // Data Based on data received + + /// + /// Receipt of delivery + /// + Receipt = 1 << 4, // Data + + /// + /// Discovery request for a response + /// + DiscoveryRequest = 1 << 5, // (no data) + + /// + /// Discovery response to a request + /// + DiscoveryResponse = 1 << 6, // Data + + /// + /// Verbose debug message + /// + VerboseDebugMessage = 1 << 7, // Data (string) + + /// + /// Debug message + /// + DebugMessage = 1 << 8, // Data (string) + + /// + /// Warning message + /// + WarningMessage = 1 << 9, // Data (string) + + /// + /// Error message + /// + ErrorMessage = 1 << 10, // Data (string) + + /// + /// NAT introduction was successful + /// + NatIntroductionSuccess = 1 << 11, // Data (as passed to master server) + + /// + /// A roundtrip was measured and NetConnection.AverageRoundtripTime was updated + /// + ConnectionLatencyUpdated = 1 << 12, // Seconds as a Single + } +} diff --git a/Lidgren.Network/NetMessageType.cs b/Lidgren.Network/NetMessageType.cs new file mode 100644 index 0000000..ef56eee --- /dev/null +++ b/Lidgren.Network/NetMessageType.cs @@ -0,0 +1,175 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +using System; + +namespace Lidgren.Network +{ + internal enum NetMessageType : byte + { + Unconnected = 0, + + UserUnreliable = 1, + + UserSequenced1 = 2, + UserSequenced2 = 3, + UserSequenced3 = 4, + UserSequenced4 = 5, + UserSequenced5 = 6, + UserSequenced6 = 7, + UserSequenced7 = 8, + UserSequenced8 = 9, + UserSequenced9 = 10, + UserSequenced10 = 11, + UserSequenced11 = 12, + UserSequenced12 = 13, + UserSequenced13 = 14, + UserSequenced14 = 15, + UserSequenced15 = 16, + UserSequenced16 = 17, + UserSequenced17 = 18, + UserSequenced18 = 19, + UserSequenced19 = 20, + UserSequenced20 = 21, + UserSequenced21 = 22, + UserSequenced22 = 23, + UserSequenced23 = 24, + UserSequenced24 = 25, + UserSequenced25 = 26, + UserSequenced26 = 27, + UserSequenced27 = 28, + UserSequenced28 = 29, + UserSequenced29 = 30, + UserSequenced30 = 31, + UserSequenced31 = 32, + UserSequenced32 = 33, + + UserReliableUnordered = 34, + + UserReliableSequenced1 = 35, + UserReliableSequenced2 = 36, + UserReliableSequenced3 = 37, + UserReliableSequenced4 = 38, + UserReliableSequenced5 = 39, + UserReliableSequenced6 = 40, + UserReliableSequenced7 = 41, + UserReliableSequenced8 = 42, + UserReliableSequenced9 = 43, + UserReliableSequenced10 = 44, + UserReliableSequenced11 = 45, + UserReliableSequenced12 = 46, + UserReliableSequenced13 = 47, + UserReliableSequenced14 = 48, + UserReliableSequenced15 = 49, + UserReliableSequenced16 = 50, + UserReliableSequenced17 = 51, + UserReliableSequenced18 = 52, + UserReliableSequenced19 = 53, + UserReliableSequenced20 = 54, + UserReliableSequenced21 = 55, + UserReliableSequenced22 = 56, + UserReliableSequenced23 = 57, + UserReliableSequenced24 = 58, + UserReliableSequenced25 = 59, + UserReliableSequenced26 = 60, + UserReliableSequenced27 = 61, + UserReliableSequenced28 = 62, + UserReliableSequenced29 = 63, + UserReliableSequenced30 = 64, + UserReliableSequenced31 = 65, + UserReliableSequenced32 = 66, + + UserReliableOrdered1 = 67, + UserReliableOrdered2 = 68, + UserReliableOrdered3 = 69, + UserReliableOrdered4 = 70, + UserReliableOrdered5 = 71, + UserReliableOrdered6 = 72, + UserReliableOrdered7 = 73, + UserReliableOrdered8 = 74, + UserReliableOrdered9 = 75, + UserReliableOrdered10 = 76, + UserReliableOrdered11 = 77, + UserReliableOrdered12 = 78, + UserReliableOrdered13 = 79, + UserReliableOrdered14 = 80, + UserReliableOrdered15 = 81, + UserReliableOrdered16 = 82, + UserReliableOrdered17 = 83, + UserReliableOrdered18 = 84, + UserReliableOrdered19 = 85, + UserReliableOrdered20 = 86, + UserReliableOrdered21 = 87, + UserReliableOrdered22 = 88, + UserReliableOrdered23 = 89, + UserReliableOrdered24 = 90, + UserReliableOrdered25 = 91, + UserReliableOrdered26 = 92, + UserReliableOrdered27 = 93, + UserReliableOrdered28 = 94, + UserReliableOrdered29 = 95, + UserReliableOrdered30 = 96, + UserReliableOrdered31 = 97, + UserReliableOrdered32 = 98, + + Unused1 = 99, + Unused2 = 100, + Unused3 = 101, + Unused4 = 102, + Unused5 = 103, + Unused6 = 104, + Unused7 = 105, + Unused8 = 106, + Unused9 = 107, + Unused10 = 108, + Unused11 = 109, + Unused12 = 110, + Unused13 = 111, + Unused14 = 112, + Unused15 = 113, + Unused16 = 114, + Unused17 = 115, + Unused18 = 116, + Unused19 = 117, + Unused20 = 118, + Unused21 = 119, + Unused22 = 120, + Unused23 = 121, + Unused24 = 122, + Unused25 = 123, + Unused26 = 124, + Unused27 = 125, + Unused28 = 126, + Unused29 = 127, + + LibraryError = 128, + Ping = 129, // used for RTT calculation + Pong = 130, // used for RTT calculation + Connect = 131, + ConnectResponse = 132, + ConnectionEstablished = 133, + Acknowledge = 134, + Disconnect = 135, + Discovery = 136, + DiscoveryResponse = 137, + NatPunchMessage = 138, // send between peers + NatIntroduction = 139, // send to master server + ExpandMTURequest = 140, + ExpandMTUSuccess = 141, + } +} \ No newline at end of file diff --git a/Lidgren.Network/NetNatIntroduction.cs b/Lidgren.Network/NetNatIntroduction.cs new file mode 100644 index 0000000..ddbcf7e --- /dev/null +++ b/Lidgren.Network/NetNatIntroduction.cs @@ -0,0 +1,113 @@ +using System; +using System.Collections.Generic; +using System.Net; + +namespace Lidgren.Network +{ + public partial class NetPeer + { + /// + /// Send NetIntroduction to hostExternal and clientExternal; introducing client to host + /// + public void Introduce( + IPEndPoint hostInternal, + IPEndPoint hostExternal, + IPEndPoint clientInternal, + IPEndPoint clientExternal, + string token) + { + // send message to client + NetOutgoingMessage msg = CreateMessage(10 + token.Length + 1); + msg.m_messageType = NetMessageType.NatIntroduction; + msg.Write((byte)0); + msg.Write(hostInternal); + msg.Write(hostExternal); + msg.Write(token); + m_unsentUnconnectedMessages.Enqueue(new NetTuple(clientExternal, msg)); + + // send message to host + msg = CreateMessage(10 + token.Length + 1); + msg.m_messageType = NetMessageType.NatIntroduction; + msg.Write((byte)1); + msg.Write(clientInternal); + msg.Write(clientExternal); + msg.Write(token); + m_unsentUnconnectedMessages.Enqueue(new NetTuple(hostExternal, msg)); + } + + /// + /// Called when host/client receives a NatIntroduction message from a master server + /// + internal void HandleNatIntroduction(int ptr) + { + VerifyNetworkThread(); + + // read intro + NetIncomingMessage tmp = SetupReadHelperMessage(ptr, 1000); // never mind length + + byte hostByte = tmp.ReadByte(); + IPEndPoint remoteInternal = tmp.ReadIPEndPoint(); + IPEndPoint remoteExternal = tmp.ReadIPEndPoint(); + string token = tmp.ReadString(); + bool isHost = (hostByte != 0); + + LogDebug("NAT introduction received; we are designated " + (isHost ? "host" : "client")); + + NetOutgoingMessage punch; + + if (!isHost && m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.NatIntroductionSuccess) == false) + return; // no need to punch - we're not listening for nat intros! + + // send internal punch + punch = CreateMessage(1); + punch.m_messageType = NetMessageType.NatPunchMessage; + punch.Write(hostByte); + punch.Write(token); + m_unsentUnconnectedMessages.Enqueue(new NetTuple(remoteInternal, punch)); + LogDebug("NAT punch sent to " + remoteInternal); + + // send external punch + punch = CreateMessage(1); + punch.m_messageType = NetMessageType.NatPunchMessage; + punch.Write(hostByte); + punch.Write(token); + m_unsentUnconnectedMessages.Enqueue(new NetTuple(remoteExternal, punch)); + LogDebug("NAT punch sent to " + remoteExternal); + + } + + /// + /// Called when receiving a NatPunchMessage from a remote endpoint + /// + private void HandleNatPunch(int ptr, IPEndPoint senderEndPoint) + { + NetIncomingMessage tmp = SetupReadHelperMessage(ptr, 1000); // never mind length + + byte fromHostByte = tmp.ReadByte(); + if (fromHostByte == 0) + { + // it's from client + LogDebug("NAT punch received from " + senderEndPoint + " we're host, so we ignore this"); + return; // don't alert hosts about nat punch successes; only clients + } + string token = tmp.ReadString(); + + LogDebug("NAT punch received from " + senderEndPoint + " we're client, so we've succeeded - token is " + token); + + // + // Release punch success to client; enabling him to Connect() to msg.SenderIPEndPoint if token is ok + // + NetIncomingMessage punchSuccess = CreateIncomingMessage(NetIncomingMessageType.NatIntroductionSuccess, 10); + punchSuccess.m_senderEndPoint = senderEndPoint; + punchSuccess.Write(token); + ReleaseMessage(punchSuccess); + + // send a return punch just for good measure + var punch = CreateMessage(1); + punch.m_messageType = NetMessageType.NatPunchMessage; + punch.Write((byte)0); + punch.Write(token); + m_unsentUnconnectedMessages.Enqueue(new NetTuple(senderEndPoint, punch)); + } + } +} diff --git a/Lidgren.Network/NetOutgoingMessage.cs b/Lidgren.Network/NetOutgoingMessage.cs new file mode 100644 index 0000000..9855a49 --- /dev/null +++ b/Lidgren.Network/NetOutgoingMessage.cs @@ -0,0 +1,135 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ +using System; +using System.Diagnostics; + +namespace Lidgren.Network +{ + /// + /// Outgoing message used to send data to remote peer(s) + /// + [DebuggerDisplay("LengthBits={LengthBits}")] + public sealed class NetOutgoingMessage : NetBuffer + { + internal NetMessageType m_messageType; + internal bool m_isSent; + internal int m_recyclingCount; + + internal int m_fragmentGroup; // which group of fragments ths belongs to + internal int m_fragmentGroupTotalBits; // total number of bits in this group + internal int m_fragmentChunkByteSize; // size, in bytes, of every chunk but the last one + internal int m_fragmentChunkNumber; // which number chunk this is, starting with 0 + + internal NetOutgoingMessage() + { + } + + internal void Reset() + { + m_messageType = NetMessageType.LibraryError; + m_bitLength = 0; + m_isSent = false; + m_recyclingCount = 0; + m_fragmentGroup = 0; + } + + internal int Encode(byte[] intoBuffer, int ptr, int sequenceNumber) + { + // 8 bits - NetMessageType + // 1 bit - Fragment? + // 15 bits - Sequence number + // 16 bits - Payload length in bits + + intoBuffer[ptr++] = (byte)m_messageType; + + byte low = (byte)((sequenceNumber << 1) | (m_fragmentGroup == 0 ? 0 : 1)); + intoBuffer[ptr++] = low; + intoBuffer[ptr++] = (byte)(sequenceNumber >> 7); + + if (m_fragmentGroup == 0) + { + intoBuffer[ptr++] = (byte)m_bitLength; + intoBuffer[ptr++] = (byte)(m_bitLength >> 8); + + int byteLen = NetUtility.BytesToHoldBits(m_bitLength); + if (byteLen > 0) + { + Buffer.BlockCopy(m_data, 0, intoBuffer, ptr, byteLen); + ptr += byteLen; + } + } + else + { + int wasPtr = ptr; + intoBuffer[ptr++] = (byte)m_bitLength; + intoBuffer[ptr++] = (byte)(m_bitLength >> 8); + + // + // write fragmentation header + // + ptr = NetFragmentationHelper.WriteHeader(intoBuffer, ptr, m_fragmentGroup, m_fragmentGroupTotalBits, m_fragmentChunkByteSize, m_fragmentChunkNumber); + int hdrLen = ptr - wasPtr - 2; + + // update length + int realBitLength = m_bitLength + (hdrLen * 8); + intoBuffer[wasPtr] = (byte)realBitLength; + intoBuffer[wasPtr + 1] = (byte)(realBitLength >> 8); + + int byteLen = NetUtility.BytesToHoldBits(m_bitLength); + if (byteLen > 0) + { + Buffer.BlockCopy(m_data, (int)(m_fragmentChunkNumber * m_fragmentChunkByteSize), intoBuffer, ptr, byteLen); + ptr += byteLen; + } + } + + NetException.Assert(ptr > 0); + return ptr; + } + + internal int GetEncodedSize() + { + int retval = NetConstants.UnfragmentedMessageHeaderSize; // regular headers + if (m_fragmentGroup != 0) + retval += NetFragmentationHelper.GetFragmentationHeaderSize(m_fragmentGroup, m_fragmentGroupTotalBits / 8, m_fragmentChunkByteSize, m_fragmentChunkNumber); + retval += this.LengthBytes; + return retval; + } + + /// + /// Encrypt this message using the provided algorithm; no more writing can be done before sending it or the message will be corrupt! + /// + public bool Encrypt(NetEncryption encryption) + { + return encryption.Encrypt(this); + } + + /// + /// Returns a string that represents this object + /// + public override string ToString() + { + if (m_isSent) + return "[NetOutgoingMessage " + m_messageType + " " + this.LengthBytes + " bytes]"; + + return "[NetOutgoingMessage " + this.LengthBytes + " bytes]"; + } + } +} diff --git a/Lidgren.Network/NetPeer.Discovery.cs b/Lidgren.Network/NetPeer.Discovery.cs new file mode 100644 index 0000000..c00c826 --- /dev/null +++ b/Lidgren.Network/NetPeer.Discovery.cs @@ -0,0 +1,60 @@ +using System; +using System.Net; + +namespace Lidgren.Network +{ + public partial class NetPeer + { + /// + /// Emit a discovery signal to all hosts on your subnet + /// + public void DiscoverLocalPeers(int serverPort) + { + NetOutgoingMessage om = CreateMessage(0); + om.m_messageType = NetMessageType.Discovery; + m_unsentUnconnectedMessages.Enqueue(new NetTuple(new IPEndPoint(IPAddress.Broadcast, serverPort), om)); + } + + /// + /// Emit a discovery signal to a single known host + /// + public bool DiscoverKnownPeer(string host, int serverPort) + { + IPAddress address = NetUtility.Resolve(host); + if (address == null) + return false; + DiscoverKnownPeer(new IPEndPoint(address, serverPort)); + return true; + } + + /// + /// Emit a discovery signal to a single known host + /// + public void DiscoverKnownPeer(IPEndPoint endPoint) + { + NetOutgoingMessage om = CreateMessage(0); + om.m_messageType = NetMessageType.Discovery; + m_unsentUnconnectedMessages.Enqueue(new NetTuple(endPoint, om)); + } + + /// + /// Send a discovery response message + /// + public void SendDiscoveryResponse(NetOutgoingMessage msg, IPEndPoint recipient) + { + if (recipient == null) + throw new ArgumentNullException("recipient"); + + if (msg == null) + msg = CreateMessage(0); + else if (msg.m_isSent) + throw new NetException("Message has already been sent!"); + + if (msg.LengthBytes >= m_configuration.MaximumTransmissionUnit) + throw new NetException("Cannot send discovery message larger than MTU (currently " + m_configuration.MaximumTransmissionUnit + " bytes)"); + + msg.m_messageType = NetMessageType.DiscoveryResponse; + m_unsentUnconnectedMessages.Enqueue(new NetTuple(recipient, msg)); + } + } +} diff --git a/Lidgren.Network/NetPeer.Fragmentation.cs b/Lidgren.Network/NetPeer.Fragmentation.cs new file mode 100644 index 0000000..87cc2b6 --- /dev/null +++ b/Lidgren.Network/NetPeer.Fragmentation.cs @@ -0,0 +1,167 @@ +using System; +using System.Threading; +using System.Collections.Generic; + +namespace Lidgren.Network +{ + internal class ReceivedFragmentGroup + { + //public float LastReceived; + public byte[] Data; + public NetBitVector ReceivedChunks; + } + + public partial class NetPeer + { + private int m_lastUsedFragmentGroup; + + private Dictionary> m_receivedFragmentGroups; + + // on user thread + private NetSendResult SendFragmentedMessage(NetOutgoingMessage msg, IList recipients, NetDeliveryMethod method, int sequenceChannel) + { + // Note: this group id is PER SENDING/NetPeer; ie. same id is sent to all recipients; + // this should be ok however; as long as recipients differentiate between same id but different sender + int group = Interlocked.Increment(ref m_lastUsedFragmentGroup); + if (group >= NetConstants.MaxFragmentationGroups) + { + // @TODO: not thread safe; but in practice probably not an issue + m_lastUsedFragmentGroup = 1; + group = 1; + } + msg.m_fragmentGroup = group; + + // do not send msg; but set fragmentgroup in case user tries to recycle it immediately + + // create fragmentation specifics + int totalBytes = msg.LengthBytes; + + // determine minimum mtu for all recipients + int mtu = GetMTU(recipients); + int bytesPerChunk = NetFragmentationHelper.GetBestChunkSize(group, totalBytes, mtu); + + int numChunks = totalBytes / bytesPerChunk; + if (numChunks * bytesPerChunk < totalBytes) + numChunks++; + + NetSendResult retval = NetSendResult.Sent; + + int bitsPerChunk = bytesPerChunk * 8; + int bitsLeft = msg.LengthBits; + for (int i = 0; i < numChunks; i++) + { + NetOutgoingMessage chunk = CreateMessage(0); + + chunk.m_bitLength = (bitsLeft > bitsPerChunk ? bitsPerChunk : bitsLeft); + chunk.m_data = msg.m_data; + chunk.m_fragmentGroup = group; + chunk.m_fragmentGroupTotalBits = totalBytes * 8; + chunk.m_fragmentChunkByteSize = bytesPerChunk; + chunk.m_fragmentChunkNumber = i; + + NetException.Assert(chunk.m_bitLength != 0); + NetException.Assert(chunk.GetEncodedSize() < mtu); + + Interlocked.Add(ref chunk.m_recyclingCount, recipients.Count); + + foreach (NetConnection recipient in recipients) + { + var res = recipient.EnqueueMessage(chunk, method, sequenceChannel); + if ((int)res > (int)retval) + retval = res; // return "worst" result + } + + bitsLeft -= bitsPerChunk; + } + + return retval; + } + + private void HandleReleasedFragment(NetIncomingMessage im) + { + VerifyNetworkThread(); + + // + // read fragmentation header and combine fragments + // + int group; + int totalBits; + int chunkByteSize; + int chunkNumber; + int ptr = NetFragmentationHelper.ReadHeader( + im.m_data, 0, + out group, + out totalBits, + out chunkByteSize, + out chunkNumber + ); + + NetException.Assert(im.LengthBytes > ptr); + + NetException.Assert(group > 0); + NetException.Assert(totalBits > 0); + NetException.Assert(chunkByteSize > 0); + + int totalBytes = NetUtility.BytesToHoldBits((int)totalBits); + int totalNumChunks = totalBytes / chunkByteSize; + if (totalNumChunks * chunkByteSize < totalBytes) + totalNumChunks++; + + NetException.Assert(chunkNumber < totalNumChunks); + + if (chunkNumber >= totalNumChunks) + { + LogWarning("Index out of bounds for chunk " + chunkNumber + " (total chunks " + totalNumChunks + ")"); + return; + } + + Dictionary groups; + if (!m_receivedFragmentGroups.TryGetValue(im.SenderConnection, out groups)) + { + groups = new Dictionary(); + m_receivedFragmentGroups[im.SenderConnection] = groups; + } + + ReceivedFragmentGroup info; + if (!groups.TryGetValue(group, out info)) + { + info = new ReceivedFragmentGroup(); + info.Data = new byte[totalBytes]; + info.ReceivedChunks = new NetBitVector(totalNumChunks); + groups[group] = info; + } + + info.ReceivedChunks[chunkNumber] = true; + //info.LastReceived = (float)NetTime.Now; + + // copy to data + int offset = (chunkNumber * chunkByteSize); + Buffer.BlockCopy(im.m_data, ptr, info.Data, offset, im.LengthBytes - ptr); + + int cnt = info.ReceivedChunks.Count(); + //LogVerbose("Found fragment #" + chunkNumber + " in group " + group + " offset " + offset + " of total bits " + totalBits + " (total chunks done " + cnt + ")"); + + LogVerbose("Received fragment " + chunkNumber + " of " + totalNumChunks + " (" + cnt + " chunks received)"); + + if (info.ReceivedChunks.Count() == totalNumChunks) + { + // Done! Transform this incoming message + im.m_data = info.Data; + im.m_bitLength = (int)totalBits; + im.m_isFragment = false; + + LogVerbose("Fragment group #" + group + " fully received in " + totalNumChunks + " chunks (" + totalBits + " bits)"); + groups.Remove(group); + + ReleaseMessage(im); + } + else + { + // data has been copied; recycle this incoming message + Recycle(im); + } + + return; + } + } +} diff --git a/Lidgren.Network/NetPeer.Internal.cs b/Lidgren.Network/NetPeer.Internal.cs new file mode 100644 index 0000000..9a74b80 --- /dev/null +++ b/Lidgren.Network/NetPeer.Internal.cs @@ -0,0 +1,762 @@ +#if !__ANDROID__ && !IOS && !UNITY_WEBPLAYER && !UNITY_ANDROID && !UNITY_IPHONE +#define IS_MAC_AVAILABLE +#endif + +using System; +using System.Net; +using System.Threading; +using System.Diagnostics; +using System.Security.Cryptography; +using System.Net.Sockets; +using System.Collections.Generic; + +namespace Lidgren.Network +{ + public partial class NetPeer + { + private NetPeerStatus m_status; + private Thread m_networkThread; + private Socket m_socket; + internal byte[] m_sendBuffer; + internal byte[] m_receiveBuffer; + internal NetIncomingMessage m_readHelperMessage; + private EndPoint m_senderRemote; + private object m_initializeLock = new object(); + private uint m_frameCounter; + private double m_lastHeartbeat; + private double m_lastSocketBind = float.MinValue; + private NetUPnP m_upnp; + + internal readonly NetPeerConfiguration m_configuration; + private readonly NetQueue m_releasedIncomingMessages; + internal readonly NetQueue> m_unsentUnconnectedMessages; + + internal Dictionary m_handshakes; + + internal readonly NetPeerStatistics m_statistics; + internal long m_uniqueIdentifier; + internal bool m_executeFlushSendQueue; + + private AutoResetEvent m_messageReceivedEvent; + private List> m_receiveCallbacks; + + /// + /// Gets the socket, if Start() has been called + /// + public Socket Socket { get { return m_socket; } } + + /// + /// Call this to register a callback for when a new message arrives + /// + public void RegisterReceivedCallback(SendOrPostCallback callback, SynchronizationContext syncContext = null) + { + if (syncContext == null) + syncContext = SynchronizationContext.Current; + if (syncContext == null) + throw new NetException("Need a SynchronizationContext to register callback on correct thread!"); + if (m_receiveCallbacks == null) + m_receiveCallbacks = new List>(); + m_receiveCallbacks.Add(new NetTuple(syncContext, callback)); + } + + /// + /// Call this to unregister a callback, but remember to do it in the same synchronization context! + /// + public void UnregisterReceivedCallback(SendOrPostCallback callback) + { + if (m_receiveCallbacks == null) + return; + + // remove all callbacks regardless of sync context + RestartRemoveCallbacks: + for (int i = 0; i < m_receiveCallbacks.Count; i++) + { + if (m_receiveCallbacks[i].Item2.Equals(callback)) + { + m_receiveCallbacks.RemoveAt(i); + goto RestartRemoveCallbacks; + } + } + if (m_receiveCallbacks.Count < 1) + m_receiveCallbacks = null; + } + + internal void ReleaseMessage(NetIncomingMessage msg) + { + NetException.Assert(msg.m_incomingMessageType != NetIncomingMessageType.Error); + + if (msg.m_isFragment) + { + HandleReleasedFragment(msg); + return; + } + + m_releasedIncomingMessages.Enqueue(msg); + + if (m_messageReceivedEvent != null) + m_messageReceivedEvent.Set(); + + if (m_receiveCallbacks != null) + { + foreach (var tuple in m_receiveCallbacks) + { + try + { + tuple.Item1.Post(tuple.Item2, this); + } + catch (Exception ex) + { + LogWarning("Receive callback exception:" + ex); + } + } + } + } + + private void BindSocket(bool reBind) + { + double now = NetTime.Now; + if (now - m_lastSocketBind < 1.0) + { + LogDebug("Suppressed socket rebind; last bound " + (now - m_lastSocketBind) + " seconds ago"); + return; // only allow rebind once every second + } + m_lastSocketBind = now; + + if (m_socket == null) + m_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); + + if (reBind) + m_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, (int)1); + + m_socket.ReceiveBufferSize = m_configuration.ReceiveBufferSize; + m_socket.SendBufferSize = m_configuration.SendBufferSize; + m_socket.Blocking = false; + + var ep = (EndPoint)new IPEndPoint(m_configuration.LocalAddress, reBind ? m_listenPort : m_configuration.Port); + m_socket.Bind(ep); + + try + { + const uint IOC_IN = 0x80000000; + const uint IOC_VENDOR = 0x18000000; + uint SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12; + m_socket.IOControl((int)SIO_UDP_CONNRESET, new byte[] { Convert.ToByte(false) }, null); + } + catch + { + // ignore; SIO_UDP_CONNRESET not supported on this platform + } + + IPEndPoint boundEp = m_socket.LocalEndPoint as IPEndPoint; + LogDebug("Socket bound to " + boundEp + ": " + m_socket.IsBound); + m_listenPort = boundEp.Port; + } + + private void InitializeNetwork() + { + lock (m_initializeLock) + { + m_configuration.Lock(); + + if (m_status == NetPeerStatus.Running) + return; + + if (m_configuration.m_enableUPnP) + m_upnp = new NetUPnP(this); + + InitializePools(); + + m_releasedIncomingMessages.Clear(); + m_unsentUnconnectedMessages.Clear(); + m_handshakes.Clear(); + + // bind to socket + BindSocket(false); + + m_receiveBuffer = new byte[m_configuration.ReceiveBufferSize]; + m_sendBuffer = new byte[m_configuration.SendBufferSize]; + m_readHelperMessage = new NetIncomingMessage(NetIncomingMessageType.Error); + m_readHelperMessage.m_data = m_receiveBuffer; + + byte[] macBytes = new byte[8]; + MWCRandom.Instance.NextBytes(macBytes); + +#if IS_MAC_AVAILABLE + try + { + System.Net.NetworkInformation.PhysicalAddress pa = NetUtility.GetMacAddress(); + if (pa != null) + { + macBytes = pa.GetAddressBytes(); + LogVerbose("Mac address is " + NetUtility.ToHexString(macBytes)); + } + else + { + LogWarning("Failed to get Mac address"); + } + } + catch (NotSupportedException) + { + // not supported; lets just keep the random bytes set above + } +#endif + IPEndPoint boundEp = m_socket.LocalEndPoint as IPEndPoint; + byte[] epBytes = BitConverter.GetBytes(boundEp.GetHashCode()); + byte[] combined = new byte[epBytes.Length + macBytes.Length]; + Array.Copy(epBytes, 0, combined, 0, epBytes.Length); + Array.Copy(macBytes, 0, combined, epBytes.Length, macBytes.Length); + m_uniqueIdentifier = BitConverter.ToInt64(NetUtility.CreateSHA1Hash(combined), 0); + + m_status = NetPeerStatus.Running; + } + } + + private void NetworkLoop() + { + VerifyNetworkThread(); + + LogDebug("Network thread started"); + + // + // Network loop + // + do + { + try + { + Heartbeat(); + } + catch (Exception ex) + { + LogWarning(ex.ToString()); + } + } while (m_status == NetPeerStatus.Running); + + // + // perform shutdown + // + ExecutePeerShutdown(); + } + + private void ExecutePeerShutdown() + { + VerifyNetworkThread(); + + LogDebug("Shutting down..."); + + // disconnect and make one final heartbeat + var list = new List(m_handshakes.Count + m_connections.Count); + lock (m_connections) + { + foreach (var conn in m_connections) + if (conn != null) + list.Add(conn); + + lock (m_handshakes) + { + foreach (var hs in m_handshakes.Values) + if (hs != null) + list.Add(hs); + + // shut down connections + foreach (NetConnection conn in list) + conn.Shutdown(m_shutdownReason); + } + } + + FlushDelayedPackets(); + + // one final heartbeat, will send stuff and do disconnect + Heartbeat(); + + Thread.Sleep(10); + + lock (m_initializeLock) + { + try + { + if (m_socket != null) + { + try + { + m_socket.Shutdown(SocketShutdown.Receive); + } + catch(Exception ex) + { + LogDebug("Socket.Shutdown exception: " + ex.ToString()); + } + + try + { + m_socket.Close(2); // 2 seconds timeout + } + catch (Exception ex) + { + LogDebug("Socket.Close exception: " + ex.ToString()); + } + } + } + finally + { + m_socket = null; + m_status = NetPeerStatus.NotRunning; + LogDebug("Shutdown complete"); + + // wake up any threads waiting for server shutdown + if (m_messageReceivedEvent != null) + m_messageReceivedEvent.Set(); + } + + m_lastSocketBind = float.MinValue; + m_receiveBuffer = null; + m_sendBuffer = null; + m_unsentUnconnectedMessages.Clear(); + m_connections.Clear(); + m_connectionLookup.Clear(); + m_handshakes.Clear(); + } + + return; + } + + private void Heartbeat() + { + VerifyNetworkThread(); + + double dnow = NetTime.Now; + float now = (float)dnow; + + double delta = dnow - m_lastHeartbeat; + + int maxCHBpS = 1250 - m_connections.Count; + if (maxCHBpS < 250) + maxCHBpS = 250; + if (delta > (1.0 / (double)maxCHBpS) || delta < 0.0) // max connection heartbeats/second max + { + m_frameCounter++; + m_lastHeartbeat = dnow; + + // do handshake heartbeats + if ((m_frameCounter % 3) == 0) + { + foreach (var kvp in m_handshakes) + { + NetConnection conn = kvp.Value as NetConnection; +#if DEBUG + // sanity check + if (kvp.Key != kvp.Key) + LogWarning("Sanity fail! Connection in handshake list under wrong key!"); +#endif + conn.UnconnectedHeartbeat(now); + if (conn.m_status == NetConnectionStatus.Connected || conn.m_status == NetConnectionStatus.Disconnected) + { +#if DEBUG + // sanity check + if (conn.m_status == NetConnectionStatus.Disconnected && m_handshakes.ContainsKey(conn.RemoteEndPoint)) + { + LogWarning("Sanity fail! Handshakes list contained disconnected connection!"); + m_handshakes.Remove(conn.RemoteEndPoint); + } +#endif + break; // collection has been modified + } + } + } + +#if DEBUG + SendDelayedPackets(); +#endif + + // update m_executeFlushSendQueue + if (m_configuration.m_autoFlushSendQueue) + m_executeFlushSendQueue = true; + + // do connection heartbeats + lock (m_connections) + { + foreach (NetConnection conn in m_connections) + { + conn.Heartbeat(now, m_frameCounter); + if (conn.m_status == NetConnectionStatus.Disconnected) + { + // + // remove connection + // + m_connections.Remove(conn); + m_connectionLookup.Remove(conn.RemoteEndPoint); + break; // can't continue iteration here + } + } + } + m_executeFlushSendQueue = false; + + // send unsent unconnected messages + NetTuple unsent; + while (m_unsentUnconnectedMessages.TryDequeue(out unsent)) + { + NetOutgoingMessage om = unsent.Item2; + + bool connReset; + int len = om.Encode(m_sendBuffer, 0, 0); + SendPacket(len, unsent.Item1, 1, out connReset); + + Interlocked.Decrement(ref om.m_recyclingCount); + if (om.m_recyclingCount <= 0) + Recycle(om); + } + } + + // + // read from socket + // + if (m_socket == null) + return; + + if (!m_socket.Poll(1000, SelectMode.SelectRead)) // wait up to 1 ms for data to arrive + return; + + //if (m_socket == null || m_socket.Available < 1) + // return; + + // update now + dnow = NetTime.Now; + now = (float)dnow; + + do + { + int bytesReceived = 0; + try + { + bytesReceived = m_socket.ReceiveFrom(m_receiveBuffer, 0, m_receiveBuffer.Length, SocketFlags.None, ref m_senderRemote); + } + catch (SocketException sx) + { + switch (sx.SocketErrorCode) + { + case SocketError.ConnectionReset: + // connection reset by peer, aka connection forcibly closed aka "ICMP port unreachable" + // we should shut down the connection; but m_senderRemote seemingly cannot be trusted, so which connection should we shut down?! + // So, what to do? + LogWarning("ConnectionReset"); + return; + + case SocketError.NotConnected: + // socket is unbound; try to rebind it (happens on mobile when process goes to sleep) + BindSocket(true); + return; + + default: + LogWarning("Socket exception: " + sx.ToString()); + return; + } + } + + if (bytesReceived < NetConstants.HeaderByteSize) + return; + + //LogVerbose("Received " + bytesReceived + " bytes"); + + IPEndPoint ipsender = (IPEndPoint)m_senderRemote; + + if (m_upnp != null && now < m_upnp.m_discoveryResponseDeadline && bytesReceived > 32) + { + // is this an UPnP response? + string resp = System.Text.Encoding.ASCII.GetString(m_receiveBuffer, 0, bytesReceived); + if (resp.Contains("upnp:rootdevice") || resp.Contains("UPnP/1.0")) + { + try + { + resp = resp.Substring(resp.ToLower().IndexOf("location:") + 9); + resp = resp.Substring(0, resp.IndexOf("\r")).Trim(); + m_upnp.ExtractServiceUrl(resp); + return; + } + catch (Exception ex) + { + LogDebug("Failed to parse UPnP response: " + ex.ToString()); + + // don't try to parse this packet further + return; + } + } + } + + NetConnection sender = null; + m_connectionLookup.TryGetValue(ipsender, out sender); + + // + // parse packet into messages + // + int numMessages = 0; + int numFragments = 0; + int ptr = 0; + while ((bytesReceived - ptr) >= NetConstants.HeaderByteSize) + { + // decode header + // 8 bits - NetMessageType + // 1 bit - Fragment? + // 15 bits - Sequence number + // 16 bits - Payload length in bits + + numMessages++; + + NetMessageType tp = (NetMessageType)m_receiveBuffer[ptr++]; + + byte low = m_receiveBuffer[ptr++]; + byte high = m_receiveBuffer[ptr++]; + + bool isFragment = ((low & 1) == 1); + ushort sequenceNumber = (ushort)((low >> 1) | (((int)high) << 7)); + + numFragments++; + + ushort payloadBitLength = (ushort)(m_receiveBuffer[ptr++] | (m_receiveBuffer[ptr++] << 8)); + int payloadByteLength = NetUtility.BytesToHoldBits(payloadBitLength); + + if (bytesReceived - ptr < payloadByteLength) + { + LogWarning("Malformed packet; stated payload length " + payloadByteLength + ", remaining bytes " + (bytesReceived - ptr)); + return; + } + + if (tp >= NetMessageType.Unused1 && tp <= NetMessageType.Unused29) + { + ThrowOrLog("Unexpected NetMessageType: " + tp); + return; + } + + try + { + if (tp >= NetMessageType.LibraryError) + { + if (sender != null) + sender.ReceivedLibraryMessage(tp, ptr, payloadByteLength); + else + ReceivedUnconnectedLibraryMessage(dnow, ipsender, tp, ptr, payloadByteLength); + } + else + { + if (sender == null && !m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.UnconnectedData)) + return; // dropping unconnected message since it's not enabled + + NetIncomingMessage msg = CreateIncomingMessage(NetIncomingMessageType.Data, payloadByteLength); + msg.m_isFragment = isFragment; + msg.m_receiveTime = dnow; + msg.m_sequenceNumber = sequenceNumber; + msg.m_receivedMessageType = tp; + msg.m_senderConnection = sender; + msg.m_senderEndPoint = ipsender; + msg.m_bitLength = payloadBitLength; + + Buffer.BlockCopy(m_receiveBuffer, ptr, msg.m_data, 0, payloadByteLength); + if (sender != null) + { + if (tp == NetMessageType.Unconnected) + { + // We're connected; but we can still send unconnected messages to this peer + msg.m_incomingMessageType = NetIncomingMessageType.UnconnectedData; + ReleaseMessage(msg); + } + else + { + // connected application (non-library) message + sender.ReceivedMessage(msg); + } + } + else + { + // at this point we know the message type is enabled + // unconnected application (non-library) message + msg.m_incomingMessageType = NetIncomingMessageType.UnconnectedData; + ReleaseMessage(msg); + } + } + } + catch (Exception ex) + { + LogError("Packet parsing error: " + ex.Message + " from " + ipsender); + } + ptr += payloadByteLength; + } + + m_statistics.PacketReceived(bytesReceived, numMessages, numFragments); + if (sender != null) + sender.m_statistics.PacketReceived(bytesReceived, numMessages, numFragments); + + } while (m_socket.Available > 0); + } + + /// + /// If NetPeerConfiguration.AutoFlushSendQueue() is false; you need to call this to send all messages queued using SendMessage() + /// + public void FlushSendQueue() + { + m_executeFlushSendQueue = true; + } + + internal void HandleIncomingDiscoveryRequest(double now, IPEndPoint senderEndPoint, int ptr, int payloadByteLength) + { + if (m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.DiscoveryRequest)) + { + NetIncomingMessage dm = CreateIncomingMessage(NetIncomingMessageType.DiscoveryRequest, payloadByteLength); + if (payloadByteLength > 0) + Buffer.BlockCopy(m_receiveBuffer, ptr, dm.m_data, 0, payloadByteLength); + dm.m_receiveTime = now; + dm.m_bitLength = payloadByteLength * 8; + dm.m_senderEndPoint = senderEndPoint; + ReleaseMessage(dm); + } + } + + internal void HandleIncomingDiscoveryResponse(double now, IPEndPoint senderEndPoint, int ptr, int payloadByteLength) + { + if (m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.DiscoveryResponse)) + { + NetIncomingMessage dr = CreateIncomingMessage(NetIncomingMessageType.DiscoveryResponse, payloadByteLength); + if (payloadByteLength > 0) + Buffer.BlockCopy(m_receiveBuffer, ptr, dr.m_data, 0, payloadByteLength); + dr.m_receiveTime = now; + dr.m_bitLength = payloadByteLength * 8; + dr.m_senderEndPoint = senderEndPoint; + ReleaseMessage(dr); + } + } + + private void ReceivedUnconnectedLibraryMessage(double now, IPEndPoint senderEndPoint, NetMessageType tp, int ptr, int payloadByteLength) + { + NetConnection shake; + if (m_handshakes.TryGetValue(senderEndPoint, out shake)) + { + shake.ReceivedHandshake(now, tp, ptr, payloadByteLength); + return; + } + + // + // Library message from a completely unknown sender; lets just accept Connect + // + switch (tp) + { + case NetMessageType.Discovery: + HandleIncomingDiscoveryRequest(now, senderEndPoint, ptr, payloadByteLength); + return; + case NetMessageType.DiscoveryResponse: + HandleIncomingDiscoveryResponse(now, senderEndPoint, ptr, payloadByteLength); + return; + case NetMessageType.NatIntroduction: + if (m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.NatIntroductionSuccess)) + HandleNatIntroduction(ptr); + return; + case NetMessageType.NatPunchMessage: + if (m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.NatIntroductionSuccess)) + HandleNatPunch(ptr, senderEndPoint); + return; + case NetMessageType.ConnectResponse: + + lock (m_handshakes) + { + foreach (var hs in m_handshakes) + { + if (hs.Key.Address.Equals(senderEndPoint.Address)) + { + if (hs.Value.m_connectionInitiator) + { + // + // We are currently trying to connection to XX.XX.XX.XX:Y + // ... but we just received a ConnectResponse from XX.XX.XX.XX:Z + // Lets just assume the router decided to use this port instead + // + var hsconn = hs.Value; + m_connectionLookup.Remove(hs.Key); + m_handshakes.Remove(hs.Key); + + LogDebug("Detected host port change; rerouting connection to " + senderEndPoint); + hsconn.MutateEndPoint(senderEndPoint); + + m_connectionLookup.Add(senderEndPoint, hsconn); + m_handshakes.Add(senderEndPoint, hsconn); + + hsconn.ReceivedHandshake(now, tp, ptr, payloadByteLength); + return; + } + } + } + } + + LogWarning("Received unhandled library message " + tp + " from " + senderEndPoint); + return; + case NetMessageType.Connect: + if (m_configuration.AcceptIncomingConnections == false) + { + LogWarning("Received Connect, but we're not accepting incoming connections!"); + return; + } + // handle connect + // It's someone wanting to shake hands with us! + + int reservedSlots = m_handshakes.Count + m_connections.Count; + if (reservedSlots >= m_configuration.m_maximumConnections) + { + // server full + NetOutgoingMessage full = CreateMessage("Server full"); + full.m_messageType = NetMessageType.Disconnect; + SendLibrary(full, senderEndPoint); + return; + } + + // Ok, start handshake! + NetConnection conn = new NetConnection(this, senderEndPoint); + conn.m_status = NetConnectionStatus.ReceivedInitiation; + m_handshakes.Add(senderEndPoint, conn); + conn.ReceivedHandshake(now, tp, ptr, payloadByteLength); + return; + + case NetMessageType.Disconnect: + // this is probably ok + LogVerbose("Received Disconnect from unconnected source: " + senderEndPoint); + return; + default: + LogWarning("Received unhandled library message " + tp + " from " + senderEndPoint); + return; + } + } + + internal void AcceptConnection(NetConnection conn) + { + // LogDebug("Accepted connection " + conn); + conn.InitExpandMTU(NetTime.Now); + + if (m_handshakes.Remove(conn.m_remoteEndPoint) == false) + LogWarning("AcceptConnection called but m_handshakes did not contain it!"); + + lock (m_connections) + { + if (m_connections.Contains(conn)) + { + LogWarning("AcceptConnection called but m_connection already contains it!"); + } + else + { + m_connections.Add(conn); + m_connectionLookup.Add(conn.m_remoteEndPoint, conn); + } + } + } + + [Conditional("DEBUG")] + internal void VerifyNetworkThread() + { + Thread ct = Thread.CurrentThread; + if (Thread.CurrentThread != m_networkThread) + throw new NetException("Executing on wrong thread! Should be library system thread (is " + ct.Name + " mId " + ct.ManagedThreadId + ")"); + } + + internal NetIncomingMessage SetupReadHelperMessage(int ptr, int payloadLength) + { + VerifyNetworkThread(); + + m_readHelperMessage.m_bitLength = (ptr + payloadLength) * 8; + m_readHelperMessage.m_readPosition = (ptr * 8); + return m_readHelperMessage; + } + } +} \ No newline at end of file diff --git a/Lidgren.Network/NetPeer.LatencySimulation.cs b/Lidgren.Network/NetPeer.LatencySimulation.cs new file mode 100644 index 0000000..1f2f7d5 --- /dev/null +++ b/Lidgren.Network/NetPeer.LatencySimulation.cs @@ -0,0 +1,308 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ +//#define USE_RELEASE_STATISTICS + +using System; +using System.Collections.Generic; +using System.Net; +using System.Net.Sockets; +using System.Diagnostics; + +namespace Lidgren.Network +{ + public partial class NetPeer + { + +#if DEBUG + private readonly List m_delayedPackets = new List(); + + private class DelayedPacket + { + public byte[] Data; + public double DelayedUntil; + public IPEndPoint Target; + } + + internal void SendPacket(int numBytes, IPEndPoint target, int numMessages, out bool connectionReset) + { + connectionReset = false; + + // simulate loss + float loss = m_configuration.m_loss; + if (loss > 0.0f) + { + if ((float)MWCRandom.Instance.NextDouble() < loss) + { + LogVerbose("Sending packet " + numBytes + " bytes - SIMULATED LOST!"); + return; // packet "lost" + } + } + + m_statistics.PacketSent(numBytes, numMessages); + + // simulate latency + float m = m_configuration.m_minimumOneWayLatency; + float r = m_configuration.m_randomOneWayLatency; + if (m == 0.0f && r == 0.0f) + { + // no latency simulation + // LogVerbose("Sending packet " + numBytes + " bytes"); + bool wasSent = ActuallySendPacket(m_sendBuffer, numBytes, target, out connectionReset); + // TODO: handle wasSent == false? + + if (m_configuration.m_duplicates > 0.0f && MWCRandom.Instance.NextDouble() < m_configuration.m_duplicates) + ActuallySendPacket(m_sendBuffer, numBytes, target, out connectionReset); // send it again! + + return; + } + + int num = 1; + if (m_configuration.m_duplicates > 0.0f && MWCRandom.Instance.NextSingle() < m_configuration.m_duplicates) + num++; + + float delay = 0; + for (int i = 0; i < num; i++) + { + delay = m_configuration.m_minimumOneWayLatency + (MWCRandom.Instance.NextSingle() * m_configuration.m_randomOneWayLatency); + + // Enqueue delayed packet + DelayedPacket p = new DelayedPacket(); + p.Target = target; + p.Data = new byte[numBytes]; + Buffer.BlockCopy(m_sendBuffer, 0, p.Data, 0, numBytes); + p.DelayedUntil = NetTime.Now + delay; + + m_delayedPackets.Add(p); + } + + // LogVerbose("Sending packet " + numBytes + " bytes - delayed " + NetTime.ToReadable(delay)); + } + + private void SendDelayedPackets() + { + if (m_delayedPackets.Count <= 0) + return; + + double now = NetTime.Now; + + bool connectionReset; + + RestartDelaySending: + foreach (DelayedPacket p in m_delayedPackets) + { + if (now > p.DelayedUntil) + { + ActuallySendPacket(p.Data, p.Data.Length, p.Target, out connectionReset); + m_delayedPackets.Remove(p); + goto RestartDelaySending; + } + } + } + + private void FlushDelayedPackets() + { + try + { + bool connectionReset; + foreach (DelayedPacket p in m_delayedPackets) + ActuallySendPacket(p.Data, p.Data.Length, p.Target, out connectionReset); + m_delayedPackets.Clear(); + } + catch { } + } + + internal bool ActuallySendPacket(byte[] data, int numBytes, IPEndPoint target, out bool connectionReset) + { + connectionReset = false; + try + { + // TODO: refactor this check outta here + if (target.Address == IPAddress.Broadcast) + { + // Some networks do not allow + // a global broadcast so we use the BroadcastAddress from the configuration + // this can be resolved to a local broadcast addresss e.g 192.168.x.255 + target.Address = m_configuration.BroadcastAddress; + m_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true); + } + + int bytesSent = m_socket.SendTo(data, 0, numBytes, SocketFlags.None, target); + if (numBytes != bytesSent) + LogWarning("Failed to send the full " + numBytes + "; only " + bytesSent + " bytes sent in packet!"); + + // LogDebug("Sent " + numBytes + " bytes"); + } + catch (SocketException sx) + { + if (sx.SocketErrorCode == SocketError.WouldBlock) + { + // send buffer full? + LogWarning("Socket threw exception; would block - send buffer full? Increase in NetPeerConfiguration"); + return false; + } + if (sx.SocketErrorCode == SocketError.ConnectionReset) + { + // connection reset by peer, aka connection forcibly closed aka "ICMP port unreachable" + connectionReset = true; + return false; + } + LogError("Failed to send packet: " + sx); + } + catch (Exception ex) + { + LogError("Failed to send packet: " + ex); + } + finally + { + if (target.Address == IPAddress.Broadcast) + m_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, false); + } + return true; + } + + internal bool SendMTUPacket(int numBytes, IPEndPoint target) + { + try + { + m_socket.DontFragment = true; + int bytesSent = m_socket.SendTo(m_sendBuffer, 0, numBytes, SocketFlags.None, target); + if (numBytes != bytesSent) + LogWarning("Failed to send the full " + numBytes + "; only " + bytesSent + " bytes sent in packet!"); + + m_statistics.PacketSent(numBytes, 1); + } + catch (SocketException sx) + { + if (sx.SocketErrorCode == SocketError.MessageSize) + return false; + if (sx.SocketErrorCode == SocketError.WouldBlock) + { + // send buffer full? + LogWarning("Socket threw exception; would block - send buffer full? Increase in NetPeerConfiguration"); + return true; + } + if (sx.SocketErrorCode == SocketError.ConnectionReset) + return true; + LogError("Failed to send packet: (" + sx.SocketErrorCode + ") " + sx); + } + catch (Exception ex) + { + LogError("Failed to send packet: " + ex); + } + finally + { + m_socket.DontFragment = false; + } + return true; + } +#else + internal bool SendMTUPacket(int numBytes, IPEndPoint target) + { + try + { + m_socket.DontFragment = true; + int bytesSent = m_socket.SendTo(m_sendBuffer, 0, numBytes, SocketFlags.None, target); + if (numBytes != bytesSent) + LogWarning("Failed to send the full " + numBytes + "; only " + bytesSent + " bytes sent in packet!"); + } + catch (SocketException sx) + { + if (sx.SocketErrorCode == SocketError.MessageSize) + return false; + if (sx.SocketErrorCode == SocketError.WouldBlock) + { + // send buffer full? + LogWarning("Socket threw exception; would block - send buffer full? Increase in NetPeerConfiguration"); + return true; + } + if (sx.SocketErrorCode == SocketError.ConnectionReset) + return true; + LogError("Failed to send packet: (" + sx.SocketErrorCode + ") " + sx); + } + catch (Exception ex) + { + LogError("Failed to send packet: " + ex); + } + finally + { + m_socket.DontFragment = false; + } + return true; + } + + // + // Release - just send the packet straight away + // + internal void SendPacket(int numBytes, IPEndPoint target, int numMessages, out bool connectionReset) + { +#if USE_RELEASE_STATISTICS + m_statistics.PacketSent(numBytes, numMessages); +#endif + connectionReset = false; + try + { + // TODO: refactor this check outta here + if (target.Address == IPAddress.Broadcast) + m_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true); + + int bytesSent = m_socket.SendTo(m_sendBuffer, 0, numBytes, SocketFlags.None, target); + if (numBytes != bytesSent) + LogWarning("Failed to send the full " + numBytes + "; only " + bytesSent + " bytes sent in packet!"); + } + catch (SocketException sx) + { + if (sx.SocketErrorCode == SocketError.WouldBlock) + { + // send buffer full? + LogWarning("Socket threw exception; would block - send buffer full? Increase in NetPeerConfiguration"); + return; + } + if (sx.SocketErrorCode == SocketError.ConnectionReset) + { + // connection reset by peer, aka connection forcibly closed aka "ICMP port unreachable" + connectionReset = true; + return; + } + LogError("Failed to send packet: " + sx); + } + catch (Exception ex) + { + LogError("Failed to send packet: " + ex); + } + finally + { + if (target.Address == IPAddress.Broadcast) + m_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, false); + } + return; + } + + private void FlushDelayedPackets() + { + } + + private void SendCallBack(IAsyncResult res) + { + NetException.Assert(res.IsCompleted == true); + m_socket.EndSendTo(res); + } +#endif + } +} \ No newline at end of file diff --git a/Lidgren.Network/NetPeer.Logging.cs b/Lidgren.Network/NetPeer.Logging.cs new file mode 100644 index 0000000..006cdf5 --- /dev/null +++ b/Lidgren.Network/NetPeer.Logging.cs @@ -0,0 +1,63 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +using System.Diagnostics; + +namespace Lidgren.Network +{ + public partial class NetPeer + { + [Conditional("DEBUG")] + internal void LogVerbose(string message) + { +#if __ANDROID__ + Android.Util.Log.WriteLine(Android.Util.LogPriority.Verbose, "", message); +#endif + if (m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.VerboseDebugMessage)) + ReleaseMessage(CreateIncomingMessage(NetIncomingMessageType.VerboseDebugMessage, message)); + } + + [Conditional("DEBUG")] + internal void LogDebug(string message) + { +#if __ANDROID__ + Android.Util.Log.WriteLine(Android.Util.LogPriority.Debug, "", message); +#endif + if (m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.DebugMessage)) + ReleaseMessage(CreateIncomingMessage(NetIncomingMessageType.DebugMessage, message)); + } + + internal void LogWarning(string message) + { +#if __ANDROID__ + Android.Util.Log.WriteLine(Android.Util.LogPriority.Warn, "", message); +#endif + if (m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.WarningMessage)) + ReleaseMessage(CreateIncomingMessage(NetIncomingMessageType.WarningMessage, message)); + } + + internal void LogError(string message) + { +#if __ANDROID__ + Android.Util.Log.WriteLine(Android.Util.LogPriority.Error, "", message); +#endif + if (m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.ErrorMessage)) + ReleaseMessage(CreateIncomingMessage(NetIncomingMessageType.ErrorMessage, message)); + } + } +} diff --git a/Lidgren.Network/NetPeer.MessagePools.cs b/Lidgren.Network/NetPeer.MessagePools.cs new file mode 100644 index 0000000..e2be9f8 --- /dev/null +++ b/Lidgren.Network/NetPeer.MessagePools.cs @@ -0,0 +1,223 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Lidgren.Network +{ + public partial class NetPeer + { + private List m_storagePool; // sorted smallest to largest + private NetQueue m_outgoingMessagesPool; + private NetQueue m_incomingMessagesPool; + + internal int m_storagePoolBytes; + + private void InitializePools() + { + if (m_configuration.UseMessageRecycling) + { + m_storagePool = new List(16); + m_outgoingMessagesPool = new NetQueue(4); + m_incomingMessagesPool = new NetQueue(4); + } + else + { + m_storagePool = null; + m_outgoingMessagesPool = null; + m_incomingMessagesPool = null; + } + } + + internal byte[] GetStorage(int minimumCapacityInBytes) + { + if (m_storagePool == null) + return new byte[minimumCapacityInBytes]; + + lock (m_storagePool) + { + for (int i = 0; i < m_storagePool.Count; i++) + { + byte[] retval = m_storagePool[i]; + if (retval != null && retval.Length >= minimumCapacityInBytes) + { + m_storagePool[i] = null; + m_storagePoolBytes -= retval.Length; + return retval; + } + } + } + m_statistics.m_bytesAllocated += minimumCapacityInBytes; + return new byte[minimumCapacityInBytes]; + } + + internal void Recycle(byte[] storage) + { + if (m_storagePool == null || storage == null) + return; + + lock (m_storagePool) + { + m_storagePoolBytes += storage.Length; + int cnt = m_storagePool.Count; + for (int i = 0; i < cnt; i++) + { + if (m_storagePool[i] == null) + { + m_storagePool[i] = storage; + return; + } + } + m_storagePool.Add(storage); + } + } + + /// + /// Creates a new message for sending + /// + public NetOutgoingMessage CreateMessage() + { + return CreateMessage(m_configuration.m_defaultOutgoingMessageCapacity); + } + + /// + /// Creates a new message for sending and writes the provided string to it + /// + public NetOutgoingMessage CreateMessage(string content) + { + var om = CreateMessage(2 + content.Length); // fair guess + om.Write(content); + return om; + } + + /// + /// Creates a new message for sending + /// + /// initial capacity in bytes + public NetOutgoingMessage CreateMessage(int initialCapacity) + { + NetOutgoingMessage retval; + if (m_outgoingMessagesPool == null || !m_outgoingMessagesPool.TryDequeue(out retval)) + retval = new NetOutgoingMessage(); + + if (initialCapacity > 0) + retval.m_data = GetStorage(initialCapacity); + + return retval; + } + + internal NetIncomingMessage CreateIncomingMessage(NetIncomingMessageType tp, byte[] useStorageData) + { + NetIncomingMessage retval; + if (m_incomingMessagesPool == null || !m_incomingMessagesPool.TryDequeue(out retval)) + retval = new NetIncomingMessage(tp); + else + retval.m_incomingMessageType = tp; + retval.m_data = useStorageData; + return retval; + } + + internal NetIncomingMessage CreateIncomingMessage(NetIncomingMessageType tp, int minimumByteSize) + { + NetIncomingMessage retval; + if (m_incomingMessagesPool == null || !m_incomingMessagesPool.TryDequeue(out retval)) + retval = new NetIncomingMessage(tp); + else + retval.m_incomingMessageType = tp; + retval.m_data = GetStorage(minimumByteSize); + return retval; + } + + /// + /// Recycles a NetIncomingMessage instance for reuse; taking pressure off the garbage collector + /// + public void Recycle(NetIncomingMessage msg) + { + if (m_incomingMessagesPool == null) + return; + + NetException.Assert(m_incomingMessagesPool.Contains(msg) == false, "Recyling already recycled message! Thread race?"); + + byte[] storage = msg.m_data; + msg.m_data = null; + Recycle(storage); + msg.Reset(); + m_incomingMessagesPool.Enqueue(msg); + } + + /// + /// Recycles a list of NetIncomingMessage instances for reuse; taking pressure off the garbage collector + /// + public void Recycle(IEnumerable toRecycle) + { + if (m_incomingMessagesPool == null) + return; + + // first recycle the storage of each message + if (m_storagePool != null) + { + lock (m_storagePool) + { + foreach (var msg in toRecycle) + { + var storage = msg.m_data; + msg.m_data = null; + m_storagePoolBytes += storage.Length; + int cnt = m_storagePool.Count; + for (int i = 0; i < cnt; i++) + { + if (m_storagePool[i] == null) + { + m_storagePool[i] = storage; + return; + } + } + msg.Reset(); + m_storagePool.Add(storage); + } + } + } + + // then recycle the message objects + m_incomingMessagesPool.Enqueue(toRecycle); + } + + internal void Recycle(NetOutgoingMessage msg) + { + if (m_outgoingMessagesPool == null) + return; + + NetException.Assert(m_outgoingMessagesPool.Contains(msg) == false, "Recyling already recycled message! Thread race?"); + + byte[] storage = msg.m_data; + msg.m_data = null; + + // message fragments cannot be recycled + // TODO: find a way to recycle large message after all fragments has been acknowledged; or? possibly better just to garbage collect them + if (msg.m_fragmentGroup == 0) + Recycle(storage); + + msg.Reset(); + m_outgoingMessagesPool.Enqueue(msg); + } + + /// + /// Creates an incoming message with the required capacity for releasing to the application + /// + internal NetIncomingMessage CreateIncomingMessage(NetIncomingMessageType tp, string text) + { + NetIncomingMessage retval; + if (string.IsNullOrEmpty(text)) + { + retval = CreateIncomingMessage(tp, 1); + retval.Write(string.Empty); + return retval; + } + + int numBytes = System.Text.Encoding.UTF8.GetByteCount(text); + retval = CreateIncomingMessage(tp, numBytes + (numBytes > 127 ? 2 : 1)); + retval.Write(text); + + return retval; + } + } +} diff --git a/Lidgren.Network/NetPeer.Send.cs b/Lidgren.Network/NetPeer.Send.cs new file mode 100644 index 0000000..d693240 --- /dev/null +++ b/Lidgren.Network/NetPeer.Send.cs @@ -0,0 +1,237 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Net; + +namespace Lidgren.Network +{ + public partial class NetPeer + { + /// + /// Send a message to a specific connection + /// + /// The message to send + /// The recipient connection + /// How to deliver the message + public NetSendResult SendMessage(NetOutgoingMessage msg, NetConnection recipient, NetDeliveryMethod method) + { + return SendMessage(msg, recipient, method, 0); + } + + /// + /// Send a message to a specific connection + /// + /// The message to send + /// The recipient connection + /// How to deliver the message + /// Sequence channel within the delivery method + public NetSendResult SendMessage(NetOutgoingMessage msg, NetConnection recipient, NetDeliveryMethod method, int sequenceChannel) + { + if (msg == null) + throw new ArgumentNullException("msg"); + if (recipient == null) + throw new ArgumentNullException("recipient"); + if (sequenceChannel >= NetConstants.NetChannelsPerDeliveryMethod) + throw new ArgumentOutOfRangeException("sequenceChannel"); + + NetException.Assert( + ((method != NetDeliveryMethod.Unreliable && method != NetDeliveryMethod.ReliableUnordered) || + ((method == NetDeliveryMethod.Unreliable || method == NetDeliveryMethod.ReliableUnordered) && sequenceChannel == 0)), + "Delivery method " + method + " cannot use sequence channels other than 0!" + ); + + NetException.Assert(method != NetDeliveryMethod.Unknown, "Bad delivery method!"); + + if (msg.m_isSent) + throw new NetException("This message has already been sent! Use NetPeer.SendMessage() to send to multiple recipients efficiently"); + msg.m_isSent = true; + + bool suppressFragmentation = (method == NetDeliveryMethod.Unreliable || method == NetDeliveryMethod.UnreliableSequenced) && m_configuration.UnreliableSizeBehaviour != NetUnreliableSizeBehaviour.NormalFragmentation; + + int len = NetConstants.UnfragmentedMessageHeaderSize + msg.LengthBytes; // headers + length, faster than calling msg.GetEncodedSize + if (len <= recipient.m_currentMTU || suppressFragmentation) + { + Interlocked.Increment(ref msg.m_recyclingCount); + return recipient.EnqueueMessage(msg, method, sequenceChannel); + } + else + { + // message must be fragmented! + if (recipient.m_status != NetConnectionStatus.Connected) + return NetSendResult.FailedNotConnected; + return SendFragmentedMessage(msg, new NetConnection[] { recipient }, method, sequenceChannel); + } + } + + internal static int GetMTU(IList recipients) + { + int count = recipients.Count; + + int mtu = int.MaxValue; + if (count < 1) + { +#if DEBUG + throw new NetException("GetMTU called with no recipients"); +#else + // we don't have access to the particular peer, so just use default MTU + return NetPeerConfiguration.kDefaultMTU; +#endif + } + + for(int i=0;i + /// Send a message to a list of connections + /// + /// The message to send + /// The list of recipients to send to + /// How to deliver the message + /// Sequence channel within the delivery method + public void SendMessage(NetOutgoingMessage msg, List recipients, NetDeliveryMethod method, int sequenceChannel) + { + if (msg == null) + throw new ArgumentNullException("msg"); + if (recipients == null) + throw new ArgumentNullException("recipients"); + if (recipients.Count < 1) + throw new NetException("recipients must contain at least one item"); + if (method == NetDeliveryMethod.Unreliable || method == NetDeliveryMethod.ReliableUnordered) + NetException.Assert(sequenceChannel == 0, "Delivery method " + method + " cannot use sequence channels other than 0!"); + if (msg.m_isSent) + throw new NetException("This message has already been sent! Use NetPeer.SendMessage() to send to multiple recipients efficiently"); + + int mtu = GetMTU(recipients); + + msg.m_isSent = true; + + int len = msg.GetEncodedSize(); + if (len <= mtu) + { + Interlocked.Add(ref msg.m_recyclingCount, recipients.Count); + foreach (NetConnection conn in recipients) + { + if (conn == null) + { + Interlocked.Decrement(ref msg.m_recyclingCount); + continue; + } + NetSendResult res = conn.EnqueueMessage(msg, method, sequenceChannel); + if (res != NetSendResult.Queued && res != NetSendResult.Sent) + Interlocked.Decrement(ref msg.m_recyclingCount); + } + } + else + { + // message must be fragmented! + SendFragmentedMessage(msg, recipients, method, sequenceChannel); + } + + return; + } + + /// + /// Send a message to an unconnected host + /// + public void SendUnconnectedMessage(NetOutgoingMessage msg, string host, int port) + { + if (msg == null) + throw new ArgumentNullException("msg"); + if (host == null) + throw new ArgumentNullException("host"); + if (msg.m_isSent) + throw new NetException("This message has already been sent! Use NetPeer.SendMessage() to send to multiple recipients efficiently"); + if (msg.LengthBytes > m_configuration.MaximumTransmissionUnit) + throw new NetException("Unconnected messages too long! Must be shorter than NetConfiguration.MaximumTransmissionUnit (currently " + m_configuration.MaximumTransmissionUnit + ")"); + + IPAddress adr = NetUtility.Resolve(host); + if (adr == null) + throw new NetException("Failed to resolve " + host); + + msg.m_messageType = NetMessageType.Unconnected; + msg.m_isSent = true; + + Interlocked.Increment(ref msg.m_recyclingCount); + m_unsentUnconnectedMessages.Enqueue(new NetTuple(new IPEndPoint(adr, port), msg)); + } + + /// + /// Send a message to an unconnected host + /// + public void SendUnconnectedMessage(NetOutgoingMessage msg, IPEndPoint recipient) + { + if (msg == null) + throw new ArgumentNullException("msg"); + if (recipient == null) + throw new ArgumentNullException("recipient"); + if (msg.m_isSent) + throw new NetException("This message has already been sent! Use NetPeer.SendMessage() to send to multiple recipients efficiently"); + if (msg.LengthBytes > m_configuration.MaximumTransmissionUnit) + throw new NetException("Unconnected messages too long! Must be shorter than NetConfiguration.MaximumTransmissionUnit (currently " + m_configuration.MaximumTransmissionUnit + ")"); + + msg.m_messageType = NetMessageType.Unconnected; + msg.m_isSent = true; + + Interlocked.Increment(ref msg.m_recyclingCount); + m_unsentUnconnectedMessages.Enqueue(new NetTuple(recipient, msg)); + } + + /// + /// Send a message to an unconnected host + /// + public void SendUnconnectedMessage(NetOutgoingMessage msg, IList recipients) + { + if (msg == null) + throw new ArgumentNullException("msg"); + if (recipients == null) + throw new ArgumentNullException("recipients"); + if (recipients.Count < 1) + throw new NetException("recipients must contain at least one item"); + if (msg.m_isSent) + throw new NetException("This message has already been sent! Use NetPeer.SendMessage() to send to multiple recipients efficiently"); + if (msg.LengthBytes > m_configuration.MaximumTransmissionUnit) + throw new NetException("Unconnected messages too long! Must be shorter than NetConfiguration.MaximumTransmissionUnit (currently " + m_configuration.MaximumTransmissionUnit + ")"); + + msg.m_messageType = NetMessageType.Unconnected; + msg.m_isSent = true; + + Interlocked.Add(ref msg.m_recyclingCount, recipients.Count); + foreach(IPEndPoint ep in recipients) + m_unsentUnconnectedMessages.Enqueue(new NetTuple(ep, msg)); + } + + /// + /// Send a message to this exact same netpeer (loopback) + /// + public void SendUnconnectedToSelf(NetOutgoingMessage msg) + { + if (msg == null) + throw new ArgumentNullException("msg"); + if (msg.m_isSent) + throw new NetException("This message has already been sent! Use NetPeer.SendMessage() to send to multiple recipients efficiently"); + + msg.m_messageType = NetMessageType.Unconnected; + msg.m_isSent = true; + + if (m_configuration.IsMessageTypeEnabled(NetIncomingMessageType.UnconnectedData) == false) + return; // dropping unconnected message since it's not enabled for receiving + + NetIncomingMessage om = CreateIncomingMessage(NetIncomingMessageType.UnconnectedData, msg.LengthBytes); + om.Write(msg); + om.m_isFragment = false; + om.m_receiveTime = NetTime.Now; + om.m_senderConnection = null; + om.m_senderEndPoint = m_socket.LocalEndPoint as IPEndPoint; + NetException.Assert(om.m_bitLength == msg.LengthBits); + + ReleaseMessage(om); + } + } +} diff --git a/Lidgren.Network/NetPeer.cs b/Lidgren.Network/NetPeer.cs new file mode 100644 index 0000000..b70bd1d --- /dev/null +++ b/Lidgren.Network/NetPeer.cs @@ -0,0 +1,357 @@ +using System; +using System.Threading; +using System.Collections.Generic; +using System.Net; + +namespace Lidgren.Network +{ + /// + /// Represents a local peer capable of holding zero, one or more connections to remote peers + /// + public partial class NetPeer + { + private static int s_initializedPeersCount; + + private int m_listenPort; + private object m_tag; + private object m_messageReceivedEventCreationLock = new object(); + + internal readonly List m_connections; + private readonly Dictionary m_connectionLookup; + + private string m_shutdownReason; + + /// + /// Gets the NetPeerStatus of the NetPeer + /// + public NetPeerStatus Status { get { return m_status; } } + + /// + /// Signalling event which can be waited on to determine when a message is queued for reading. + /// Note that there is no guarantee that after the event is signaled the blocked thread will + /// find the message in the queue. Other user created threads could be preempted and dequeue + /// the message before the waiting thread wakes up. + /// + public AutoResetEvent MessageReceivedEvent + { + get + { + if (m_messageReceivedEvent == null) + { + lock (m_messageReceivedEventCreationLock) // make sure we don't create more than one event object + { + if (m_messageReceivedEvent == null) + m_messageReceivedEvent = new AutoResetEvent(false); + } + } + return m_messageReceivedEvent; + } + } + + /// + /// Gets a unique identifier for this NetPeer based on Mac address and ip/port. Note! Not available until Start() has been called! + /// + public long UniqueIdentifier { get { return m_uniqueIdentifier; } } + + /// + /// Gets the port number this NetPeer is listening and sending on, if Start() has been called + /// + public int Port { get { return m_listenPort; } } + + /// + /// Returns an UPnP object if enabled in the NetPeerConfiguration + /// + public NetUPnP UPnP { get { return m_upnp; } } + + /// + /// Gets or sets the application defined object containing data about the peer + /// + public object Tag + { + get { return m_tag; } + set { m_tag = value; } + } + + /// + /// Gets a copy of the list of connections + /// + public List Connections + { + get + { + lock (m_connections) + return new List(m_connections); + } + } + + /// + /// Gets the number of active connections + /// + public int ConnectionsCount + { + get { return m_connections.Count; } + } + + /// + /// Statistics on this NetPeer since it was initialized + /// + public NetPeerStatistics Statistics + { + get { return m_statistics; } + } + + /// + /// Gets the configuration used to instanciate this NetPeer + /// + public NetPeerConfiguration Configuration { get { return m_configuration; } } + + /// + /// NetPeer constructor + /// + public NetPeer(NetPeerConfiguration config) + { + m_configuration = config; + m_statistics = new NetPeerStatistics(this); + m_releasedIncomingMessages = new NetQueue(4); + m_unsentUnconnectedMessages = new NetQueue>(2); + m_connections = new List(); + m_connectionLookup = new Dictionary(); + m_handshakes = new Dictionary(); + m_senderRemote = (EndPoint)new IPEndPoint(IPAddress.Any, 0); + m_status = NetPeerStatus.NotRunning; + m_receivedFragmentGroups = new Dictionary>(); + } + + /// + /// Binds to socket and spawns the networking thread + /// + public void Start() + { + if (m_status != NetPeerStatus.NotRunning) + { + // already running! Just ignore... + LogWarning("Start() called on already running NetPeer - ignoring."); + return; + } + + m_status = NetPeerStatus.Starting; + + // fix network thread name + if (m_configuration.NetworkThreadName == "Lidgren network thread") + { + int pc = Interlocked.Increment(ref s_initializedPeersCount); + m_configuration.NetworkThreadName = "Lidgren network thread " + pc.ToString(); + } + + InitializeNetwork(); + + // start network thread + m_networkThread = new Thread(new ThreadStart(NetworkLoop)); + m_networkThread.Name = m_configuration.NetworkThreadName; + m_networkThread.IsBackground = true; + m_networkThread.Start(); + + // send upnp discovery + if (m_upnp != null) + m_upnp.Discover(this); + + // allow some time for network thread to start up in case they call Connect() or UPnP calls immediately + Thread.Sleep(50); + } + + /// + /// Get the connection, if any, for a certain remote endpoint + /// + public NetConnection GetConnection(IPEndPoint ep) + { + NetConnection retval; + + // this should not pose a threading problem, m_connectionLookup is never added to concurrently + // and TryGetValue will not throw an exception on fail, only yield null, which is acceptable + m_connectionLookup.TryGetValue(ep, out retval); + + return retval; + } + + /// + /// Read a pending message from any connection, blocking up to maxMillis if needed + /// + public NetIncomingMessage WaitMessage(int maxMillis) + { + var msg = ReadMessage(); + if (msg != null) + return msg; // no need to wait; we already have a message to deliver + var msgEvt = MessageReceivedEvent; + msgEvt.WaitOne(maxMillis); + return ReadMessage(); + } + + /// + /// Read a pending message from any connection, if any + /// + public NetIncomingMessage ReadMessage() + { + NetIncomingMessage retval; + if (m_releasedIncomingMessages.TryDequeue(out retval)) + { + if (retval.MessageType == NetIncomingMessageType.StatusChanged) + { + NetConnectionStatus status = (NetConnectionStatus)retval.PeekByte(); + retval.SenderConnection.m_visibleStatus = status; + } + } + return retval; + } + + /// + /// Read a pending message from any connection, if any + /// + public int ReadMessages(IList addTo) + { + int added = m_releasedIncomingMessages.TryDrain(addTo); + if (added > 0) + { + for (int i = 0; i < added; i++) + { + var index = addTo.Count - added + i; + var nim = addTo[index]; + if (nim.MessageType == NetIncomingMessageType.StatusChanged) + { + NetConnectionStatus status = (NetConnectionStatus)nim.PeekByte(); + nim.SenderConnection.m_visibleStatus = status; + } + } + } + return added; + } + + // send message immediately + internal void SendLibrary(NetOutgoingMessage msg, IPEndPoint recipient) + { + VerifyNetworkThread(); + NetException.Assert(msg.m_isSent == false); + + bool connReset; + int len = msg.Encode(m_sendBuffer, 0, 0); + SendPacket(len, recipient, 1, out connReset); + } + + /// + /// Create a connection to a remote endpoint + /// + public NetConnection Connect(string host, int port) + { + return Connect(new IPEndPoint(NetUtility.Resolve(host), port), null); + } + + /// + /// Create a connection to a remote endpoint + /// + public NetConnection Connect(string host, int port, NetOutgoingMessage hailMessage) + { + return Connect(new IPEndPoint(NetUtility.Resolve(host), port), hailMessage); + } + + /// + /// Create a connection to a remote endpoint + /// + public NetConnection Connect(IPEndPoint remoteEndPoint) + { + return Connect(remoteEndPoint, null); + } + + /// + /// Create a connection to a remote endpoint + /// + public virtual NetConnection Connect(IPEndPoint remoteEndPoint, NetOutgoingMessage hailMessage) + { + if (remoteEndPoint == null) + throw new ArgumentNullException("remoteEndPoint"); + + lock (m_connections) + { + if (m_status == NetPeerStatus.NotRunning) + throw new NetException("Must call Start() first"); + + if (m_connectionLookup.ContainsKey(remoteEndPoint)) + throw new NetException("Already connected to that endpoint!"); + + NetConnection hs; + if (m_handshakes.TryGetValue(remoteEndPoint, out hs)) + { + // already trying to connect to that endpoint; make another try + switch (hs.m_status) + { + case NetConnectionStatus.InitiatedConnect: + // send another connect + hs.m_connectRequested = true; + break; + case NetConnectionStatus.RespondedConnect: + // send another response + hs.SendConnectResponse((float)NetTime.Now, false); + break; + default: + // weird + LogWarning("Weird situation; Connect() already in progress to remote endpoint; but hs status is " + hs.m_status); + break; + } + return hs; + } + + NetConnection conn = new NetConnection(this, remoteEndPoint); + conn.m_status = NetConnectionStatus.InitiatedConnect; + conn.m_localHailMessage = hailMessage; + + // handle on network thread + conn.m_connectRequested = true; + conn.m_connectionInitiator = true; + + m_handshakes.Add(remoteEndPoint, conn); + + return conn; + } + } + + /// + /// Send raw bytes; only used for debugging + /// +#if DEBUG + public void RawSend(byte[] arr, int offset, int length, IPEndPoint destination) +#else + public void RawSend(byte[] arr, int offset, int length, IPEndPoint destination) +#endif + { + // wrong thread - this miiiight crash with network thread... but what's a boy to do. + Array.Copy(arr, offset, m_sendBuffer, 0, length); + bool unused; + SendPacket(length, destination, 1, out unused); + } + + /// + /// In DEBUG, throws an exception, in RELEASE logs an error message + /// + /// + internal void ThrowOrLog(string message) + { +#if DEBUG + throw new NetException(message); +#else + LogError(message); +#endif + } + + /// + /// Disconnects all active connections and closes the socket + /// + public void Shutdown(string bye) + { + // called on user thread + if (m_socket == null) + return; // already shut down + + LogDebug("Shutdown requested"); + m_shutdownReason = bye; + m_status = NetPeerStatus.ShutdownRequested; + } + } +} diff --git a/Lidgren.Network/NetPeerConfiguration.cs b/Lidgren.Network/NetPeerConfiguration.cs new file mode 100644 index 0000000..ebd8024 --- /dev/null +++ b/Lidgren.Network/NetPeerConfiguration.cs @@ -0,0 +1,509 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ +using System; +using System.Net; + +namespace Lidgren.Network +{ + /// + /// Partly immutable after NetPeer has been initialized + /// + public sealed class NetPeerConfiguration + { + // Maximum transmission unit + // Ethernet can take 1500 bytes of payload, so lets stay below that. + // The aim is for a max full packet to be 1440 bytes (30 x 48 bytes, lower than 1468) + // -20 bytes IP header + // -8 bytes UDP header + // -4 bytes to be on the safe side and align to 8-byte boundary + // Total 1408 bytes + // Note that lidgren headers (5 bytes) are not included here; since it's part of the "mtu payload" + + /// + /// Default MTU value in bytes + /// + public const int kDefaultMTU = 1408; + + private const string c_isLockedMessage = "You may not modify the NetPeerConfiguration after it has been used to initialize a NetPeer"; + + private bool m_isLocked; + private readonly string m_appIdentifier; + private string m_networkThreadName; + private IPAddress m_localAddress; + private IPAddress m_broadcastAddress; + internal bool m_acceptIncomingConnections; + internal int m_maximumConnections; + internal int m_defaultOutgoingMessageCapacity; + internal float m_pingInterval; + internal bool m_useMessageRecycling; + internal float m_connectionTimeout; + internal bool m_enableUPnP; + internal bool m_autoFlushSendQueue; + private NetUnreliableSizeBehaviour m_unreliableSizeBehaviour; + + internal NetIncomingMessageType m_disabledTypes; + internal int m_port; + internal int m_receiveBufferSize; + internal int m_sendBufferSize; + internal float m_resendHandshakeInterval; + internal int m_maximumHandshakeAttempts; + + // bad network simulation + internal float m_loss; + internal float m_duplicates; + internal float m_minimumOneWayLatency; + internal float m_randomOneWayLatency; + + // MTU + internal int m_maximumTransmissionUnit; + internal bool m_autoExpandMTU; + internal float m_expandMTUFrequency; + internal int m_expandMTUFailAttempts; + + /// + /// NetPeerConfiguration constructor + /// + public NetPeerConfiguration(string appIdentifier) + { + if (string.IsNullOrEmpty(appIdentifier)) + throw new NetException("App identifier must be at least one character long"); + m_appIdentifier = appIdentifier; + + // + // default values + // + m_disabledTypes = NetIncomingMessageType.ConnectionApproval | NetIncomingMessageType.UnconnectedData | NetIncomingMessageType.VerboseDebugMessage | NetIncomingMessageType.ConnectionLatencyUpdated | NetIncomingMessageType.NatIntroductionSuccess; + m_networkThreadName = "Lidgren network thread"; + m_localAddress = IPAddress.Any; + m_broadcastAddress = IPAddress.Broadcast; + var ip = NetUtility.GetBroadcastAddress(); + if (ip != null) + { + m_broadcastAddress = ip; + } + m_port = 0; + m_receiveBufferSize = 131071; + m_sendBufferSize = 131071; + m_acceptIncomingConnections = false; + m_maximumConnections = 32; + m_defaultOutgoingMessageCapacity = 16; + m_pingInterval = 4.0f; + m_connectionTimeout = 25.0f; + m_useMessageRecycling = true; + m_resendHandshakeInterval = 3.0f; + m_maximumHandshakeAttempts = 5; + m_autoFlushSendQueue = true; + + m_maximumTransmissionUnit = kDefaultMTU; + m_autoExpandMTU = false; + m_expandMTUFrequency = 2.0f; + m_expandMTUFailAttempts = 5; + m_unreliableSizeBehaviour = NetUnreliableSizeBehaviour.IgnoreMTU; + + m_loss = 0.0f; + m_minimumOneWayLatency = 0.0f; + m_randomOneWayLatency = 0.0f; + m_duplicates = 0.0f; + + m_isLocked = false; + } + + internal void Lock() + { + m_isLocked = true; + } + + /// + /// Gets the identifier of this application; the library can only connect to matching app identifier peers + /// + public string AppIdentifier + { + get { return m_appIdentifier; } + } + + /// + /// Enables receiving of the specified type of message + /// + public void EnableMessageType(NetIncomingMessageType type) + { + m_disabledTypes &= (~type); + } + + /// + /// Disables receiving of the specified type of message + /// + public void DisableMessageType(NetIncomingMessageType type) + { + m_disabledTypes |= type; + } + + /// + /// Enables or disables receiving of the specified type of message + /// + public void SetMessageTypeEnabled(NetIncomingMessageType type, bool enabled) + { + if (enabled) + m_disabledTypes &= (~type); + else + m_disabledTypes |= type; + } + + /// + /// Gets if receiving of the specified type of message is enabled + /// + public bool IsMessageTypeEnabled(NetIncomingMessageType type) + { + return !((m_disabledTypes & type) == type); + } + + /// + /// Gets or sets the behaviour of unreliable sends above MTU + /// + public NetUnreliableSizeBehaviour UnreliableSizeBehaviour + { + get { return m_unreliableSizeBehaviour; } + set { m_unreliableSizeBehaviour = value; } + } + + /// + /// Gets or sets the name of the library network thread. Cannot be changed once NetPeer is initialized. + /// + public string NetworkThreadName + { + get { return m_networkThreadName; } + set + { + if (m_isLocked) + throw new NetException("NetworkThreadName may not be set after the NetPeer which uses the configuration has been started"); + m_networkThreadName = value; + } + } + + /// + /// Gets or sets the maximum amount of connections this peer can hold. Cannot be changed once NetPeer is initialized. + /// + public int MaximumConnections + { + get { return m_maximumConnections; } + set + { + if (m_isLocked) + throw new NetException(c_isLockedMessage); + m_maximumConnections = value; + } + } + + /// + /// Gets or sets the maximum amount of bytes to send in a single packet, excluding ip, udp and lidgren headers. Cannot be changed once NetPeer is initialized. + /// + public int MaximumTransmissionUnit + { + get { return m_maximumTransmissionUnit; } + set + { + if (m_isLocked) + throw new NetException(c_isLockedMessage); + if (value < 1 || value >= ((ushort.MaxValue + 1) / 8)) + throw new NetException("MaximumTransmissionUnit must be between 1 and " + (((ushort.MaxValue + 1) / 8) - 1) + " bytes"); + m_maximumTransmissionUnit = value; + } + } + + /// + /// Gets or sets the default capacity in bytes when NetPeer.CreateMessage() is called without argument + /// + public int DefaultOutgoingMessageCapacity + { + get { return m_defaultOutgoingMessageCapacity; } + set { m_defaultOutgoingMessageCapacity = value; } + } + + /// + /// Gets or sets the time between latency calculating pings + /// + public float PingInterval + { + get { return m_pingInterval; } + set { m_pingInterval = value; } + } + + /// + /// Gets or sets if the library should recycling messages to avoid excessive garbage collection. Cannot be changed once NetPeer is initialized. + /// + public bool UseMessageRecycling + { + get { return m_useMessageRecycling; } + set + { + if (m_isLocked) + throw new NetException(c_isLockedMessage); + m_useMessageRecycling = value; + } + } + + /// + /// Gets or sets the number of seconds timeout will be postponed on a successful ping/pong + /// + public float ConnectionTimeout + { + get { return m_connectionTimeout; } + set + { + if (value < m_pingInterval) + throw new NetException("Connection timeout cannot be lower than ping interval!"); + m_connectionTimeout = value; + } + } + + /// + /// Enables UPnP support; enabling port forwarding and getting external ip + /// + public bool EnableUPnP + { + get { return m_enableUPnP; } + set + { + if (m_isLocked) + throw new NetException(c_isLockedMessage); + m_enableUPnP = value; + } + } + + /// + /// Enables or disables automatic flushing of the send queue. If disabled, you must manully call NetPeer.FlushSendQueue() to flush sent messages to network. + /// + public bool AutoFlushSendQueue + { + get { return m_autoFlushSendQueue; } + set { m_autoFlushSendQueue = value; } + } + + /// + /// Gets or sets the local ip address to bind to. Defaults to IPAddress.Any. Cannot be changed once NetPeer is initialized. + /// + public IPAddress LocalAddress + { + get { return m_localAddress; } + set + { + if (m_isLocked) + throw new NetException(c_isLockedMessage); + m_localAddress = value; + } + } + + /// + /// Gets or sets the local broadcast address to use when broadcasting + /// + public IPAddress BroadcastAddress + { + get { return m_broadcastAddress; } + set + { + if (m_isLocked) + throw new NetException(c_isLockedMessage); + m_broadcastAddress = value; + } + } + + /// + /// Gets or sets the local port to bind to. Defaults to 0. Cannot be changed once NetPeer is initialized. + /// + public int Port + { + get { return m_port; } + set + { + if (m_isLocked) + throw new NetException(c_isLockedMessage); + m_port = value; + } + } + + /// + /// Gets or sets the size in bytes of the receiving buffer. Defaults to 131071 bytes. Cannot be changed once NetPeer is initialized. + /// + public int ReceiveBufferSize + { + get { return m_receiveBufferSize; } + set + { + if (m_isLocked) + throw new NetException(c_isLockedMessage); + m_receiveBufferSize = value; + } + } + + /// + /// Gets or sets the size in bytes of the sending buffer. Defaults to 131071 bytes. Cannot be changed once NetPeer is initialized. + /// + public int SendBufferSize + { + get { return m_sendBufferSize; } + set + { + if (m_isLocked) + throw new NetException(c_isLockedMessage); + m_sendBufferSize = value; + } + } + + /// + /// Gets or sets if the NetPeer should accept incoming connections. This is automatically set to true in NetServer and false in NetClient. + /// + public bool AcceptIncomingConnections + { + get { return m_acceptIncomingConnections; } + set { m_acceptIncomingConnections = value; } + } + + /// + /// Gets or sets the number of seconds between handshake attempts + /// + public float ResendHandshakeInterval + { + get { return m_resendHandshakeInterval; } + set { m_resendHandshakeInterval = value; } + } + + /// + /// Gets or sets the maximum number of handshake attempts before failing to connect + /// + public int MaximumHandshakeAttempts + { + get { return m_maximumHandshakeAttempts; } + set + { + if (value < 1) + throw new NetException("MaximumHandshakeAttempts must be at least 1"); + m_maximumHandshakeAttempts = value; + } + } + + /// + /// Gets or sets if the NetPeer should send large messages to try to expand the maximum transmission unit size + /// + public bool AutoExpandMTU + { + get { return m_autoExpandMTU; } + set + { + if (m_isLocked) + throw new NetException(c_isLockedMessage); + m_autoExpandMTU = value; + } + } + + /// + /// Gets or sets how often to send large messages to expand MTU if AutoExpandMTU is enabled + /// + public float ExpandMTUFrequency + { + get { return m_expandMTUFrequency; } + set { m_expandMTUFrequency = value; } + } + + /// + /// Gets or sets the number of failed expand mtu attempts to perform before setting final MTU + /// + public int ExpandMTUFailAttempts + { + get { return m_expandMTUFailAttempts; } + set { m_expandMTUFailAttempts = value; } + } + +#if DEBUG + /// + /// Gets or sets the simulated amount of sent packets lost from 0.0f to 1.0f + /// + public float SimulatedLoss + { + get { return m_loss; } + set { m_loss = value; } + } + + /// + /// Gets or sets the minimum simulated amount of one way latency for sent packets in seconds + /// + public float SimulatedMinimumLatency + { + get { return m_minimumOneWayLatency; } + set { m_minimumOneWayLatency = value; } + } + + /// + /// Gets or sets the simulated added random amount of one way latency for sent packets in seconds + /// + public float SimulatedRandomLatency + { + get { return m_randomOneWayLatency; } + set { m_randomOneWayLatency = value; } + } + + /// + /// Gets the average simulated one way latency in seconds + /// + public float SimulatedAverageLatency + { + get { return m_minimumOneWayLatency + (m_randomOneWayLatency * 0.5f); } + } + + /// + /// Gets or sets the simulated amount of duplicated packets from 0.0f to 1.0f + /// + public float SimulatedDuplicatesChance + { + get { return m_duplicates; } + set { m_duplicates = value; } + } +#endif + + /// + /// Creates a memberwise shallow clone of this configuration + /// + public NetPeerConfiguration Clone() + { + NetPeerConfiguration retval = this.MemberwiseClone() as NetPeerConfiguration; + retval.m_isLocked = false; + return retval; + } + } + + /// + /// Behaviour of unreliable sends above MTU + /// + public enum NetUnreliableSizeBehaviour + { + /// + /// Sending an unreliable message will ignore MTU and send everything in a single packet; this is the new default + /// + IgnoreMTU = 0, + + /// + /// Old behaviour; use normal fragmentation for unreliable messages - if a fragment is dropped, memory for received fragments are never reclaimed! + /// + NormalFragmentation = 1, + + /// + /// Alternate behaviour; just drops unreliable messages above MTU + /// + DropAboveMTU = 2, + } +} diff --git a/Lidgren.Network/NetPeerStatistics.cs b/Lidgren.Network/NetPeerStatistics.cs new file mode 100644 index 0000000..feada4b --- /dev/null +++ b/Lidgren.Network/NetPeerStatistics.cs @@ -0,0 +1,164 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + +// Uncomment the line below to get statistics in RELEASE builds +//#define USE_RELEASE_STATISTICS + +using System; +using System.Text; +using System.Diagnostics; + +namespace Lidgren.Network +{ + /// + /// Statistics for a NetPeer instance + /// + public sealed class NetPeerStatistics + { + private readonly NetPeer m_peer; + + internal int m_sentPackets; + internal int m_receivedPackets; + + internal int m_sentMessages; + internal int m_receivedMessages; + internal int m_receivedFragments; + + internal int m_sentBytes; + internal int m_receivedBytes; + + internal long m_bytesAllocated; + + internal NetPeerStatistics(NetPeer peer) + { + m_peer = peer; + Reset(); + } + + internal void Reset() + { + m_sentPackets = 0; + m_receivedPackets = 0; + + m_sentMessages = 0; + m_receivedMessages = 0; + m_receivedFragments = 0; + + m_sentBytes = 0; + m_receivedBytes = 0; + + m_bytesAllocated = 0; + } + + /// + /// Gets the number of sent packets since the NetPeer was initialized + /// + public int SentPackets { get { return m_sentPackets; } } + + /// + /// Gets the number of received packets since the NetPeer was initialized + /// + public int ReceivedPackets { get { return m_receivedPackets; } } + + /// + /// Gets the number of sent messages since the NetPeer was initialized + /// + public int SentMessages { get { return m_sentMessages; } } + + /// + /// Gets the number of received messages since the NetPeer was initialized + /// + public int ReceivedMessages { get { return m_receivedMessages; } } + + /// + /// Gets the number of sent bytes since the NetPeer was initialized + /// + public int SentBytes { get { return m_sentBytes; } } + + /// + /// Gets the number of received bytes since the NetPeer was initialized + /// + public int ReceivedBytes { get { return m_receivedBytes; } } + + /// + /// Gets the number of bytes allocated (and possibly garbage collected) for message storage + /// + public long StorageBytesAllocated { get { return m_bytesAllocated; } } + + /// + /// Gets the number of bytes in the recycled pool + /// + public int BytesInRecyclePool { get { return m_peer.m_storagePoolBytes; } } + +#if USE_RELEASE_STATISTICS + internal void PacketSent(int numBytes, int numMessages) + { + m_sentPackets++; + m_sentBytes += numBytes; + m_sentMessages += numMessages; + } +#else + [Conditional("DEBUG")] + internal void PacketSent(int numBytes, int numMessages) + { + m_sentPackets++; + m_sentBytes += numBytes; + m_sentMessages += numMessages; + } +#endif + +#if USE_RELEASE_STATISTICS + internal void PacketReceived(int numBytes, int numMessages) + { + m_receivedPackets++; + m_receivedBytes += numBytes; + m_receivedMessages += numMessages; + } +#else + [Conditional("DEBUG")] + internal void PacketReceived(int numBytes, int numMessages, int numFragments) + { + m_receivedPackets++; + m_receivedBytes += numBytes; + m_receivedMessages += numMessages; + m_receivedFragments += numFragments; + } +#endif + + /// + /// Returns a string that represents this object + /// + public override string ToString() + { + StringBuilder bdr = new StringBuilder(); + bdr.AppendLine(m_peer.ConnectionsCount.ToString() + " connections"); +#if DEBUG || USE_RELEASE_STATISTICS + bdr.AppendLine("Sent " + m_sentBytes + " bytes in " + m_sentMessages + " messages in " + m_sentPackets + " packets"); + bdr.AppendLine("Received " + m_receivedBytes + " bytes in " + m_receivedMessages + " messages (of which " + m_receivedFragments + " fragments) in " + m_receivedPackets + " packets"); +#else + bdr.AppendLine("Sent (n/a) bytes in (n/a) messages in (n/a) packets"); + bdr.AppendLine("Received (n/a) bytes in (n/a) messages in (n/a) packets"); +#endif + bdr.AppendLine("Storage allocated " + m_bytesAllocated + " bytes"); + bdr.AppendLine("Recycled pool " + m_peer.m_storagePoolBytes + " bytes"); + return bdr.ToString(); + } + } +} diff --git a/Lidgren.Network/NetPeerStatus.cs b/Lidgren.Network/NetPeerStatus.cs new file mode 100644 index 0000000..3be8a1d --- /dev/null +++ b/Lidgren.Network/NetPeerStatus.cs @@ -0,0 +1,49 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ +using System; + +namespace Lidgren.Network +{ + /// + /// Status for a NetPeer instance + /// + public enum NetPeerStatus + { + /// + /// NetPeer is not running; socket is not bound + /// + NotRunning = 0, + + /// + /// NetPeer is in the process of starting up + /// + Starting = 1, + + /// + /// NetPeer is bound to socket and listening for packets + /// + Running = 2, + + /// + /// Shutdown has been requested and will be executed shortly + /// + ShutdownRequested = 3, + } +} diff --git a/Lidgren.Network/NetQueue.cs b/Lidgren.Network/NetQueue.cs new file mode 100644 index 0000000..38b94ba --- /dev/null +++ b/Lidgren.Network/NetQueue.cs @@ -0,0 +1,335 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ +using System; +using System.Diagnostics; +using System.Collections.Generic; +using System.Threading; + +namespace Lidgren.Network +{ + /// + /// Thread safe (blocking) expanding queue with TryDequeue() and EnqueueFirst() + /// + [DebuggerDisplay("Count={Count} Capacity={Capacity}")] + public sealed class NetQueue + { + // Example: + // m_capacity = 8 + // m_size = 6 + // m_head = 4 + // + // [0] item + // [1] item (tail = ((head + size - 1) % capacity) + // [2] + // [3] + // [4] item (head) + // [5] item + // [6] item + // [7] item + // + private T[] m_items; + private readonly ReaderWriterLockSlim m_lock = new ReaderWriterLockSlim(); + private int m_size; + private int m_head; + + /// + /// Gets the number of items in the queue + /// + public int Count { get { return m_size; } } + + /// + /// Gets the current capacity for the queue + /// + public int Capacity { get { return m_items.Length; } } + + /// + /// NetQueue constructor + /// + public NetQueue(int initialCapacity) + { + m_items = new T[initialCapacity]; + } + + /// + /// Adds an item last/tail of the queue + /// + public void Enqueue(T item) + { + m_lock.EnterWriteLock(); + try + { + if (m_size == m_items.Length) + SetCapacity(m_items.Length + 8); + + int slot = (m_head + m_size) % m_items.Length; + m_items[slot] = item; + m_size++; + } + finally + { + m_lock.ExitWriteLock(); + } + } + + /// + /// Adds an item last/tail of the queue + /// + public void Enqueue(IEnumerable items) + { + m_lock.EnterWriteLock(); + try + { + foreach (var item in items) + { + if (m_size == m_items.Length) + SetCapacity(m_items.Length + 8); // @TODO move this out of loop + + int slot = (m_head + m_size) % m_items.Length; + m_items[slot] = item; + m_size++; + } + } + finally + { + m_lock.ExitWriteLock(); + } + } + + /// + /// Places an item first, at the head of the queue + /// + public void EnqueueFirst(T item) + { + m_lock.EnterWriteLock(); + try + { + if (m_size >= m_items.Length) + SetCapacity(m_items.Length + 8); + + m_head--; + if (m_head < 0) + m_head = m_items.Length - 1; + m_items[m_head] = item; + m_size++; + } + finally + { + m_lock.ExitWriteLock(); + } + } + + // must be called from within a write locked m_lock! + private void SetCapacity(int newCapacity) + { + if (m_size == 0) + { + if (m_size == 0) + { + m_items = new T[newCapacity]; + m_head = 0; + return; + } + } + + T[] newItems = new T[newCapacity]; + + if (m_head + m_size - 1 < m_items.Length) + { + Array.Copy(m_items, m_head, newItems, 0, m_size); + } + else + { + Array.Copy(m_items, m_head, newItems, 0, m_items.Length - m_head); + Array.Copy(m_items, 0, newItems, m_items.Length - m_head, (m_size - (m_items.Length - m_head))); + } + + m_items = newItems; + m_head = 0; + + } + + /// + /// Gets an item from the head of the queue, or returns default(T) if empty + /// + public bool TryDequeue(out T item) + { + if (m_size == 0) + { + item = default(T); + return false; + } + + m_lock.EnterWriteLock(); + try + { + if (m_size == 0) + { + item = default(T); + return false; + } + + item = m_items[m_head]; + m_items[m_head] = default(T); + + m_head = (m_head + 1) % m_items.Length; + m_size--; + + return true; + } + catch + { +#if DEBUG + throw; +#else + item = default(T); + return false; +#endif + } + finally + { + m_lock.ExitWriteLock(); + } + } + + /// + /// Gets all items from the head of the queue, or returns number of items popped + /// + public int TryDrain(IList addTo) + { + if (m_size == 0) + return 0; + + m_lock.EnterWriteLock(); + try + { + int added = m_size; + while (m_size > 0) + { + var item = m_items[m_head]; + addTo.Add(item); + + m_items[m_head] = default(T); + m_head = (m_head + 1) % m_items.Length; + m_size--; + } + return added; + } + finally + { + m_lock.ExitWriteLock(); + } + } + + /// + /// Returns default(T) if queue is empty + /// + public T TryPeek(int offset) + { + if (m_size == 0) + return default(T); + + m_lock.EnterReadLock(); + try + { + if (m_size == 0) + return default(T); + return m_items[(m_head + offset) % m_items.Length]; + } + finally + { + m_lock.ExitReadLock(); + } + } + + /// + /// Determines whether an item is in the queue + /// + public bool Contains(T item) + { + m_lock.EnterReadLock(); + try + { + int ptr = m_head; + for (int i = 0; i < m_size; i++) + { + if (m_items[ptr] == null) + { + if (item == null) + return true; + } + else + { + if (m_items[ptr].Equals(item)) + return true; + } + ptr = (ptr + 1) % m_items.Length; + } + return false; + } + finally + { + m_lock.ExitReadLock(); + } + } + + /// + /// Copies the queue items to a new array + /// + public T[] ToArray() + { + m_lock.EnterReadLock(); + try + { + T[] retval = new T[m_size]; + int ptr = m_head; + for (int i = 0; i < m_size; i++) + { + retval[i] = m_items[ptr++]; + if (ptr >= m_items.Length) + ptr = 0; + } + return retval; + } + finally + { + m_lock.ExitReadLock(); + } + } + + /// + /// Removes all objects from the queue + /// + public void Clear() + { + m_lock.EnterWriteLock(); + try + { + for (int i = 0; i < m_items.Length; i++) + m_items[i] = default(T); + m_head = 0; + m_size = 0; + } + finally + { + m_lock.ExitWriteLock(); + } + } + } +} diff --git a/Lidgren.Network/NetRandom.Implementations.cs b/Lidgren.Network/NetRandom.Implementations.cs new file mode 100644 index 0000000..1a7bff3 --- /dev/null +++ b/Lidgren.Network/NetRandom.Implementations.cs @@ -0,0 +1,281 @@ +using System; +using System.Security.Cryptography; + +namespace Lidgren.Network +{ + /// + /// Multiply With Carry random + /// + public class MWCRandom : NetRandom + { + /// + /// Get global instance of MWCRandom + /// + public static new readonly MWCRandom Instance = new MWCRandom(); + + private uint m_w, m_z; + + /// + /// Constructor with randomized seed + /// + public MWCRandom() + { + Initialize(NetRandomSeed.GetUInt64()); + } + + /// + /// (Re)initialize this instance with provided 32 bit seed + /// + [CLSCompliant(false)] + public override void Initialize(uint seed) + { + m_w = seed; + m_z = seed * 16777619; + } + + /// + /// (Re)initialize this instance with provided 64 bit seed + /// + [CLSCompliant(false)] + public void Initialize(ulong seed) + { + m_w = (uint)seed; + m_z = (uint)(seed >> 32); + } + + /// + /// Generates a random value from UInt32.MinValue to UInt32.MaxValue, inclusively + /// + [CLSCompliant(false)] + public override uint NextUInt32() + { + m_z = 36969 * (m_z & 65535) + (m_z >> 16); + m_w = 18000 * (m_w & 65535) + (m_w >> 16); + return ((m_z << 16) + m_w); + } + } + + /// + /// Xor Shift based random + /// + public sealed class XorShiftRandom : NetRandom + { + /// + /// Get global instance of XorShiftRandom + /// + public static new readonly XorShiftRandom Instance = new XorShiftRandom(); + + private const uint c_x = 123456789; + private const uint c_y = 362436069; + private const uint c_z = 521288629; + private const uint c_w = 88675123; + + private uint m_x, m_y, m_z, m_w; + + /// + /// Constructor with randomized seed + /// + public XorShiftRandom() + { + Initialize(NetRandomSeed.GetUInt64()); + } + + /// + /// Constructor with provided 64 bit seed + /// + [CLSCompliant(false)] + public XorShiftRandom(ulong seed) + { + Initialize(seed); + } + + /// + /// (Re)initialize this instance with provided 32 bit seed + /// + [CLSCompliant(false)] + public override void Initialize(uint seed) + { + m_x = (uint)seed; + m_y = c_y; + m_z = c_z; + m_w = c_w; + } + + /// + /// (Re)initialize this instance with provided 64 bit seed + /// + [CLSCompliant(false)] + public void Initialize(ulong seed) + { + m_x = (uint)seed; + m_y = c_y; + m_z = (uint)(seed << 32); + m_w = c_w; + } + + /// + /// Generates a random value from UInt32.MinValue to UInt32.MaxValue, inclusively + /// + [CLSCompliant(false)] + public override uint NextUInt32() + { + uint t = (m_x ^ (m_x << 11)); + m_x = m_y; m_y = m_z; m_z = m_w; + return (m_w = (m_w ^ (m_w >> 19)) ^ (t ^ (t >> 8))); + } + } + + /// + /// Mersenne Twister based random + /// + public sealed class MersenneTwisterRandom : NetRandom + { + /// + /// Get global instance of MersenneTwisterRandom + /// + public static new readonly MersenneTwisterRandom Instance = new MersenneTwisterRandom(); + + private const int N = 624; + private const int M = 397; + private const uint MATRIX_A = 0x9908b0dfU; + private const uint UPPER_MASK = 0x80000000U; + private const uint LOWER_MASK = 0x7fffffffU; + private const uint TEMPER1 = 0x9d2c5680U; + private const uint TEMPER2 = 0xefc60000U; + private const int TEMPER3 = 11; + private const int TEMPER4 = 7; + private const int TEMPER5 = 15; + private const int TEMPER6 = 18; + + private UInt32[] mt; + private int mti; + private UInt32[] mag01; + + private const double c_realUnitInt = 1.0 / ((double)int.MaxValue + 1.0); + + /// + /// Constructor with randomized seed + /// + public MersenneTwisterRandom() + { + Initialize(NetRandomSeed.GetUInt32()); + } + + /// + /// Constructor with provided 32 bit seed + /// + [CLSCompliant(false)] + public MersenneTwisterRandom(uint seed) + { + Initialize(seed); + } + + /// + /// (Re)initialize this instance with provided 32 bit seed + /// + [CLSCompliant(false)] + public override void Initialize(uint seed) + { + mt = new UInt32[N]; + mti = N + 1; + mag01 = new UInt32[] { 0x0U, MATRIX_A }; + mt[0] = seed; + for (int i = 1; i < N; i++) + mt[i] = (UInt32)(1812433253 * (mt[i - 1] ^ (mt[i - 1] >> 30)) + i); + } + + /// + /// Generates a random value from UInt32.MinValue to UInt32.MaxValue, inclusively + /// + [CLSCompliant(false)] + public override uint NextUInt32() + { + UInt32 y; + if (mti >= N) + { + GenRandAll(); + mti = 0; + } + y = mt[mti++]; + y ^= (y >> TEMPER3); + y ^= (y << TEMPER4) & TEMPER1; + y ^= (y << TEMPER5) & TEMPER2; + y ^= (y >> TEMPER6); + return y; + } + + private void GenRandAll() + { + int kk = 1; + UInt32 y; + UInt32 p; + y = mt[0] & UPPER_MASK; + do + { + p = mt[kk]; + mt[kk - 1] = mt[kk + (M - 1)] ^ ((y | (p & LOWER_MASK)) >> 1) ^ mag01[p & 1]; + y = p & UPPER_MASK; + } while (++kk < N - M + 1); + do + { + p = mt[kk]; + mt[kk - 1] = mt[kk + (M - N - 1)] ^ ((y | (p & LOWER_MASK)) >> 1) ^ mag01[p & 1]; + y = p & UPPER_MASK; + } while (++kk < N); + p = mt[0]; + mt[N - 1] = mt[M - 1] ^ ((y | (p & LOWER_MASK)) >> 1) ^ mag01[p & 1]; + } + } + + /// + /// RNGCryptoServiceProvider based random; very slow but cryptographically safe + /// + public class CryptoRandom : NetRandom + { + /// + /// Global instance of CryptoRandom + /// + public static new readonly CryptoRandom Instance = new CryptoRandom(); + + private RandomNumberGenerator m_rnd = new RNGCryptoServiceProvider(); + + /// + /// Seed in CryptoRandom does not create deterministic sequences + /// + [CLSCompliant(false)] + public override void Initialize(uint seed) + { + byte[] tmp = new byte[seed % 16]; + m_rnd.GetBytes(tmp); // just prime it + } + + /// + /// Generates a random value from UInt32.MinValue to UInt32.MaxValue, inclusively + /// + [CLSCompliant(false)] + public override uint NextUInt32() + { + var bytes = new byte[4]; + m_rnd.GetBytes(bytes); + return (uint)bytes[0] | (((uint)bytes[1]) << 8) | (((uint)bytes[2]) << 16) | (((uint)bytes[3]) << 24); + } + + /// + /// Fill the specified buffer with random values + /// + public override void NextBytes(byte[] buffer) + { + m_rnd.GetBytes(buffer); + } + + /// + /// Fills all bytes from offset to offset + length in buffer with random values + /// + public override void NextBytes(byte[] buffer, int offset, int length) + { + var bytes = new byte[length]; + m_rnd.GetBytes(bytes); + Array.Copy(bytes, 0, buffer, offset, length); + } + } +} diff --git a/Lidgren.Network/NetRandom.cs b/Lidgren.Network/NetRandom.cs new file mode 100644 index 0000000..155b21c --- /dev/null +++ b/Lidgren.Network/NetRandom.cs @@ -0,0 +1,177 @@ +using System; +using System.Collections.Generic; +using System.Threading; + +namespace Lidgren.Network +{ + /// + /// NetRandom base class + /// + public abstract class NetRandom : Random + { + /// + /// Get global instance of NetRandom (uses MWCRandom) + /// + public static NetRandom Instance = new MWCRandom(); + + private const double c_realUnitInt = 1.0 / ((double)int.MaxValue + 1.0); + + /// + /// Constructor with randomized seed + /// + public NetRandom() + { + Initialize(NetRandomSeed.GetUInt32()); + } + + /// + /// Constructor with provided 32 bit seed + /// + public NetRandom(int seed) + { + Initialize((uint)seed); + } + + /// + /// (Re)initialize this instance with provided 32 bit seed + /// + [CLSCompliant(false)] + public virtual void Initialize(uint seed) + { + // should be abstract, but non-CLS compliant methods can't be abstract! + throw new NotImplementedException("Implement this in inherited classes"); + } + + /// + /// Generates a random value from UInt32.MinValue to UInt32.MaxValue, inclusively + /// + [CLSCompliant(false)] + public virtual uint NextUInt32() + { + // should be abstract, but non-CLS compliant methods can't be abstract! + throw new NotImplementedException("Implement this in inherited classes"); + } + + /// + /// Generates a random value that is greater or equal than 0 and less than Int32.MaxValue + /// + public override int Next() + { + var retval = (int)(0x7FFFFFFF & NextUInt32()); + if (retval == 0x7FFFFFFF) + return NextInt32(); + return retval; + } + + /// + /// Generates a random value greater or equal than 0 and less or equal than Int32.MaxValue (inclusively) + /// + public int NextInt32() + { + return (int)(0x7FFFFFFF & NextUInt32()); + } + + /// + /// Returns random value larger or equal to 0.0 and less than 1.0 + /// + public override double NextDouble() + { + return c_realUnitInt * NextInt32(); + } + + /// + /// Returns random value is greater or equal than 0.0 and less than 1.0 + /// + protected override double Sample() + { + return c_realUnitInt * NextInt32(); + } + + /// + /// Returns random value is greater or equal than 0.0f and less than 1.0f + /// + public float NextSingle() + { + var retval = (float)(c_realUnitInt * NextInt32()); + if (retval == 1.0f) + return NextSingle(); + return retval; + } + + /// + /// Returns a random value is greater or equal than 0 and less than maxValue + /// + public override int Next(int maxValue) + { + return (int)(NextDouble() * maxValue); + } + + /// + /// Returns a random value is greater or equal than minValue and less than maxValue + /// + public override int Next(int minValue, int maxValue) + { + return minValue + (int)(NextDouble() * (double)(maxValue - minValue)); + } + + /// + /// Generates a random value between UInt64.MinValue to UInt64.MaxValue + /// + [CLSCompliant(false)] + public ulong NextUInt64() + { + ulong retval = NextUInt32(); + retval |= NextUInt32() << 32; + return retval; + } + + private uint m_boolValues; + private int m_nextBoolIndex; + + /// + /// Returns true or false, randomly + /// + public bool NextBool() + { + if (m_nextBoolIndex >= 32) + { + m_boolValues = NextUInt32(); + m_nextBoolIndex = 1; + } + + var retval = ((m_boolValues >> m_nextBoolIndex) & 1) == 1; + m_nextBoolIndex++; + return retval; + } + + + /// + /// Fills all bytes from offset to offset + length in buffer with random values + /// + public virtual void NextBytes(byte[] buffer, int offset, int length) + { + int full = length / 4; + int ptr = offset; + for (int i = 0; i < full; i++) + { + uint r = NextUInt32(); + buffer[ptr++] = (byte)r; + buffer[ptr++] = (byte)(r >> 8); + buffer[ptr++] = (byte)(r >> 16); + buffer[ptr++] = (byte)(r >> 24); + } + + int rest = length - (full * 4); + for (int i = 0; i < rest; i++) + buffer[ptr++] = (byte)NextUInt32(); + } + + /// + /// Fill the specified buffer with random values + /// + public override void NextBytes(byte[] buffer) + { + NextBytes(buffer, 0, buffer.Length); + } + } +} diff --git a/Lidgren.Network/NetRandomSeed.cs b/Lidgren.Network/NetRandomSeed.cs new file mode 100644 index 0000000..0994d2d --- /dev/null +++ b/Lidgren.Network/NetRandomSeed.cs @@ -0,0 +1,47 @@ +using System; +using System.Threading; + +namespace Lidgren.Network +{ + /// + /// Class for generating random seeds + /// + public static class NetRandomSeed + { + private static int m_seedIncrement = -1640531527; + + /// + /// Generates a 32 bit random seed + /// + [CLSCompliant(false)] + public static uint GetUInt32() + { + ulong seed = GetUInt64(); + uint low = (uint)seed; + uint high = (uint)(seed >> 32); + return low ^ high; + } + + /// + /// Generates a 64 bit random seed + /// + [CLSCompliant(false)] + public static ulong GetUInt64() + { +#if !__ANDROID__ && !IOS && !UNITY_WEBPLAYER && !UNITY_ANDROID && !UNITY_IPHONE + ulong seed = (ulong)System.Diagnostics.Stopwatch.GetTimestamp(); + seed ^= (ulong)Environment.WorkingSet; + ulong s2 = (ulong)Interlocked.Increment(ref m_seedIncrement); + s2 |= (((ulong)Guid.NewGuid().GetHashCode()) << 32); + seed ^= s2; +#else + ulong seed = (ulong)Environment.TickCount; + seed |= (((ulong)(new object().GetHashCode())) << 32); + ulong s2 = (ulong)Guid.NewGuid().GetHashCode(); + s2 |= (((ulong)Interlocked.Increment(ref m_seedIncrement)) << 32); + seed ^= s2; +#endif + return seed; + } + } +} diff --git a/Lidgren.Network/NetReceiverChannelBase.cs b/Lidgren.Network/NetReceiverChannelBase.cs new file mode 100644 index 0000000..e3f634e --- /dev/null +++ b/Lidgren.Network/NetReceiverChannelBase.cs @@ -0,0 +1,18 @@ +using System; + +namespace Lidgren.Network +{ + internal abstract class NetReceiverChannelBase + { + internal NetPeer m_peer; + internal NetConnection m_connection; + + public NetReceiverChannelBase(NetConnection connection) + { + m_connection = connection; + m_peer = connection.m_peer; + } + + internal abstract void ReceiveMessage(NetIncomingMessage msg); + } +} diff --git a/Lidgren.Network/NetReliableOrderedReceiver.cs b/Lidgren.Network/NetReliableOrderedReceiver.cs new file mode 100644 index 0000000..2991448 --- /dev/null +++ b/Lidgren.Network/NetReliableOrderedReceiver.cs @@ -0,0 +1,87 @@ +using System; + +namespace Lidgren.Network +{ + internal sealed class NetReliableOrderedReceiver : NetReceiverChannelBase + { + private int m_windowStart; + private int m_windowSize; + private NetBitVector m_earlyReceived; + internal NetIncomingMessage[] m_withheldMessages; + + public NetReliableOrderedReceiver(NetConnection connection, int windowSize) + : base(connection) + { + m_windowSize = windowSize; + m_withheldMessages = new NetIncomingMessage[windowSize]; + m_earlyReceived = new NetBitVector(windowSize); + } + + private void AdvanceWindow() + { + m_earlyReceived.Set(m_windowStart % m_windowSize, false); + m_windowStart = (m_windowStart + 1) % NetConstants.NumSequenceNumbers; + } + + internal override void ReceiveMessage(NetIncomingMessage message) + { + int relate = NetUtility.RelativeSequenceNumber(message.m_sequenceNumber, m_windowStart); + + // ack no matter what + m_connection.QueueAck(message.m_receivedMessageType, message.m_sequenceNumber); + + if (relate == 0) + { + // Log("Received message #" + message.SequenceNumber + " right on time"); + + // + // excellent, right on time + // + //m_peer.LogVerbose("Received RIGHT-ON-TIME " + message); + + AdvanceWindow(); + m_peer.ReleaseMessage(message); + + // release withheld messages + int nextSeqNr = (message.m_sequenceNumber + 1) % NetConstants.NumSequenceNumbers; + + while (m_earlyReceived[nextSeqNr % m_windowSize]) + { + message = m_withheldMessages[nextSeqNr % m_windowSize]; + NetException.Assert(message != null); + + // remove it from withheld messages + m_withheldMessages[nextSeqNr % m_windowSize] = null; + + m_peer.LogVerbose("Releasing withheld message #" + message); + + m_peer.ReleaseMessage(message); + + AdvanceWindow(); + nextSeqNr++; + } + + return; + } + + if (relate < 0) + { + m_peer.LogVerbose("Received message #" + message.m_sequenceNumber + " DROPPING DUPLICATE"); + // duplicate + return; + } + + // relate > 0 = early message + if (relate > m_windowSize) + { + // too early message! + m_peer.LogDebug("Received " + message + " TOO EARLY! Expected " + m_windowStart); + return; + } + + m_earlyReceived.Set(message.m_sequenceNumber % m_windowSize, true); + m_peer.LogVerbose("Received " + message + " WITHHOLDING, waiting for " + m_windowStart); + m_withheldMessages[message.m_sequenceNumber % m_windowSize] = message; + } + } +} diff --git a/Lidgren.Network/NetReliableSenderChannel.cs b/Lidgren.Network/NetReliableSenderChannel.cs new file mode 100644 index 0000000..792e1da --- /dev/null +++ b/Lidgren.Network/NetReliableSenderChannel.cs @@ -0,0 +1,257 @@ +using System; +using System.Threading; + +namespace Lidgren.Network +{ + /// + /// Sender part of Selective repeat ARQ for a particular NetChannel + /// + internal sealed class NetReliableSenderChannel : NetSenderChannelBase + { + private NetConnection m_connection; + private int m_windowStart; + private int m_windowSize; + private int m_sendStart; + + private NetBitVector m_receivedAcks; + internal NetStoredReliableMessage[] m_storedMessages; + + internal float m_resendDelay; + + internal override int WindowSize { get { return m_windowSize; } } + + internal NetReliableSenderChannel(NetConnection connection, int windowSize) + { + m_connection = connection; + m_windowSize = windowSize; + m_windowStart = 0; + m_sendStart = 0; + m_receivedAcks = new NetBitVector(NetConstants.NumSequenceNumbers); + m_storedMessages = new NetStoredReliableMessage[m_windowSize]; + m_queuedSends = new NetQueue(8); + m_resendDelay = m_connection.GetResendDelay(); + } + + internal override int GetAllowedSends() + { + int retval = m_windowSize - ((m_sendStart + NetConstants.NumSequenceNumbers) - m_windowStart) % NetConstants.NumSequenceNumbers; + NetException.Assert(retval >= 0 && retval <= m_windowSize); + return retval; + } + + internal override void Reset() + { + m_receivedAcks.Clear(); + for (int i = 0; i < m_storedMessages.Length; i++) + m_storedMessages[i].Reset(); + m_queuedSends.Clear(); + m_windowStart = 0; + m_sendStart = 0; + } + + internal override NetSendResult Enqueue(NetOutgoingMessage message) + { + m_queuedSends.Enqueue(message); + if (m_queuedSends.Count <= GetAllowedSends()) + return NetSendResult.Sent; + return NetSendResult.Queued; + } + + // call this regularely + internal override void SendQueuedMessages(float now) + { + // + // resends + // + for (int i = 0; i < m_storedMessages.Length; i++) + { + NetOutgoingMessage om = m_storedMessages[i].Message; + if (om == null) + continue; + + float t = m_storedMessages[i].LastSent; + if (t > 0 && (now - t) > m_resendDelay) + { + // deduce sequence number + /* + int startSlot = m_windowStart % m_windowSize; + int seqNr = m_windowStart; + while (startSlot != i) + { + startSlot--; + if (startSlot < 0) + startSlot = m_windowSize - 1; + seqNr--; + } + */ + + //m_connection.m_peer.LogVerbose("Resending due to delay #" + m_storedMessages[i].SequenceNumber + " " + om.ToString()); + m_connection.m_statistics.MessageResent(MessageResendReason.Delay); + + m_connection.QueueSendMessage(om, m_storedMessages[i].SequenceNumber); + + m_storedMessages[i].LastSent = now; + m_storedMessages[i].NumSent++; + } + } + + int num = GetAllowedSends(); + if (num < 1) + return; + + // queued sends + while (m_queuedSends.Count > 0 && num > 0) + { + NetOutgoingMessage om; + if (m_queuedSends.TryDequeue(out om)) + ExecuteSend(now, om); + num--; + NetException.Assert(num == GetAllowedSends()); + } + } + + private void ExecuteSend(float now, NetOutgoingMessage message) + { + int seqNr = m_sendStart; + m_sendStart = (m_sendStart + 1) % NetConstants.NumSequenceNumbers; + + m_connection.QueueSendMessage(message, seqNr); + + int storeIndex = seqNr % m_windowSize; + NetException.Assert(m_storedMessages[storeIndex].Message == null); + + m_storedMessages[storeIndex].NumSent++; + m_storedMessages[storeIndex].Message = message; + m_storedMessages[storeIndex].LastSent = now; + m_storedMessages[storeIndex].SequenceNumber = seqNr; + + return; + } + + private void DestoreMessage(int storeIndex) + { + NetOutgoingMessage storedMessage = m_storedMessages[storeIndex].Message; +#if DEBUG + if (storedMessage == null) + throw new NetException("m_storedMessages[" + storeIndex + "].Message is null; sent " + m_storedMessages[storeIndex].NumSent + " times, last time " + (NetTime.Now - m_storedMessages[storeIndex].LastSent) + " seconds ago"); +#else + if (storedMessage != null) + { +#endif + if (Interlocked.Decrement(ref storedMessage.m_recyclingCount) <= 0) + m_connection.m_peer.Recycle(storedMessage); + +#if !DEBUG + } +#endif + m_storedMessages[storeIndex] = new NetStoredReliableMessage(); + } + + // remoteWindowStart is remote expected sequence number; everything below this has arrived properly + // seqNr is the actual nr received + internal override void ReceiveAcknowledge(float now, int seqNr) + { + // late (dupe), on time or early ack? + int relate = NetUtility.RelativeSequenceNumber(seqNr, m_windowStart); + + if (relate < 0) + { + //m_connection.m_peer.LogDebug("Received late/dupe ack for #" + seqNr); + return; // late/duplicate ack + } + + if (relate == 0) + { + //m_connection.m_peer.LogDebug("Received right-on-time ack for #" + seqNr); + + // ack arrived right on time + NetException.Assert(seqNr == m_windowStart); + + m_receivedAcks[m_windowStart] = false; + DestoreMessage(m_windowStart % m_windowSize); + m_windowStart = (m_windowStart + 1) % NetConstants.NumSequenceNumbers; + + // advance window if we already have early acks + while (m_receivedAcks.Get(m_windowStart)) + { + //m_connection.m_peer.LogDebug("Using early ack for #" + m_windowStart + "..."); + m_receivedAcks[m_windowStart] = false; + DestoreMessage(m_windowStart % m_windowSize); + + NetException.Assert(m_storedMessages[m_windowStart % m_windowSize].Message == null); // should already be destored + m_windowStart = (m_windowStart + 1) % NetConstants.NumSequenceNumbers; + //m_connection.m_peer.LogDebug("Advancing window to #" + m_windowStart); + } + + return; + } + + // + // early ack... (if it has been sent!) + // + // If it has been sent either the m_windowStart message was lost + // ... or the ack for that message was lost + // + + //m_connection.m_peer.LogDebug("Received early ack for #" + seqNr); + + int sendRelate = NetUtility.RelativeSequenceNumber(seqNr, m_sendStart); + if (sendRelate <= 0) + { + // yes, we've sent this message - it's an early (but valid) ack + if (m_receivedAcks[seqNr]) + { + // we've already destored/been acked for this message + } + else + { + m_receivedAcks[seqNr] = true; + } + } + else if (sendRelate > 0) + { + // uh... we haven't sent this message yet? Weird, dupe or error... + NetException.Assert(false, "Got ack for message not yet sent?"); + return; + } + + // Ok, lets resend all missing acks + int rnr = seqNr; + do + { + rnr--; + if (rnr < 0) + rnr = NetConstants.NumSequenceNumbers - 1; + + if (m_receivedAcks[rnr]) + { + // m_connection.m_peer.LogDebug("Not resending #" + rnr + " (since we got ack)"); + } + else + { + int slot = rnr % m_windowSize; + NetException.Assert(m_storedMessages[slot].Message != null); + if (m_storedMessages[slot].NumSent == 1) + { + // just sent once; resend immediately since we found gap in ack sequence + NetOutgoingMessage rmsg = m_storedMessages[slot].Message; + //m_connection.m_peer.LogVerbose("Resending #" + rnr + " (" + rmsg + ")"); + + if (now - m_storedMessages[slot].LastSent < (m_resendDelay * 0.35f)) + { + // already resent recently + } + else + { + m_storedMessages[slot].LastSent = now; + m_storedMessages[slot].NumSent++; + m_connection.m_statistics.MessageResent(MessageResendReason.HoleInSequence); + m_connection.QueueSendMessage(rmsg, rnr); + } + } + } + + } while (rnr != m_windowStart); + } + } +} diff --git a/Lidgren.Network/NetReliableSequencedReceiver.cs b/Lidgren.Network/NetReliableSequencedReceiver.cs new file mode 100644 index 0000000..0068dfb --- /dev/null +++ b/Lidgren.Network/NetReliableSequencedReceiver.cs @@ -0,0 +1,63 @@ +using System; + +namespace Lidgren.Network +{ + internal sealed class NetReliableSequencedReceiver : NetReceiverChannelBase + { + private int m_windowStart; + private int m_windowSize; + + public NetReliableSequencedReceiver(NetConnection connection, int windowSize) + : base(connection) + { + m_windowSize = windowSize; + } + + private void AdvanceWindow() + { + m_windowStart = (m_windowStart + 1) % NetConstants.NumSequenceNumbers; + } + + internal override void ReceiveMessage(NetIncomingMessage message) + { + int nr = message.m_sequenceNumber; + + int relate = NetUtility.RelativeSequenceNumber(nr, m_windowStart); + + // ack no matter what + m_connection.QueueAck(message.m_receivedMessageType, nr); + + if (relate == 0) + { + // Log("Received message #" + message.SequenceNumber + " right on time"); + + // + // excellent, right on time + // + + AdvanceWindow(); + m_peer.ReleaseMessage(message); + return; + } + + if (relate < 0) + { + m_peer.LogVerbose("Received message #" + message.m_sequenceNumber + " DROPPING LATE or DUPE"); + return; + } + + // relate > 0 = early message + if (relate > m_windowSize) + { + // too early message! + m_peer.LogDebug("Received " + message + " TOO EARLY! Expected " + m_windowStart); + return; + } + + // ok + m_windowStart = (m_windowStart + relate) % NetConstants.NumSequenceNumbers; + m_peer.ReleaseMessage(message); + return; + } + } +} diff --git a/Lidgren.Network/NetReliableUnorderedReceiver.cs b/Lidgren.Network/NetReliableUnorderedReceiver.cs new file mode 100644 index 0000000..364e6d8 --- /dev/null +++ b/Lidgren.Network/NetReliableUnorderedReceiver.cs @@ -0,0 +1,87 @@ +using System; + +namespace Lidgren.Network +{ + internal sealed class NetReliableUnorderedReceiver : NetReceiverChannelBase + { + private int m_windowStart; + private int m_windowSize; + private NetBitVector m_earlyReceived; + + public NetReliableUnorderedReceiver(NetConnection connection, int windowSize) + : base(connection) + { + m_windowSize = windowSize; + m_earlyReceived = new NetBitVector(windowSize); + } + + private void AdvanceWindow() + { + m_earlyReceived.Set(m_windowStart % m_windowSize, false); + m_windowStart = (m_windowStart + 1) % NetConstants.NumSequenceNumbers; + } + + internal override void ReceiveMessage(NetIncomingMessage message) + { + int relate = NetUtility.RelativeSequenceNumber(message.m_sequenceNumber, m_windowStart); + + // ack no matter what + m_connection.QueueAck(message.m_receivedMessageType, message.m_sequenceNumber); + + if (relate == 0) + { + // Log("Received message #" + message.SequenceNumber + " right on time"); + + // + // excellent, right on time + // + //m_peer.LogVerbose("Received RIGHT-ON-TIME " + message); + + AdvanceWindow(); + m_peer.ReleaseMessage(message); + + // release withheld messages + int nextSeqNr = (message.m_sequenceNumber + 1) % NetConstants.NumSequenceNumbers; + + while (m_earlyReceived[nextSeqNr % m_windowSize]) + { + //message = m_withheldMessages[nextSeqNr % m_windowSize]; + //NetException.Assert(message != null); + + // remove it from withheld messages + //m_withheldMessages[nextSeqNr % m_windowSize] = null; + + //m_peer.LogVerbose("Releasing withheld message #" + message); + + //m_peer.ReleaseMessage(message); + + AdvanceWindow(); + nextSeqNr++; + } + + return; + } + + if (relate < 0) + { + // duplicate + m_peer.LogVerbose("Received message #" + message.m_sequenceNumber + " DROPPING DUPLICATE"); + return; + } + + // relate > 0 = early message + if (relate > m_windowSize) + { + // too early message! + m_peer.LogDebug("Received " + message + " TOO EARLY! Expected " + m_windowStart); + return; + } + + m_earlyReceived.Set(message.m_sequenceNumber % m_windowSize, true); + //m_peer.LogVerbose("Received " + message + " WITHHOLDING, waiting for " + m_windowStart); + //m_withheldMessages[message.m_sequenceNumber % m_windowSize] = message; + + m_peer.ReleaseMessage(message); + } + } +} diff --git a/Lidgren.Network/NetSRP.cs b/Lidgren.Network/NetSRP.cs new file mode 100644 index 0000000..bb8b9f7 --- /dev/null +++ b/Lidgren.Network/NetSRP.cs @@ -0,0 +1,204 @@ +#define USE_SHA256 + +using System; +using System.Security.Cryptography; +using System.Text; + +namespace Lidgren.Network +{ + /// + /// Helper methods for implementing SRP authentication + /// + public static class NetSRP + { + private static readonly NetBigInteger N = new NetBigInteger("0115b8b692e0e045692cf280b436735c77a5a9e8a9e7ed56c965f87db5b2a2ece3", 16); + private static readonly NetBigInteger g = NetBigInteger.Two; + private static readonly NetBigInteger k = ComputeMultiplier(); + + private static HashAlgorithm GetHashAlgorithm() + { +#if USE_SHA256 + // this does not seem to work as of yet + return SHA256.Create(); +#else + return SHA1.Create(); +#endif + } + + /// + /// Compute multiplier (k) + /// + private static NetBigInteger ComputeMultiplier() + { + string one = NetUtility.ToHexString(N.ToByteArrayUnsigned()); + string two = NetUtility.ToHexString(g.ToByteArrayUnsigned()); + + string ccstr = one + two.PadLeft(one.Length, '0'); + byte[] cc = NetUtility.ToByteArray(ccstr); + + var sha = GetHashAlgorithm(); + var ccHashed = sha.ComputeHash(cc); + + return new NetBigInteger(NetUtility.ToHexString(ccHashed), 16); + } + + /// + /// Create 16 bytes of random salt + /// + public static byte[] CreateRandomSalt() + { + byte[] retval = new byte[16]; + CryptoRandom.Instance.NextBytes(retval); + return retval; + } + + /// + /// Create 32 bytes of random ephemeral value + /// + public static byte[] CreateRandomEphemeral() + { + byte[] retval = new byte[32]; + CryptoRandom.Instance.NextBytes(retval); + return retval; + } + + /// + /// Computer private key (x) + /// + public static byte[] ComputePrivateKey(string username, string password, byte[] salt) + { + var sha = GetHashAlgorithm(); + + byte[] tmp = Encoding.UTF8.GetBytes(username + ":" + password); + byte[] innerHash = sha.ComputeHash(tmp); + + byte[] total = new byte[innerHash.Length + salt.Length]; + Buffer.BlockCopy(salt, 0, total, 0, salt.Length); + Buffer.BlockCopy(innerHash, 0, total, salt.Length, innerHash.Length); + + // x ie. H(salt || H(username || ":" || password)) + return new NetBigInteger(NetUtility.ToHexString(sha.ComputeHash(total)), 16).ToByteArrayUnsigned(); + } + + /// + /// Creates a verifier that the server can later use to authenticate users later on (v) + /// + public static byte[] ComputeServerVerifier(byte[] privateKey) + { + NetBigInteger x = new NetBigInteger(NetUtility.ToHexString(privateKey), 16); + + // Verifier (v) = g^x (mod N) + var serverVerifier = g.ModPow(x, N); + + return serverVerifier.ToByteArrayUnsigned(); + } + + /// + /// SHA hash data + /// + public static byte[] Hash(byte[] data) + { + var sha = GetHashAlgorithm(); + return sha.ComputeHash(data); + } + + /// + /// Compute client public ephemeral value (A) + /// + public static byte[] ComputeClientEphemeral(byte[] clientPrivateEphemeral) // a + { + // A= g^a (mod N) + NetBigInteger a = new NetBigInteger(NetUtility.ToHexString(clientPrivateEphemeral), 16); + NetBigInteger retval = g.ModPow(a, N); + + return retval.ToByteArrayUnsigned(); + } + + /// + /// Compute server ephemeral value (B) + /// + public static byte[] ComputeServerEphemeral(byte[] serverPrivateEphemeral, byte[] verifier) // b + { + var b = new NetBigInteger(NetUtility.ToHexString(serverPrivateEphemeral), 16); + var v = new NetBigInteger(NetUtility.ToHexString(verifier), 16); + + // B = kv + g^b (mod N) + var bb = g.ModPow(b, N); + var kv = v.Multiply(k); + var B = (kv.Add(bb)).Mod(N); + + return B.ToByteArrayUnsigned(); + } + + /// + /// Compute intermediate value (u) + /// + public static byte[] ComputeU(byte[] clientPublicEphemeral, byte[] serverPublicEphemeral) + { + // u = SHA-1(A || B) + string one = NetUtility.ToHexString(clientPublicEphemeral); + string two = NetUtility.ToHexString(serverPublicEphemeral); + + int len = 66; // Math.Max(one.Length, two.Length); + string ccstr = one.PadLeft(len, '0') + two.PadLeft(len, '0'); + + byte[] cc = NetUtility.ToByteArray(ccstr); + + var sha = GetHashAlgorithm(); + var ccHashed = sha.ComputeHash(cc); + + return new NetBigInteger(NetUtility.ToHexString(ccHashed), 16).ToByteArrayUnsigned(); + } + + /// + /// Computes the server session value + /// + public static byte[] ComputeServerSessionValue(byte[] clientPublicEphemeral, byte[] verifier, byte[] udata, byte[] serverPrivateEphemeral) + { + // S = (Av^u) ^ b (mod N) + var A = new NetBigInteger(NetUtility.ToHexString(clientPublicEphemeral), 16); + var v = new NetBigInteger(NetUtility.ToHexString(verifier), 16); + var u = new NetBigInteger(NetUtility.ToHexString(udata), 16); + var b = new NetBigInteger(NetUtility.ToHexString(serverPrivateEphemeral), 16); + + NetBigInteger retval = v.ModPow(u, N).Multiply(A).Mod(N).ModPow(b, N).Mod(N); + + return retval.ToByteArrayUnsigned(); + } + + /// + /// Computes the client session value + /// + public static byte[] ComputeClientSessionValue(byte[] serverPublicEphemeral, byte[] xdata, byte[] udata, byte[] clientPrivateEphemeral) + { + // (B - kg^x) ^ (a + ux) (mod N) + var B = new NetBigInteger(NetUtility.ToHexString(serverPublicEphemeral), 16); + var x = new NetBigInteger(NetUtility.ToHexString(xdata), 16); + var u = new NetBigInteger(NetUtility.ToHexString(udata), 16); + var a = new NetBigInteger(NetUtility.ToHexString(clientPrivateEphemeral), 16); + + var bx = g.ModPow(x, N); + var btmp = B.Add(N.Multiply(k)).Subtract(bx.Multiply(k)).Mod(N); + return btmp.ModPow(x.Multiply(u).Add(a), N).ToByteArrayUnsigned(); + } + + /// + /// Create XTEA symmetrical encryption object from sessionValue + /// + public static NetXtea CreateEncryption(NetPeer peer, byte[] sessionValue) + { + var sha = GetHashAlgorithm(); + var hash = sha.ComputeHash(sessionValue); + + var key = new byte[16]; + for(int i=0;i<16;i++) + { + key[i] = hash[i]; + for (int j = 1; j < hash.Length / 16; j++) + key[i] ^= hash[i + (j * 16)]; + } + + return new NetXtea(peer, key); + } + } +} diff --git a/Lidgren.Network/NetSendResult.cs b/Lidgren.Network/NetSendResult.cs new file mode 100644 index 0000000..9ceb5ba --- /dev/null +++ b/Lidgren.Network/NetSendResult.cs @@ -0,0 +1,30 @@ +using System; + +namespace Lidgren.Network +{ + /// + /// Result of a SendMessage call + /// + public enum NetSendResult + { + /// + /// Message failed to enqueue because there is no connection + /// + FailedNotConnected = 0, + + /// + /// Message was immediately sent + /// + Sent = 1, + + /// + /// Message was queued for delivery + /// + Queued = 2, + + /// + /// Message was dropped immediately since too many message were queued + /// + Dropped = 3 + } +} diff --git a/Lidgren.Network/NetSenderChannelBase.cs b/Lidgren.Network/NetSenderChannelBase.cs new file mode 100644 index 0000000..e9562b6 --- /dev/null +++ b/Lidgren.Network/NetSenderChannelBase.cs @@ -0,0 +1,19 @@ +using System; + +namespace Lidgren.Network +{ + internal abstract class NetSenderChannelBase + { + // access this directly to queue things in this channel + internal NetQueue m_queuedSends; + + internal abstract int WindowSize { get; } + + internal abstract int GetAllowedSends(); + + internal abstract NetSendResult Enqueue(NetOutgoingMessage message); + internal abstract void SendQueuedMessages(float now); + internal abstract void Reset(); + internal abstract void ReceiveAcknowledge(float now, int sequenceNumber); + } +} diff --git a/Lidgren.Network/NetServer.cs b/Lidgren.Network/NetServer.cs new file mode 100644 index 0000000..22e2eff --- /dev/null +++ b/Lidgren.Network/NetServer.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; + +namespace Lidgren.Network +{ + /// + /// Specialized version of NetPeer used for "server" peers + /// + public class NetServer : NetPeer + { + /// + /// NetServer constructor + /// + public NetServer(NetPeerConfiguration config) + : base(config) + { + config.AcceptIncomingConnections = true; + } + + /// + /// Send a message to all connections + /// + /// The message to send + /// How to deliver the message + public void SendToAll(NetOutgoingMessage msg, NetDeliveryMethod method) + { + var all = this.Connections; + if (all.Count <= 0) + return; + + SendMessage(msg, all, method, 0); + } + + /// + /// Send a message to all connections except one + /// + /// The message to send + /// How to deliver the message + /// Don't send to this particular connection + /// Which sequence channel to use for the message + public void SendToAll(NetOutgoingMessage msg, NetConnection except, NetDeliveryMethod method, int sequenceChannel) + { + var all = this.Connections; + if (all.Count <= 0) + return; + + if (except == null) + { + SendMessage(msg, all, method, sequenceChannel); + return; + } + + List recipients = new List(all.Count - 1); + foreach (var conn in all) + if (conn != except) + recipients.Add(conn); + + if (recipients.Count > 0) + SendMessage(msg, recipients, method, sequenceChannel); + } + + /// + /// Returns a string that represents this object + /// + public override string ToString() + { + return "[NetServer " + ConnectionsCount + " connections]"; + } + } +} diff --git a/Lidgren.Network/NetStoredReliableMessage.cs b/Lidgren.Network/NetStoredReliableMessage.cs new file mode 100644 index 0000000..bb2b2fc --- /dev/null +++ b/Lidgren.Network/NetStoredReliableMessage.cs @@ -0,0 +1,19 @@ +using System; + +namespace Lidgren.Network +{ + internal struct NetStoredReliableMessage + { + public int NumSent; + public float LastSent; + public NetOutgoingMessage Message; + public int SequenceNumber; + + public void Reset() + { + NumSent = 0; + LastSent = 0; + Message = null; + } + } +} diff --git a/Lidgren.Network/NetTime.cs b/Lidgren.Network/NetTime.cs new file mode 100644 index 0000000..e8d27ba --- /dev/null +++ b/Lidgren.Network/NetTime.cs @@ -0,0 +1,61 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ +#define IS_STOPWATCH_AVAILABLE + +using System; +using System.Collections.Generic; +using System.Text; +using System.Diagnostics; + +namespace Lidgren.Network +{ + /// + /// Time service + /// + public static class NetTime + { +#if IS_STOPWATCH_AVAILABLE + private static readonly long s_timeInitialized = Stopwatch.GetTimestamp(); + private static readonly double s_dInvFreq = 1.0 / (double)Stopwatch.Frequency; + + /// + /// Get number of seconds since the application started + /// + public static double Now { get { return (double)(Stopwatch.GetTimestamp() - s_timeInitialized) * s_dInvFreq; } } +#else + private static readonly uint s_timeInitialized = (uint)Environment.TickCount; + + /// + /// Get number of seconds since the application started + /// + public static double Now { get { return (double)((uint)Environment.TickCount - s_timeInitialized) / 1000.0; } } +#endif + + /// + /// Given seconds it will output a human friendly readable string (milliseconds if less than 60 seconds) + /// + public static string ToReadable(double seconds) + { + if (seconds > 60) + return TimeSpan.FromSeconds(seconds).ToString(); + return (seconds * 1000.0).ToString("N2") + " ms"; + } + } +} \ No newline at end of file diff --git a/Lidgren.Network/NetTuple.cs b/Lidgren.Network/NetTuple.cs new file mode 100644 index 0000000..fe3c276 --- /dev/null +++ b/Lidgren.Network/NetTuple.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Lidgren.Network +{ + // replace with BCL 4.0 Tuple<> when appropriate + internal struct NetTuple + { + public A Item1; + public B Item2; + + public NetTuple(A item1, B item2) + { + Item1 = item1; + Item2 = item2; + } + } +} diff --git a/Lidgren.Network/NetUPnP.cs b/Lidgren.Network/NetUPnP.cs new file mode 100644 index 0000000..2670dd7 --- /dev/null +++ b/Lidgren.Network/NetUPnP.cs @@ -0,0 +1,266 @@ +using System; +using System.IO; +using System.Xml; +using System.Net; +using System.Net.Sockets; +using System.Threading; + +namespace Lidgren.Network +{ + /// + /// Status of the UPnP capabilities + /// + public enum UPnPStatus + { + /// + /// Still discovering UPnP capabilities + /// + Discovering, + + /// + /// UPnP is not available + /// + NotAvailable, + + /// + /// UPnP is available and ready to use + /// + Available + } + + /// + /// UPnP support class + /// + public class NetUPnP + { + private const int c_discoveryTimeOutMillis = 1000; + + private string m_serviceUrl; + private string m_serviceName = ""; + private NetPeer m_peer; + private ManualResetEvent m_discoveryComplete = new ManualResetEvent(false); + + internal float m_discoveryResponseDeadline; + + private UPnPStatus m_status; + + /// + /// Status of the UPnP capabilities of this NetPeer + /// + public UPnPStatus Status { get { return m_status; } } + + /// + /// NetUPnP constructor + /// + public NetUPnP(NetPeer peer) + { + m_peer = peer; + m_discoveryResponseDeadline = float.MinValue; + } + + internal void Discover(NetPeer peer) + { + string str = +"M-SEARCH * HTTP/1.1\r\n" + +"HOST: 239.255.255.250:1900\r\n" + +"ST:upnp:rootdevice\r\n" + +"MAN:\"ssdp:discover\"\r\n" + +"MX:3\r\n\r\n"; + + m_status = UPnPStatus.Discovering; + + byte[] arr = System.Text.Encoding.UTF8.GetBytes(str); + + m_peer.LogDebug("Attempting UPnP discovery"); + peer.Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true); + peer.RawSend(arr, 0, arr.Length, new IPEndPoint(IPAddress.Broadcast, 1900)); + peer.Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, false); + + // allow some extra time for router to respond + // System.Threading.Thread.Sleep(50); + + m_discoveryResponseDeadline = (float)NetTime.Now + 6.0f; // arbitrarily chosen number, router gets 6 seconds to respond + m_status = UPnPStatus.Discovering; + } + + internal void ExtractServiceUrl(string resp) + { +#if !DEBUG + try + { +#endif + XmlDocument desc = new XmlDocument(); + desc.Load(WebRequest.Create(resp).GetResponse().GetResponseStream()); + XmlNamespaceManager nsMgr = new XmlNamespaceManager(desc.NameTable); + nsMgr.AddNamespace("tns", "urn:schemas-upnp-org:device-1-0"); + XmlNode typen = desc.SelectSingleNode("//tns:device/tns:deviceType/text()", nsMgr); + if (!typen.Value.Contains("InternetGatewayDevice")) + return; + + m_serviceName = "WANIPConnection"; + XmlNode node = desc.SelectSingleNode("//tns:service[tns:serviceType=\"urn:schemas-upnp-org:service:" + m_serviceName + ":1\"]/tns:controlURL/text()", nsMgr); + if (node == null) + { + //try another service name + m_serviceName = "WANPPPConnection"; + node = desc.SelectSingleNode("//tns:service[tns:serviceType=\"urn:schemas-upnp-org:service:" + m_serviceName + ":1\"]/tns:controlURL/text()", nsMgr); + if (node == null) + return; + } + + m_serviceUrl = CombineUrls(resp, node.Value); + m_peer.LogDebug("UPnP service ready"); + m_status = UPnPStatus.Available; + m_discoveryComplete.Set(); +#if !DEBUG + } + catch + { + m_peer.LogVerbose("Exception ignored trying to parse UPnP XML response"); + return; + } +#endif + } + + private static string CombineUrls(string gatewayURL, string subURL) + { + // Is Control URL an absolute URL? + if ((subURL.Contains("http:")) || (subURL.Contains("."))) + return subURL; + + gatewayURL = gatewayURL.Replace("http://", ""); // strip any protocol + int n = gatewayURL.IndexOf("/"); + if (n != -1) + gatewayURL = gatewayURL.Substring(0, n); // Use first portion of URL + return "http://" + gatewayURL + subURL; + } + + private bool CheckAvailability() + { + switch (m_status) + { + case UPnPStatus.NotAvailable: + return false; + case UPnPStatus.Available: + return true; + case UPnPStatus.Discovering: + if (m_discoveryComplete.WaitOne(c_discoveryTimeOutMillis)) + return true; + if (NetTime.Now > m_discoveryResponseDeadline) + m_status = UPnPStatus.NotAvailable; + return false; + } + return false; + } + + /// + /// Add a forwarding rule to the router using UPnP + /// + public bool ForwardPort(int port, string description) + { + if (!CheckAvailability()) + return false; + + IPAddress mask; + var client = NetUtility.GetMyAddress(out mask); + if (client == null) + return false; + + try + { + SOAPRequest(m_serviceUrl, + "" + + "" + + "" + port.ToString() + "" + + "" + ProtocolType.Udp.ToString().ToUpper(System.Globalization.CultureInfo.InvariantCulture) + "" + + "" + port.ToString() + "" + + "" + client.ToString() + "" + + "1" + + "" + description + "" + + "0" + + "", + "AddPortMapping"); + + m_peer.LogDebug("Sent UPnP port forward request"); + System.Threading.Thread.Sleep(50); + } + catch (Exception ex) + { + m_peer.LogWarning("UPnP port forward failed: " + ex.Message); + return false; + } + return true; + } + + /// + /// Delete a forwarding rule from the router using UPnP + /// + public bool DeleteForwardingRule(int port) + { + if (!CheckAvailability()) + return false; + + try + { + SOAPRequest(m_serviceUrl, + "" + + "" + + "" + + "" + port + "" + + "" + ProtocolType.Udp.ToString().ToUpper(System.Globalization.CultureInfo.InvariantCulture) + "" + + "", "DeletePortMapping"); + return true; + } + catch (Exception ex) + { + m_peer.LogWarning("UPnP delete forwarding rule failed: " + ex.Message); + return false; + } + } + + /// + /// Retrieve the extern ip using UPnP + /// + public IPAddress GetExternalIP() + { + if (!CheckAvailability()) + return null; + try + { + XmlDocument xdoc = SOAPRequest(m_serviceUrl, "" + + "", "GetExternalIPAddress"); + XmlNamespaceManager nsMgr = new XmlNamespaceManager(xdoc.NameTable); + nsMgr.AddNamespace("tns", "urn:schemas-upnp-org:device-1-0"); + string IP = xdoc.SelectSingleNode("//NewExternalIPAddress/text()", nsMgr).Value; + return IPAddress.Parse(IP); + } + catch (Exception ex) + { + m_peer.LogWarning("Failed to get external IP: " + ex.Message); + return null; + } + } + + private XmlDocument SOAPRequest(string url, string soap, string function) + { + string req = "" + + "" + + "" + + soap + + "" + + ""; + WebRequest r = HttpWebRequest.Create(url); + r.Method = "POST"; + byte[] b = System.Text.Encoding.UTF8.GetBytes(req); + r.Headers.Add("SOAPACTION", "\"urn:schemas-upnp-org:service:" + m_serviceName + ":1#" + function + "\""); + r.ContentType = "text/xml; charset=\"utf-8\""; + r.ContentLength = b.Length; + r.GetRequestStream().Write(b, 0, b.Length); + XmlDocument resp = new XmlDocument(); + WebResponse wres = r.GetResponse(); + Stream ress = wres.GetResponseStream(); + resp.Load(ress); + return resp; + } + } +} \ No newline at end of file diff --git a/Lidgren.Network/NetUnreliableSenderChannel.cs b/Lidgren.Network/NetUnreliableSenderChannel.cs new file mode 100644 index 0000000..01bb8e2 --- /dev/null +++ b/Lidgren.Network/NetUnreliableSenderChannel.cs @@ -0,0 +1,128 @@ +using System; +using System.Threading; + +namespace Lidgren.Network +{ + /// + /// Sender part of Selective repeat ARQ for a particular NetChannel + /// + internal sealed class NetUnreliableSenderChannel : NetSenderChannelBase + { + private NetConnection m_connection; + private int m_windowStart; + private int m_windowSize; + private int m_sendStart; + + private NetBitVector m_receivedAcks; + + internal override int WindowSize { get { return m_windowSize; } } + + internal NetUnreliableSenderChannel(NetConnection connection, int windowSize) + { + m_connection = connection; + m_windowSize = windowSize; + m_windowStart = 0; + m_sendStart = 0; + m_receivedAcks = new NetBitVector(NetConstants.NumSequenceNumbers); + m_queuedSends = new NetQueue(8); + } + + internal override int GetAllowedSends() + { + int retval = m_windowSize - ((m_sendStart + NetConstants.NumSequenceNumbers) - m_windowStart) % m_windowSize; + NetException.Assert(retval >= 0 && retval <= m_windowSize); + return retval; + } + + internal override void Reset() + { + m_receivedAcks.Clear(); + m_queuedSends.Clear(); + m_windowStart = 0; + m_sendStart = 0; + } + + internal override NetSendResult Enqueue(NetOutgoingMessage message) + { + int queueLen = m_queuedSends.Count + 1; + int left = GetAllowedSends(); + if (queueLen > left || (message.LengthBytes > m_connection.m_currentMTU && m_connection.m_peerConfiguration.UnreliableSizeBehaviour == NetUnreliableSizeBehaviour.DropAboveMTU)) + { + m_connection.Peer.Recycle(message); + return NetSendResult.Dropped; + } + + m_queuedSends.Enqueue(message); + return NetSendResult.Sent; + } + + // call this regularely + internal override void SendQueuedMessages(float now) + { + int num = GetAllowedSends(); + if (num < 1) + return; + + // queued sends + while (m_queuedSends.Count > 0 && num > 0) + { + NetOutgoingMessage om; + if (m_queuedSends.TryDequeue(out om)) + ExecuteSend(om); + num--; + } + } + + private void ExecuteSend(NetOutgoingMessage message) + { + m_connection.m_peer.VerifyNetworkThread(); + + int seqNr = m_sendStart; + m_sendStart = (m_sendStart + 1) % NetConstants.NumSequenceNumbers; + + m_connection.QueueSendMessage(message, seqNr); + + Interlocked.Decrement(ref message.m_recyclingCount); + if (message.m_recyclingCount <= 0) + m_connection.m_peer.Recycle(message); + + return; + } + + // remoteWindowStart is remote expected sequence number; everything below this has arrived properly + // seqNr is the actual nr received + internal override void ReceiveAcknowledge(float now, int seqNr) + { + // late (dupe), on time or early ack? + int relate = NetUtility.RelativeSequenceNumber(seqNr, m_windowStart); + + if (relate < 0) + { + //m_connection.m_peer.LogDebug("Received late/dupe ack for #" + seqNr); + return; // late/duplicate ack + } + + if (relate == 0) + { + //m_connection.m_peer.LogDebug("Received right-on-time ack for #" + seqNr); + + // ack arrived right on time + NetException.Assert(seqNr == m_windowStart); + + m_receivedAcks[m_windowStart] = false; + m_windowStart = (m_windowStart + 1) % NetConstants.NumSequenceNumbers; + + return; + } + + // Advance window to this position + m_receivedAcks[seqNr] = true; + + while (m_windowStart != seqNr) + { + m_receivedAcks[m_windowStart] = false; + m_windowStart = (m_windowStart + 1) % NetConstants.NumSequenceNumbers; + } + } + } +} diff --git a/Lidgren.Network/NetUnreliableSequencedReceiver.cs b/Lidgren.Network/NetUnreliableSequencedReceiver.cs new file mode 100644 index 0000000..e28a49f --- /dev/null +++ b/Lidgren.Network/NetUnreliableSequencedReceiver.cs @@ -0,0 +1,29 @@ +using System; + +namespace Lidgren.Network +{ + internal sealed class NetUnreliableSequencedReceiver : NetReceiverChannelBase + { + private int m_lastReceivedSequenceNumber = -1; + + public NetUnreliableSequencedReceiver(NetConnection connection) + : base(connection) + { + } + + internal override void ReceiveMessage(NetIncomingMessage msg) + { + int nr = msg.m_sequenceNumber; + + // ack no matter what + m_connection.QueueAck(msg.m_receivedMessageType, nr); + + int relate = NetUtility.RelativeSequenceNumber(nr, m_lastReceivedSequenceNumber + 1); + if (relate < 0) + return; // drop if late + + m_lastReceivedSequenceNumber = nr; + m_peer.ReleaseMessage(msg); + } + } +} diff --git a/Lidgren.Network/NetUnreliableUnorderedReceiver.cs b/Lidgren.Network/NetUnreliableUnorderedReceiver.cs new file mode 100644 index 0000000..b61bb1d --- /dev/null +++ b/Lidgren.Network/NetUnreliableUnorderedReceiver.cs @@ -0,0 +1,20 @@ +using System; + +namespace Lidgren.Network +{ + internal sealed class NetUnreliableUnorderedReceiver : NetReceiverChannelBase + { + public NetUnreliableUnorderedReceiver(NetConnection connection) + : base(connection) + { + } + + internal override void ReceiveMessage(NetIncomingMessage msg) + { + // ack no matter what + m_connection.QueueAck(msg.m_receivedMessageType, msg.m_sequenceNumber); + + m_peer.ReleaseMessage(msg); + } + } +} diff --git a/Lidgren.Network/NetUtility.cs b/Lidgren.Network/NetUtility.cs new file mode 100644 index 0000000..fff41f2 --- /dev/null +++ b/Lidgren.Network/NetUtility.cs @@ -0,0 +1,632 @@ +/* Copyright (c) 2010 Michael Lidgren + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +#if !__ANDROID__ && !IOS && !UNITY_WEBPLAYER && !UNITY_ANDROID && !UNITY_IPHONE +#define IS_FULL_NET_AVAILABLE +#endif + +using System; +using System.Net; + +#if IS_FULL_NET_AVAILABLE +using System.Net.NetworkInformation; +#endif + +using System.Net.Sockets; +using System.Text; +using System.Text.RegularExpressions; +using System.Collections.Generic; +using System.Security.Cryptography; + +namespace Lidgren.Network +{ + /// + /// Utility methods + /// + public static class NetUtility + { + /// + /// Resolve endpoint callback + /// + public delegate void ResolveEndPointCallback(IPEndPoint endPoint); + + /// + /// Resolve address callback + /// + public delegate void ResolveAddressCallback(IPAddress adr); + + /// + /// Get IPv4 endpoint from notation (xxx.xxx.xxx.xxx) or hostname and port number (asynchronous version) + /// + public static void ResolveAsync(string ipOrHost, int port, ResolveEndPointCallback callback) + { + ResolveAsync(ipOrHost, delegate(IPAddress adr) + { + if (adr == null) + { + callback(null); + } + else + { + callback(new IPEndPoint(adr, port)); + } + }); + } + + /// + /// Get IPv4 endpoint from notation (xxx.xxx.xxx.xxx) or hostname and port number + /// + public static IPEndPoint Resolve(string ipOrHost, int port) + { + IPAddress adr = Resolve(ipOrHost); + return new IPEndPoint(adr, port); + } + + /// + /// Get IPv4 address from notation (xxx.xxx.xxx.xxx) or hostname (asynchronous version) + /// + public static void ResolveAsync(string ipOrHost, ResolveAddressCallback callback) + { + if (string.IsNullOrEmpty(ipOrHost)) + throw new ArgumentException("Supplied string must not be empty", "ipOrHost"); + + ipOrHost = ipOrHost.Trim(); + + IPAddress ipAddress = null; + if (IPAddress.TryParse(ipOrHost, out ipAddress)) + { + if (ipAddress.AddressFamily == AddressFamily.InterNetwork) + { + callback(ipAddress); + return; + } + throw new ArgumentException("This method will not currently resolve other than ipv4 addresses"); + } + + // ok must be a host name + IPHostEntry entry; + try + { + Dns.BeginGetHostEntry(ipOrHost, delegate(IAsyncResult result) + { + try + { + entry = Dns.EndGetHostEntry(result); + } + catch (SocketException ex) + { + if (ex.SocketErrorCode == SocketError.HostNotFound) + { + //LogWrite(string.Format(CultureInfo.InvariantCulture, "Failed to resolve host '{0}'.", ipOrHost)); + callback(null); + return; + } + else + { + throw; + } + } + + if (entry == null) + { + callback(null); + return; + } + + // check each entry for a valid IP address + foreach (IPAddress ipCurrent in entry.AddressList) + { + if (ipCurrent.AddressFamily == AddressFamily.InterNetwork) + { + callback(ipCurrent); + return; + } + } + + callback(null); + }, null); + } + catch (SocketException ex) + { + if (ex.SocketErrorCode == SocketError.HostNotFound) + { + //LogWrite(string.Format(CultureInfo.InvariantCulture, "Failed to resolve host '{0}'.", ipOrHost)); + callback(null); + } + else + { + throw; + } + } + } + + /// + /// Get IPv4 address from notation (xxx.xxx.xxx.xxx) or hostname + /// + public static IPAddress Resolve(string ipOrHost) + { + if (string.IsNullOrEmpty(ipOrHost)) + throw new ArgumentException("Supplied string must not be empty", "ipOrHost"); + + ipOrHost = ipOrHost.Trim(); + + IPAddress ipAddress = null; + if (IPAddress.TryParse(ipOrHost, out ipAddress)) + { + if (ipAddress.AddressFamily == AddressFamily.InterNetwork) + return ipAddress; + throw new ArgumentException("This method will not currently resolve other than ipv4 addresses"); + } + + // ok must be a host name + try + { + var addresses = Dns.GetHostAddresses(ipOrHost); + if (addresses == null) + return null; + foreach (var address in addresses) + { + if (address.AddressFamily == AddressFamily.InterNetwork) + return address; + } + return null; + } + catch (SocketException ex) + { + if (ex.SocketErrorCode == SocketError.HostNotFound) + { + //LogWrite(string.Format(CultureInfo.InvariantCulture, "Failed to resolve host '{0}'.", ipOrHost)); + return null; + } + else + { + throw; + } + } + } + +#if IS_FULL_NET_AVAILABLE + + private static NetworkInterface GetNetworkInterface() + { + IPGlobalProperties computerProperties = IPGlobalProperties.GetIPGlobalProperties(); + if (computerProperties == null) + return null; + + NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); + if (nics == null || nics.Length < 1) + return null; + + NetworkInterface best = null; + foreach (NetworkInterface adapter in nics) + { + if (adapter.NetworkInterfaceType == NetworkInterfaceType.Loopback || adapter.NetworkInterfaceType == NetworkInterfaceType.Unknown) + continue; + if (!adapter.Supports(NetworkInterfaceComponent.IPv4)) + continue; + if (best == null) + best = adapter; + if (adapter.OperationalStatus != OperationalStatus.Up) + continue; + + // make sure this adapter has any ipv4 addresses + IPInterfaceProperties properties = adapter.GetIPProperties(); + foreach (UnicastIPAddressInformation unicastAddress in properties.UnicastAddresses) + { + if (unicastAddress != null && unicastAddress.Address != null && unicastAddress.Address.AddressFamily == AddressFamily.InterNetwork) + { + // Yes it does, return this network interface. + return adapter; + } + } + } + return best; + } + + /// + /// Returns the physical (MAC) address for the first usable network interface + /// + public static PhysicalAddress GetMacAddress() + { + NetworkInterface ni = GetNetworkInterface(); + if (ni == null) + return null; + return ni.GetPhysicalAddress(); + } +#endif + + /// + /// Create a hex string from an Int64 value + /// + public static string ToHexString(long data) + { + return ToHexString(BitConverter.GetBytes(data)); + } + + /// + /// Create a hex string from an array of bytes + /// + public static string ToHexString(byte[] data) + { + return ToHexString(data, 0, data.Length); + } + + /// + /// Create a hex string from an array of bytes + /// + public static string ToHexString(byte[] data, int offset, int length) + { + char[] c = new char[length * 2]; + byte b; + for (int i = 0; i < length; ++i) + { + b = ((byte)(data[offset + i] >> 4)); + c[i * 2] = (char)(b > 9 ? b + 0x37 : b + 0x30); + b = ((byte)(data[offset + i] & 0xF)); + c[i * 2 + 1] = (char)(b > 9 ? b + 0x37 : b + 0x30); + } + return new string(c); + } + + /// + /// Gets the local broadcast address + /// + public static IPAddress GetBroadcastAddress() + { +#if __ANDROID__ + try{ + Android.Net.Wifi.WifiManager wifi = (Android.Net.Wifi.WifiManager)Android.App.Application.Context.GetSystemService(Android.App.Activity.WifiService); + if (wifi.IsWifiEnabled) + { + var dhcp = wifi.DhcpInfo; + + int broadcast = (dhcp.IpAddress & dhcp.Netmask) | ~dhcp.Netmask; + byte[] quads = new byte[4]; + for (int k = 0; k < 4; k++) + { + quads[k] = (byte) ((broadcast >> k * 8) & 0xFF); + } + return new IPAddress(quads); + } + } + catch // Catch Access Denied Errors + { + return IPAddress.Broadcast; + } +#endif +#if IS_FULL_NET_AVAILABLE + try + { + NetworkInterface ni = GetNetworkInterface(); + if (ni == null) + { + return null; + } + + IPInterfaceProperties properties = ni.GetIPProperties(); + foreach (UnicastIPAddressInformation unicastAddress in properties.UnicastAddresses) + { + if (unicastAddress != null && unicastAddress.Address != null && unicastAddress.Address.AddressFamily == AddressFamily.InterNetwork) + { + var mask = unicastAddress.IPv4Mask; + byte[] ipAdressBytes = unicastAddress.Address.GetAddressBytes(); + byte[] subnetMaskBytes = mask.GetAddressBytes(); + + if (ipAdressBytes.Length != subnetMaskBytes.Length) + throw new ArgumentException("Lengths of IP address and subnet mask do not match."); + + byte[] broadcastAddress = new byte[ipAdressBytes.Length]; + for (int i = 0; i < broadcastAddress.Length; i++) + { + broadcastAddress[i] = (byte)(ipAdressBytes[i] | (subnetMaskBytes[i] ^ 255)); + } + return new IPAddress(broadcastAddress); + } + } + } + catch // Catch any errors + { + return IPAddress.Broadcast; + } +#endif + return IPAddress.Broadcast; + } + + /// + /// Gets my local IPv4 address (not necessarily external) and subnet mask + /// + public static IPAddress GetMyAddress(out IPAddress mask) + { + mask = null; +#if __ANDROID__ + try + { + Android.Net.Wifi.WifiManager wifi = (Android.Net.Wifi.WifiManager)Android.App.Application.Context.GetSystemService(Android.App.Activity.WifiService); + if (!wifi.IsWifiEnabled) return null; + var dhcp = wifi.DhcpInfo; + + int addr = dhcp.IpAddress; + byte[] quads = new byte[4]; + for (int k = 0; k < 4; k++) + { + quads[k] = (byte) ((addr >> k * 8) & 0xFF); + } + return new IPAddress(quads); + } + catch // Catch Access Denied errors + { + return null; + } + +#endif +#if IS_FULL_NET_AVAILABLE + NetworkInterface ni = GetNetworkInterface(); + if (ni == null) + { + mask = null; + return null; + } + + IPInterfaceProperties properties = ni.GetIPProperties(); + foreach (UnicastIPAddressInformation unicastAddress in properties.UnicastAddresses) + { + if (unicastAddress != null && unicastAddress.Address != null && unicastAddress.Address.AddressFamily == AddressFamily.InterNetwork) + { + mask = unicastAddress.IPv4Mask; + return unicastAddress.Address; + } + } +#endif + return null; + } + + /// + /// Returns true if the IPEndPoint supplied is on the same subnet as this host + /// + public static bool IsLocal(IPEndPoint endPoint) + { + if (endPoint == null) + return false; + return IsLocal(endPoint.Address); + } + + /// + /// Returns true if the IPAddress supplied is on the same subnet as this host + /// + public static bool IsLocal(IPAddress remote) + { + IPAddress mask; + IPAddress local = GetMyAddress(out mask); + + if (mask == null) + return false; + + uint maskBits = BitConverter.ToUInt32(mask.GetAddressBytes(), 0); + uint remoteBits = BitConverter.ToUInt32(remote.GetAddressBytes(), 0); + uint localBits = BitConverter.ToUInt32(local.GetAddressBytes(), 0); + + // compare network portions + return ((remoteBits & maskBits) == (localBits & maskBits)); + } + + /// + /// Returns how many bits are necessary to hold a certain number + /// + [CLSCompliant(false)] + public static int BitsToHoldUInt(uint value) + { + int bits = 1; + while ((value >>= 1) != 0) + bits++; + return bits; + } + + /// + /// Returns how many bytes are required to hold a certain number of bits + /// + public static int BytesToHoldBits(int numBits) + { + return (numBits + 7) / 8; + } + + internal static UInt32 SwapByteOrder(UInt32 value) + { + return + ((value & 0xff000000) >> 24) | + ((value & 0x00ff0000) >> 8) | + ((value & 0x0000ff00) << 8) | + ((value & 0x000000ff) << 24); + } + + internal static UInt64 SwapByteOrder(UInt64 value) + { + return + ((value & 0xff00000000000000L) >> 56) | + ((value & 0x00ff000000000000L) >> 40) | + ((value & 0x0000ff0000000000L) >> 24) | + ((value & 0x000000ff00000000L) >> 8) | + ((value & 0x00000000ff000000L) << 8) | + ((value & 0x0000000000ff0000L) << 24) | + ((value & 0x000000000000ff00L) << 40) | + ((value & 0x00000000000000ffL) << 56); + } + + internal static bool CompareElements(byte[] one, byte[] two) + { + if (one.Length != two.Length) + return false; + for (int i = 0; i < one.Length; i++) + if (one[i] != two[i]) + return false; + return true; + } + + /// + /// Convert a hexadecimal string to a byte array + /// + public static byte[] ToByteArray(String hexString) + { + byte[] retval = new byte[hexString.Length / 2]; + for (int i = 0; i < hexString.Length; i += 2) + retval[i / 2] = Convert.ToByte(hexString.Substring(i, 2), 16); + return retval; + } + + /// + /// Converts a number of bytes to a shorter, more readable string representation + /// + public static string ToHumanReadable(long bytes) + { + if (bytes < 4000) // 1-4 kb is printed in bytes + return bytes + " bytes"; + if (bytes < 1000 * 1000) // 4-999 kb is printed in kb + return Math.Round(((double)bytes / 1000.0), 2) + " kilobytes"; + return Math.Round(((double)bytes / (1000.0 * 1000.0)), 2) + " megabytes"; // else megabytes + } + + internal static int RelativeSequenceNumber(int nr, int expected) + { + return (nr - expected + NetConstants.NumSequenceNumbers + (NetConstants.NumSequenceNumbers / 2)) % NetConstants.NumSequenceNumbers - (NetConstants.NumSequenceNumbers / 2); + + // old impl: + //int retval = ((nr + NetConstants.NumSequenceNumbers) - expected) % NetConstants.NumSequenceNumbers; + //if (retval > (NetConstants.NumSequenceNumbers / 2)) + // retval -= NetConstants.NumSequenceNumbers; + //return retval; + } + + /// + /// Gets the window size used internally in the library for a certain delivery method + /// + public static int GetWindowSize(NetDeliveryMethod method) + { + switch (method) + { + case NetDeliveryMethod.Unknown: + return 0; + + case NetDeliveryMethod.Unreliable: + case NetDeliveryMethod.UnreliableSequenced: + return NetConstants.UnreliableWindowSize; + + case NetDeliveryMethod.ReliableOrdered: + return NetConstants.ReliableOrderedWindowSize; + + case NetDeliveryMethod.ReliableSequenced: + case NetDeliveryMethod.ReliableUnordered: + default: + return NetConstants.DefaultWindowSize; + } + } + + // shell sort + internal static void SortMembersList(System.Reflection.MemberInfo[] list) + { + int h; + int j; + System.Reflection.MemberInfo tmp; + + h = 1; + while (h * 3 + 1 <= list.Length) + h = 3 * h + 1; + + while (h > 0) + { + for (int i = h - 1; i < list.Length; i++) + { + tmp = list[i]; + j = i; + while (true) + { + if (j >= h) + { + if (string.Compare(list[j - h].Name, tmp.Name, StringComparison.InvariantCulture) > 0) + { + list[j] = list[j - h]; + j -= h; + } + else + break; + } + else + break; + } + + list[j] = tmp; + } + h /= 3; + } + } + + internal static NetDeliveryMethod GetDeliveryMethod(NetMessageType mtp) + { + if (mtp >= NetMessageType.UserReliableOrdered1) + return NetDeliveryMethod.ReliableOrdered; + else if (mtp >= NetMessageType.UserReliableSequenced1) + return NetDeliveryMethod.ReliableSequenced; + else if (mtp >= NetMessageType.UserReliableUnordered) + return NetDeliveryMethod.ReliableUnordered; + else if (mtp >= NetMessageType.UserSequenced1) + return NetDeliveryMethod.UnreliableSequenced; + return NetDeliveryMethod.Unreliable; + } + + /// + /// Creates a comma delimited string from a lite of items + /// + public static string MakeCommaDelimitedList(IList list) + { + var cnt = list.Count; + StringBuilder bdr = new StringBuilder(cnt * 5); // educated guess + for(int i=0;i + /// Create a SHA1 digest from a string + /// + public static byte[] CreateSHA1Hash(string key) + { + using (var sha = new SHA1CryptoServiceProvider()) + return sha.ComputeHash(Encoding.UTF8.GetBytes(key)); + } + + /// + /// Create a SHA1 digest from a byte buffer + /// + public static byte[] CreateSHA1Hash(byte[] data) + { + using (var sha = new SHA1CryptoServiceProvider()) + return sha.ComputeHash(data); + } + + /// + /// Create a SHA1 digest from a byte buffer + /// + public static byte[] CreateSHA1Hash(byte[] data, int offset, int count) + { + using (var sha = new SHA1CryptoServiceProvider()) + return sha.ComputeHash(data, offset, count); + } + } +} \ No newline at end of file diff --git a/Lidgren.Network/Properties/AssemblyInfo.cs b/Lidgren.Network/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..d700560 --- /dev/null +++ b/Lidgren.Network/Properties/AssemblyInfo.cs @@ -0,0 +1,37 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Lidgren.Network")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lidgren.Network")] +[assembly: AssemblyCopyright("Copyright © 2012")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("78f2a988-46e1-4fc4-b7b4-dd2cbe46da6a")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("2012.1.7.0")] +[assembly: AssemblyFileVersion("2012.1.7.0")] +[assembly: System.CLSCompliant(true)] \ No newline at end of file diff --git a/Neoforce/ArchiveManager.cs b/Neoforce/ArchiveManager.cs new file mode 100644 index 0000000..1bb86d5 --- /dev/null +++ b/Neoforce/ArchiveManager.cs @@ -0,0 +1,286 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: ArchiveManager.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using System; +using System.Collections.Generic; +using System.IO; +using Microsoft.Xna.Framework.Content; +using TomShane.Neoforce.External.Zip; +using System.Globalization; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + #region //// Classes /////////// + + //////////////////////////////////////////////////////////////////////////// + /// + public class ArchiveManager : ContentManager + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private string archivePath = null; + private ZipFile archive = null; + private bool useArchive = false; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + /// + public virtual string ArchivePath + { + get { return archivePath; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public bool UseArchive + { + get { return useArchive; } + set { useArchive = value; } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + /// + public ArchiveManager(IServiceProvider serviceProvider) : this(serviceProvider, null) { } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + public ArchiveManager(IServiceProvider serviceProvider, string archive): base(serviceProvider) + { + if (archive != null) + { + this.archive = ZipFile.Read(archive); + archivePath = archive; + useArchive = true; + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + /// + protected override Stream OpenStream(string assetName) + { + if (useArchive && archive != null) + { + assetName = assetName.Replace("\\", "/"); + if (assetName.StartsWith("/")) assetName = assetName.Remove(0, 1); + + string fullAssetName = (assetName + ".xnb").ToLower(); + + foreach (ZipEntry entry in archive) + { + ZipDirEntry ze = new ZipDirEntry(entry); + + string entryName = entry.FileName.ToLower(); + + if (entryName == fullAssetName) + { + return entry.GetStream(); + } + } + throw new Exception("Cannot find asset \"" + assetName + "\" in the archive."); + } + else + { + return base.OpenStream(assetName); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + public string[] GetAssetNames() + { + if (useArchive && archive != null) + { + List filenames = new List(); + + foreach (ZipEntry entry in archive) + { + string name = entry.FileName; + if (name.EndsWith(".xnb")) + { + name = name.Remove(name.Length - 4, 4); + filenames.Add(name); + } + } + return filenames.ToArray(); + } + else + { + return null; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + public string[] GetAssetNames(string path) + { + if (useArchive && archive != null) + { + if (path != null && path != "" && path != "\\" && path != "/") + { + List filenames = new List(); + + foreach (ZipEntry entry in archive) + { + string name = entry.FileName; + if (name.EndsWith(".xnb")) + { + name = name.Remove(name.Length - 4, 4); + } + + string[] parts = name.Split('/'); + string dir = ""; + for (int i = 0; i < parts.Length - 1; i++) + { + dir += parts[i] + '/'; + } + + path = path.Replace("\\", "/"); + if (path.StartsWith("/")) path = path.Remove(0, 1); + if (!path.EndsWith("/")) path += '/'; + + if (dir.ToLower() == path.ToLower() && !name.EndsWith("/")) + { + filenames.Add(name); + } + } + return filenames.ToArray(); + } + else + { + return GetAssetNames(); + } + } + else + { + return null; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + public Stream GetFileStream(string filename) + { + if (useArchive && archive != null) + { + filename = filename.Replace("\\", "/").ToLower(); + if (filename.StartsWith("/")) filename = filename.Remove(0, 1); + + foreach (ZipEntry entry in archive) + { + string entryName = entry.FileName.ToLower(); + + if (entryName.Equals(filename)) + return entry.GetStream(); + } + + throw new Exception("Cannot find file \"" + filename + "\" in the archive."); + } + else + { + return null; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public string[] GetDirectories(string path) + { + if (useArchive && archive != null) + { + if (path != null && path != "" && path != "\\" && path != "/") + { + List dirs = new List(); + + path = path.Replace("\\", "/"); + if (path.StartsWith("/")) path = path.Remove(0, 1); + if (!path.EndsWith("/")) path += '/'; + + foreach (ZipEntry entry in archive) + { + string name = entry.FileName; + if (name.ToLower().StartsWith(path.ToLower())) + { + int i = name.IndexOf("/", path.Length); + string item = name.Substring(path.Length, i - path.Length) + "\\"; + if (!dirs.Contains(item)) + { + dirs.Add(item); + } + } + } + return dirs.ToArray(); + } + else + { + return GetAssetNames(); + } + } + else if (Directory.Exists(path)) + { + string[] dirs = Directory.GetDirectories(path); + + for (int i = 0; i < dirs.Length; i++) + { + string[] parts = dirs[i].Split('\\'); + dirs[i] = parts[parts.Length - 1] + '\\'; + } + + return dirs; + } + else return null; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + +} diff --git a/Neoforce/Bevel.cs b/Neoforce/Bevel.cs new file mode 100644 index 0000000..a7995db --- /dev/null +++ b/Neoforce/Bevel.cs @@ -0,0 +1,306 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: Bevel.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +using Microsoft.Xna.Framework; +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework.Graphics; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + #region //// Enums ///////////// + + //////////////////////////////////////////////////////////////////////////// + public enum BevelStyle + { + None, + Flat, + Etched, + Bumped, + Lowered, + Raised + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public enum BevelBorder + { + None, + Left, + Top, + Right, + Bottom, + All + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + public class Bevel: Control + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private BevelBorder border = BevelBorder.All; + private BevelStyle style = BevelStyle.Etched; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public BevelBorder Border + { + get { return border; } + set + { + if (border != value) + { + border = value; + if (!Suspended) OnBorderChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public BevelStyle Style + { + get { return style; } + set + { + if (style != value) + { + style = value; + if (!Suspended) OnStyleChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + public event EventHandler BorderChanged; + public event EventHandler StyleChanged; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public Bevel(Manager manager): base(manager) + { + CanFocus = false; + Passive = true; + Width = 64; + Height = 64; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + if (Border != BevelBorder.None && Style != BevelStyle.None) + { + if (Border != BevelBorder.All) + { + DrawPart(renderer, rect, Border, Style, false); + } + else + { + DrawPart(renderer, rect, BevelBorder.Left, Style, true); + DrawPart(renderer, rect, BevelBorder.Top, Style, true); + DrawPart(renderer, rect, BevelBorder.Right, Style, true); + DrawPart(renderer, rect, BevelBorder.Bottom, Style, true); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void DrawPart(Renderer renderer, Rectangle rect, BevelBorder pos, BevelStyle style, bool all) + { + SkinLayer layer = Skin.Layers["Control"]; + Color c1 = Utilities.ParseColor(layer.Attributes["LightColor"].Value); + Color c2 = Utilities.ParseColor(layer.Attributes["DarkColor"].Value); + Color c3 = Utilities.ParseColor(layer.Attributes["FlatColor"].Value); + + if (Color != UndefinedColor) c3 = Color; + + Texture2D img = Skin.Layers["Control"].Image.Resource; + + int x1 = 0; int y1 = 0; int w1 = 0; int h1 = 0; + int x2 = 0; int y2 = 0; int w2 = 0; int h2 = 0; + + if (style == BevelStyle.Bumped || style == BevelStyle.Etched) + { + if (all && (pos == BevelBorder.Top || pos == BevelBorder.Bottom)) + { + rect = new Rectangle(rect.Left + 1, rect.Top, rect.Width - 2, rect.Height); + } + else if (all && (pos == BevelBorder.Left)) + { + rect = new Rectangle(rect.Left, rect.Top, rect.Width, rect.Height - 1); + } + switch (pos) + { + case BevelBorder.Left: + { + x1 = rect.Left; y1 = rect.Top; w1 = 1; h1 = rect.Height; + x2 = x1 + 1; y2 = y1; w2 = w1; h2 = h1; + break; + } + case BevelBorder.Top: + { + x1 = rect.Left; y1 = rect.Top; w1 = rect.Width; h1 = 1; + x2 = x1; y2 = y1 + 1; w2 = w1; h2 = h1; + break; + } + case BevelBorder.Right: + { + x1 = rect.Left + rect.Width - 2; y1 = rect.Top; w1 = 1; h1 = rect.Height; + x2 = x1 + 1; y2 = y1; w2 = w1; h2 = h1; + break; + } + case BevelBorder.Bottom: + { + x1 = rect.Left; y1 = rect.Top + rect.Height - 2; w1 = rect.Width; h1 = 1; + x2 = x1; y2 = y1 + 1; w2 = w1; h2 = h1; + break; + } + } + } + else + { + switch (pos) + { + case BevelBorder.Left: + { + x1 = rect.Left; y1 = rect.Top; w1 = 1; h1 = rect.Height; + break; + } + case BevelBorder.Top: + { + x1 = rect.Left; y1 = rect.Top; w1 = rect.Width; h1 = 1; + break; + } + case BevelBorder.Right: + { + x1 = rect.Left + rect.Width - 1; y1 = rect.Top; w1 = 1; h1 = rect.Height; + break; + } + case BevelBorder.Bottom: + { + x1 = rect.Left; y1 = rect.Top + rect.Height - 1; w1 = rect.Width; h1 = 1; + break; + } + } + } + + switch (Style) + { + case BevelStyle.Bumped: + { + renderer.Draw(img, new Rectangle(x1, y1, w1, h1), c1); + renderer.Draw(img, new Rectangle(x2, y2, w2, h2), c2); + break; + } + case BevelStyle.Etched: + { + renderer.Draw(img, new Rectangle(x1, y1, w1, h1), c2); + renderer.Draw(img, new Rectangle(x2, y2, w2, h2), c1); + break; + } + case BevelStyle.Raised: + { + Color c = c1; + if (pos == BevelBorder.Left || pos == BevelBorder.Top) c = c1; + else c = c2; + + renderer.Draw(img, new Rectangle(x1, y1, w1, h1), c); + break; + } + case BevelStyle.Lowered: + { + Color c = c1; + if (pos == BevelBorder.Left || pos == BevelBorder.Top) c = c2; + else c = c1; + + renderer.Draw(img, new Rectangle(x1, y1, w1, h1), c); + break; + } + default: + { + renderer.Draw(img, new Rectangle(x1, y1, w1, h1), c3); + break; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnBorderChanged(EventArgs e) + { + if (BorderChanged != null) BorderChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnStyleChanged(EventArgs e) + { + if (StyleChanged != null) StyleChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + + #endregion + + } + +} diff --git a/Neoforce/Button.cs b/Neoforce/Button.cs new file mode 100644 index 0000000..0850113 --- /dev/null +++ b/Neoforce/Button.cs @@ -0,0 +1,294 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: Button.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + + +#region //// Using ///////////// + +using Microsoft.Xna.Framework; +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework.Graphics; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + #region //// Enums ///////////// + + //////////////////////////////////////////////////////////////////////////// + /// + public enum SizeMode + { + Normal, + Auto, + Centered, + Stretched, + /// + /// Only Supported by ImageBox + /// + Tiled + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + public enum ButtonMode + { + Normal, + PushButton + } + //////////////////////////////////////////////////////////////////////////// + + + #endregion + + #region //// Classes /////////// + + //////////////////////////////////////////////////////////////////////////// + /// + public class Glyph + { + //////////////////////////////////////////////////////////////////////////// + public Texture2D Image = null; + public SizeMode SizeMode = SizeMode.Stretched; + public Color Color = Color.White; + public Point Offset = Point.Zero; + public Rectangle SourceRect = Rectangle.Empty; + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public Glyph(Texture2D image) + { + Image = image; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public Glyph(Texture2D image, Rectangle sourceRect): this(image) + { + SourceRect = sourceRect; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + public class Button: ButtonBase + { + + #region //// Consts //////////// + + //////////////////////////////////////////////////////////////////////////// + private const string skButton = "Button"; + private const string lrButton = "Control"; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private Glyph glyph = null; + private ModalResult modalResult = ModalResult.None; + private ButtonMode mode = ButtonMode.Normal; + private bool pushed = false; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public Glyph Glyph + { + get { return glyph; } + set + { + glyph = value; + if (!Suspended) OnGlyphChanged(new EventArgs()); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public ModalResult ModalResult + { + get { return modalResult; } + set { modalResult = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public ButtonMode Mode + { + get { return mode; } + set { mode = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public bool Pushed + { + get { return pushed; } + set + { + pushed = value; + Invalidate(); + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + public event EventHandler GlyphChanged; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public Button(Manager manager): base(manager) + { + SetDefaultSize(72, 24); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Destructors /////// + + //////////////////////////////////////////////////////////////////////////// + protected override void Dispose(bool disposing) + { + if (disposing) + { + } + base.Dispose(disposing); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + Skin = new SkinControl(Manager.Skin.Controls[skButton]); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + + if (mode == ButtonMode.PushButton && pushed) + { + SkinLayer l = Skin.Layers[lrButton]; + renderer.DrawLayer(l, rect, l.States.Pressed.Color, l.States.Pressed.Index); + if (l.States.Pressed.Overlay) + { + renderer.DrawLayer(l, rect, l.Overlays.Pressed.Color, l.Overlays.Pressed.Index); + } + } + else + { + base.DrawControl(renderer, rect, gameTime); + } + + SkinLayer layer = Skin.Layers[lrButton]; + SpriteFont font = (layer.Text != null && layer.Text.Font != null) ? layer.Text.Font.Resource : null; + Color col = Color.White; + int ox = 0; int oy = 0; + + if (ControlState == ControlState.Pressed) + { + if (layer.Text != null) col = layer.Text.Colors.Pressed; + ox = 1; oy = 1; + } + if (glyph != null) + { + Margins cont = layer.ContentMargins; + Rectangle r = new Rectangle(rect.Left + cont.Left, + rect.Top + cont.Top, + rect.Width - cont.Horizontal, + rect.Height - cont.Vertical); + renderer.DrawGlyph(glyph, r); + } + else + { + renderer.DrawString(this, layer, Text, rect, true, ox, oy); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void OnGlyphChanged(EventArgs e) + { + if (GlyphChanged != null) GlyphChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnClick(EventArgs e) + { + MouseEventArgs ex = (e is MouseEventArgs) ? (MouseEventArgs)e : new MouseEventArgs(); + + if (ex.Button == MouseButton.Left || ex.Button == MouseButton.None) + { + pushed = !pushed; + } + + base.OnClick(e); + + if ((ex.Button == MouseButton.Left || ex.Button == MouseButton.None) && Root != null) + { + if (Root is Window) + { + Window wnd = (Window)Root; + if (ModalResult != ModalResult.None) + { + wnd.Close(ModalResult); + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + + #endregion + +} diff --git a/Neoforce/ButtonBase.cs b/Neoforce/ButtonBase.cs new file mode 100644 index 0000000..5de4bb3 --- /dev/null +++ b/Neoforce/ButtonBase.cs @@ -0,0 +1,117 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: ButtonBase.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + #region //// Classes /////////// + + //////////////////////////////////////////////////////////////////////////// + /// + public abstract class ButtonBase: Control + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public override ControlState ControlState + { + get + { + if (DesignMode) return ControlState.Enabled; + else if (Suspended) return ControlState.Disabled; + else + { + if (!Enabled) return ControlState.Disabled; + + if ((Pressed[(int)MouseButton.Left] && Inside) || (Focused && (Pressed[(int)GamePadActions.Press] || Pressed[(int)MouseButton.None]))) return ControlState.Pressed; + else if (Hovered && Inside) return ControlState.Hovered; + else if ((Focused && !Inside) || (Hovered && !Inside) || (Focused && !Hovered && Inside)) return ControlState.Focused; + else return ControlState.Enabled; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + protected ButtonBase(Manager manager) + : base(manager) + { + SetDefaultSize(72, 24); + DoubleClicks = false; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnClick(EventArgs e) + { + MouseEventArgs ex = (e is MouseEventArgs) ? (MouseEventArgs)e : new MouseEventArgs(); + if (ex.Button == MouseButton.Left || ex.Button == MouseButton.None) + { + base.OnClick(e); + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + + //////////////////////////////////////////////////////////////////////////// + + #endregion + +} diff --git a/Neoforce/CheckBox.cs b/Neoforce/CheckBox.cs new file mode 100644 index 0000000..0b1cb16 --- /dev/null +++ b/Neoforce/CheckBox.cs @@ -0,0 +1,158 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: CheckBox.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public class CheckBox: ButtonBase + { + + #region //// Consts //////////// + + //////////////////////////////////////////////////////////////////////////// + private const string skCheckBox = "CheckBox"; + private const string lrCheckBox = "Control"; + private const string lrChecked = "Checked"; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private bool state = false; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public virtual bool Checked + { + get + { + return state; + } + set + { + state = value; + Invalidate(); + if (!Suspended) OnCheckedChanged(new EventArgs()); + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + public event EventHandler CheckedChanged; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public CheckBox(Manager manager): base(manager) + { + CheckLayer(Skin, lrChecked); + + Width = 64; + Height = 16; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + Skin = new SkinControl(Manager.Skin.Controls[skCheckBox]); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + SkinLayer layer = Skin.Layers[lrChecked]; + SkinText font = Skin.Layers[lrChecked].Text; + + if (!state) + { + layer = Skin.Layers[lrCheckBox]; + font = Skin.Layers[lrCheckBox].Text; + } + + rect.Width = layer.Width; + rect.Height = layer.Height; + Rectangle rc = new Rectangle(rect.Left + rect.Width + 4, rect.Y, Width - (layer.Width + 4), rect.Height); + + renderer.DrawLayer(this, layer, rect); + renderer.DrawString(this, layer, Text, rc, false, 0, 0); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnClick(EventArgs e) + { + MouseEventArgs ex = (e is MouseEventArgs) ? (MouseEventArgs)e : new MouseEventArgs(); + + if (ex.Button == MouseButton.Left || ex.Button == MouseButton.None) + { + Checked = !Checked; + } + base.OnClick(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnCheckedChanged(EventArgs e) + { + if (CheckedChanged != null) CheckedChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + + #endregion + + } + +} diff --git a/Neoforce/ClipBox.cs b/Neoforce/ClipBox.cs new file mode 100644 index 0000000..ca4716c --- /dev/null +++ b/Neoforce/ClipBox.cs @@ -0,0 +1,65 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: ClipBox.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + + + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public class ClipBox: Control + { + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public ClipBox(Manager manager): base(manager) + { + Color = Color.Transparent; + BackColor = Color.Transparent; + CanFocus = false; + Passive = true; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + base.DrawControl(renderer, rect, gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} \ No newline at end of file diff --git a/Neoforce/ClipControl.cs b/Neoforce/ClipControl.cs new file mode 100644 index 0000000..2ad5ffb --- /dev/null +++ b/Neoforce/ClipControl.cs @@ -0,0 +1,181 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: Control.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public class ClipControl: Control + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private ClipBox clientArea; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public virtual ClipBox ClientArea + { + get { return clientArea; } + set { clientArea = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public override Margins ClientMargins + { + get + { + return base.ClientMargins; + } + set + { + base.ClientMargins = value; + if (clientArea != null) + { + clientArea.Left = ClientLeft; + clientArea.Top = ClientTop; + clientArea.Width = ClientWidth; + clientArea.Height = ClientHeight; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public ClipControl(Manager manager): base(manager) + { + clientArea = new ClipBox(manager); + + clientArea.Init(); + clientArea.MinimumWidth = 0; + clientArea.MinimumHeight = 0; + clientArea.Left = ClientLeft; + clientArea.Top = ClientTop; + clientArea.Width = ClientWidth; + clientArea.Height = ClientHeight; + + base.Add(clientArea); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void Add(Control control, bool client) + { + if (client) + { + clientArea.Add(control); + } + else + { + base.Add(control); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Add(Control control) + { + Add(control, true); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Remove(Control control) + { + base.Remove(control); + clientArea.Remove(control); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void Update(GameTime gameTime) + { + base.Update(gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + base.DrawControl(renderer, rect, gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnResize(ResizeEventArgs e) + { + base.OnResize(e); + + if (clientArea != null) + { + clientArea.Left = ClientLeft; + clientArea.Top = ClientTop; + clientArea.Width = ClientWidth; + clientArea.Height = ClientHeight; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void AdjustMargins() + { + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + +} diff --git a/Neoforce/ComboBox.cs b/Neoforce/ComboBox.cs new file mode 100644 index 0000000..a74a2be --- /dev/null +++ b/Neoforce/ComboBox.cs @@ -0,0 +1,418 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: ComboBox.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +using System.Collections.Generic; +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Input; +using System; +using Microsoft.Xna.Framework.Graphics; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public class ComboBox: TextBox + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private Button btnDown = null; + private List items = new List(); + private ListBox lstCombo = null; + private int maxItems = 5; + private bool drawSelection = true; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public override bool ReadOnly + { + get { return base.ReadOnly; } + set + { + base.ReadOnly = value; + CaretVisible = !value; + if (value) + { + #if (!XBOX && !XBOX_FAKE) + Cursor = Manager.Skin.Cursors["Default"].Resource; + #endif + } + else + { + #if (!XBOX && !XBOX_FAKE) + Cursor = Manager.Skin.Cursors["Text"].Resource; + #endif + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public bool DrawSelection + { + get { return drawSelection; } + set { drawSelection = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public override string Text + { + get + { + return base.Text; + } + set + { + base.Text = value; + //if (!items.Contains(value)) --- bug + if (!items.ConvertAll(item => item.ToString()).Contains(value)) + { + ItemIndex = -1; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual List Items + { + get { return items; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public int MaxItems + { + get { return maxItems; } + set + { + if (maxItems != value) + { + maxItems = value; + if (!Suspended) OnMaxItemsChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public int ItemIndex + { + get { return lstCombo.ItemIndex; } + set + { + if (lstCombo != null) + { + if (value >= 0 && value < items.Count) + { + lstCombo.ItemIndex = value; + Text = lstCombo.Items[value].ToString(); + } + else + { + lstCombo.ItemIndex = -1; + } + } + if (!Suspended) OnItemIndexChanged(new EventArgs()); + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + public event EventHandler MaxItemsChanged; + public event EventHandler ItemIndexChanged; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public ComboBox(Manager manager): base(manager) + { + Height = 20; + Width = 64; + ReadOnly = true; + + btnDown = new Button(Manager); + btnDown.Init(); + btnDown.Skin = new SkinControl(Manager.Skin.Controls["ComboBox.Button"]); + btnDown.CanFocus = false; + btnDown.Click += new EventHandler(btnDown_Click); + Add(btnDown, false); + + lstCombo = new ListBox(Manager); + lstCombo.Init(); + lstCombo.HotTrack = true; + lstCombo.Detached = true; + lstCombo.Visible = false; + lstCombo.Click += new EventHandler(lstCombo_Click); + lstCombo.FocusLost += new EventHandler(lstCombo_FocusLost); + lstCombo.Items = items; + manager.Input.MouseDown += new MouseEventHandler(Input_MouseDown); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Destructors /////// + + //////////////////////////////////////////////////////////////////////////// + protected override void Dispose(bool disposing) + { + if (disposing) + { + // We added the listbox to another parent than this control, so we dispose it manually + if (lstCombo != null) + { + lstCombo.Dispose(); + lstCombo = null; + } + Manager.Input.MouseDown -= Input_MouseDown; + } + base.Dispose(disposing); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + + lstCombo.Skin = new SkinControl(Manager.Skin.Controls["ComboBox.ListBox"]); + + btnDown.Glyph = new Glyph(Manager.Skin.Images["Shared.ArrowDown"].Resource); + btnDown.Glyph.Color = Manager.Skin.Controls["ComboBox.Button"].Layers["Control"].Text.Colors.Enabled; + btnDown.Glyph.SizeMode = SizeMode.Centered; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + Skin = new SkinControl(Manager.Skin.Controls["ComboBox"]); + AdjustMargins(); + ReadOnly = ReadOnly; // To init the right cursor + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + base.DrawControl(renderer, rect, gameTime); + + if (ReadOnly && (Focused || lstCombo.Focused) && drawSelection) + { + SkinLayer lr = Skin.Layers[0]; + Rectangle rc = new Rectangle(rect.Left + lr.ContentMargins.Left, + rect.Top + lr.ContentMargins.Top, + Width - lr.ContentMargins.Horizontal - btnDown.Width, + Height - lr.ContentMargins.Vertical); + renderer.Draw(Manager.Skin.Images["ListBox.Selection"].Resource, rc , Color.FromNonPremultiplied(255, 255, 255, 128)); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnResize(ResizeEventArgs e) + { + base.OnResize(e); + + if (btnDown != null) + { + btnDown.Width = 16; + btnDown.Height = Height - Skin.Layers[0].ContentMargins.Vertical; + btnDown.Top = Skin.Layers[0].ContentMargins.Top; + btnDown.Left = Width - btnDown.Width - 2; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void btnDown_Click(object sender, EventArgs e) + { + if (items != null && items.Count > 0) + { + if (this.Root != null && this.Root is Container) + { + (this.Root as Container).Add(lstCombo, false); + lstCombo.Alpha = Root.Alpha; + lstCombo.Left = AbsoluteLeft - Root.Left; + lstCombo.Top = AbsoluteTop - Root.Top + Height + 1; + } + else + { + Manager.Add(lstCombo); + lstCombo.Alpha = Alpha; + lstCombo.Left = AbsoluteLeft; + lstCombo.Top = AbsoluteTop + Height + 1; + } + + lstCombo.AutoHeight(maxItems); + if (lstCombo.AbsoluteTop + lstCombo.Height > Manager.TargetHeight) + { + lstCombo.Top = lstCombo.Top - Height - lstCombo.Height - 2; + } + + lstCombo.Visible = !lstCombo.Visible; + lstCombo.Focused = true; + lstCombo.Width = Width; + lstCombo.AutoHeight(maxItems); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void Input_MouseDown(object sender, MouseEventArgs e) + { + if (ReadOnly && + (e.Position.X >= AbsoluteLeft && + e.Position.X <= AbsoluteLeft + Width && + e.Position.Y >= AbsoluteTop && + e.Position.Y <= AbsoluteTop + Height)) return; + + if (lstCombo.Visible && + (e.Position.X < lstCombo.AbsoluteLeft || + e.Position.X > lstCombo.AbsoluteLeft + lstCombo.Width || + e.Position.Y < lstCombo.AbsoluteTop || + e.Position.Y > lstCombo.AbsoluteTop + lstCombo.Height) && + (e.Position.X < btnDown.AbsoluteLeft || + e.Position.X > btnDown.AbsoluteLeft + btnDown.Width || + e.Position.Y < btnDown.AbsoluteTop || + e.Position.Y > btnDown.AbsoluteTop + btnDown.Height)) + { + //lstCombo.Visible = false; + btnDown_Click(sender, e); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void lstCombo_Click(object sender, EventArgs e) + { + MouseEventArgs ex = (e is MouseEventArgs) ? (MouseEventArgs)e : new MouseEventArgs(); + + if (ex.Button == MouseButton.Left || ex.Button == MouseButton.None) + { + lstCombo.Visible = false; + if (lstCombo.ItemIndex >= 0) + { + Text = lstCombo.Items[lstCombo.ItemIndex].ToString(); + Focused = true; + ItemIndex = lstCombo.ItemIndex; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnKeyDown(KeyEventArgs e) + { + if (e.Key == Keys.Down) + { + e.Handled = true; + btnDown_Click(this, new MouseEventArgs()); + } + base.OnKeyDown(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnGamePadDown(GamePadEventArgs e) + { + if (!e.Handled) + { + if (e.Button == GamePadActions.Click || e.Button == GamePadActions.Press || e.Button == GamePadActions.Down) + { + e.Handled = true; + btnDown_Click(this, new MouseEventArgs()); + } + } + base.OnGamePadDown(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnMouseDown(MouseEventArgs e) + { + base.OnMouseDown(e); + + if (ReadOnly && e.Button == MouseButton.Left) + { + btnDown_Click(this, new MouseEventArgs()); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnMaxItemsChanged(EventArgs e) + { + if (MaxItemsChanged != null) MaxItemsChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnItemIndexChanged(EventArgs e) + { + if (ItemIndexChanged != null) ItemIndexChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void lstCombo_FocusLost(object sender, EventArgs e) + { + //lstCombo.Visible = false; + Invalidate(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void AdjustMargins() + { + base.AdjustMargins(); + ClientMargins = new Margins(ClientMargins.Left, ClientMargins.Top, ClientMargins.Right + 16, ClientMargins.Bottom); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/Component.cs b/Neoforce/Component.cs new file mode 100644 index 0000000..20a571e --- /dev/null +++ b/Neoforce/Component.cs @@ -0,0 +1,105 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: Component.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using System; +using Microsoft.Xna.Framework; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public class Component: Disposable + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private Manager manager = null; + private bool initialized = false; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public virtual Manager Manager { get { return manager; } set { manager = value; } } + public virtual bool Initialized { get { return initialized; } } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public Component(Manager manager) + { + if (manager != null) + { + this.manager = manager; + } + else + { + throw new Exception("Component cannot be created. Manager instance is needed."); + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Destructors /////// + + //////////////////////////////////////////////////////////////////////////// + protected override void Dispose(bool disposing) + { + if (disposing) + { + } + base.Dispose(disposing); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void Init() + { + initialized = true; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal virtual void Update(GameTime gameTime) + { + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/Console.cs b/Neoforce/Console.cs new file mode 100644 index 0000000..596c274 --- /dev/null +++ b/Neoforce/Console.cs @@ -0,0 +1,595 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: Console.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using System.Collections; +using System.Collections.Generic; +using Microsoft.Xna.Framework.GamerServices; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public struct ConsoleMessage + { + public string Text; + public byte Channel; + public DateTime Time; + public string Sender; + + public ConsoleMessage(string sender, string text, byte channel) + { + this.Text = text; + this.Channel = channel; + this.Time = DateTime.Now; + this.Sender = sender; + } + } + + public class ChannelList : EventedList + { + + #region //// Indexers ////////// + + //////////////////////////////////////////////////////////////////////////// + public ConsoleChannel this[string name] + { + get + { + for (int i = 0; i < this.Count; i++) + { + ConsoleChannel s = (ConsoleChannel)this[i]; + if (s.Name.ToLower() == name.ToLower()) + { + return s; + } + } + return default(ConsoleChannel); + } + + set + { + for (int i = 0; i < this.Count; i++) + { + ConsoleChannel s = (ConsoleChannel)this[i]; + if (s.Name.ToLower() == name.ToLower()) + { + this[i] = value; + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public ConsoleChannel this[byte index] + { + get + { + for (int i = 0; i < this.Count; i++) + { + ConsoleChannel s = (ConsoleChannel)this[i]; + if (s.Index == index) + { + return s; + } + } + return default(ConsoleChannel); + } + + set + { + for (int i = 0; i < this.Count; i++) + { + ConsoleChannel s = (ConsoleChannel)this[i]; + if (s.Index == index) + { + this[i] = value; + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + + public class ConsoleChannel + { + private string name; + private byte index; + private Color color; + + public ConsoleChannel(byte index, string name, Color color) + { + this.name = name; + this.index = index; + this.color = color; + } + + public virtual byte Index + { + get { return index; } + set { index = value; } + } + + public virtual Color Color + { + get { return color; } + set { color = value; } + } + + public virtual string Name + { + get { return name; } + set { name = value; } + } + } + + [Flags] + public enum ConsoleMessageFormats + { + None = 0x00, + ChannelName = 0x01, + TimeStamp = 0x02, + Sender = 0x03, + All = Sender | ChannelName | TimeStamp + } + + public class Console : Container + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private TextBox txtMain = null; + private ComboBox cmbMain; + private EventedList buffer = new EventedList(); + private ChannelList channels = new ChannelList(); + private List filter = new List(); + private ConsoleMessageFormats messageFormat = ConsoleMessageFormats.None; + private bool channelsVisible = true; + private bool textBoxVisible = true; + private string sender; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + public string Sender + { + get { return sender; } + set { sender = value; } + } + + //////////////////////////////////////////////////////////////////////////// + public virtual EventedList MessageBuffer + { + get { return buffer; } + set + { + buffer.ItemAdded -= new EventHandler(buffer_ItemAdded); + buffer = value; + buffer.ItemAdded += new EventHandler(buffer_ItemAdded); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual ChannelList Channels + { + get { return channels; } + set + { + channels.ItemAdded -= new EventHandler(channels_ItemAdded); + channels = value; + channels.ItemAdded += new EventHandler(channels_ItemAdded); + channels_ItemAdded(null, null); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual List ChannelFilter + { + get { return filter; } + set { filter = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual byte SelectedChannel + { + set { cmbMain.Text = channels[value].Name; } + get { return channels[cmbMain.Text].Index; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual ConsoleMessageFormats MessageFormat + { + get { return messageFormat; } + set { messageFormat = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual bool ChannelsVisible + { + get { return channelsVisible; } + set + { + cmbMain.Visible = channelsVisible = value; + if (value && !textBoxVisible) TextBoxVisible = false; + PositionControls(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual bool TextBoxVisible + { + get { return textBoxVisible; } + set + { + txtMain.Visible = textBoxVisible = value; + txtMain.Focused = true; + if (!value && channelsVisible) ChannelsVisible = false; + PositionControls(); + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + public event ConsoleMessageEventHandler MessageSent; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public Console(Manager manager) + : base(manager) + { + Width = 320; + Height = 160; + MinimumHeight = 64; + MinimumWidth = 64; + CanFocus = false; + Resizable = false; + Movable = false; + + cmbMain = new ComboBox(manager); + cmbMain.Init(); + cmbMain.Top = Height - cmbMain.Height; + cmbMain.Left = 0; + cmbMain.Width = 128; + cmbMain.Anchor = Anchors.Left | Anchors.Bottom; + cmbMain.Detached = false; + cmbMain.DrawSelection = false; + cmbMain.Visible = channelsVisible; + Add(cmbMain, false); + + txtMain = new TextBox(manager); + txtMain.Init(); + txtMain.Top = Height - txtMain.Height; + txtMain.Left = cmbMain.Width + 1; + txtMain.Anchor = Anchors.Left | Anchors.Bottom | Anchors.Right; + txtMain.Detached = false; + txtMain.Visible = textBoxVisible; + txtMain.KeyDown += new KeyEventHandler(txtMain_KeyDown); + txtMain.GamePadDown += new GamePadEventHandler(txtMain_GamePadDown); + txtMain.FocusGained += new EventHandler(txtMain_FocusGained); + Add(txtMain, false); + + VerticalScrollBar.Top = 2; + VerticalScrollBar.Left = Width - 18; + VerticalScrollBar.Range = 1; + VerticalScrollBar.PageSize = 1; + VerticalScrollBar.ValueChanged += new EventHandler(VerticalScrollBar_ValueChanged); + VerticalScrollBar.Visible = true; + + ClientArea.Draw += new DrawEventHandler(ClientArea_Draw); + + buffer.ItemAdded += new EventHandler(buffer_ItemAdded); + channels.ItemAdded += new EventHandler(channels_ItemAdded); + channels.ItemRemoved += new EventHandler(channels_ItemRemoved); + + PositionControls(); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + private void PositionControls() + { + if (txtMain != null) + { + txtMain.Left = channelsVisible ? cmbMain.Width + 1 : 0; + txtMain.Width = channelsVisible ? Width - cmbMain.Width - 1 : Width; + + if (textBoxVisible) + { + ClientMargins = new Margins(Skin.ClientMargins.Left, Skin.ClientMargins.Top + 4, VerticalScrollBar.Width + 6, txtMain.Height + 4); + VerticalScrollBar.Height = Height - txtMain.Height - 5; + } + else + { + ClientMargins = new Margins(Skin.ClientMargins.Left, Skin.ClientMargins.Top + 4, VerticalScrollBar.Width + 6, 2); + VerticalScrollBar.Height = Height - 4; + } + Invalidate(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + Skin = new SkinControl(Manager.Skin.Controls["Console"]); + + PositionControls(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void Update(GameTime gameTime) + { + base.Update(gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void ClientArea_Draw(object sender, DrawEventArgs e) + { + SpriteFont font = Skin.Layers[0].Text.Font.Resource; + Rectangle r = new Rectangle(e.Rectangle.Left, e.Rectangle.Top, e.Rectangle.Width, e.Rectangle.Height); + int pos = 0; + + if (buffer.Count > 0) + { + EventedList b = GetFilteredBuffer(filter); + int c = b.Count; + int s = (VerticalScrollBar.Value + VerticalScrollBar.PageSize); + int f = s - VerticalScrollBar.PageSize; + + if (b.Count > 0) + { + for (int i = s - 1; i >= f; i--) + { + { + int x = 4; + int y = r.Bottom - (pos + 1) * ((int)font.LineSpacing + 0); + + string msg = ((ConsoleMessage)b[i]).Text; + string pre = ""; + ConsoleChannel ch = (channels[((ConsoleMessage)b[i]).Channel] as ConsoleChannel); + + if ((messageFormat & ConsoleMessageFormats.ChannelName) == ConsoleMessageFormats.ChannelName) + { + pre += string.Format("[{0}]", channels[((ConsoleMessage)b[i]).Channel].Name); + } + if ((messageFormat & ConsoleMessageFormats.Sender) == ConsoleMessageFormats.Sender) + { + pre += string.Format("[{0}]", ((ConsoleMessage)b[i]).Sender); + } + if ((messageFormat & ConsoleMessageFormats.TimeStamp) == ConsoleMessageFormats.TimeStamp) + { + pre = string.Format("[{0}]", ((ConsoleMessage)b[i]).Time.ToLongTimeString()) + pre; + } + + if (pre != "") msg = pre + ": " + msg; + + e.Renderer.DrawString(font, + msg, + x, y, + ch.Color); + pos += 1; + } + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + int h = txtMain.Visible ? (txtMain.Height + 1) : 0; + Rectangle r = new Rectangle(rect.Left, rect.Top, rect.Width, rect.Height - h); + base.DrawControl(renderer, r, gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void txtMain_FocusGained(object sender, EventArgs e) + { + ConsoleChannel ch = channels[cmbMain.Text]; + if (ch != null) txtMain.TextColor = ch.Color; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void txtMain_KeyDown(object sender, KeyEventArgs e) + { + SendMessage(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void txtMain_GamePadDown(object sender, GamePadEventArgs e) + { + SendMessage(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void SendMessage(EventArgs x) + { + if (Manager.UseGuide && Guide.IsVisible) return; + + KeyEventArgs k = new KeyEventArgs(); + GamePadEventArgs g = new GamePadEventArgs(PlayerIndex.One); + + if (x is KeyEventArgs) k = x as KeyEventArgs; + else if (x is GamePadEventArgs) g = x as GamePadEventArgs; + + ConsoleChannel ch = channels[cmbMain.Text]; + if (ch != null) + { + txtMain.TextColor = ch.Color; + + string message = txtMain.Text; + if ((k.Key == Microsoft.Xna.Framework.Input.Keys.Enter || g.Button == GamePadActions.Press) && message != null && message != "") + { + x.Handled = true; + + ConsoleMessageEventArgs me = new ConsoleMessageEventArgs(new ConsoleMessage(sender, message, ch.Index)); + OnMessageSent(me); + + buffer.Add(new ConsoleMessage(sender, me.Message.Text, me.Message.Channel)); + + txtMain.Text = ""; + ClientArea.Invalidate(); + + CalcScrolling(); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnMessageSent(ConsoleMessageEventArgs e) + { + if (MessageSent != null) MessageSent.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void channels_ItemAdded(object sender, EventArgs e) + { + cmbMain.Items.Clear(); + for (int i = 0; i < channels.Count; i++) + { + cmbMain.Items.Add((channels[i] as ConsoleChannel).Name); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void channels_ItemRemoved(object sender, EventArgs e) + { + cmbMain.Items.Clear(); + for (int i = 0; i < channels.Count; i++) + { + cmbMain.Items.Add((channels[i] as ConsoleChannel).Name); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void buffer_ItemAdded(object sender, EventArgs e) + { + CalcScrolling(); + ClientArea.Invalidate(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void CalcScrolling() + { + if (VerticalScrollBar != null) + { + int line = Skin.Layers[0].Text.Font.Resource.LineSpacing; + int c = GetFilteredBuffer(filter).Count; + int p = (int)Math.Ceiling(ClientArea.ClientHeight / (float)line); + + VerticalScrollBar.Range = c == 0 ? 1 : c; + VerticalScrollBar.PageSize = c == 0 ? 1 : p; + VerticalScrollBar.Value = VerticalScrollBar.Range; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void VerticalScrollBar_ValueChanged(object sender, EventArgs e) + { + ClientArea.Invalidate(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnResize(ResizeEventArgs e) + { + CalcScrolling(); + base.OnResize(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private EventedList GetFilteredBuffer(List filter) + { + EventedList ret = new EventedList(); + + if (filter.Count > 0) + { + for (int i = 0; i < buffer.Count; i++) + { + if (filter.Contains(((ConsoleMessage)buffer[i]).Channel)) + { + ret.Add(buffer[i]); + } + } + return ret; + } + else return buffer; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/Container.cs b/Neoforce/Container.cs new file mode 100644 index 0000000..33f85f1 --- /dev/null +++ b/Neoforce/Container.cs @@ -0,0 +1,554 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: Container.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public struct ScrollBarValue + { + public int Vertical; + public int Horizontal; + } + + public class Container: ClipControl + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private ScrollBar sbVert; + private ScrollBar sbHorz; + private MainMenu mainMenu; + private ToolBarPanel toolBarPanel; + private StatusBar statusBar; + private bool autoScroll = false; + private Control defaultControl = null; + + /// + /// Scroll by PageSize (true) or StepSize (false) + /// + private bool scrollAlot = true; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public virtual ScrollBarValue ScrollBarValue + { + get + { + ScrollBarValue scb = new ScrollBarValue(); + scb.Vertical = (sbVert != null ? sbVert.Value : 0); + scb.Horizontal = (sbHorz != null ? sbHorz.Value : 0); + return scb; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public override bool Visible + { + get + { + return base.Visible; + } + set + { + if (value) + { + if (DefaultControl != null) + { + DefaultControl.Focused = true; + } + } + base.Visible = value; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual Control DefaultControl + { + get { return defaultControl; } + set { defaultControl = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual bool AutoScroll + { + get { return autoScroll; } + set { autoScroll = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual MainMenu MainMenu + { + get { return mainMenu; } + set + { + if (mainMenu != null) + { + mainMenu.Resize -= Bars_Resize; + Remove(mainMenu); + } + mainMenu = value; + + if (mainMenu != null) + { + Add(mainMenu, false); + mainMenu.Resize += Bars_Resize; + } + AdjustMargins(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual ToolBarPanel ToolBarPanel + { + get + { + return toolBarPanel; + } + set + { + if (toolBarPanel != null) + { + toolBarPanel.Resize -= Bars_Resize; + Remove(toolBarPanel); + } + toolBarPanel = value; + + if (toolBarPanel != null) + { + Add(toolBarPanel, false); + toolBarPanel.Resize += Bars_Resize; + } + AdjustMargins(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual StatusBar StatusBar + { + get + { + return statusBar; + } + set + { + if (statusBar != null) + { + statusBar.Resize -= Bars_Resize; + Remove(statusBar); + } + statusBar = value; + + if (statusBar != null) + { + Add(statusBar, false); + statusBar.Resize += Bars_Resize; + } + AdjustMargins(); + } + } + //////////////////////////////////////////////////////////////////////////// + + /// + /// Scroll by PageSize (true) or StepSize (false) + /// + public virtual bool ScrollAlot + { + get { return this.scrollAlot; } + set { this.scrollAlot = value; } + } + + /// + /// Gets the container's vertical scroll bar. + /// + protected virtual ScrollBar VerticalScrollBar + { + get { return this.sbVert; } + } + + /// + /// Gets the container's horizontal scroll bar. + /// + protected virtual ScrollBar HorizontalScrollBar + { + get { return this.sbHorz; } + } + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public Container(Manager manager): base(manager) + { + sbVert = new ScrollBar(manager, Orientation.Vertical); + sbVert.Init(); + sbVert.Detached = false; + sbVert.Anchor = Anchors.Top | Anchors.Right | Anchors.Bottom; + sbVert.ValueChanged += new EventHandler(ScrollBarValueChanged); + sbVert.Range = 0; + sbVert.PageSize = 0; + sbVert.Value = 0; + sbVert.Visible = false; + + sbHorz = new ScrollBar(manager, Orientation.Horizontal); + sbHorz.Init(); + sbHorz.Detached = false; + sbHorz.Anchor = Anchors.Right | Anchors.Left | Anchors.Bottom; + sbHorz.ValueChanged += new EventHandler(ScrollBarValueChanged); + sbHorz.Range = 0; + sbHorz.PageSize = 0; + sbHorz.Value = 0; + sbHorz.Visible = false; + + Add(sbVert, false); + Add(sbHorz, false); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void Bars_Resize(object sender, ResizeEventArgs e) + { + AdjustMargins(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void AdjustMargins() + { + Margins m = Skin.ClientMargins; + + if (this.GetType() != typeof(Container)) + { + m = ClientMargins; + } + + if (mainMenu != null && mainMenu.Visible) + { + if (!mainMenu.Initialized) mainMenu.Init(); + mainMenu.Left = m.Left; + mainMenu.Top = m.Top; + mainMenu.Width = Width - m.Horizontal; + mainMenu.Anchor = Anchors.Left | Anchors.Top | Anchors.Right; + + m.Top += mainMenu.Height; + } + if (toolBarPanel != null && toolBarPanel.Visible) + { + if (!toolBarPanel.Initialized) toolBarPanel.Init(); + toolBarPanel.Left = m.Left; + toolBarPanel.Top = m.Top; + toolBarPanel.Width = Width - m.Horizontal; + toolBarPanel.Anchor = Anchors.Left | Anchors.Top | Anchors.Right; + + m.Top += toolBarPanel.Height; + } + if (statusBar != null && statusBar.Visible) + { + if (!statusBar.Initialized) statusBar.Init(); + statusBar.Left = m.Left; + statusBar.Top = Height - m.Bottom - statusBar.Height; + statusBar.Width = Width - m.Horizontal; + statusBar.Anchor = Anchors.Left | Anchors.Bottom | Anchors.Right; + + m.Bottom += statusBar.Height; + } + if (sbVert != null && sbVert.Visible) + { + m.Right += (sbVert.Width + 2); + } + if (sbHorz != null && sbHorz.Visible) + { + m.Bottom += (sbHorz.Height + 2); + } + + ClientMargins = m; + + PositionScrollBars(); + + base.AdjustMargins(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Add(Control control, bool client) + { + base.Add(control, client); + CalcScrolling(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void Update(GameTime gameTime) + { + base.Update(gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + base.DrawControl(renderer, rect, gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void OnSkinChanged(EventArgs e) + { + base.OnSkinChanged(e); + if (sbVert != null && sbHorz != null) + { + sbVert.Visible = false; + sbHorz.Visible = false; + CalcScrolling(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void PositionScrollBars() + { + if (sbVert != null) + { + sbVert.Left = ClientLeft + ClientWidth + 1; + sbVert.Top = ClientTop + 1; + int m = (sbHorz != null && sbHorz.Visible) ? 0 : 2; + sbVert.Height = ClientArea.Height - m; + sbVert.Range = ClientArea.VirtualHeight; + sbVert.PageSize = ClientArea.ClientHeight; + } + + if (sbHorz != null) + { + sbHorz.Left = ClientLeft + 1; + sbHorz.Top = ClientTop + ClientHeight + 1; + int m = (sbVert != null && sbVert.Visible) ? 0 : 2; + sbHorz.Width = ClientArea.Width - m; + sbHorz.Range = ClientArea.VirtualWidth; + sbHorz.PageSize = ClientArea.ClientWidth; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void CalcScrolling() + { + if (sbVert != null && autoScroll) + { + bool vis = sbVert.Visible; + sbVert.Visible = ClientArea.VirtualHeight > ClientArea.ClientHeight; + if (ClientArea.VirtualHeight <= ClientArea.ClientHeight) sbVert.Value = 0; + + if (vis != sbVert.Visible) + { + if (!sbVert.Visible) + { + foreach (Control c in ClientArea.Controls) + { + c.TopModifier = 0; + c.Invalidate(); + } + } + AdjustMargins(); + } + + PositionScrollBars(); + foreach (Control c in ClientArea.Controls) + { + c.TopModifier = -sbVert.Value; + c.Invalidate(); + } + } + + if (sbHorz != null && autoScroll) + { + bool vis = sbHorz.Visible; + sbHorz.Visible = ClientArea.VirtualWidth > ClientArea.ClientWidth; + if (ClientArea.VirtualWidth <= ClientArea.ClientWidth) sbHorz.Value = 0; + + if (vis != sbHorz.Visible) + { + if (!sbHorz.Visible) + { + foreach (Control c in ClientArea.Controls) + { + c.LeftModifier = 0; + sbVert.Refresh(); + c.Invalidate(); + } + } + AdjustMargins(); + } + + PositionScrollBars(); + foreach (Control c in ClientArea.Controls) + { + c.LeftModifier = -sbHorz.Value; + sbHorz.Refresh(); + c.Invalidate(); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void ScrollTo(int x, int y) + { + sbVert.Value = y; + sbHorz.Value = x; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void ScrollTo(Control control) + { + if (control != null && ClientArea != null && ClientArea.Contains(control, true)) + { + if (control.AbsoluteTop + control.Height > ClientArea.AbsoluteTop + ClientArea.Height) + { + sbVert.Value = sbVert.Value + control.AbsoluteTop - ClientArea.AbsoluteTop - sbVert.PageSize + control.Height; + } + else if (control.AbsoluteTop < ClientArea.AbsoluteTop) + { + sbVert.Value = sbVert.Value + control.AbsoluteTop - ClientArea.AbsoluteTop; + } + if (control.AbsoluteLeft + control.Width > ClientArea.AbsoluteLeft + ClientArea.Width) + { + sbHorz.Value = sbHorz.Value + control.AbsoluteLeft - ClientArea.AbsoluteLeft - sbHorz.PageSize + control.Width; + } + else if (control.AbsoluteLeft < ClientArea.AbsoluteLeft) + { + sbHorz.Value = sbHorz.Value + control.AbsoluteLeft - ClientArea.AbsoluteLeft; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void ScrollBarValueChanged(object sender, EventArgs e) + { + CalcScrolling(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnResize(ResizeEventArgs e) + { + base.OnResize(e); + CalcScrolling(); + + // Crappy fix to certain scrolling issue + //if (sbVert != null) sbVert.Value -= 1; + //if (sbHorz != null) sbHorz.Value -= 1; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Invalidate() + { + base.Invalidate(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnClick(EventArgs e) + { + MouseEventArgs ex = e as MouseEventArgs; + ex.Position = new Point(ex.Position.X + sbHorz.Value, ex.Position.Y + sbVert.Value); + + base.OnClick(e); + } + //////////////////////////////////////////////////////////////////////////// + + protected override void OnMouseScroll(MouseEventArgs e) + { + if (!ClientArea.Enabled) + return; + + // If current control doesn't scroll, scroll the parent control + if (sbVert.Range - sbVert.PageSize < 1) + { + Control c = this; + + while (c != null) + { + var p = c.Parent as Container; + + if (p != null && p.Enabled) + { + p.OnMouseScroll(e); + + break; + } + + c = c.Parent; + } + + return; + } + + if (e.ScrollDirection == MouseScrollDirection.Down) + sbVert.ScrollDown(ScrollAlot); + else + sbVert.ScrollUp(ScrollAlot); + + base.OnMouseScroll(e); + } + #endregion + } + +} diff --git a/Neoforce/ContentReaders.cs b/Neoforce/ContentReaders.cs new file mode 100644 index 0000000..1c6b33f --- /dev/null +++ b/Neoforce/ContentReaders.cs @@ -0,0 +1,155 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: ContentReaders.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +////////////////////////////////////////////////////////////////////////////// +using System; +using System.IO; +using System.Xml; +using Microsoft.Xna.Framework.Content; + +#if (!XBOX && !XBOX_FAKE) +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework; +#endif +////////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + //////////////////////////////////////////////////////////////////////////// + public class LayoutXmlDocument : XmlDocument { } + public class SkinXmlDocument : XmlDocument { } + //////////////////////////////////////////////////////////////////////////// + + + public class SkinReader : ContentTypeReader + { + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + protected override SkinXmlDocument Read(ContentReader input, SkinXmlDocument existingInstance) + { + if (existingInstance == null) + { + SkinXmlDocument doc = new SkinXmlDocument(); + doc.LoadXml(input.ReadString()); + return doc; + } + else + { + existingInstance.LoadXml(input.ReadString()); + } + + return existingInstance; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + + public class LayoutReader : ContentTypeReader + { + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + protected override LayoutXmlDocument Read(ContentReader input, LayoutXmlDocument existingInstance) + { + if (existingInstance == null) + { + LayoutXmlDocument doc = new LayoutXmlDocument(); + doc.LoadXml(input.ReadString()); + return doc; + } + else + { + existingInstance.LoadXml(input.ReadString()); + } + + return existingInstance; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +#if (!XBOX && !XBOX_FAKE) + + public class CursorReader : ContentTypeReader + { + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + protected override Cursor Read(ContentReader input, Cursor existingInstance) + { + if (existingInstance == null) + { + int count = input.ReadInt32(); + byte[] data = input.ReadBytes(count); + + string path = Path.GetTempFileName(); + File.WriteAllBytes(path, data); + string tPath = Path.GetTempFileName(); + using(System.Drawing.Icon i = System.Drawing.Icon.ExtractAssociatedIcon(path)) + { + using (System.Drawing.Bitmap b = i.ToBitmap()) + { + + b.Save(tPath, System.Drawing.Imaging.ImageFormat.Png); + b.Dispose(); + } + + i.Dispose(); + } + //TODO: Replace with xml based solution for getting hotspot and size instead + IntPtr handle = NativeMethods.LoadCursor(path); + System.Windows.Forms.Cursor c = new System.Windows.Forms.Cursor(handle); + Vector2 hs = new Vector2(c.HotSpot.X, c.HotSpot.Y); + int w = c.Size.Width; + int h = c.Size.Height; + c.Dispose(); + File.Delete(path); + + return new Cursor(tPath, hs, w, h); + } + else + { + } + + return existingInstance; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +#endif + +} + diff --git a/Neoforce/ContextMenu.cs b/Neoforce/ContextMenu.cs new file mode 100644 index 0000000..9265dbc --- /dev/null +++ b/Neoforce/ContextMenu.cs @@ -0,0 +1,575 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: ContextMenu.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using System; +using System.Collections.Generic; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public class ContextMenu: MenuBase + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private long timer = 0; + private Control sender = null; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + protected internal Control Sender { get { return sender; } set { sender = value; } } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public ContextMenu(Manager manager): base(manager) + { + Visible = false; + Detached = true; + StayOnBack = true; + + Manager.Input.MouseDown += new MouseEventHandler(Input_MouseDown); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Destructors /////// + + //////////////////////////////////////////////////////////////////////////// + protected override void Dispose(bool disposing) + { + if (disposing) + { + Manager.Input.MouseDown -= Input_MouseDown; + } + base.Dispose(disposing); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + Skin = new SkinControl(Manager.Skin.Controls["ContextMenu"]); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + base.DrawControl(renderer, rect, gameTime); + + SkinLayer l1 = Skin.Layers["Control"]; + SkinLayer l2 = Skin.Layers["Selection"]; + + int vsize = LineHeight(); + Color col = Color.White; + + for (int i = 0; i < Items.Count; i++) + { + int mod = i > 0 ? 2 : 0; + int left = rect.Left + l1.ContentMargins.Left + vsize; + int h = vsize - mod - (i < (Items.Count - 1) ? 1 : 0); + int top = rect.Top + l1.ContentMargins.Top + (i * vsize) + mod; + + + if (Items[i].Separated && i > 0) + { + Rectangle r = new Rectangle(left, rect.Top + l1.ContentMargins.Top + (i * vsize), LineWidth() - vsize + 4, 1); + renderer.Draw(Manager.Skin.Controls["Control"].Layers[0].Image.Resource, r, l1.Text.Colors.Enabled); + } + if (ItemIndex != i) + { + if (Items[i].Enabled) + { + Rectangle r = new Rectangle(left, top, LineWidth() - vsize, h); + renderer.DrawString(this, l1, Items[i].Text, r, false); + col = l1.Text.Colors.Enabled; + } + else + { + Rectangle r = new Rectangle(left + l1.Text.OffsetX, + top + l1.Text.OffsetY, + LineWidth() - vsize, h); + renderer.DrawString(l1.Text.Font.Resource, Items[i].Text, r, l1.Text.Colors.Disabled, l1.Text.Alignment); + col = l1.Text.Colors.Disabled; + } + } + else + { + if (Items[i].Enabled) + { + Rectangle rs = new Rectangle(rect.Left + l1.ContentMargins.Left, + top, + Width - (l1.ContentMargins.Horizontal - Skin.OriginMargins.Horizontal), + h); + renderer.DrawLayer(this, l2, rs); + + Rectangle r = new Rectangle(left, + top, LineWidth() - vsize, h); + + renderer.DrawString(this, l2, Items[i].Text, r, false); + col = l2.Text.Colors.Enabled; + } + else + { + Rectangle rs = new Rectangle(rect.Left + l1.ContentMargins.Left, + top, + Width - (l1.ContentMargins.Horizontal - Skin.OriginMargins.Horizontal), + vsize); + renderer.DrawLayer(l2, rs, l2.States.Disabled.Color, l2.States.Disabled.Index); + + Rectangle r = new Rectangle(left + l1.Text.OffsetX, + top + l1.Text.OffsetY, + LineWidth() - vsize, h); + renderer.DrawString(l2.Text.Font.Resource, Items[i].Text, r, l2.Text.Colors.Disabled, l2.Text.Alignment); + col = l2.Text.Colors.Disabled; + } + + } + + if (Items[i].Image != null) + { + Rectangle r = new Rectangle(rect.Left + l1.ContentMargins.Left + 3, + rect.Top + top + 3, + LineHeight() - 6, + LineHeight() - 6); + renderer.Draw(Items[i].Image, r, Color.White); + } + + if (Items[i].Items != null && Items[i].Items.Count > 0) + { + renderer.Draw(Manager.Skin.Images["Shared.ArrowRight"].Resource, rect.Left + LineWidth() - 4, rect.Top + l1.ContentMargins.Top + (i * vsize) + 8, col); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private int LineHeight() + { + int h = 0; + if (Items.Count > 0) + { + SkinLayer l = Skin.Layers["Control"]; + h = (int)l.Text.Font.Resource.LineSpacing + 9; + } + return h; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private int LineWidth() + { + int w = 0; + SkinFont font = Skin.Layers["Control"].Text.Font; + if (Items.Count > 0) + { + for (int i = 0; i < Items.Count; i++) + { + int wx = (int)font.Resource.MeasureString(Items[i].Text).X + 16; + if (wx > w) w = wx; + } + } + + w += 4 + LineHeight(); + + return w; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void AutoSize() + { + SkinText font = Skin.Layers["Control"].Text; + if (Items != null && Items.Count > 0) + { + Height = (LineHeight() * Items.Count) + (Skin.Layers["Control"].ContentMargins.Vertical - Skin.OriginMargins.Vertical); + Width = LineWidth() + (Skin.Layers["Control"].ContentMargins.Horizontal - Skin.OriginMargins.Horizontal) + font.OffsetX; + } + else + { + Height = 16; + Width = 16; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void TrackItem(int x, int y) + { + if (Items != null && Items.Count > 0) + { + SkinText font = Skin.Layers["Control"].Text; + int h = LineHeight(); + y -= Skin.Layers["Control"].ContentMargins.Top; + int i = (int)((float)y / h); + if (i < Items.Count) + { + if (i != ItemIndex && Items[i].Enabled) + { + if (ChildMenu != null) + { + this.HideMenu(false); + } + + if (i >= 0 && i != ItemIndex) + { + Items[i].SelectedInvoke(new EventArgs()); + } + + Focused = true; + ItemIndex = i; + timer = (long)TimeSpan.FromTicks(DateTime.Now.Ticks).TotalMilliseconds; + } + else if (!Items[i].Enabled && ChildMenu == null) + { + ItemIndex = -1; + } + } + Invalidate(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnMouseMove(MouseEventArgs e) + { + base.OnMouseMove(e); + TrackItem(e.Position.X, e.Position.Y); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void Update(GameTime gameTime) + { + base.Update(gameTime); + + AutoSize(); + + long time = (long)TimeSpan.FromTicks(DateTime.Now.Ticks).TotalMilliseconds; + + if (timer != 0 && time - timer >= Manager.MenuDelay && ItemIndex >= 0 && Items[ItemIndex].Items.Count > 0 && ChildMenu == null) + { + OnClick(new MouseEventArgs(new MouseState(), MouseButton.Left, Point.Zero)); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnMouseOut(MouseEventArgs e) + { + base.OnMouseOut(e); + + if (!CheckArea(e.State.X, e.State.Y) && ChildMenu == null) + { + ItemIndex = -1; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnClick(EventArgs e) + { + if (sender != null && !(sender is MenuBase)) sender.Focused = true; + base.OnClick(e); + timer = 0; + + MouseEventArgs ex = (e is MouseEventArgs) ? (MouseEventArgs)e : new MouseEventArgs(); + + if (ex.Button == MouseButton.Left || ex.Button == MouseButton.None) + { + if (ItemIndex >= 0 && Items[ItemIndex].Enabled) + { + if (ItemIndex >= 0 && Items[ItemIndex].Items != null && Items[ItemIndex].Items.Count > 0) + { + if (ChildMenu == null) + { + ChildMenu = new ContextMenu(Manager); + (ChildMenu as ContextMenu).RootMenu = this.RootMenu; + (ChildMenu as ContextMenu).ParentMenu = this; + (ChildMenu as ContextMenu).sender = sender; + ChildMenu.Items.AddRange(Items[ItemIndex].Items); + (ChildMenu as ContextMenu).AutoSize(); + } + int y = AbsoluteTop + Skin.Layers["Control"].ContentMargins.Top + (ItemIndex * LineHeight()); + (ChildMenu as ContextMenu).Show(sender, AbsoluteLeft + Width - 1, y); + if (ex.Button == MouseButton.None) (ChildMenu as ContextMenu).ItemIndex = 0; + } + else + { + if (ItemIndex >= 0) + { + Items[ItemIndex].ClickInvoke(ex); + } + if (RootMenu is ContextMenu) (RootMenu as ContextMenu).HideMenu(true); + else if (RootMenu is MainMenu) + { + (RootMenu as MainMenu).HideMenu(); + } + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnKeyPress(KeyEventArgs e) + { + base.OnKeyPress(e); + + timer = 0; + + if (e.Key == Keys.Down || (e.Key == Keys.Tab && !e.Shift)) + { + e.Handled = true; + ItemIndex += 1; + } + + if (e.Key == Keys.Up || (e.Key == Keys.Tab && e.Shift)) + { + e.Handled = true; + ItemIndex -=1; + } + + if (ItemIndex > Items.Count - 1) ItemIndex = 0; + if (ItemIndex < 0) ItemIndex = Items.Count - 1; + + if (e.Key == Keys.Right && Items[ItemIndex].Items.Count > 0) + { + e.Handled = true; + OnClick(new MouseEventArgs(new MouseState(), MouseButton.None, Point.Zero)); + } + if (e.Key == Keys.Left) + { + e.Handled = true; + if (ParentMenu != null && ParentMenu is ContextMenu) + { + (ParentMenu as ContextMenu).Focused = true; + (ParentMenu as ContextMenu).HideMenu(false); + } + } + if (e.Key == Keys.Escape) + { + e.Handled = true; + if (ParentMenu != null) ParentMenu.Focused = true; + HideMenu(true); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnGamePadPress(GamePadEventArgs e) + { + timer = 0; + + if (e.Button == GamePadButton.None) return; + + if (e.Button == GamePadActions.Down || e.Button == GamePadActions.NextControl) + { + e.Handled = true; + ItemIndex += 1; + } + else if (e.Button == GamePadActions.Up || e.Button == GamePadActions.PrevControl) + { + e.Handled = true; + ItemIndex -= 1; + } + + if (ItemIndex > Items.Count - 1) ItemIndex = 0; + if (ItemIndex < 0) ItemIndex = Items.Count - 1; + + if (e.Button == GamePadActions.Right && Items[ItemIndex].Items.Count > 0) + { + e.Handled = true; + OnClick(new MouseEventArgs(new MouseState(), MouseButton.None, Point.Zero)); + } + if (e.Button == GamePadActions.Left) + { + e.Handled = true; + if (ParentMenu != null && ParentMenu is ContextMenu) + { + (ParentMenu as ContextMenu).Focused = true; + (ParentMenu as ContextMenu).HideMenu(false); + } + } + + base.OnGamePadPress(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void HideMenu(bool hideCurrent) + { + if (hideCurrent) + { + Visible = false; + ItemIndex = -1; + } + if (ChildMenu != null) + { + (ChildMenu as ContextMenu).HideMenu(true); + ChildMenu.Dispose(); + ChildMenu = null; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Show() + { + Show(null, Left, Top); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void Show(Control sender, int x, int y) + { + AutoSize(); + base.Show(); + if (!Initialized) Init(); + if (sender != null && sender.Root != null && sender.Root is Container) + { + (sender.Root as Container).Add(this, false); + } + else + { + Manager.Add(this); + } + + this.sender = sender; + + if (sender != null && sender.Root != null && sender.Root is Container) + { + Left = x - Root.AbsoluteLeft; + Top = y - Root.AbsoluteTop; + } + else + { + Left = x; + Top = y; + } + + if (AbsoluteLeft + Width > Manager.TargetWidth) + { + Left = Left - Width; + if (ParentMenu != null && ParentMenu is ContextMenu) + { + Left = Left - ParentMenu.Width + 2; + } + else if (ParentMenu != null) + { + Left = Manager.TargetWidth - (Parent != null ? Parent.AbsoluteLeft : 0) - Width - 2; + } + } + if (AbsoluteTop + Height > Manager.TargetHeight) + { + Top = Top - Height; + if (ParentMenu != null && ParentMenu is ContextMenu) + { + Top = Top + LineHeight(); + } + else if (ParentMenu != null) + { + Top = ParentMenu.Top - Height - 1; + } + } + + Focused = true; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void Input_MouseDown(object sender, MouseEventArgs e) + { + if ((RootMenu is ContextMenu) && !(RootMenu as ContextMenu).CheckArea(e.Position.X, e.Position.Y) && Visible) + { + HideMenu(true); + } + else if ((RootMenu is MainMenu) && RootMenu.ChildMenu != null && !(RootMenu.ChildMenu as ContextMenu).CheckArea(e.Position.X, e.Position.Y) && Visible) + { + (RootMenu as MainMenu).HideMenu(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private bool CheckArea(int x, int y) + { + if (Visible) + { + if (x <= AbsoluteLeft || + x >= AbsoluteLeft + Width || + y <= AbsoluteTop || + y >= AbsoluteTop + Height) + { + bool ret = false; + if (ChildMenu != null) + { + ret = (ChildMenu as ContextMenu).CheckArea(x, y); + } + return ret; + } + else + { + return true; + } + } + else + { + return false; + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/Control.cs b/Neoforce/Control.cs new file mode 100644 index 0000000..d36e206 --- /dev/null +++ b/Neoforce/Control.cs @@ -0,0 +1,3045 @@ +///////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: Control.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using System; +using System.Collections.Generic; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; + +#if (!XBOX && !XBOX_FAKE) + using System.Media; +using System.Collections; +using System.ComponentModel; +#endif +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + #region //// Classes /////////// + + + //////////////////////////////////////////////////////////////////////////// + /// + /// Defines the gamepad actions mapping. + /// + public class GamePadActions + { + public GamePadButton Click = GamePadButton.A; + public GamePadButton Press = GamePadButton.Y; + public GamePadButton Left = GamePadButton.LeftStickLeft; + public GamePadButton Right = GamePadButton.LeftStickRight; + public GamePadButton Up = GamePadButton.LeftStickUp; + public GamePadButton Down = GamePadButton.LeftStickDown; + public GamePadButton NextControl = GamePadButton.RightShoulder; + public GamePadButton PrevControl = GamePadButton.LeftShoulder; + public GamePadButton ContextMenu = GamePadButton.X; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Defines type used as a controls collection. + /// + public class ControlsList: EventedList + { + public ControlsList(): base() {} + public ControlsList(int capacity): base(capacity) {} + public ControlsList(IEnumerable collection): base(collection) {} + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Defines the base class for all controls. + /// + public class Control: Component + { + + #region //// Consts///////////// + + //////////////////////////////////////////////////////////////////////////// + public static readonly Color UndefinedColor = new Color(255, 255, 255, 0); + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + internal static ControlsList Stack = new ControlsList(); + //////////////////////////////////////////////////////////////////////////// + + #if (!XBOX && !XBOX_FAKE) + //////////////////////////////////////////////////////////////////////////// + private Cursor cursor = null; + //////////////////////////////////////////////////////////////////////////// + #endif + + //////////////////////////////////////////////////////////////////////////// + private Color color = UndefinedColor; + private Color textColor = UndefinedColor; + private Color backColor = Color.Transparent; + private byte alpha = 255; + private Anchors anchor = Anchors.Left | Anchors.Top; + private Anchors resizeEdge = Anchors.All; + private string text = "Control"; + private bool visible = true; + private bool enabled = true; + private SkinControl skin = null; + private Control parent = null; + private Control root = null; + private int left = 0; + private int top = 0; + private int width = 64; + private int height = 64; + private bool suspended = false; + private ContextMenu contextMenu = null; + private long tooltipTimer = 0; + private long doubleClickTimer = 0; + private MouseButton doubleClickButton = MouseButton.None; + private Type toolTipType = typeof(ToolTip); + private ToolTip toolTip = null; + private bool doubleClicks = true; + private bool outlineResizing = false; + private bool outlineMoving = false; + private string name = "Control"; + private object tag = null; + private GamePadActions gamePadActions = new GamePadActions(); + private bool designMode = false; + private bool partialOutline = true; + private Rectangle drawingRect = Rectangle.Empty; + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private ControlsList controls = new ControlsList(); + private Rectangle movableArea = Rectangle.Empty; + private bool passive = false; + private bool detached = false; + private bool movable = false; + private bool resizable = false; + private bool invalidated = true; + private bool canFocus = true; + private int resizerSize = 4; + private int minimumWidth = 0; + private int maximumWidth = 4096; + private int minimumHeight = 0; + private int maximumHeight = 4096; + private int topModifier = 0; + private int leftModifier = 0; + private int virtualHeight = 64; + private int virtualWidth = 64; + private bool stayOnBack = false; + private bool stayOnTop = false; + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private RenderTarget2D target; + private Point pressSpot = Point.Zero; + private int[] pressDiff = new int[4]; + private Alignment resizeArea = Alignment.None; + private bool hovered = false; + private bool inside = false; + private bool[] pressed = new bool[32]; + private bool isMoving = false; + private bool isResizing = false; + private Margins margins = new Margins(4, 4, 4, 4); + private Margins anchorMargins = new Margins(); + private Margins clientMargins = new Margins(); + private Rectangle outlineRect = Rectangle.Empty; + /// + /// Tracks the position of the mouse scroll wheel + /// + private int scrollWheel = 0; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + #if (!XBOX && !XBOX_FAKE) + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the cursor displaying over the control. + /// + public Cursor Cursor + { + get { return cursor; } + set { cursor = value; } + } + //////////////////////////////////////////////////////////////////////////// + #endif + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets a list of all child controls. + /// + public virtual IEnumerable Controls { get { return controls; } } + + /// + /// Gets or sets a rectangular area that reacts on moving the control with the mouse. + /// + public virtual Rectangle MovableArea { get { return movableArea; } set { movableArea = value; } } + + /// + /// Gets a value indicating whether this control is a child control. + /// + public virtual bool IsChild { get { return (parent != null); } } + + /// + /// Gets a value indicating whether this control is a parent control. + /// + public virtual bool IsParent { get { return (controls != null && controls.Count > 0); } } + + /// + /// Gets a value indicating whether this control is a root control. + /// + public virtual bool IsRoot { get { return (root == this); } } + + /// + /// Gets or sets a value indicating whether this control can receive focus. + /// + public virtual bool CanFocus { get { return canFocus; } set { canFocus = value; } } + + /// + /// Gets or sets a value indicating whether this control is rendered off the parents texture. + /// + public virtual bool Detached { get { return detached; } set { detached = value; } } + + /// + /// Gets or sets a value indicating whether this controls can receive user input events. + /// + public virtual bool Passive { get { return passive; } set { passive = value; } } + + /// + /// Gets or sets a value indicating whether this control can be moved by the mouse. + /// + public virtual bool Movable { get { return movable; } set { movable = value; } } + + /// + /// Gets or sets a value indicating whether this control can be resized by the mouse. + /// + public virtual bool Resizable { get { return resizable; } set { resizable = value; } } + + /// + /// Gets or sets the size of the rectangular borders around the control used for resizing by the mouse. + /// + public virtual int ResizerSize { get { return resizerSize; } set { resizerSize = value; } } + + /// + /// Gets or sets the ContextMenu associated with this control. + /// + public virtual ContextMenu ContextMenu { get { return contextMenu; } set { contextMenu = value; } } + + /// + /// Gets or sets a value indicating whether this control should process mouse double-clicks. + /// + public virtual bool DoubleClicks { get { return doubleClicks; } set { doubleClicks = value; } } + + /// + /// Gets or sets a value indicating whether this control should use ouline resizing. + /// + public virtual bool OutlineResizing { get { return outlineResizing; } set { outlineResizing = value; } } + + /// + /// Gets or sets a value indicating whether this control should use outline moving. + /// + public virtual bool OutlineMoving { get { return outlineMoving; } set { outlineMoving = value; } } + + /// + /// Gets or sets the object that contains data about the control. + /// + public virtual object Tag { get { return tag; } set { tag = value; } } + + /// + /// Gets or sets the value indicating the distance from another control. Usable with StackPanel control. + /// + public virtual Margins Margins { get { return margins; } set { margins = value; } } + + /// + /// Gets or sets the value indicating wheter control is in design mode. + /// + public virtual bool DesignMode { get { return designMode; } set { designMode = value; } } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets gamepad actions for the control. + /// + public virtual GamePadActions GamePadActions + { + get { return gamePadActions; } + set { gamePadActions = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the value indicating whether the control outline is displayed only for certain edges. + /// + public virtual bool PartialOutline + { + get { return partialOutline; } + set { partialOutline = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the value indicating whether the control is allowed to be brought in the front. + /// + public virtual bool StayOnBack + { + get { return stayOnBack; } + set + { + if (value && stayOnTop) stayOnTop = false; + stayOnBack = value; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the value indicating that the control should stay on top of other controls. + /// + public virtual bool StayOnTop + { + get { return stayOnTop; } + set + { + if (value && stayOnBack) stayOnBack = false; + stayOnTop = value; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets a name of the control. + /// + public virtual string Name + { + get { return name; } + set { name = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets a value indicating whether this control has input focus. + /// + public virtual bool Focused + { + get + { + return (Manager.FocusedControl == this); + } + set + { + this.Invalidate(); + if (value) + { + bool f = Focused; + Manager.FocusedControl = this; + if (!Suspended && value && !f) OnFocusGained(new EventArgs()); + if (Focused && Root != null && Root is Container) + { + (Root as Container).ScrollTo(this); + } + } + else + { + bool f = Focused; + if (Manager.FocusedControl == this) Manager.FocusedControl = null; + if (!Suspended && !value && f) OnFocusLost(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets a value indicating current state of the control. + /// + public virtual ControlState ControlState + { + get + { + if (DesignMode) return ControlState.Enabled; + else if (Suspended) return ControlState.Disabled; + else + { + if (!enabled) return ControlState.Disabled; + + if ((IsPressed && inside) || (Focused && IsPressed)) return ControlState.Pressed; + else if (hovered && !IsPressed) return ControlState.Hovered; + else if ((Focused && !inside) || (hovered && IsPressed && !inside) || (Focused && !hovered && inside)) return ControlState.Focused; + else return ControlState.Enabled; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual Type ToolTipType + { + get { return toolTipType; } + set + { + toolTipType = value; + if (toolTip != null) + { + toolTip.Dispose(); + toolTip = null; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual ToolTip ToolTip + { + get + { + if (toolTip == null) + { + Type[] t = new Type[1] {typeof(Manager)}; + object[] p = new object[1] {Manager}; + + toolTip = (ToolTip)toolTipType.GetConstructor(t).Invoke(p); + toolTip.Init(); + toolTip.Visible = false; + } + return toolTip; + } + set + { + toolTip = value; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + internal protected virtual bool IsPressed + { + get + { + for (int i = 0; i < pressed.Length - 1; i++) + { + if (pressed[i]) return true; + } + return false; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + internal virtual int TopModifier + { + get { return topModifier; } + set { topModifier = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + internal virtual int LeftModifier + { + get { return leftModifier; } + set { leftModifier = value; } + } + //////////////////////////////////////////////////////////////////////////// + internal virtual int VirtualHeight + { + get { return GetVirtualHeight(); } + //set { virtualHeight = value; } + } + //////////////////////////////////////////////////////////////////////////// + internal virtual int VirtualWidth + { + get { return GetVirtualWidth(); } + //set { virtualWidth = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets an area where is the control supposed to be drawn. + /// + public Rectangle DrawingRect + { + get { return drawingRect; } + private set { drawingRect = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets a value indicating whether this control should receive any events. + /// + public virtual bool Suspended + { + get { return suspended; } + set { suspended = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + internal protected virtual bool Hovered + { + get { return hovered; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + internal protected virtual bool Inside + { + get { return inside; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + internal protected virtual bool[] Pressed + { + get { return pressed; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets a value indicating whether this controls is currently being moved. + /// + protected virtual bool IsMoving + { + get + { + return isMoving; + } + set + { + isMoving = value; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets a value indicating whether this controls is currently being resized. + /// + protected virtual bool IsResizing + { + get + { + return isResizing; + } + set + { + isResizing = value; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the edges of the container to which a control is bound and determines how a control is resized with its parent. + /// + public virtual Anchors Anchor + { + get + { + return anchor; + } + set + { + anchor = value; + SetAnchorMargins(); + if (!Suspended) OnAnchorChanged(new EventArgs()); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the edges of the contol which are allowed for resizing. + /// + public virtual Anchors ResizeEdge + { + get + { + return resizeEdge; + } + set + { + resizeEdge = value; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the skin used for rendering the control. + /// + public virtual SkinControl Skin + { + get + { + return skin; + } + set + { + skin = value; + ClientMargins = skin.ClientMargins; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the text associated with this control. + /// + public virtual string Text + { + get { return text; } + set + { + text = value; + Invalidate(); + if (!Suspended) OnTextChanged(new EventArgs()); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the alpha value for this control. + /// + public virtual byte Alpha + { + get + { + return alpha; + } + set + { + alpha = value; + if (!Suspended) OnAlphaChanged(new EventArgs()); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the background color for the control. + /// + public virtual Color BackColor + { + get + { + return backColor; + } + set + { + backColor = value; + Invalidate(); + if (!Suspended) OnBackColorChanged(new EventArgs()); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the color for the control. + /// + public virtual Color Color + { + get + { + return color; + } + set + { + if (value != color) + { + color = value; + Invalidate(); + if (!Suspended) OnColorChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the text color for the control. + /// + public virtual Color TextColor + { + get + { + return textColor; + } + set + { + if (value != textColor) + { + textColor = value; + Invalidate(); + if (!Suspended) OnTextColorChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets a value indicating whether the control can respond to user interaction. + /// + public virtual bool Enabled + { + get + { + return enabled; + } + set + { + if (Root != null && Root != this && !Root.Enabled && value) return; + + enabled = value; + Invalidate(); + + foreach (Control c in controls) + { + c.Enabled = value; + } + + if (!Suspended) OnEnabledChanged(new EventArgs()); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets a value that indicates whether the control is rendered. + /// + public virtual bool Visible + { + get + { + return (visible && (parent == null || parent.Visible)); + } + set + { + visible = value; + Invalidate(); + + if (!Suspended) OnVisibleChanged(new EventArgs()); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the parent for the control. + /// + public virtual Control Parent + { + get + { + return parent; + } + set + { + if (parent != value) + { + if (value != null) value.Add(this); + else Manager.Add(this); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the root for the control. + /// + public virtual Control Root + { + get + { + return root; + } + private set + { + if (root != value) + { + root = value; + + foreach (Control c in controls) + { + c.Root = root; + } + + if (!Suspended) OnRootChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the distance, in pixels, between the left edge of the control and the left edge of its parent. + /// + public virtual int Left + { + get + { + return left; + } + set + { + if (left != value) + { + int old = left; + left = value; + + SetAnchorMargins(); + + if (!Suspended) OnMove(new MoveEventArgs(left, top, old, top)); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the distance, in pixels, between the top edge of the control and the top edge of its parent. + /// + public virtual int Top + { + get + { + return top; + } + set + { + if (top != value) + { + int old = top; + top = value; + + SetAnchorMargins(); + + if (!Suspended) OnMove(new MoveEventArgs(left, top, left, old)); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the width of the control. + /// + public virtual int Width + { + get + { + return width; + } + set + { + if (width != value) + { + int old = width; + width = value; + + if (skin != null) + { + if (width + skin.OriginMargins.Horizontal > MaximumWidth) width = MaximumWidth - skin.OriginMargins.Horizontal; + } + else + { + if (width > MaximumWidth) width = MaximumWidth; + } + if (width < MinimumWidth) width = MinimumWidth; + + if (width > 0) SetAnchorMargins(); + + if (!Suspended) OnResize(new ResizeEventArgs(width, height, old, height)); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the height of the control. + /// + public virtual int Height + { + get + { + return height; + } + set + { + if (height != value) + { + int old = height; + + height = value; + + if (skin != null) + { + if (height + skin.OriginMargins.Vertical > MaximumHeight) + height = MaximumHeight - skin.OriginMargins.Vertical; + } + else + { + if (height > MaximumHeight) height = MaximumHeight; + } + if (height < MinimumHeight) height = MinimumHeight; + + if (height > 0) SetAnchorMargins(); + + if (!Suspended) OnResize(new ResizeEventArgs(width, height, width, old)); + } + + } + + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the minimum width in pixels the control can be sized to. + /// + public virtual int MinimumWidth + { + get + { + return minimumWidth; + } + set + { + minimumWidth = value; + if (minimumWidth < 0) minimumWidth = 0; + if (minimumWidth > maximumWidth) minimumWidth = maximumWidth; + if (width < MinimumWidth) Width = MinimumWidth; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// /// Gets or sets the minimum height in pixels the control can be sized to. + /// + public virtual int MinimumHeight + { + get + { + return minimumHeight; + } + set + { + minimumHeight = value; + if (minimumHeight < 0) minimumHeight = 0; + if (minimumHeight > maximumHeight) minimumHeight = maximumHeight; + if (height < MinimumHeight) Height = MinimumHeight; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// /// Gets or sets the maximum width in pixels the control can be sized to. + /// + public virtual int MaximumWidth + { + get + { + int max = maximumWidth; + if (max > Manager.TargetWidth) max = Manager.TargetWidth; + return max; + } + set + { + maximumWidth = value; + if (maximumWidth < minimumWidth) maximumWidth = minimumWidth; + if (width > MaximumWidth) Width = MaximumWidth; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the maximum height in pixels the control can be sized to. + /// + public virtual int MaximumHeight + { + get + { + int max = maximumHeight; + if (max > Manager.TargetHeight) max = Manager.TargetHeight; + return max; + } + set + { + maximumHeight = value; + if (maximumHeight < minimumHeight) maximumHeight = minimumHeight; + if (height > MaximumHeight) Height = MaximumHeight; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int AbsoluteLeft + { + get + { + if (parent == null) return left + LeftModifier; + else if (parent.Skin == null) return parent.AbsoluteLeft + left + LeftModifier; + else return parent.AbsoluteLeft + left - parent.Skin.OriginMargins.Left + LeftModifier; + } + } + //////////////////////////////////////////////////////////////////////////// + public virtual int AbsoluteTop + { + get + { + if (parent == null) return top + TopModifier; + else if (parent.Skin == null) return parent.AbsoluteTop + top + TopModifier; + else return parent.AbsoluteTop + top - parent.Skin.OriginMargins.Top + TopModifier; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int OriginLeft + { + get + { + if (skin == null) return AbsoluteLeft; + return AbsoluteLeft - skin.OriginMargins.Left; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int OriginTop + { + get + { + if (skin == null) return AbsoluteTop; + return AbsoluteTop - skin.OriginMargins.Top; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int OriginWidth + { + get + { + if (skin == null) return width; + return width + skin.OriginMargins.Left + skin.OriginMargins.Right; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int OriginHeight + { + get + { + if (skin == null) return height; + return height + skin.OriginMargins.Top + skin.OriginMargins.Bottom; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual Margins ClientMargins + { + get { return clientMargins; } + set + { + clientMargins = value; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int ClientLeft + { + get + { + //if (skin == null) return Left; + return ClientMargins.Left; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int ClientTop + { + get + { + //if (skin == null) return Top; + return ClientMargins.Top; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int ClientWidth + { + get + { + //if (skin == null) return Width; + return OriginWidth - ClientMargins.Left - ClientMargins.Right; + } + set + { + Width = value + ClientMargins.Horizontal - skin.OriginMargins.Horizontal; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int ClientHeight + { + get + { + //if (skin == null) return Height; + return OriginHeight - ClientMargins.Top - ClientMargins.Bottom; + } + set + { + Height = value + ClientMargins.Vertical - skin.OriginMargins.Vertical; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual Rectangle AbsoluteRect + { + get + { + return new Rectangle(AbsoluteLeft, AbsoluteTop, OriginWidth, OriginHeight); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual Rectangle OriginRect + { + get + { + return new Rectangle(OriginLeft, OriginTop, OriginWidth, OriginHeight); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual Rectangle ClientRect + { + get + { + return new Rectangle(ClientLeft, ClientTop, ClientWidth, ClientHeight); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual Rectangle ControlRect + { + get + { + return new Rectangle(Left, Top, Width, Height); + } + set + { + Left = value.Left; + Top = value.Top; + Width = value.Width; + Height = value.Height; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private Rectangle OutlineRect + { + get { return outlineRect; } + set + { + outlineRect = value; + if (value != Rectangle.Empty) + { + if (outlineRect.Width > MaximumWidth) outlineRect.Width = MaximumWidth; + if (outlineRect.Height > MaximumHeight) outlineRect.Height = MaximumHeight; + if (outlineRect.Width < MinimumWidth) outlineRect.Width = MinimumWidth; + if (outlineRect.Height < MinimumHeight) outlineRect.Height = MinimumHeight; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + public event EventHandler Click; + public event EventHandler DoubleClick; + public event MouseEventHandler MouseDown; + public event MouseEventHandler MousePress; + public event MouseEventHandler MouseUp; + public event MouseEventHandler MouseMove; + public event MouseEventHandler MouseOver; + public event MouseEventHandler MouseOut; + /// + /// Occurs when the mouse scroll wheel position changes + /// + public event MouseEventHandler MouseScroll; + public event KeyEventHandler KeyDown; + public event KeyEventHandler KeyPress; + public event KeyEventHandler KeyUp; + public event GamePadEventHandler GamePadDown; + public event GamePadEventHandler GamePadUp; + public event GamePadEventHandler GamePadPress; + public event MoveEventHandler Move; + public event MoveEventHandler ValidateMove; + public event ResizeEventHandler Resize; + public event ResizeEventHandler ValidateResize; + public event DrawEventHandler Draw; + public event EventHandler MoveBegin; + public event EventHandler MoveEnd; + public event EventHandler ResizeBegin; + public event EventHandler ResizeEnd; + public event EventHandler ColorChanged; + public event EventHandler TextColorChanged; + public event EventHandler BackColorChanged; + public event EventHandler TextChanged; + public event EventHandler AnchorChanged; + public event EventHandler SkinChanging; + public event EventHandler SkinChanged; + public event EventHandler ParentChanged; + public event EventHandler RootChanged; + public event EventHandler VisibleChanged; + public event EventHandler EnabledChanged; + public event EventHandler AlphaChanged; + public event EventHandler FocusLost; + public event EventHandler FocusGained; + public event DrawEventHandler DrawTexture; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public Control(Manager manager): base(manager) + { + if (Manager == null) + { + throw new Exception("Control cannot be created. Manager instance is needed."); + } + else if (Manager.Skin == null) + { + throw new Exception("Control cannot be created. No skin loaded."); + } + + text = Utilities.DeriveControlName(this); + root = this; + + InitSkin(); + + CheckLayer(skin, "Control"); + + if (Skin != null) + { + SetDefaultSize(width, height); + SetMinimumSize(MinimumWidth, MinimumHeight); + ResizerSize = skin.ResizerSize; + } + + Stack.Add(this); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Destructors /////// + + //////////////////////////////////////////////////////////////////////////// + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (parent != null) parent.Remove(this); + else if (Manager != null) Manager.Remove(this); + if (Manager.OrderList != null) Manager.OrderList.Remove(this); + + // Possibly we added the menu to another parent than this control, + // so we dispose it manually, beacause in logic it belongs to this control. + if (contextMenu != null) + { + contextMenu.Dispose(); + contextMenu = null; + } + + // Recursively disposing all controls. The collection might change from its children, + // so we check it on count greater than zero. + if (controls != null) + { + int c = controls.Count; + for (int i = 0; i < c; i++) + { + if (controls.Count > 0) + { + controls[0].Dispose(); + } + } + } + + // Disposes tooltip owned by Manager + if (toolTip != null && !Manager.Disposing) + { + toolTip.Dispose(); + toolTip = null; + } + + // Removing this control from the global stack. + Stack.Remove(this); + + if (target != null) + { + target.Dispose(); + target = null; + } + } + base.Dispose(disposing); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + #region //// Private /////////// + + //////////////////////////////////////////////////////////////////////////// + private int GetVirtualHeight() + { + if (this.Parent is Container && (this.Parent as Container).AutoScroll) + { + int maxy = 0; + + foreach (Control c in Controls) + { + if ((c.Anchor & Anchors.Bottom) != Anchors.Bottom && c.Visible) + { + if (c.Top + c.Height > maxy) maxy = c.Top + c.Height; + } + } + if (maxy < Height) maxy = Height; + + return maxy; + } + else + { + return Height; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private int GetVirtualWidth() + { + if (this.Parent is Container && (this.Parent as Container).AutoScroll) + { + int maxx = 0; + + foreach (Control c in Controls) + { + if ((c.Anchor & Anchors.Right) != Anchors.Right && c.Visible) + { + if (c.Left + c.Width > maxx) maxx = c.Left + c.Width; + } + } + if (maxx < Width) maxx = Width; + + return maxx; + } + else + { + return Width; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private Rectangle GetClippingRect(Control c) + { + Rectangle r = Rectangle.Empty; + + r = new Rectangle(c.OriginLeft - root.AbsoluteLeft, + c.OriginTop - root.AbsoluteTop, + c.OriginWidth, + c.OriginHeight); + + int x1 = r.Left; + int x2 = r.Right; + int y1 = r.Top; + int y2 = r.Bottom; + + Control ctrl = c.Parent; + while (ctrl != null) + { + int cx1 = ctrl.OriginLeft - root.AbsoluteLeft; + int cy1 = ctrl.OriginTop - root.AbsoluteTop; + int cx2 = cx1 + ctrl.OriginWidth; + int cy2 = cy1 + ctrl.OriginHeight; + + if (x1 < cx1) x1 = cx1; + if (y1 < cy1) y1 = cy1; + if (x2 > cx2) x2 = cx2; + if (y2 > cy2) y2 = cy2; + + ctrl = ctrl.Parent; + } + + int fx2 = x2 - x1; + int fy2 = y2 - y1; + + if (x1 < 0) x1 = 0; + if (y1 < 0) y1 = 0; + if (fx2 < 0) fx2 = 0; + if (fy2 < 0) fy2 = 0; + if (x1 > root.Width) { x1 = root.Width; } + if (y1 > root.Height){ y1 = root.Height; } + if (fx2 > root.Width) fx2 = root.Width; + if (fy2 > root.Height) fy2 = root.Height; + + Rectangle ret = new Rectangle(x1, y1, fx2, fy2); + + return ret; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private RenderTarget2D CreateRenderTarget(int width, int height) + { + if (width > 0 && height > 0) + { + return new RenderTarget2D(Manager.GraphicsDevice, + width, + height, + false, + SurfaceFormat.Color, + DepthFormat.None, + Manager.GraphicsDevice.PresentationParameters.MultiSampleCount, + Manager._RenderTargetUsage); + + } + + return null; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + internal virtual void PrepareTexture(Renderer renderer, GameTime gameTime) + { + if (visible) + { + if (invalidated) + { + OnDrawTexture(new DrawEventArgs(renderer, new Rectangle(0, 0, OriginWidth, OriginHeight), gameTime)); + + if (target == null || target.Width < OriginWidth || target.Height < OriginHeight) + { + if (target != null) + { + target.Dispose(); + target = null; + } + + int w = OriginWidth + (Manager.TextureResizeIncrement - (OriginWidth % Manager.TextureResizeIncrement)); + int h = OriginHeight + (Manager.TextureResizeIncrement - (OriginHeight % Manager.TextureResizeIncrement)); + + if (h > Manager.TargetHeight) h = Manager.TargetHeight; + if (w > Manager.TargetWidth) w = Manager.TargetWidth; + + target = CreateRenderTarget(w, h); + } + + if (target != null) + { + Manager.GraphicsDevice.SetRenderTarget(target); + target.GraphicsDevice.Clear(backColor); + + Rectangle rect = new Rectangle(0, 0, OriginWidth, OriginHeight); + DrawControls(renderer, rect, gameTime, false); + + Manager.GraphicsDevice.SetRenderTarget(null); + } + invalidated = false; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private bool CheckDetached(Control c) + { + Control parent = c.Parent; + while (parent != null) + { + if (parent.Detached) + { + return true; + } + parent = parent.Parent; + } + + return c.Detached; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void DrawChildControls(Renderer renderer, GameTime gameTime, bool firstDetachedLevel) + { + if (controls != null) + { + foreach (Control c in controls) + { + // We skip detached controls for first level after root (they are rendered separately in Draw() method) + if (((c.Root == c.Parent && !c.Detached) || c.Root != c.Parent) && AbsoluteRect.Intersects(c.AbsoluteRect) && c.visible) + { + Manager.GraphicsDevice.ScissorRectangle = GetClippingRect(c); + + Rectangle rect = new Rectangle(c.OriginLeft - root.AbsoluteLeft, c.OriginTop - root.AbsoluteTop, c.OriginWidth, c.OriginHeight); + if (c.Root != c.Parent && ((!c.Detached && CheckDetached(c)) || firstDetachedLevel)) + { + rect = new Rectangle(c.OriginLeft, c.OriginTop, c.OriginWidth, c.OriginHeight); + Manager.GraphicsDevice.ScissorRectangle = rect; + } + + renderer.Begin(BlendingMode.Default); + c.DrawingRect = rect; + c.DrawControl(renderer, rect, gameTime); + + DrawEventArgs args = new DrawEventArgs(); + args.Rectangle = rect; + args.Renderer = renderer; + args.GameTime = gameTime; + c.OnDraw(args); + renderer.End(); + + c.DrawChildControls(renderer, gameTime, firstDetachedLevel); + + c.DrawOutline(renderer, true); + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void DrawControls(Renderer renderer, Rectangle rect, GameTime gameTime, bool firstDetach) + { + renderer.Begin(BlendingMode.Default); + + DrawingRect = rect; + DrawControl(renderer, rect, gameTime); + + DrawEventArgs args = new DrawEventArgs(); + args.Rectangle = rect; + args.Renderer = renderer; + args.GameTime = gameTime; + OnDraw(args); + + renderer.End(); + + DrawChildControls(renderer, gameTime, firstDetach); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void DrawDetached(Control control, Renderer renderer, GameTime gameTime) + { + if (control.Controls != null) + { + foreach (Control c in control.Controls) + { + if (c.Detached && c.Visible) + { + c.DrawControls(renderer, new Rectangle(c.OriginLeft, c.OriginTop, c.OriginWidth, c.OriginHeight), gameTime, true); + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + internal virtual void Render(Renderer renderer, GameTime gameTime) + { + if (visible && target != null) + { + bool draw = true; + + if (draw) + { + renderer.Begin(BlendingMode.Default); + renderer.Draw(target, OriginLeft, OriginTop, new Rectangle(0, 0, OriginWidth, OriginHeight), Color.FromNonPremultiplied(255, 255, 255, Alpha)); + renderer.End(); + + DrawDetached(this, renderer, gameTime); + + DrawOutline(renderer, false); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void DrawOutline(Renderer renderer, bool child) + { + if (!OutlineRect.IsEmpty) + { + Rectangle r = OutlineRect; + if (child) + { + r = new Rectangle(OutlineRect.Left + (parent.AbsoluteLeft - root.AbsoluteLeft), OutlineRect.Top + (parent.AbsoluteTop - root.AbsoluteTop), OutlineRect.Width, OutlineRect.Height); + } + + Texture2D t = Manager.Skin.Controls["Control.Outline"].Layers[0].Image.Resource; + + int s = resizerSize; + Rectangle r1 = new Rectangle(r.Left + leftModifier, r.Top + topModifier, r.Width, s); + Rectangle r2 = new Rectangle(r.Left + leftModifier, r.Top + s + topModifier, resizerSize, r.Height - (2 * s)); + Rectangle r3 = new Rectangle(r.Right - s + leftModifier, r.Top + s + topModifier, s, r.Height - (2 * s)); + Rectangle r4 = new Rectangle(r.Left + leftModifier, r.Bottom - s + topModifier, r.Width, s); + + Color c = Manager.Skin.Controls["Control.Outline"].Layers[0].States.Enabled.Color; + + renderer.Begin(BlendingMode.Default); + if ((ResizeEdge & Anchors.Top) == Anchors.Top || !partialOutline) renderer.Draw(t, r1, c); + if ((ResizeEdge & Anchors.Left) == Anchors.Left || !partialOutline) renderer.Draw(t, r2, c); + if ((ResizeEdge & Anchors.Right) == Anchors.Right || !partialOutline) renderer.Draw(t, r3, c); + if ((ResizeEdge & Anchors.Bottom) == Anchors.Bottom || !partialOutline) renderer.Draw(t, r4, c); + renderer.End(); + } + else if (DesignMode && Focused) + { + Rectangle r = ControlRect; + if (child) + { + r = new Rectangle(r.Left + (parent.AbsoluteLeft - root.AbsoluteLeft), r.Top + (parent.AbsoluteTop - root.AbsoluteTop), r.Width, r.Height); + } + + Texture2D t = Manager.Skin.Controls["Control.Outline"].Layers[0].Image.Resource; + + int s = resizerSize; + Rectangle r1 = new Rectangle(r.Left + leftModifier, r.Top + topModifier, r.Width, s); + Rectangle r2 = new Rectangle(r.Left + leftModifier, r.Top + s + topModifier, resizerSize, r.Height - (2 * s)); + Rectangle r3 = new Rectangle(r.Right - s + leftModifier, r.Top + s + topModifier, s, r.Height - (2 * s)); + Rectangle r4 = new Rectangle(r.Left + leftModifier, r.Bottom - s + topModifier, r.Width, s); + + Color c = Manager.Skin.Controls["Control.Outline"].Layers[0].States.Enabled.Color; + + renderer.Begin(BlendingMode.Default); + renderer.Draw(t, r1, c); + renderer.Draw(t, r2, c); + renderer.Draw(t, r3, c); + renderer.Draw(t, r4, c); + renderer.End(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void SetPosition(int left, int top) + { + this.left = left; + this.top = top; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void SetSize(int width, int height) + { + this.width = width; + this.height = height; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + internal void SetAnchorMargins() + { + if (Parent != null) + { + anchorMargins.Left = Left; + anchorMargins.Top = Top; + anchorMargins.Right = Parent.VirtualWidth - Width - Left; + anchorMargins.Bottom = Parent.VirtualHeight - Height - Top; + } + else + { + anchorMargins = new Margins(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void ProcessAnchor(ResizeEventArgs e) + { + if (((Anchor & Anchors.Right) == Anchors.Right) && ((Anchor & Anchors.Left) != Anchors.Left)) + { + Left = Parent.VirtualWidth - Width - anchorMargins.Right; + } + else if (((Anchor & Anchors.Right) == Anchors.Right) && ((Anchor & Anchors.Left) == Anchors.Left)) + { + Width = Parent.VirtualWidth - Left - anchorMargins.Right; + } + else if (((Anchor & Anchors.Right) != Anchors.Right) && ((Anchor & Anchors.Left) != Anchors.Left)) + { + int diff = (e.Width - e.OldWidth); + if (e.Width % 2 != 0 && diff != 0) + { + diff += (diff / Math.Abs(diff)); + } + Left += (diff / 2); + } + if (((Anchor & Anchors.Bottom) == Anchors.Bottom) && ((Anchor & Anchors.Top) != Anchors.Top)) + { + Top = Parent.VirtualHeight - Height - anchorMargins.Bottom; + } + else if (((Anchor & Anchors.Bottom) == Anchors.Bottom) && ((Anchor & Anchors.Top) == Anchors.Top)) + { + Height = Parent.VirtualHeight - Top - anchorMargins.Bottom; + } + else if (((Anchor & Anchors.Bottom) != Anchors.Bottom) && ((Anchor & Anchors.Top) != Anchors.Top)) + { + int diff = (e.Height - e.OldHeight); + if (e.Height % 2 != 0 && diff != 0) + { + diff += (diff / Math.Abs(diff)); + } + Top += (diff / 2); + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Protected ///////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + + OnMove(new MoveEventArgs()); + OnResize(new ResizeEventArgs()); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal virtual void InitSkin() + { + if (Manager != null && Manager.Skin != null && Manager.Skin.Controls != null) + { + SkinControl s = Manager.Skin.Controls[Utilities.DeriveControlName(this)]; + if (s != null) Skin = new SkinControl(s); + else Skin = new SkinControl(Manager.Skin.Controls["Control"]); + } + else + { + throw new Exception("Control skin cannot be initialized. No skin loaded."); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void SetDefaultSize(int width, int height) + { + if (skin.DefaultSize.Width > 0) Width = skin.DefaultSize.Width; + else Width = width; + if (skin.DefaultSize.Height > 0) Height = skin.DefaultSize.Height; + else Height = height; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void SetMinimumSize(int minimumWidth, int minimumHeight) + { + if (skin.MinimumSize.Width > 0) MinimumWidth = skin.MinimumSize.Width; + else MinimumWidth = minimumWidth; + if (skin.MinimumSize.Height > 0) MinimumHeight = skin.MinimumSize.Height; + else MinimumHeight = minimumHeight; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal void OnDeviceSettingsChanged(DeviceEventArgs e) + { + if (!e.Handled) + { + Invalidate(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + if (backColor != UndefinedColor && backColor != Color.Transparent) + { + renderer.Draw(Manager.Skin.Images["Control"].Resource, rect, backColor); + } + renderer.DrawLayer(this, skin.Layers[0], rect); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void Update(GameTime gameTime) + { + base.Update(gameTime); + + ToolTipUpdate(); + + if (controls != null) + { + ControlsList list = new ControlsList(); + list.AddRange(controls); + foreach (Control c in list) + { + c.Update(gameTime); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal virtual void CheckLayer(SkinControl skin, string layer) + { + if (!(skin != null && skin.Layers != null && skin.Layers.Count > 0 && skin.Layers[layer] != null)) + { + throw new Exception("Unable to read skin layer \"" + layer + "\" for control \"" + Utilities.DeriveControlName(this) + "\"."); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal virtual void CheckLayer(SkinControl skin, int layer) + { + if (!(skin != null && skin.Layers != null && skin.Layers.Count > 0 && skin.Layers[layer] != null)) + { + throw new Exception("Unable to read skin layer with index \"" + layer.ToString() + "\" for control \"" + Utilities.DeriveControlName(this) + "\"."); + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Public //////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual Control GetControl(string name) + { + Control ret = null; + foreach (Control c in Controls) + { + if (c.Name.ToLower() == name.ToLower()) + { + ret = c; + break; + } + else + { + ret = c.GetControl(name); + if (ret != null) break; + } + } + return ret; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void Add(Control control) + { + if (control != null) + { + if (!controls.Contains(control)) + { + if (control.Parent != null) control.Parent.Remove(control); + else Manager.Remove(control); + + control.Manager = Manager; + control.parent = this; + control.Root = root; + control.Enabled = (Enabled ? control.Enabled : Enabled); + controls.Add(control); + + virtualHeight = GetVirtualHeight(); + virtualWidth = GetVirtualWidth(); + + Manager.DeviceSettingsChanged += new DeviceEventHandler(control.OnDeviceSettingsChanged); + Manager.SkinChanging += new SkinEventHandler(control.OnSkinChanging); + Manager.SkinChanged += new SkinEventHandler(control.OnSkinChanged); + Resize += new ResizeEventHandler(control.OnParentResize); + + control.SetAnchorMargins(); + + if (!Suspended) OnParentChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void Remove(Control control) + { + if (control != null) + { + if (control.Focused && control.Root != null) control.Root.Focused = true; + else if (control.Focused) control.Focused = false; + + controls.Remove(control); + + control.parent = null; + control.Root = control; + + Resize -= control.OnParentResize; + Manager.DeviceSettingsChanged -= control.OnDeviceSettingsChanged; + Manager.SkinChanging -= control.OnSkinChanging; + Manager.SkinChanged -= control.OnSkinChanged; + + if (!Suspended) OnParentChanged(new EventArgs()); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual bool Contains(Control control, bool recursively) + { + if (Controls != null) + { + foreach (Control c in Controls) + { + if (c == control) return true; + if (recursively && c.Contains(control, true)) return true; + } + } + return false; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void Invalidate() + { + invalidated = true; + + if (parent != null) + { + parent.Invalidate(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void BringToFront() + { + if (Manager != null) Manager.BringToFront(this); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void SendToBack() + { + if (Manager != null) Manager.SendToBack(this); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void Show() + { + Visible = true; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void Hide() + { + Visible = false; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void Refresh() + { + OnMove(new MoveEventArgs(left, top, left, top)); + OnResize(new ResizeEventArgs(width, height, width, height)); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void SendMessage(Message message, EventArgs e) + { + MessageProcess(message, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void MessageProcess(Message message, EventArgs e) + { + switch (message) + { + case Message.Click: + { + ClickProcess(e as MouseEventArgs); + break; + } + case Message.MouseDown: + { + MouseDownProcess(e as MouseEventArgs); + break; + } + case Message.MouseUp: + { + MouseUpProcess(e as MouseEventArgs); + break; + } + case Message.MousePress: + { + MousePressProcess(e as MouseEventArgs); + break; + } + case Message.MouseScroll: + { + MouseScrollProcess(e as MouseEventArgs); + break; + } + case Message.MouseMove: + { + MouseMoveProcess(e as MouseEventArgs); + break; + } + case Message.MouseOver: + { + MouseOverProcess(e as MouseEventArgs); + break; + } + case Message.MouseOut: + { + MouseOutProcess(e as MouseEventArgs); + break; + } + case Message.GamePadDown: + { + GamePadDownProcess(e as GamePadEventArgs); + break; + } + case Message.GamePadUp: + { + GamePadUpProcess(e as GamePadEventArgs); + break; + } + case Message.GamePadPress: + { + GamePadPressProcess(e as GamePadEventArgs); + break; + } + case Message.KeyDown: + { + KeyDownProcess(e as KeyEventArgs); + break; + } + case Message.KeyUp: + { + KeyUpProcess(e as KeyEventArgs); + break; + } + case Message.KeyPress: + { + KeyPressProcess(e as KeyEventArgs); + break; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// GamePad /////////// + + //////////////////////////////////////////////////////////////////////////// + private void GamePadPressProcess(GamePadEventArgs e) + { + Invalidate(); + if (!Suspended) OnGamePadPress(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void GamePadUpProcess(GamePadEventArgs e) + { + Invalidate(); + + if (e.Button == GamePadActions.Press && pressed[(int)e.Button]) + { + pressed[(int)e.Button] = false; + } + + if (!Suspended) OnGamePadUp(e); + + if (e.Button == GamePadActions.ContextMenu && !e.Handled) + { + if (contextMenu != null) + { + contextMenu.Show(this, AbsoluteLeft + 8, AbsoluteTop + 8); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void GamePadDownProcess(GamePadEventArgs e) + { + Invalidate(); + + ToolTipOut(); + + if (e.Button == GamePadActions.Press && !IsPressed) + { + pressed[(int)e.Button] = true; + } + + if (!Suspended) OnGamePadDown(e); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Keyboard ////////// + + //////////////////////////////////////////////////////////////////////////// + private void KeyPressProcess(KeyEventArgs e) + { + Invalidate(); + if (!Suspended) OnKeyPress(e); + } + //////////////////////////////////////////////////////////////////////////// + + + //////////////////////////////////////////////////////////////////////////// + private void KeyDownProcess(KeyEventArgs e) + { + Invalidate(); + + ToolTipOut(); + + if (e.Key == Microsoft.Xna.Framework.Input.Keys.Space && !IsPressed) + { + pressed[(int)MouseButton.None] = true; + } + + if (!Suspended) OnKeyDown(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void KeyUpProcess(KeyEventArgs e) + { + Invalidate(); + + if (e.Key == Microsoft.Xna.Framework.Input.Keys.Space && pressed[(int)MouseButton.None]) + { + pressed[(int)MouseButton.None] = false; + } + + if (!Suspended) OnKeyUp(e); + + if (e.Key == Microsoft.Xna.Framework.Input.Keys.Apps && !e.Handled) + { + if (contextMenu != null) + { + contextMenu.Show(this, AbsoluteLeft + 8, AbsoluteTop + 8); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Mouse ///////////// + + //////////////////////////////////////////////////////////////////////////// + private void MouseDownProcess(MouseEventArgs e) + { + Invalidate(); + pressed[(int)e.Button] = true; + + if (e.Button == MouseButton.Left) + { + pressSpot = new Point(TransformPosition(e).Position.X, TransformPosition(e).Position.Y); + + if (CheckResizableArea(e.Position)) + { + pressDiff[0] = pressSpot.X; + pressDiff[1] = pressSpot.Y; + pressDiff[2] = Width - pressSpot.X; + pressDiff[3] = Height - pressSpot.Y; + + IsResizing = true; + if (outlineResizing) OutlineRect = ControlRect; + if (!Suspended) OnResizeBegin(e); + } + else if (CheckMovableArea(e.Position)) + { + IsMoving = true; + if (outlineMoving) OutlineRect = ControlRect; + if (!Suspended) OnMoveBegin(e); + } + } + + ToolTipOut(); + + if (!Suspended) OnMouseDown(TransformPosition(e)); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void MouseUpProcess(MouseEventArgs e) + { + Invalidate(); + if (pressed[(int)e.Button] || isMoving || isResizing) + { + pressed[(int)e.Button] = false; + + if (e.Button == MouseButton.Left) + { + if (IsResizing) + { + IsResizing = false; + if (outlineResizing) + { + Left = OutlineRect.Left; + Top = OutlineRect.Top; + Width = OutlineRect.Width; + Height = OutlineRect.Height; + OutlineRect = Rectangle.Empty; + } + if (!Suspended) OnResizeEnd(e); + } + else if (IsMoving) + { + IsMoving = false; + if (outlineMoving) + { + Left = OutlineRect.Left; + Top = OutlineRect.Top; + OutlineRect = Rectangle.Empty; + } + if (!Suspended) OnMoveEnd(e); + } + } + if (!Suspended) OnMouseUp(TransformPosition(e)); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void MousePressProcess(MouseEventArgs e) + { + if (pressed[(int)e.Button] && !IsMoving && !IsResizing) + { + if (!Suspended) OnMousePress(TransformPosition(e)); + } + } + //////////////////////////////////////////////////////////////////////////// + + void MouseScrollProcess(MouseEventArgs e) + { + if (!IsMoving && !IsResizing && !Suspended) + { + OnMouseScroll(e); + } + } + + //////////////////////////////////////////////////////////////////////////// + private void MouseOverProcess(MouseEventArgs e) + { + Invalidate(); + hovered = true; + ToolTipOver(); + + #if (!XBOX && !XBOX_FAKE) + if (cursor != null && Manager.Cursor != cursor) Manager.Cursor = cursor; + #endif + + if (!Suspended) OnMouseOver(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void MouseOutProcess(MouseEventArgs e) + { + Invalidate(); + hovered = false; + ToolTipOut(); + + #if (!XBOX && !XBOX_FAKE) + Manager.Cursor = Manager.Skin.Cursors["Default"].Resource; + #endif + + if (!Suspended) OnMouseOut(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void MouseMoveProcess(MouseEventArgs e) + { + if (CheckPosition(e.Position) && !inside) + { + inside = true; + Invalidate(); + } + else if (!CheckPosition(e.Position) && inside) + { + inside = false; + Invalidate(); + } + + PerformResize(e); + + if (!IsResizing && IsMoving) + { + int x = (parent != null) ? parent.AbsoluteLeft : 0; + int y = (parent != null) ? parent.AbsoluteTop : 0; + + int l = e.Position.X - x - pressSpot.X - leftModifier; + int t = e.Position.Y - y - pressSpot.Y - topModifier; + + if (!Suspended) + { + MoveEventArgs v = new MoveEventArgs(l, t, Left, Top); + OnValidateMove(v); + + l = v.Left; + t = v.Top; + } + + if (outlineMoving) + { + OutlineRect = new Rectangle(l, t, OutlineRect.Width, OutlineRect.Height); + if (parent != null) parent.Invalidate(); + } + else + { + Left = l; + Top = t; + } + } + + if (!Suspended) + { + OnMouseMove(TransformPosition(e)); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void ClickProcess(EventArgs e) + { + long timer = (long)TimeSpan.FromTicks(DateTime.Now.Ticks).TotalMilliseconds; + + MouseEventArgs ex = (e is MouseEventArgs) ? (MouseEventArgs)e : new MouseEventArgs(); + + if ((doubleClickTimer == 0 || (timer - doubleClickTimer > Manager.DoubleClickTime)) || + !doubleClicks) + { + TimeSpan ts = new TimeSpan(DateTime.Now.Ticks); + doubleClickTimer = (long)ts.TotalMilliseconds; + doubleClickButton = ex.Button; + + if (!Suspended) OnClick(e); + + + } + else if (timer - doubleClickTimer <= Manager.DoubleClickTime && (ex.Button == doubleClickButton && ex.Button != MouseButton.None)) + { + doubleClickTimer = 0; + if (!Suspended) OnDoubleClick(e); + } + else + { + doubleClickButton = MouseButton.None; + } + + if (ex.Button == MouseButton.Right && contextMenu != null && !e.Handled) + { + contextMenu.Show(this, ex.Position.X, ex.Position.Y); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void ToolTipUpdate() + { + if (Manager.ToolTipsEnabled && toolTip != null && tooltipTimer > 0 && (TimeSpan.FromTicks(DateTime.Now.Ticks).TotalMilliseconds - tooltipTimer) >= Manager.ToolTipDelay) + { + tooltipTimer = 0; + toolTip.Visible = true; + Manager.Add(toolTip); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void ToolTipOver() + { + if (Manager.ToolTipsEnabled && toolTip != null && tooltipTimer == 0) + { + TimeSpan ts = new TimeSpan(DateTime.Now.Ticks); + tooltipTimer = (long)ts.TotalMilliseconds; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void ToolTipOut() + { + if (Manager.ToolTipsEnabled && toolTip != null) + { + tooltipTimer = 0; + toolTip.Visible = false; + Manager.Remove(toolTip); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private bool CheckPosition(Point pos) + { + if ((pos.X >= AbsoluteLeft) && (pos.X < AbsoluteLeft + Width )) + { + if ((pos.Y >= AbsoluteTop) && (pos.Y < AbsoluteTop + Height)) + { + return true; + } + } + return false; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private bool CheckMovableArea(Point pos) + { + if (movable) + { + Rectangle rect = movableArea; + + if (rect == Rectangle.Empty) + { + rect = new Rectangle(0, 0, width, height); + } + + pos.X -= AbsoluteLeft; + pos.Y -= AbsoluteTop; + + if ((pos.X >= rect.X) && (pos.X < rect.X + rect.Width)) + { + if ((pos.Y >= rect.Y) && (pos.Y < rect.Y + rect.Height)) + { + return true; + } + } + } + return false; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private bool CheckResizableArea(Point pos) + { + if (resizable) + { + pos.X -= AbsoluteLeft; + pos.Y -= AbsoluteTop; + + if ((pos.X >= 0 && pos.X < resizerSize && pos.Y >= 0 && pos.Y < Height) || + (pos.X >= Width - resizerSize && pos.X < Width && pos.Y >=0 && pos.Y < Height) || + (pos.Y >= 0 && pos.Y < resizerSize && pos.X >=0 && pos.X < Width) || + (pos.Y >= Height - resizerSize && pos.Y < Height && pos.X >=0 && pos.X < Width)) + { + return true; + } + } + return false; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected MouseEventArgs TransformPosition(MouseEventArgs e) + { + MouseEventArgs ee = new MouseEventArgs(e.State, e.Button, e.Position); + ee.Difference = e.Difference; + + ee.Position.X = ee.State.X - AbsoluteLeft; + ee.Position.Y = ee.State.Y - AbsoluteTop; + return ee; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private int CheckWidth(ref int w) + { + int diff = 0; + + if (w > MaximumWidth) + { + diff = MaximumWidth - w; + w = MaximumWidth; + } + if (w < MinimumWidth) + { + diff = MinimumWidth - w; + w = MinimumWidth; + } + + return diff; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private int CheckHeight(ref int h) + { + int diff = 0; + + if (h > MaximumHeight) + { + diff = MaximumHeight - h; + h = MaximumHeight; + } + if (h < MinimumHeight) + { + diff = MinimumHeight - h; + h = MinimumHeight; + } + + return diff; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void PerformResize(MouseEventArgs e) + { + if (resizable && !IsMoving) + { + if (!IsResizing) + { + #if (!XBOX && !XBOX_FAKE) + GetResizePosition(e); + Manager.Cursor = Cursor = GetResizeCursor(); + #endif + } + + if (IsResizing) + { + invalidated = true; + + bool top = false; + bool bottom = false; + bool left = false; + bool right = false; + + if ((resizeArea == Alignment.TopCenter || + resizeArea == Alignment.TopLeft || + resizeArea == Alignment.TopRight) && (resizeEdge & Anchors.Top) == Anchors.Top) top = true; + + else if ((resizeArea == Alignment.BottomCenter || + resizeArea == Alignment.BottomLeft || + resizeArea == Alignment.BottomRight) && (resizeEdge & Anchors.Bottom) == Anchors.Bottom) bottom = true; + + if ((resizeArea == Alignment.MiddleLeft || + resizeArea == Alignment.BottomLeft || + resizeArea == Alignment.TopLeft) && (resizeEdge & Anchors.Left) == Anchors.Left) left = true; + + else if ((resizeArea == Alignment.MiddleRight || + resizeArea == Alignment.BottomRight || + resizeArea == Alignment.TopRight) && (resizeEdge & Anchors.Right) == Anchors.Right) right = true; + + int w = Width; + int h = Height; + int l = Left; + int t = Top; + + if (outlineResizing && !OutlineRect.IsEmpty) + { + l = OutlineRect.Left; + t = OutlineRect.Top; + w = OutlineRect.Width; + h = OutlineRect.Height; + } + + int px = e.Position.X - (parent != null ? parent.AbsoluteLeft : 0); + int py = e.Position.Y - (parent != null ? parent.AbsoluteTop : 0); + + if (left) + { + w = w + (l - px) + leftModifier + pressDiff[0]; + l = px - leftModifier - pressDiff[0] - CheckWidth(ref w); + + } + else if (right) + { + w = px - l - leftModifier + pressDiff[2]; + CheckWidth(ref w); + } + + if (top) + { + h = h + (t - py) + topModifier + pressDiff[1]; + t = py - topModifier - pressDiff[1] - CheckHeight(ref h); + } + else if (bottom) + { + h = py - t - topModifier + pressDiff[3]; + CheckHeight(ref h); + } + + if (!Suspended) + { + ResizeEventArgs v = new ResizeEventArgs(w, h, Width, Height); + OnValidateResize(v); + + if (top) + { + // Compensate for a possible height change from Validate event + t += (h - v.Height); + } + if (left) + { + // Compensate for a possible width change from Validate event + l += (w - v.Width); + } + w = v.Width; + h = v.Height; + } + + if (outlineResizing) + { + OutlineRect = new Rectangle(l, t, w, h); + if (parent != null) parent.Invalidate(); + } + else + { + Width = w; + Height = h; + Top = t; + Left = l; + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + #if (!XBOX && !XBOX_FAKE) + private Cursor GetResizeCursor() + { + Cursor cur = Cursor; + switch (resizeArea) + { + case Alignment.TopCenter: + { + return ((resizeEdge & Anchors.Top) == Anchors.Top) ? Manager.Skin.Cursors["Vertical"].Resource : Cursor; + } + case Alignment.BottomCenter: + { + return ((resizeEdge & Anchors.Bottom) == Anchors.Bottom) ? Manager.Skin.Cursors["Vertical"].Resource : Cursor; + } + case Alignment.MiddleLeft: + { + return ((resizeEdge & Anchors.Left) == Anchors.Left) ? Manager.Skin.Cursors["Horizontal"].Resource : Cursor; + } + case Alignment.MiddleRight: + { + return ((resizeEdge & Anchors.Right) == Anchors.Right) ? Manager.Skin.Cursors["Horizontal"].Resource : Cursor; + } + case Alignment.TopLeft: + { + return ((resizeEdge & Anchors.Left) == Anchors.Left && (resizeEdge & Anchors.Top) == Anchors.Top) ? Manager.Skin.Cursors["DiagonalLeft"].Resource : Cursor; + } + case Alignment.BottomRight: + { + return ((resizeEdge & Anchors.Bottom) == Anchors.Bottom && (resizeEdge & Anchors.Right) == Anchors.Right) ? Manager.Skin.Cursors["DiagonalLeft"].Resource : Cursor; + } + case Alignment.TopRight: + { + return ((resizeEdge & Anchors.Top) == Anchors.Top && (resizeEdge & Anchors.Right) == Anchors.Right) ? Manager.Skin.Cursors["DiagonalRight"].Resource : Cursor; + } + case Alignment.BottomLeft: + { + return ((resizeEdge & Anchors.Bottom) == Anchors.Bottom && (resizeEdge & Anchors.Left) == Anchors.Left) ? Manager.Skin.Cursors["DiagonalRight"].Resource : Cursor; + } + } + return Manager.Skin.Cursors["Default"].Resource; + } + #endif + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void GetResizePosition(MouseEventArgs e) + { + int x = e.Position.X - AbsoluteLeft; + int y = e.Position.Y - AbsoluteTop; + bool l = false, t = false, r = false, b = false; + + resizeArea = Alignment.None; + + if (CheckResizableArea(e.Position)) + { + if (x < resizerSize) l = true; + if (x >= Width - resizerSize) r = true; + if (y < resizerSize) t = true; + if (y >= Height - resizerSize) b = true; + + if (l && t) resizeArea = Alignment.TopLeft; + else if (l && b) resizeArea = Alignment.BottomLeft; + else if (r && t) resizeArea = Alignment.TopRight; + else if (r && b) resizeArea = Alignment.BottomRight; + else if (l) resizeArea = Alignment.MiddleLeft; + else if (t) resizeArea = Alignment.TopCenter; + else if (r) resizeArea = Alignment.MiddleRight; + else if (b) resizeArea = Alignment.BottomCenter; + } + else + { + resizeArea = Alignment.None; + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Handlers ////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnMouseUp(MouseEventArgs e) + { + if (MouseUp != null) MouseUp.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnMouseDown(MouseEventArgs e) + { + if (MouseDown != null) MouseDown.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnMouseMove(MouseEventArgs e) + { + if (MouseMove != null) MouseMove.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnMouseOver(MouseEventArgs e) + { + if (MouseOver != null) MouseOver.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnMouseOut(MouseEventArgs e) + { + if (MouseOut != null) MouseOut.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnClick(EventArgs e) + { + if (Click != null) Click.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnDoubleClick(EventArgs e) + { + if (DoubleClick != null) DoubleClick.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnMove(MoveEventArgs e) + { + if (parent != null) parent.Invalidate(); + if (Move != null) Move.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnResize(ResizeEventArgs e) + { + Invalidate(); + if (Resize != null) Resize.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnValidateResize(ResizeEventArgs e) + { + if (ValidateResize != null) ValidateResize.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnValidateMove(MoveEventArgs e) + { + if (ValidateMove != null) ValidateMove.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnMoveBegin(EventArgs e) + { + if (MoveBegin != null) MoveBegin.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnMoveEnd(EventArgs e) + { + if (MoveEnd != null) MoveEnd.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnResizeBegin(EventArgs e) + { + if (ResizeBegin != null) ResizeBegin.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnResizeEnd(EventArgs e) + { + if (ResizeEnd != null) ResizeEnd.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnParentResize(object sender, ResizeEventArgs e) + { + ProcessAnchor(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnKeyUp(KeyEventArgs e) + { + if (KeyUp != null) KeyUp.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnKeyDown(KeyEventArgs e) + { + if (KeyDown != null) KeyDown.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnKeyPress(KeyEventArgs e) + { + if (KeyPress != null) KeyPress.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnGamePadUp(GamePadEventArgs e) + { + if (GamePadUp != null) GamePadUp.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnGamePadDown(GamePadEventArgs e) + { + if (GamePadDown != null) GamePadDown.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnGamePadPress(GamePadEventArgs e) + { + if (GamePadPress != null) GamePadPress.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal void OnDraw(DrawEventArgs e) + { + if (Draw != null) Draw.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected void OnDrawTexture(DrawEventArgs e) + { + if (DrawTexture != null) DrawTexture.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnColorChanged(EventArgs e) + { + if (ColorChanged != null) ColorChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnTextColorChanged(EventArgs e) + { + if (TextColorChanged != null) TextColorChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnBackColorChanged(EventArgs e) + { + if (BackColorChanged != null) BackColorChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnTextChanged(EventArgs e) + { + if (TextChanged != null) TextChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnAnchorChanged(EventArgs e) + { + if (AnchorChanged != null) AnchorChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal virtual void OnSkinChanged(EventArgs e) + { + if (SkinChanged != null) SkinChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal virtual void OnSkinChanging(EventArgs e) + { + if (SkinChanging != null) SkinChanging.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnParentChanged(EventArgs e) + { + if (ParentChanged != null) ParentChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnRootChanged(EventArgs e) + { + if (RootChanged != null) RootChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnVisibleChanged(EventArgs e) + { + if (VisibleChanged != null) VisibleChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnEnabledChanged(EventArgs e) + { + if (EnabledChanged != null) EnabledChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnAlphaChanged(EventArgs e) + { + if (AlphaChanged != null) AlphaChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnFocusLost(EventArgs e) + { + if (FocusLost != null) FocusLost.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnFocusGained(EventArgs e) + { + if (FocusGained != null) FocusGained.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnMousePress(MouseEventArgs e) + { + if (MousePress != null) MousePress.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + protected virtual void OnMouseScroll(MouseEventArgs e) + { + if (MouseScroll != null) MouseScroll.Invoke(this, e); + } + + #endregion + + #endregion + + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + +} \ No newline at end of file diff --git a/Neoforce/Cursor.cs b/Neoforce/Cursor.cs new file mode 100644 index 0000000..8448744 --- /dev/null +++ b/Neoforce/Cursor.cs @@ -0,0 +1,56 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TomShane.Neoforce.Controls +{ + /// + /// Provides a basic Software cursor + /// + public class Cursor + { + private Texture2D cursorTexture; + + public Texture2D CursorTexture + { + get { return cursorTexture;} + set { cursorTexture = value; } + } + + internal string cursorPath; + + private Vector2 hotspot; + private int width; + private int height; + + public int Height + { + get { return height; } + set { height = value; } + } + + public int Width + { + get { return width; } + set { width = value; } + } + + public Vector2 HotSpot + { + get { return hotspot; } + set { hotspot = value; } + } + + public Cursor(string path, Vector2 hotspot, int width, int height) + { + this.cursorPath = path; + this.hotspot = hotspot; + this.width = width; + this.height = height; + } + } +} diff --git a/Neoforce/Delegates.cs b/Neoforce/Delegates.cs new file mode 100644 index 0000000..8f07ca2 --- /dev/null +++ b/Neoforce/Delegates.cs @@ -0,0 +1,53 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: Delegates.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + #region //// Delegates ///////// + + //////////////////////////////////////////////////////////////////////////// + public delegate void DeviceEventHandler(DeviceEventArgs e); + public delegate void SkinEventHandler(EventArgs e); + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public delegate void EventHandler(object sender, EventArgs e); + public delegate void MouseEventHandler(object sender, MouseEventArgs e); + public delegate void KeyEventHandler(object sender, KeyEventArgs e); + public delegate void GamePadEventHandler(object sender, GamePadEventArgs e); + public delegate void DrawEventHandler(object sender, DrawEventArgs e); + public delegate void MoveEventHandler(object sender, MoveEventArgs e); + public delegate void ResizeEventHandler(object sender, ResizeEventArgs e); + public delegate void WindowClosingEventHandler(object sender, WindowClosingEventArgs e); + public delegate void WindowClosedEventHandler(object sender, WindowClosedEventArgs e); + public delegate void ConsoleMessageEventHandler(object sender, ConsoleMessageEventArgs e); + //////////////////////////////////////////////////////////////////////////// + + #endregion + +} diff --git a/Neoforce/Dialog.cs b/Neoforce/Dialog.cs new file mode 100644 index 0000000..0de13ae --- /dev/null +++ b/Neoforce/Dialog.cs @@ -0,0 +1,148 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Central // +// // +//////////////////////////////////////////////////////////////// +// // +// File: Dialog.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public class Dialog: Window + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private Panel pnlTop = null; + private Label lblCapt = null; + private Label lblDesc = null; + private Panel pnlBottom = null; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public Panel TopPanel { get { return pnlTop; } } + public Panel BottomPanel { get { return pnlBottom; } } + public Label Caption { get { return lblCapt; } } + public Label Description { get { return lblDesc; } } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public Dialog(Manager manager): base(manager) + { + pnlTop = new Panel(manager); + pnlTop.Anchor = Anchors.Left | Anchors.Top | Anchors.Right; + pnlTop.Init(); + pnlTop.Parent = this; + pnlTop.Width = ClientWidth; + pnlTop.Height = 64; + pnlTop.BevelBorder = BevelBorder.Bottom; + + lblCapt = new Label(manager); + lblCapt.Init(); + lblCapt.Parent = pnlTop; + lblCapt.Width = lblCapt.Parent.ClientWidth - 16; + lblCapt.Text = "Caption"; + lblCapt.Left = 8; + lblCapt.Top = 8; + lblCapt.Alignment = Alignment.TopLeft; + lblCapt.Anchor = Anchors.Left | Anchors.Top | Anchors.Right; + + lblDesc = new Label(manager); + lblDesc.Init(); + lblDesc.Parent = pnlTop; + lblDesc.Width = lblDesc.Parent.ClientWidth - 16; + lblDesc.Left = 8; + lblDesc.Text = "Description text."; + lblDesc.Alignment = Alignment.TopLeft; + lblDesc.Anchor = Anchors.Left | Anchors.Top | Anchors.Right; + + pnlBottom = new Panel(manager); + pnlBottom.Init(); + pnlBottom.Parent = this; + pnlBottom.Width = ClientWidth; + pnlBottom.Height = 24 + 16; + pnlBottom.Top = ClientHeight - pnlBottom.Height; + pnlBottom.BevelBorder = BevelBorder.Top; + pnlBottom.Anchor = Anchors.Left | Anchors.Bottom | Anchors.Right; + + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + + SkinLayer lc = new SkinLayer(lblCapt.Skin.Layers[0]); + lc.Text.Font.Resource = Manager.Skin.Fonts[Manager.Skin.Controls["Dialog"].Layers["TopPanel"].Attributes["CaptFont"].Value].Resource; + lc.Text.Colors.Enabled = Utilities.ParseColor(Manager.Skin.Controls["Dialog"].Layers["TopPanel"].Attributes["CaptFontColor"].Value); + + SkinLayer ld = new SkinLayer(lblDesc.Skin.Layers[0]); + ld.Text.Font.Resource = Manager.Skin.Fonts[Manager.Skin.Controls["Dialog"].Layers["TopPanel"].Attributes["DescFont"].Value].Resource; + ld.Text.Colors.Enabled = Utilities.ParseColor(Manager.Skin.Controls["Dialog"].Layers["TopPanel"].Attributes["DescFontColor"].Value); + + pnlTop.Color = Utilities.ParseColor(Manager.Skin.Controls["Dialog"].Layers["TopPanel"].Attributes["Color"].Value); + pnlTop.BevelMargin = int.Parse(Manager.Skin.Controls["Dialog"].Layers["TopPanel"].Attributes["BevelMargin"].Value); + pnlTop.BevelStyle = Utilities.ParseBevelStyle(Manager.Skin.Controls["Dialog"].Layers["TopPanel"].Attributes["BevelStyle"].Value); + + lblCapt.Skin = new SkinControl(lblCapt.Skin); + lblCapt.Skin.Layers[0] = lc; + lblCapt.Height = Manager.Skin.Fonts[Manager.Skin.Controls["Dialog"].Layers["TopPanel"].Attributes["CaptFont"].Value].Height; + + lblDesc.Skin = new SkinControl(lblDesc.Skin); + lblDesc.Skin.Layers[0] = ld; + lblDesc.Height = Manager.Skin.Fonts[Manager.Skin.Controls["Dialog"].Layers["TopPanel"].Attributes["DescFont"].Value].Height; + lblDesc.Top = lblCapt.Top + lblCapt.Height + 4; + lblDesc.Height = lblDesc.Parent.ClientHeight - lblDesc.Top - 8; + + pnlBottom.Color = Utilities.ParseColor(Manager.Skin.Controls["Dialog"].Layers["BottomPanel"].Attributes["Color"].Value); + pnlBottom.BevelMargin = int.Parse(Manager.Skin.Controls["Dialog"].Layers["BottomPanel"].Attributes["BevelMargin"].Value); + pnlBottom.BevelStyle = Utilities.ParseBevelStyle(Manager.Skin.Controls["Dialog"].Layers["BottomPanel"].Attributes["BevelStyle"].Value); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/Disposable.cs b/Neoforce/Disposable.cs new file mode 100644 index 0000000..74fbff4 --- /dev/null +++ b/Neoforce/Disposable.cs @@ -0,0 +1,93 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: Disposable.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using System; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public abstract class Disposable: Unknown, IDisposable + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private static int count = 0; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public static int Count { get { return count; } } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + protected Disposable() + { + count += 1; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Destructors /////// + + ////////////////////////////////////////////////////////////////////////// + ~Disposable() + { + Dispose(false); + } + ////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + ////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + protected virtual void Dispose(bool disposing) + { + if (disposing) + { + count -= 1; + } + } + ////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/EventArgs.cs b/Neoforce/EventArgs.cs new file mode 100644 index 0000000..28fad57 --- /dev/null +++ b/Neoforce/EventArgs.cs @@ -0,0 +1,427 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: EventArgs.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Input; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + #region //// Classes /////////// + + //////////////////////////////////////////////////////////////////////////// + public class EventArgs: System.EventArgs + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + public bool Handled = false; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Consructors /////// + + //////////////////////////////////////////////////////////////////////////// + public EventArgs() + { + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class KeyEventArgs: EventArgs + { + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + public Keys Key = Keys.None; + public bool Control = false; + public bool Shift = false; + public bool Alt = false; + public bool Caps = false; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public KeyEventArgs() + { + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public KeyEventArgs(Keys key) + { + Key = key; + Control = false; + Shift = false; + Alt = false; + Caps = false; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public KeyEventArgs(Keys key, bool control, bool shift, bool alt, bool caps) + { + Key = key; + Control = control; + Shift = shift; + Alt = alt; + Caps = caps; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class MouseEventArgs: EventArgs + { + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + public MouseState State = new MouseState(); + public MouseButton Button = MouseButton.None; + public Point Position = new Point(0, 0); + public Point Difference = new Point(0, 0); + /// + /// Mouse scroll direction + /// + public MouseScrollDirection ScrollDirection = MouseScrollDirection.None; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public MouseEventArgs() + { + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public MouseEventArgs(MouseState state, MouseButton button, Point position) + { + State = state; + Button = button; + Position = position; + } + //////////////////////////////////////////////////////////////////////////// + + /// + /// Creates a new initialized instace of the MouseEventArgs class. + /// Mouse state at the time of the event. + /// Mouse button state at the time of the event. + /// Mosue cursor position at the time of the event. + /// Mouse scroll direction at the time of the event. + public MouseEventArgs(MouseState state, MouseButton button, Point position, MouseScrollDirection scrollDirection) + : this(state, button, position) + { + ScrollDirection = scrollDirection; + } + + //////////////////////////////////////////////////////////////////////////// + public MouseEventArgs(MouseEventArgs e) + : this(e.State, e.Button, e.Position) + { + Difference = e.Difference; + ScrollDirection = e.ScrollDirection; + } + //////////////////////////////////////////////////////////////////////////// + + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class GamePadEventArgs : EventArgs + { + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + public PlayerIndex PlayerIndex = PlayerIndex.One; + public GamePadState State = new GamePadState(); + public GamePadButton Button = GamePadButton.None; + public GamePadVectors Vectors; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + /* + public GamePadEventArgs() + { + }*/ + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public GamePadEventArgs(PlayerIndex playerIndex) + { + PlayerIndex = playerIndex; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public GamePadEventArgs(PlayerIndex playerIndex, GamePadButton button) + { + PlayerIndex = playerIndex; + Button = button; + } + //////////////////////////////////////////////////////////////////////////// + + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class DrawEventArgs: EventArgs + { + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + public Renderer Renderer = null; + public Rectangle Rectangle = Rectangle.Empty; + public GameTime GameTime = null; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public DrawEventArgs() + { + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public DrawEventArgs(Renderer renderer, Rectangle rectangle, GameTime gameTime) + { + Renderer = renderer; + Rectangle = rectangle; + GameTime = gameTime; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class ResizeEventArgs: EventArgs + { + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + public int Width = 0; + public int Height = 0; + public int OldWidth = 0; + public int OldHeight = 0; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public ResizeEventArgs() + { + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public ResizeEventArgs(int width, int height, int oldWidth, int oldHeight) + { + Width = width; + Height = height; + OldWidth = oldWidth; + OldHeight = oldHeight; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class MoveEventArgs: EventArgs + { + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + public int Left = 0; + public int Top = 0; + public int OldLeft = 0; + public int OldTop = 0; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public MoveEventArgs() + { + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public MoveEventArgs(int left, int top, int oldLeft, int oldTop) + { + Left = left; + Top = top; + OldLeft = oldLeft; + OldTop = oldTop; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class DeviceEventArgs: EventArgs + { + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + public PreparingDeviceSettingsEventArgs DeviceSettings = null; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public DeviceEventArgs() + { + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public DeviceEventArgs(PreparingDeviceSettingsEventArgs deviceSettings) + { + DeviceSettings = deviceSettings; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class WindowClosingEventArgs: EventArgs + { + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + public bool Cancel = false; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Consructors /////// + + //////////////////////////////////////////////////////////////////////////// + public WindowClosingEventArgs() + { + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class WindowClosedEventArgs: EventArgs + { + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + public bool Dispose = false; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Consructors /////// + + //////////////////////////////////////////////////////////////////////////// + public WindowClosedEventArgs() + { + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class ConsoleMessageEventArgs : EventArgs + { + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + public ConsoleMessage Message; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Consructors /////// + + //////////////////////////////////////////////////////////////////////////// + public ConsoleMessageEventArgs() + { + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public ConsoleMessageEventArgs(ConsoleMessage message) + { + Message = message; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + + #endregion + +} diff --git a/Neoforce/EventedList.cs b/Neoforce/EventedList.cs new file mode 100644 index 0000000..9a4d13d --- /dev/null +++ b/Neoforce/EventedList.cs @@ -0,0 +1,146 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: EventedList.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using System.Collections; +using System.Collections.Generic; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public class EventedList: List + { + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + public event EventHandler ItemAdded; + public event EventHandler ItemRemoved; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public EventedList(): base() {} + public EventedList(int capacity): base(capacity) {} + public EventedList(IEnumerable collection): base(collection) {} + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public new void Add(T item) + { + int c = this.Count; + base.Add(item); + if (ItemAdded != null && c != this.Count) ItemAdded.Invoke(this, new EventArgs()); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public new void Remove(T obj) + { + int c = this.Count; + base.Remove(obj); + if (ItemRemoved != null && c != this.Count) ItemRemoved.Invoke(this, new EventArgs()); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public new void Clear() + { + int c = this.Count; + base.Clear(); + if (ItemRemoved != null && c != this.Count) ItemRemoved.Invoke(this, new EventArgs()); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public new void AddRange(IEnumerable collection) + { + int c = this.Count; + base.AddRange(collection); + if (ItemAdded != null && c != this.Count) ItemAdded.Invoke(this, new EventArgs()); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public new void Insert(int index, T item) + { + int c = this.Count; + base.Insert(index, item); + if (ItemAdded != null && c != this.Count) ItemAdded.Invoke(this, new EventArgs()); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public new void InsertRange(int index, IEnumerable collection) + { + int c = this.Count; + base.InsertRange(index, collection); + if (ItemAdded != null && c != this.Count) ItemAdded.Invoke(this, new EventArgs()); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public new int RemoveAll(Predicate match) + { + int c = this.Count; + int ret = base.RemoveAll(match); + if (ItemRemoved != null && c != this.Count) ItemRemoved.Invoke(this, new EventArgs()); + return ret; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public new void RemoveAt(int index) + { + int c = this.Count; + base.RemoveAt(index); + if (ItemRemoved != null && c != this.Count) ItemRemoved.Invoke(this, new EventArgs()); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public new void RemoveRange(int index, int count) + { + int c = this.Count; + base.RemoveRange(index, count); + if (ItemRemoved != null && c != this.Count) ItemRemoved.Invoke(this, new EventArgs()); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/ExitDialog.cs b/Neoforce/ExitDialog.cs new file mode 100644 index 0000000..4a16f58 --- /dev/null +++ b/Neoforce/ExitDialog.cs @@ -0,0 +1,130 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Central // +// // +//////////////////////////////////////////////////////////////// +// // +// File: ExitDialog.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public class ExitDialog: Dialog + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + public Button btnYes; + public Button btnNo; + private Label lblMessage; + private ImageBox imgIcon; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public ExitDialog(Manager manager): base(manager) + { + string msg = "Do you really want to exit " + Manager.Game.Window.Title + "?"; + ClientWidth = (int)Manager.Skin.Controls["Label"].Layers[0].Text.Font.Resource.MeasureString(msg).X + 48 + 16 + 16 + 16; + ClientHeight = 120; + TopPanel.Visible = false; + IconVisible = true; + Resizable = false; + Text = Manager.Game.Window.Title; + Center(); + + imgIcon = new ImageBox(Manager); + imgIcon.Init(); + imgIcon.Image = Manager.Skin.Images["Icon.Question"].Resource; + imgIcon.Left = 16; + imgIcon.Top = 16; + imgIcon.Width = 48; + imgIcon.Height = 48; + imgIcon.SizeMode = SizeMode.Stretched; + + lblMessage = new Label(Manager); + lblMessage.Init(); + + lblMessage.Left = 80; + lblMessage.Top = 16; + lblMessage.Width = ClientWidth - lblMessage.Left; + lblMessage.Height = 48; + lblMessage.Alignment = Alignment.TopLeft; + lblMessage.Text = msg; + + btnYes = new Button(Manager); + btnYes.Init(); + btnYes.Left = (BottomPanel.ClientWidth / 2) - btnYes.Width - 4; + btnYes.Top = 8; + btnYes.Text = "Yes"; + btnYes.ModalResult = ModalResult.Yes; + + btnNo = new Button(Manager); + btnNo.Init(); + btnNo.Left = (BottomPanel.ClientWidth / 2) + 4; + btnNo.Top = 8; + btnNo.Text = "No"; + btnNo.ModalResult = ModalResult.No; + + Add(imgIcon); + Add(lblMessage); + BottomPanel.Add(btnYes); + BottomPanel.Add(btnNo); + + DefaultControl = btnNo; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/External/Zip/Crc32.cs b/Neoforce/External/Zip/Crc32.cs new file mode 100644 index 0000000..6bbf8b1 --- /dev/null +++ b/Neoforce/External/Zip/Crc32.cs @@ -0,0 +1,84 @@ +using System; + +namespace TomShane.Neoforce.External.Zip +{ + internal class CRC32 + { + private UInt32[] crc32Table; + private const int BUFFER_SIZE = 8192; + + private Int32 _TotalBytesRead= 0; + public Int32 TotalBytesRead { + get { + return _TotalBytesRead; + } + } + + public UInt32 GetCrc32(System.IO.Stream input) + { + return GetCrc32AndCopy(input, null) ; + } + + public UInt32 GetCrc32AndCopy(System.IO.Stream input, System.IO.Stream output) + { + unchecked + { + UInt32 crc32Result; + crc32Result = 0xFFFFFFFF; + byte[] buffer = new byte[BUFFER_SIZE]; + int readSize = BUFFER_SIZE; + + _TotalBytesRead= 0; + int count = input.Read(buffer, 0, readSize); + if (output != null) output.Write(buffer,0,count); + _TotalBytesRead += count; + while (count > 0) + { + for (int i = 0; i < count; i++) + { + crc32Result = ((crc32Result) >> 8) ^ crc32Table[(buffer[i]) ^ ((crc32Result) & 0x000000FF)]; + } + count = input.Read(buffer, 0, readSize); + if (output != null) output.Write(buffer,0,count); + _TotalBytesRead += count; + + } + + return ~crc32Result; + } + } + + + public CRC32() + { + unchecked + { + // This is the official polynomial used by CRC32 in PKZip. + // Often the polynomial is shown reversed as 0x04C11DB7. + UInt32 dwPolynomial = 0xEDB88320; + UInt32 i, j; + + crc32Table = new UInt32[256]; + + UInt32 dwCrc; + for(i = 0; i < 256; i++) + { + dwCrc = i; + for(j = 8; j > 0; j--) + { + if ((dwCrc & 1)==1) + { + dwCrc = (dwCrc >> 1) ^ dwPolynomial; + } + else + { + dwCrc >>= 1; + } + } + crc32Table[i] = dwCrc; + } + } + } + } + +} diff --git a/Neoforce/External/Zip/Shared.cs b/Neoforce/External/Zip/Shared.cs new file mode 100644 index 0000000..60b7c9a --- /dev/null +++ b/Neoforce/External/Zip/Shared.cs @@ -0,0 +1,112 @@ +using System; + +namespace TomShane.Neoforce.External.Zip +{ + + internal class Shared + { + protected internal static string StringFromBuffer(byte[] buf, int start, int maxlength) + { + int i; + char[] c = new char[maxlength]; + for (i = 0; (i < maxlength) && (i < buf.Length) && (buf[i] != 0); i++) + { + c[i] = (char)buf[i]; // System.BitConverter.ToChar(buf, start+i*2); + } + string s = new System.String(c, 0, i); + return s; + } + + protected internal static int ReadSignature(System.IO.Stream s) + { + int n = 0; + byte[] sig = new byte[4]; + n = s.Read(sig, 0, sig.Length); + if (n != sig.Length) throw new Exception("Could not read signature - no data!"); + int signature = (((sig[3] * 256 + sig[2]) * 256) + sig[1]) * 256 + sig[0]; + return signature; + } + + protected internal static long FindSignature(System.IO.Stream s, int SignatureToFind) + { + long startingPosition = s.Position; + + int BATCH_SIZE = 1024; + byte[] targetBytes = new byte[4]; + targetBytes[0] = (byte) (SignatureToFind >> 24); + targetBytes[1] = (byte) ((SignatureToFind & 0x00FF0000) >> 16); + targetBytes[2] = (byte) ((SignatureToFind & 0x0000FF00) >> 8); + targetBytes[3] = (byte) (SignatureToFind & 0x000000FF); + byte[] batch = new byte[BATCH_SIZE]; + int n = 0; + bool success = false; + do + { + n = s.Read(batch, 0, batch.Length); + if (n != 0) + { + for (int i = 0; i < n; i++) + { + if (batch[i] == targetBytes[3]) + { + s.Seek(i - n, System.IO.SeekOrigin.Current); + int sig = ReadSignature(s); + success = (sig == SignatureToFind); + if (!success) s.Seek(-3, System.IO.SeekOrigin.Current); + break; // out of for loop + } + } + } + else break; + if (success) break; + } while (true); + if (!success) + { + s.Seek(startingPosition, System.IO.SeekOrigin.Begin); + return -1; // or throw? + } + + // subtract 4 for the signature. + long bytesRead = (s.Position - startingPosition) - 4 ; + // number of bytes read, should be the same as compressed size of file + return bytesRead; + } + protected internal static DateTime PackedToDateTime(Int32 packedDateTime) + { + Int16 packedTime = (Int16)(packedDateTime & 0x0000ffff); + Int16 packedDate = (Int16)((packedDateTime & 0xffff0000) >> 16); + + int year = 1980 + ((packedDate & 0xFE00) >> 9); + int month = (packedDate & 0x01E0) >> 5; + int day = packedDate & 0x001F; + + + int hour = (packedTime & 0xF800) >> 11; + int minute = (packedTime & 0x07E0) >> 5; + int second = packedTime & 0x001F; + + DateTime d = System.DateTime.Now; + try { d = new System.DateTime(year, month, day, hour, minute, second, 0); } + catch + { + Console.Write("\nInvalid date/time?:\nyear: {0} ", year); + Console.Write("month: {0} ", month); + Console.WriteLine("day: {0} ", day); + Console.WriteLine("HH:MM:SS= {0}:{1}:{2}", hour, minute, second); + } + + return d; + } + + + protected internal static Int32 DateTimeToPacked(DateTime time) + { + UInt16 packedDate = (UInt16)((time.Day & 0x0000001F) | ((time.Month << 5) & 0x000001E0) | (((time.Year - 1980) << 9) & 0x0000FE00)); + UInt16 packedTime = (UInt16)((time.Second & 0x0000001F) | ((time.Minute << 5) & 0x000007E0) | ((time.Hour << 11) & 0x0000F800)); + return (Int32)(((UInt32)(packedDate << 16)) | packedTime); + } + } + + + +} diff --git a/Neoforce/External/Zip/ZipDirEntry.cs b/Neoforce/External/Zip/ZipDirEntry.cs new file mode 100644 index 0000000..a4fdd3e --- /dev/null +++ b/Neoforce/External/Zip/ZipDirEntry.cs @@ -0,0 +1,149 @@ +using System; + +namespace TomShane.Neoforce.External.Zip +{ + + + internal class ZipDirEntry + { + + internal const int ZipDirEntrySignature = 0x02014b50; + + private bool _Debug = false; + + private ZipDirEntry() { } + + private DateTime _LastModified; + public DateTime LastModified + { + get { return _LastModified; } + } + + private string _FileName; + public string FileName + { + get { return _FileName; } + } + + private string _Comment; + public string Comment + { + get { return _Comment; } + } + + private Int16 _VersionMadeBy; + public Int16 VersionMadeBy + { + get { return _VersionMadeBy; } + } + + private Int16 _VersionNeeded; + public Int16 VersionNeeded + { + get { return _VersionNeeded; } + } + + private Int16 _CompressionMethod; + public Int16 CompressionMethod + { + get { return _CompressionMethod; } + } + + private Int32 _CompressedSize; + public Int32 CompressedSize + { + get { return _CompressedSize; } + } + + private Int32 _UncompressedSize; + public Int32 UncompressedSize + { + get { return _UncompressedSize; } + } + + public Double CompressionRatio + { + get + { + return 100 * (1.0 - (1.0 * CompressedSize) / (1.0 * UncompressedSize)); + } + } + + private Int16 _BitField; + private Int32 _LastModDateTime; + + private Int32 _Crc32; + private byte[] _Extra; + + internal ZipDirEntry(ZipEntry ze) { } + + + internal static ZipDirEntry Read(System.IO.Stream s) + { + return Read(s, false); + } + + + internal static ZipDirEntry Read(System.IO.Stream s, bool TurnOnDebug) + { + + int signature = TomShane.Neoforce.External.Zip.Shared.ReadSignature(s); + // return null if this is not a local file header signature + if (SignatureIsNotValid(signature)) + { + s.Seek(-4, System.IO.SeekOrigin.Current); + if (TurnOnDebug) System.Console.WriteLine(" ZipDirEntry::Read(): Bad signature ({0:X8}) at position {1}", signature, s.Position); + return null; + } + + byte[] block = new byte[42]; + int n = s.Read(block, 0, block.Length); + if (n != block.Length) return null; + + int i = 0; + ZipDirEntry zde = new ZipDirEntry(); + + zde._Debug = TurnOnDebug; + zde._VersionMadeBy = (short)(block[i++] + block[i++] * 256); + zde._VersionNeeded = (short)(block[i++] + block[i++] * 256); + zde._BitField = (short)(block[i++] + block[i++] * 256); + zde._CompressionMethod = (short)(block[i++] + block[i++] * 256); + zde._LastModDateTime = block[i++] + block[i++] * 256 + block[i++] * 256 * 256 + block[i++] * 256 * 256 * 256; + zde._Crc32 = block[i++] + block[i++] * 256 + block[i++] * 256 * 256 + block[i++] * 256 * 256 * 256; + zde._CompressedSize = block[i++] + block[i++] * 256 + block[i++] * 256 * 256 + block[i++] * 256 * 256 * 256; + zde._UncompressedSize = block[i++] + block[i++] * 256 + block[i++] * 256 * 256 + block[i++] * 256 * 256 * 256; + + zde._LastModified = TomShane.Neoforce.External.Zip.Shared.PackedToDateTime(zde._LastModDateTime); + + Int16 filenameLength = (short)(block[i++] + block[i++] * 256); + Int16 extraFieldLength = (short)(block[i++] + block[i++] * 256); + Int16 commentLength = (short)(block[i++] + block[i++] * 256); + Int16 diskNumber = (short)(block[i++] + block[i++] * 256); + Int16 internalFileAttrs = (short)(block[i++] + block[i++] * 256); + Int32 externalFileAttrs = block[i++] + block[i++] * 256 + block[i++] * 256 * 256 + block[i++] * 256 * 256 * 256; + Int32 Offset = block[i++] + block[i++] * 256 + block[i++] * 256 * 256 + block[i++] * 256 * 256 * 256; + + block = new byte[filenameLength]; + n = s.Read(block, 0, block.Length); + zde._FileName = TomShane.Neoforce.External.Zip.Shared.StringFromBuffer(block, 0, block.Length); + + zde._Extra = new byte[extraFieldLength]; + n = s.Read(zde._Extra, 0, zde._Extra.Length); + + block = new byte[commentLength]; + n = s.Read(block, 0, block.Length); + zde._Comment = TomShane.Neoforce.External.Zip.Shared.StringFromBuffer(block, 0, block.Length); + + return zde; + } + + private static bool SignatureIsNotValid(int signature) + { + return (signature != ZipDirEntrySignature); + } + + } + + + +} diff --git a/Neoforce/External/Zip/ZipEntry.cs b/Neoforce/External/Zip/ZipEntry.cs new file mode 100644 index 0000000..e2d45f2 --- /dev/null +++ b/Neoforce/External/Zip/ZipEntry.cs @@ -0,0 +1,699 @@ +using System; + +namespace TomShane.Neoforce.External.Zip +{ + internal class ZipEntry + { + + private const int ZipEntrySignature = 0x04034b50; + private const int ZipEntryDataDescriptorSignature= 0x08074b50; + + private bool _Debug = false; + + private DateTime _LastModified; + public DateTime LastModified + { + get { return _LastModified; } + } + + // when this is set, we trim the volume (eg C:\) off any fully-qualified pathname, + // before writing the ZipEntry into the ZipFile. + private bool _TrimVolumeFromFullyQualifiedPaths= true; // by default, trim them. + public bool TrimVolumeFromFullyQualifiedPaths + { + get { return _TrimVolumeFromFullyQualifiedPaths; } + set { _TrimVolumeFromFullyQualifiedPaths= value; } + } + + private string _FileName; + public string FileName + { + get { return _FileName; } + } + + private Int16 _VersionNeeded; + public Int16 VersionNeeded + { + get { return _VersionNeeded; } + } + + private Int16 _BitField; + public Int16 BitField + { + get { return _BitField; } + } + + private Int16 _CompressionMethod; + public Int16 CompressionMethod + { + get { return _CompressionMethod; } + } + + private Int32 _CompressedSize; + public Int32 CompressedSize + { + get { return _CompressedSize; } + } + + private Int32 _UncompressedSize; + public Int32 UncompressedSize + { + get { return _UncompressedSize; } + } + + public Double CompressionRatio + { + get + { + return 100 * (1.0 - (1.0 * CompressedSize) / (1.0 * UncompressedSize)); + } + } + + private Int32 _LastModDateTime; + private Int32 _Crc32; + private byte[] _Extra; + + private byte[] __filedata; + private byte[] _FileData + { + get + { + if (__filedata == null) + { + } + return __filedata; + } + } + + private System.IO.MemoryStream _UnderlyingMemoryStream; + private System.IO.Compression.DeflateStream _CompressedStream; + private System.IO.Compression.DeflateStream CompressedStream + { + get + { + if (_CompressedStream == null) + { + _UnderlyingMemoryStream = new System.IO.MemoryStream(); + bool LeaveUnderlyingStreamOpen = true; + _CompressedStream = new System.IO.Compression.DeflateStream(_UnderlyingMemoryStream, + System.IO.Compression.CompressionMode.Compress, + LeaveUnderlyingStreamOpen); + } + return _CompressedStream; + } + } + + private byte[] _header; + internal byte[] Header + { + get + { + return _header; + } + } + + private int _RelativeOffsetOfHeader; + + + private static bool ReadHeader(System.IO.Stream s, ZipEntry ze) + { + int signature = TomShane.Neoforce.External.Zip.Shared.ReadSignature(s); + + // return null if this is not a local file header signature + if (SignatureIsNotValid(signature)) + { + s.Seek(-4, System.IO.SeekOrigin.Current); + if (ze._Debug) System.Console.WriteLine(" ZipEntry::Read(): Bad signature ({0:X8}) at position {1}", signature, s.Position); + return false; + } + + byte[] block = new byte[26]; + int n = s.Read(block, 0, block.Length); + if (n != block.Length) return false; + + int i = 0; + ze._VersionNeeded = (short)(block[i++] + block[i++] * 256); + ze._BitField = (short)(block[i++] + block[i++] * 256); + ze._CompressionMethod = (short)(block[i++] + block[i++] * 256); + ze._LastModDateTime = block[i++] + block[i++] * 256 + block[i++] * 256 * 256 + block[i++] * 256 * 256 * 256; + + // the PKZIP spec says that if bit 3 is set (0x0008), then the CRC, Compressed size, and uncompressed size + // come directly after the file data. The only way to find it is to scan the zip archive for the signature of + // the Data Descriptor, and presume that that signature does not appear in the (compressed) data of the compressed file. + + if ((ze._BitField & 0x0008) != 0x0008) + { + ze._Crc32 = block[i++] + block[i++] * 256 + block[i++] * 256 * 256 + block[i++] * 256 * 256 * 256; + ze._CompressedSize = block[i++] + block[i++] * 256 + block[i++] * 256 * 256 + block[i++] * 256 * 256 * 256; + ze._UncompressedSize = block[i++] + block[i++] * 256 + block[i++] * 256 * 256 + block[i++] * 256 * 256 * 256; + } + else + { + // the CRC, compressed size, and uncompressed size are stored later in the stream. + // here, we advance the pointer. + i += 12; + } + + Int16 filenameLength = (short)(block[i++] + block[i++] * 256); + Int16 extraFieldLength = (short)(block[i++] + block[i++] * 256); + + block = new byte[filenameLength]; + n = s.Read(block, 0, block.Length); + ze._FileName = TomShane.Neoforce.External.Zip.Shared.StringFromBuffer(block, 0, block.Length); + + ze._Extra = new byte[extraFieldLength]; + n = s.Read(ze._Extra, 0, ze._Extra.Length); + + // transform the time data into something usable + ze._LastModified = TomShane.Neoforce.External.Zip.Shared.PackedToDateTime(ze._LastModDateTime); + + // actually get the compressed size and CRC if necessary + if ((ze._BitField & 0x0008) == 0x0008) + { + long posn = s.Position; + long SizeOfDataRead = TomShane.Neoforce.External.Zip.Shared.FindSignature(s, ZipEntryDataDescriptorSignature); + if (SizeOfDataRead == -1) return false; + + // read 3x 4-byte fields (CRC, Compressed Size, Uncompressed Size) + block = new byte[12]; + n = s.Read(block, 0, block.Length); + if (n != 12) return false; + i = 0; + ze._Crc32 = block[i++] + block[i++] * 256 + block[i++] * 256 * 256 + block[i++] * 256 * 256 * 256; + ze._CompressedSize = block[i++] + block[i++] * 256 + block[i++] * 256 * 256 + block[i++] * 256 * 256 * 256; + ze._UncompressedSize = block[i++] + block[i++] * 256 + block[i++] * 256 * 256 + block[i++] * 256 * 256 * 256; + + if (SizeOfDataRead != ze._CompressedSize) + throw new Exception("Data format error (bit 3 is set)"); + + // seek back to previous position, to read file data + s.Seek(posn, System.IO.SeekOrigin.Begin); + } + + return true; + } + + + private static bool SignatureIsNotValid(int signature) + { + return (signature != ZipEntrySignature); + } + + + public static ZipEntry Read(System.IO.Stream s) + { + return Read(s, false); + } + + + internal static ZipEntry Read(System.IO.Stream s, bool TurnOnDebug) + { + ZipEntry entry = new ZipEntry(); + entry._Debug = TurnOnDebug; + if (!ReadHeader(s, entry)) return null; + + entry.__filedata = new byte[entry.CompressedSize]; + int n = s.Read(entry._FileData, 0, entry._FileData.Length); + if (n != entry._FileData.Length) + { + throw new Exception("badly formatted zip file."); + } + // finally, seek past the (already read) Data descriptor if necessary + if ((entry._BitField & 0x0008) == 0x0008) + { + s.Seek(16, System.IO.SeekOrigin.Current); + } + return entry; + } + + + + internal static ZipEntry Create(String filename) + { + ZipEntry entry = new ZipEntry(); + entry._FileName = filename; + + entry._LastModified = System.IO.File.GetLastWriteTime(filename); + // adjust the time if the .NET BCL thinks it is in DST. + // see the note elsewhere in this file for more info. + if (entry._LastModified.IsDaylightSavingTime()) + { + System.DateTime AdjustedTime = entry._LastModified - new System.TimeSpan(1, 0, 0); + entry._LastModDateTime = TomShane.Neoforce.External.Zip.Shared.DateTimeToPacked(AdjustedTime); + } + else + entry._LastModDateTime = TomShane.Neoforce.External.Zip.Shared.DateTimeToPacked(entry._LastModified); + + // we don't actually slurp in the file until the caller invokes Write on this entry. + + return entry; + } + + + + public void Extract() + { + Extract("."); + } + + public void Extract(System.IO.Stream s) + { + Extract(null, s); + } + + public void Extract(string basedir) + { + Extract(basedir, null); + } + + + internal System.IO.Stream GetStream() + { + System.IO.MemoryStream memstream = new System.IO.MemoryStream(_FileData); + + if (CompressedSize == UncompressedSize) + return memstream; + + return new System.IO.Compression.DeflateStream( + memstream, System.IO.Compression.CompressionMode.Decompress); + } + + // pass in either basedir or s, but not both. + // In other words, you can extract to a stream or to a directory, but not both! + private void Extract(string basedir, System.IO.Stream s) + { + string TargetFile = null; + if (basedir != null) + { + TargetFile = System.IO.Path.Combine(basedir, FileName); + + // check if a directory + if (FileName.EndsWith("/")) + { + if (!System.IO.Directory.Exists(TargetFile)) + System.IO.Directory.CreateDirectory(TargetFile); + return; + } + } + else if (s != null) + { + if (FileName.EndsWith("/")) + // extract a directory to streamwriter? nothing to do! + return; + } + else throw new Exception("Invalid input."); + + + using (System.IO.MemoryStream memstream = new System.IO.MemoryStream(_FileData)) + { + + System.IO.Stream input = null; + try + { + + if (CompressedSize == UncompressedSize) + { + // the System.IO.Compression.DeflateStream class does not handle uncompressed data. + // so if an entry is not compressed, then we just translate the bytes directly. + input = memstream; + } + else + { + input = new System.IO.Compression.DeflateStream(memstream, System.IO.Compression.CompressionMode.Decompress); + } + + + if (TargetFile != null) + { + // ensure the target path exists + if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(TargetFile))) + { + System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(TargetFile)); + } + } + + + System.IO.Stream output = null; + try + { + if (TargetFile != null) + output = new System.IO.FileStream(TargetFile, System.IO.FileMode.CreateNew); + else + output = s; + + + byte[] bytes = new byte[4096]; + int n; + + if (_Debug) + { + Console.WriteLine("{0}: _FileData.Length= {1}", TargetFile, _FileData.Length); + Console.WriteLine("{0}: memstream.Position: {1}", TargetFile, memstream.Position); + n = _FileData.Length; + if (n > 1000) + { + n = 500; + Console.WriteLine("{0}: truncating dump from {1} to {2} bytes...", TargetFile, _FileData.Length, n); + } + for (int j = 0; j < n; j += 2) + { + if ((j > 0) && (j % 40 == 0)) + System.Console.WriteLine(); + System.Console.Write(" {0:X2}", _FileData[j]); + if (j + 1 < n) + System.Console.Write("{0:X2}", _FileData[j + 1]); + } + System.Console.WriteLine("\n"); + } + + n = 1; // anything non-zero + while (n != 0) + { + if (_Debug) Console.WriteLine("{0}: about to read...", TargetFile); + n = input.Read(bytes, 0, bytes.Length); + if (_Debug) Console.WriteLine("{0}: got {1} bytes", TargetFile, n); + if (n > 0) + { + if (_Debug) Console.WriteLine("{0}: about to write...", TargetFile); + output.Write(bytes, 0, n); + } + } + } + finally + { + // we only close the output stream if we opened it. + if ((output != null) && (TargetFile != null)) + { + output.Close(); + output.Dispose(); + } + } + + if (TargetFile != null) + { + // We may have to adjust the last modified time to compensate + // for differences in how the .NET Base Class Library deals + // with daylight saving time (DST) versus how the Windows + // filesystem deals with daylight saving time. See + // http://blogs.msdn.com/oldnewthing/archive/2003/10/24/55413.aspx for some context. + + // in a nutshell: Daylight savings time rules change regularly. In + // 2007, for example, the inception week of DST changed. In 1977, + // DST was in place all year round. in 1945, likewise. And so on. + // Win32 does not attempt to guess which time zone rules were in + // effect at the time in question. It will render a time as + // "standard time" and allow the app to change to DST as necessary. + // .NET makes a different choice. + + // ------------------------------------------------------- + // Compare the output of FileInfo.LastWriteTime.ToString("f") with + // what you see in the property sheet for a file that was last + // written to on the other side of the DST transition. For example, + // suppose the file was last modified on October 17, during DST but + // DST is not currently in effect. Explorer's file properties + // reports Thursday, October 17, 2003, 8:45:38 AM, but .NETs + // FileInfo reports Thursday, October 17, 2003, 9:45 AM. + + // Win32 says, "Thursday, October 17, 2002 8:45:38 AM PST". Note: + // Pacific STANDARD Time. Even though October 17 of that year + // occurred during Pacific Daylight Time, Win32 displays the time as + // standard time because that's what time it is NOW. + + // .NET BCL assumes that the current DST rules were in place at the + // time in question. So, .NET says, "Well, if the rules in effect + // now were also in effect on October 17, 2003, then that would be + // daylight time" so it displays "Thursday, October 17, 2003, 9:45 + // AM PDT" - daylight time. + + // So .NET gives a value which is more intuitively correct, but is + // also potentially incorrect, and which is not invertible. Win32 + // gives a value which is intuitively incorrect, but is strictly + // correct. + // ------------------------------------------------------- + + // With this adjustment, I add one hour to the tweaked .NET time, if + // necessary. That is to say, if the time in question had occurred + // in what the .NET BCL assumed to be DST (an assumption that may be + // wrong given the constantly changing DST rules). + +#if !XBOX + if (LastModified.IsDaylightSavingTime()) + { + DateTime AdjustedLastModified = LastModified + new System.TimeSpan(1, 0, 0); + System.IO.File.SetLastWriteTime(TargetFile, AdjustedLastModified); + } + else + System.IO.File.SetLastWriteTime(TargetFile, LastModified); +#endif + } + + } + finally + { + // we only close the output stream if we opened it. + // we cannot use using() here because in some cases we do not want to Dispose the stream! + if ((input != null) && (input != memstream)) + { + input.Close(); + input.Dispose(); + } + } + } + } + + + internal void WriteCentralDirectoryEntry(System.IO.Stream s) + { + byte[] bytes = new byte[4096]; + int i = 0; + // signature + bytes[i++] = (byte)(ZipDirEntry.ZipDirEntrySignature & 0x000000FF); + bytes[i++] = (byte)((ZipDirEntry.ZipDirEntrySignature & 0x0000FF00) >> 8); + bytes[i++] = (byte)((ZipDirEntry.ZipDirEntrySignature & 0x00FF0000) >> 16); + bytes[i++] = (byte)((ZipDirEntry.ZipDirEntrySignature & 0xFF000000) >> 24); + + // Version Made By + bytes[i++] = Header[4]; + bytes[i++] = Header[5]; + + // Version Needed, Bitfield, compression method, lastmod, + // crc, sizes, filename length and extra field length - + // are all the same as the local file header. So just copy them + int j = 0; + for (j = 0; j < 26; j++) + bytes[i + j] = Header[4 + j]; + + i += j; // positioned at next available byte + + // File Comment Length + bytes[i++] = 0; + bytes[i++] = 0; + + // Disk number start + bytes[i++] = 0; + bytes[i++] = 0; + + // internal file attrs + bytes[i++] = 1; + bytes[i++] = 0; + + // external file attrs + bytes[i++] = 0x20; + bytes[i++] = 0; + bytes[i++] = 0xb6; + bytes[i++] = 0x81; + + // relative offset of local header (I think this can be zero) + bytes[i++] = (byte)(_RelativeOffsetOfHeader & 0x000000FF); + bytes[i++] = (byte)((_RelativeOffsetOfHeader & 0x0000FF00) >> 8); + bytes[i++] = (byte)((_RelativeOffsetOfHeader & 0x00FF0000) >> 16); + bytes[i++] = (byte)((_RelativeOffsetOfHeader & 0xFF000000) >> 24); + + if (_Debug) System.Console.WriteLine("\ninserting filename into CDS: (length= {0})", Header.Length - 30); + // actual filename (starts at offset 34 in header) + for (j = 0; j < Header.Length - 30; j++) + { + bytes[i + j] = Header[30 + j]; + if (_Debug) System.Console.Write(" {0:X2}", bytes[i + j]); + } + if (_Debug) System.Console.WriteLine(); + i += j; + + s.Write(bytes, 0, i); + } + + + private void WriteHeader(System.IO.Stream s, byte[] bytes) + { + // write the header info + + int i = 0; + // signature + bytes[i++] = (byte)(ZipEntrySignature & 0x000000FF); + bytes[i++] = (byte)((ZipEntrySignature & 0x0000FF00) >> 8); + bytes[i++] = (byte)((ZipEntrySignature & 0x00FF0000) >> 16); + bytes[i++] = (byte)((ZipEntrySignature & 0xFF000000) >> 24); + + // version needed + Int16 FixedVersionNeeded = 0x14; // from examining existing zip files + bytes[i++] = (byte)(FixedVersionNeeded & 0x00FF); + bytes[i++] = (byte)((FixedVersionNeeded & 0xFF00) >> 8); + + // bitfield + Int16 BitField = 0x00; // from examining existing zip files + bytes[i++] = (byte)(BitField & 0x00FF); + bytes[i++] = (byte)((BitField & 0xFF00) >> 8); + + // compression method + Int16 CompressionMethod = 0x08; // 0x08 = Deflate + bytes[i++] = (byte)(CompressionMethod & 0x00FF); + bytes[i++] = (byte)((CompressionMethod & 0xFF00) >> 8); + + // LastMod + bytes[i++] = (byte)(_LastModDateTime & 0x000000FF); + bytes[i++] = (byte)((_LastModDateTime & 0x0000FF00) >> 8); + bytes[i++] = (byte)((_LastModDateTime & 0x00FF0000) >> 16); + bytes[i++] = (byte)((_LastModDateTime & 0xFF000000) >> 24); + + // CRC32 (Int32) + CRC32 crc32 = new CRC32(); + UInt32 crc = 0; + using (System.IO.Stream input = System.IO.File.OpenRead(FileName)) + { + crc = crc32.GetCrc32AndCopy(input, CompressedStream); + } + CompressedStream.Close(); // to get the footer bytes written to the underlying stream + + bytes[i++] = (byte)(crc & 0x000000FF); + bytes[i++] = (byte)((crc & 0x0000FF00) >> 8); + bytes[i++] = (byte)((crc & 0x00FF0000) >> 16); + bytes[i++] = (byte)((crc & 0xFF000000) >> 24); + + // CompressedSize (Int32) + Int32 isz = (Int32)_UnderlyingMemoryStream.Length; + UInt32 sz = (UInt32)isz; + bytes[i++] = (byte)(sz & 0x000000FF); + bytes[i++] = (byte)((sz & 0x0000FF00) >> 8); + bytes[i++] = (byte)((sz & 0x00FF0000) >> 16); + bytes[i++] = (byte)((sz & 0xFF000000) >> 24); + + // UncompressedSize (Int32) + if (_Debug) System.Console.WriteLine("Uncompressed Size: {0}", crc32.TotalBytesRead); + bytes[i++] = (byte)(crc32.TotalBytesRead & 0x000000FF); + bytes[i++] = (byte)((crc32.TotalBytesRead & 0x0000FF00) >> 8); + bytes[i++] = (byte)((crc32.TotalBytesRead & 0x00FF0000) >> 16); + bytes[i++] = (byte)((crc32.TotalBytesRead & 0xFF000000) >> 24); + + // filename length (Int16) + Int16 length = (Int16)FileName.Length; + // see note below about TrimVolumeFromFullyQualifiedPaths. + if ( (TrimVolumeFromFullyQualifiedPaths) && (FileName[1]==':') && (FileName[2]=='\\')) length-=3; + bytes[i++] = (byte)(length & 0x00FF); + bytes[i++] = (byte)((length & 0xFF00) >> 8); + + // extra field length (short) + Int16 ExtraFieldLength = 0x00; + bytes[i++] = (byte)(ExtraFieldLength & 0x00FF); + bytes[i++] = (byte)((ExtraFieldLength & 0xFF00) >> 8); + + // Tue, 27 Mar 2007 16:35 + + // Creating a zip that contains entries with "fully qualified" pathnames + // can result in a zip archive that is unreadable by Windows Explorer. + // Such archives are valid according to other tools but not to explorer. + // To avoid this, we can trim off the leading volume name and slash (eg + // c:\) when creating (writing) a zip file. We do this by default and we + // leave the old behavior available with the + // TrimVolumeFromFullyQualifiedPaths flag - set it to false to get the old + // behavior. It only affects zip creation. + + // actual filename + char[] c = ( (TrimVolumeFromFullyQualifiedPaths) && (FileName[1]==':') && (FileName[2]=='\\')) ? + FileName.Substring(3).ToCharArray() : // trim off volume letter, colon, and slash + FileName.ToCharArray(); + int j = 0; + + if (_Debug) + { + System.Console.WriteLine("local header: writing filename, {0} chars", c.Length); + System.Console.WriteLine("starting offset={0}", i); + } + for (j = 0; (j < c.Length) && (i + j < bytes.Length); j++) + { + bytes[i + j] = System.BitConverter.GetBytes(c[j])[0]; + if (_Debug) System.Console.Write(" {0:X2}", bytes[i + j]); + } + if (_Debug) System.Console.WriteLine(); + + i += j; + + // extra field (we always write nothing in this implementation) + // ;; + + // remember the file offset of this header + _RelativeOffsetOfHeader = (int)s.Length; + + + if (_Debug) + { + System.Console.WriteLine("\nAll header data:"); + for (j = 0; j < i; j++) + System.Console.Write(" {0:X2}", bytes[j]); + System.Console.WriteLine(); + } + // finally, write the header to the stream + s.Write(bytes, 0, i); + + // preserve this header data for use with the central directory structure. + _header = new byte[i]; + if (_Debug) System.Console.WriteLine("preserving header of {0} bytes", _header.Length); + for (j = 0; j < i; j++) + _header[j] = bytes[j]; + + } + + + internal void Write(System.IO.Stream s) + { + byte[] bytes = new byte[4096]; + int n; + + // write the header: + WriteHeader(s, bytes); + + // write the actual file data: + _UnderlyingMemoryStream.Position = 0; + + if (_Debug) + { + Console.WriteLine("{0}: writing compressed data to zipfile...", FileName); + Console.WriteLine("{0}: total data length: {1}", FileName, _UnderlyingMemoryStream.Length); + } + while ((n = _UnderlyingMemoryStream.Read(bytes, 0, bytes.Length)) != 0) + { + + if (_Debug) + { + Console.WriteLine("{0}: transferring {1} bytes...", FileName, n); + + for (int j = 0; j < n; j += 2) + { + if ((j > 0) && (j % 40 == 0)) + System.Console.WriteLine(); + System.Console.Write(" {0:X2}", bytes[j]); + if (j + 1 < n) + System.Console.Write("{0:X2}", bytes[j + 1]); + } + System.Console.WriteLine("\n"); + } + + s.Write(bytes, 0, n); + } + + //_CompressedStream.Close(); + //_CompressedStream= null; + _UnderlyingMemoryStream.Close(); + _UnderlyingMemoryStream = null; + } + } +} diff --git a/Neoforce/External/Zip/ZipFile.cs b/Neoforce/External/Zip/ZipFile.cs new file mode 100644 index 0000000..8a0c569 --- /dev/null +++ b/Neoforce/External/Zip/ZipFile.cs @@ -0,0 +1,505 @@ +using System; + +namespace TomShane.Neoforce.External.Zip +{ + + internal class ZipFile : System.Collections.Generic.IEnumerable, + IDisposable + { + private string _name; + public string Name + { + get { return _name; } + } + + + + // when this is set, we trim the volume (eg C:) off any fully-qualified pathname, + // before writing the ZipEntry into the ZipFile. + // We default this to true. This allows Windows Explorer to read the zip archives properly. + private bool _TrimVolumeFromFullyQualifiedPaths= true; + public bool TrimVolumeFromFullyQualifiedPaths + { + get { return _TrimVolumeFromFullyQualifiedPaths; } + set { _TrimVolumeFromFullyQualifiedPaths= value; } + } + + private System.IO.Stream ReadStream + { + get + { + if (_readstream == null) + { + _readstream = System.IO.File.OpenRead(_name); + } + return _readstream; + } + } + + private System.IO.FileStream WriteStream + { + get + { + if (_writestream == null) + { + _writestream = new System.IO.FileStream(_name, System.IO.FileMode.CreateNew); + } + return _writestream; + } + } + + private ZipFile() { } + + + #region For Writing Zip Files + + public ZipFile(string NewZipFileName) + { + // create a new zipfile + _name = NewZipFileName; + if (System.IO.File.Exists(_name)) + throw new System.Exception(String.Format("That file ({0}) already exists.", NewZipFileName)); + _entries = new System.Collections.Generic.List(); + } + + + public void AddItem(string FileOrDirectoryName) + { + AddItem(FileOrDirectoryName, false); + } + + public void AddItem(string FileOrDirectoryName, bool WantVerbose) + { + if (System.IO.File.Exists(FileOrDirectoryName)) + AddFile(FileOrDirectoryName, WantVerbose); + else if (System.IO.Directory.Exists(FileOrDirectoryName)) + AddDirectory(FileOrDirectoryName, WantVerbose); + + else + throw new Exception(String.Format("That file or directory ({0}) does not exist!", FileOrDirectoryName)); + } + + public void AddFile(string FileName) + { + AddFile(FileName, false); + } + + public void AddFile(string FileName, bool WantVerbose) + { + ZipEntry ze = ZipEntry.Create(FileName); + ze.TrimVolumeFromFullyQualifiedPaths= TrimVolumeFromFullyQualifiedPaths; + if (WantVerbose) Console.WriteLine("adding {0}...", FileName); + ze.Write(WriteStream); + _entries.Add(ze); + } + + public void AddDirectory(string DirectoryName) + { + AddDirectory(DirectoryName, false); + } + + public void AddDirectory(string DirectoryName, bool WantVerbose) + { + String[] filenames = System.IO.Directory.GetFiles(DirectoryName); + foreach (String filename in filenames) + { + if (WantVerbose) Console.WriteLine("adding {0}...", filename); + AddFile(filename); + } + } + + + public void Save() + { + WriteCentralDirectoryStructure(); + WriteStream.Close(); + _writestream = null; + } + + + private void WriteCentralDirectoryStructure() + { + // the central directory structure + long Start = WriteStream.Length; + foreach (ZipEntry e in _entries) + { + e.WriteCentralDirectoryEntry(WriteStream); + } + long Finish = WriteStream.Length; + + // now, the footer + WriteCentralDirectoryFooter(Start, Finish); + } + + + private void WriteCentralDirectoryFooter(long StartOfCentralDirectory, long EndOfCentralDirectory) + { + byte[] bytes = new byte[1024]; + int i = 0; + // signature + UInt32 EndOfCentralDirectorySignature = 0x06054b50; + bytes[i++] = (byte)(EndOfCentralDirectorySignature & 0x000000FF); + bytes[i++] = (byte)((EndOfCentralDirectorySignature & 0x0000FF00) >> 8); + bytes[i++] = (byte)((EndOfCentralDirectorySignature & 0x00FF0000) >> 16); + bytes[i++] = (byte)((EndOfCentralDirectorySignature & 0xFF000000) >> 24); + + // number of this disk + bytes[i++] = 0; + bytes[i++] = 0; + + // number of the disk with the start of the central directory + bytes[i++] = 0; + bytes[i++] = 0; + + // total number of entries in the central dir on this disk + bytes[i++] = (byte)(_entries.Count & 0x00FF); + bytes[i++] = (byte)((_entries.Count & 0xFF00) >> 8); + + // total number of entries in the central directory + bytes[i++] = (byte)(_entries.Count & 0x00FF); + bytes[i++] = (byte)((_entries.Count & 0xFF00) >> 8); + + // size of the central directory + Int32 SizeOfCentralDirectory = (Int32)(EndOfCentralDirectory - StartOfCentralDirectory); + bytes[i++] = (byte)(SizeOfCentralDirectory & 0x000000FF); + bytes[i++] = (byte)((SizeOfCentralDirectory & 0x0000FF00) >> 8); + bytes[i++] = (byte)((SizeOfCentralDirectory & 0x00FF0000) >> 16); + bytes[i++] = (byte)((SizeOfCentralDirectory & 0xFF000000) >> 24); + + // offset of the start of the central directory + Int32 StartOffset = (Int32)StartOfCentralDirectory; // cast down from Long + bytes[i++] = (byte)(StartOffset & 0x000000FF); + bytes[i++] = (byte)((StartOffset & 0x0000FF00) >> 8); + bytes[i++] = (byte)((StartOffset & 0x00FF0000) >> 16); + bytes[i++] = (byte)((StartOffset & 0xFF000000) >> 24); + + // zip comment length + bytes[i++] = 0; + bytes[i++] = 0; + + WriteStream.Write(bytes, 0, i); + } + + #endregion + + #region For Reading Zip Files + + internal static ZipFile Read(string zipfilename) + { + return Read(zipfilename, false); + } + + internal static ZipFile Read(string zipfilename, bool TurnOnDebug) + { + + ZipFile zf = new ZipFile(); + zf._Debug = TurnOnDebug; + zf._name = zipfilename; + zf._entries = new System.Collections.Generic.List(); + ZipEntry e; + while ((e = ZipEntry.Read(zf.ReadStream, zf._Debug)) != null) + { + if (zf._Debug) System.Console.WriteLine(" ZipFile::Read(): ZipEntry: {0}", e.FileName); + zf._entries.Add(e); + } + + // read the zipfile's central directory structure here. + zf._direntries = new System.Collections.Generic.List(); + + ZipDirEntry de; + while ((de = ZipDirEntry.Read(zf.ReadStream, zf._Debug)) != null) + { + if (zf._Debug) System.Console.WriteLine(" ZipFile::Read(): ZipDirEntry: {0}", de.FileName); + zf._direntries.Add(de); + } + + return zf; + } + + public System.Collections.Generic.IEnumerator GetEnumerator() + { + foreach (ZipEntry e in _entries) + yield return e; + } + + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + + public void ExtractAll(string path) + { + ExtractAll(path, false); + } + + + public void ExtractAll(string path, bool WantVerbose) + { + bool header = WantVerbose; + foreach (ZipEntry e in _entries) + { + if (header) + { + System.Console.WriteLine("\n{1,-22} {2,-6} {3,4} {4,-8} {0}", + "Name", "Modified", "Size", "Ratio", "Packed"); + System.Console.WriteLine(new System.String('-', 72)); + header = false; + } + if (WantVerbose) + System.Console.WriteLine("{1,-22} {2,-6} {3,4:F0}% {4,-8} {0}", + e.FileName, + e.LastModified.ToString("yyyy-MM-dd HH:mm:ss"), + e.UncompressedSize, + e.CompressionRatio, + e.CompressedSize); + e.Extract(path); + } + } + + + public void Extract(string filename) + { + this[filename].Extract(); + } + + + public void Extract(string filename, System.IO.Stream s) + { + this[filename].Extract(s); + } + + + public ZipEntry this[String filename] + { + get + { + foreach (ZipEntry e in _entries) + { + if (e.FileName == filename) return e; + } + return null; + } + } + + #endregion + + // the destructor + ~ZipFile() + { + // call Dispose with false. Since we're in the + // destructor call, the managed resources will be + // disposed of anyways. + Dispose(false); + } + + public void Dispose() + { + // dispose of the managed and unmanaged resources + Dispose(true); + + // tell the GC that the Finalize process no longer needs + // to be run for this object. + GC.SuppressFinalize(this); + } + + + protected virtual void Dispose(bool disposeManagedResources) + { + if (!this._disposed) + { + if (disposeManagedResources) + { + // dispose managed resources + if (_readstream != null) + { + _readstream.Dispose(); + _readstream = null; + } + if (_writestream != null) + { + _writestream.Dispose(); + _writestream = null; + } + } + this._disposed = true; + } + } + + + private System.IO.Stream _readstream; + private System.IO.FileStream _writestream; + private bool _Debug = false; + private bool _disposed = false; + private System.Collections.Generic.List _entries = null; + private System.Collections.Generic.List _direntries = null; + } + +} + +#region More Info +// Example usage: +// 1. Extracting all files from a Zip file: +// +// try +// { +// using(ZipFile zip= ZipFile.Read(ZipFile)) +// { +// zip.ExtractAll(TargetDirectory, true); +// } +// } +// catch (System.Exception ex1) +// { +// System.Console.Error.WriteLine("exception: " + ex1); +// } +// +// 2. Extracting files from a zip individually: +// +// try +// { +// using(ZipFile zip= ZipFile.Read(ZipFile)) +// { +// foreach (ZipEntry e in zip) +// { +// e.Extract(TargetDirectory); +// } +// } +// } +// catch (System.Exception ex1) +// { +// System.Console.Error.WriteLine("exception: " + ex1); +// } +// +// 3. Creating a zip archive: +// +// try +// { +// using(ZipFile zip= new ZipFile(NewZipFile)) +// { +// +// String[] filenames= System.IO.Directory.GetFiles(Directory); +// foreach (String filename in filenames) +// { +// zip.Add(filename); +// } +// +// zip.Save(); +// } +// +// } +// catch (System.Exception ex1) +// { +// System.Console.Error.WriteLine("exception: " + ex1); +// } +// +// +// ================================================================== +// +// +// +// Information on the ZIP format: +// +// From +// http://www.pkware.com/business_and_developers/developer/popups/appnote.txt +// +// Overall .ZIP file format: +// +// [local file header 1] +// [file data 1] +// [data descriptor 1] ** sometimes +// . +// . +// . +// [local file header n] +// [file data n] +// [data descriptor n] ** sometimes +// [archive decryption header] +// [archive extra data record] +// [central directory] +// [zip64 end of central directory record] +// [zip64 end of central directory locator] +// [end of central directory record] +// +// Local File Header format: +// local file header signature 4 bytes (0x04034b50) +// version needed to extract 2 bytes +// general purpose bit flag 2 bytes +// compression method 2 bytes +// last mod file time 2 bytes +// last mod file date 2 bytes +// crc-32 4 bytes +// compressed size 4 bytes +// uncompressed size 4 bytes +// file name length 2 bytes +// extra field length 2 bytes +// file name varies +// extra field varies +// +// +// Data descriptor: (used only when bit 3 of the general purpose bitfield is set) +// local file header signature 4 bytes (0x08074b50) +// crc-32 4 bytes +// compressed size 4 bytes +// uncompressed size 4 bytes +// +// +// Central directory structure: +// +// [file header 1] +// . +// . +// . +// [file header n] +// [digital signature] +// +// +// File header: (This is ZipDirEntry in the code above) +// central file header signature 4 bytes (0x02014b50) +// version made by 2 bytes +// version needed to extract 2 bytes +// general purpose bit flag 2 bytes +// compression method 2 bytes +// last mod file time 2 bytes +// last mod file date 2 bytes +// crc-32 4 bytes +// compressed size 4 bytes +// uncompressed size 4 bytes +// file name length 2 bytes +// extra field length 2 bytes +// file comment length 2 bytes +// disk number start 2 bytes +// internal file attributes 2 bytes +// external file attributes 4 bytes +// relative offset of local header 4 bytes +// file name (variable size) +// extra field (variable size) +// file comment (variable size) +// +// End of central directory record: +// +// end of central dir signature 4 bytes (0x06054b50) +// number of this disk 2 bytes +// number of the disk with the +// start of the central directory 2 bytes +// total number of entries in the +// central directory on this disk 2 bytes +// total number of entries in +// the central directory 2 bytes +// size of the central directory 4 bytes +// offset of start of central +// directory with respect to +// the starting disk number 4 bytes +// .ZIP file comment length 2 bytes +// .ZIP file comment (variable size) +// +// date and time are packed values, as MSDOS did them +// time: bits 0-4 : second +// 5-10: minute +// 11-15: hour +// date bits 0-4 : day +// 5-8: month +// 9-15 year (since 1980) +// +// see http://www.vsft.com/hal/dostime.htm + +#endregion \ No newline at end of file diff --git a/Neoforce/GroupBox.cs b/Neoforce/GroupBox.cs new file mode 100644 index 0000000..04228ca --- /dev/null +++ b/Neoforce/GroupBox.cs @@ -0,0 +1,139 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: GroupBox.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +using Microsoft.Xna.Framework; +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework.Graphics; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public enum GroupBoxType + { + Normal, + Flat + } + + public class GroupBox : Container + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private GroupBoxType type = GroupBoxType.Normal; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public virtual GroupBoxType Type + { + get { return type; } + set { type = value; Invalidate(); } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public GroupBox(Manager manager) + : base(manager) + { + CheckLayer(Skin, "Control"); + CheckLayer(Skin, "Flat"); + + CanFocus = false; + Passive = true; + Width = 64; + Height = 64; + BackColor = Color.Transparent; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + + private void AdjustClientMargins() + { + SkinLayer layer = this.type == GroupBoxType.Normal ? this.Skin.Layers["Control"] : this.Skin.Layers["Flat"]; + SpriteFont font = (layer.Text != null && layer.Text.Font != null) ? layer.Text.Font.Resource : null; + Vector2 size = font.MeasureString(this.Text); + var cm = this.ClientMargins; + cm.Top = string.IsNullOrWhiteSpace(this.Text) ? this.ClientTop : (int)size.Y; + this.ClientMargins = new Margins(cm.Left, cm.Top, cm.Right, cm.Bottom); + } + + protected override void OnTextChanged(EventArgs e) + { + base.OnTextChanged(e); + AdjustClientMargins(); + } + + protected internal override void OnSkinChanged(EventArgs e) + { + base.OnSkinChanged(e); + AdjustClientMargins(); + } + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + SkinLayer layer = type == GroupBoxType.Normal ? Skin.Layers["Control"] : Skin.Layers["Flat"]; + SpriteFont font = (layer.Text != null && layer.Text.Font != null) ? layer.Text.Font.Resource : null; + Color col = (layer.Text != null) ? layer.Text.Colors.Enabled : Color.White; + Point offset = new Point(layer.Text.OffsetX, layer.Text.OffsetY); + Vector2 size = font.MeasureString(Text); + size.Y = font.LineSpacing; + Rectangle r = new Rectangle(rect.Left, rect.Top + (int)(size.Y / 2), rect.Width, rect.Height - (int)(size.Y / 2)); + + renderer.DrawLayer(this, layer, r); + + if (font != null && Text != null && Text != "") + { + Rectangle bg = new Rectangle(r.Left + offset.X, (r.Top - (int)(size.Y / 2)) + offset.Y, (int)size.X + layer.ContentMargins.Horizontal, (int)size.Y); + renderer.DrawLayer(Manager.Skin.Controls["Control"].Layers[0], bg, new Color(64, 64, 64), 0); + renderer.DrawString(this, layer, Text, new Rectangle(r.Left, r.Top - (int)(size.Y / 2), (int)(size.X), (int)size.Y), true, 0, 0, false); + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/GroupPanel.cs b/Neoforce/GroupPanel.cs new file mode 100644 index 0000000..ac25828 --- /dev/null +++ b/Neoforce/GroupPanel.cs @@ -0,0 +1,94 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: GroupPanel.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +using Microsoft.Xna.Framework; +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework.Graphics; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public class GroupPanel: Container + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public GroupPanel(Manager manager): base(manager) + { + CanFocus = false; + Passive = true; + Width = 64; + Height = 64; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + SkinLayer layer = Skin.Layers["Control"]; + SpriteFont font = (layer.Text != null && layer.Text.Font != null) ? layer.Text.Font.Resource : null; + Color col = (layer.Text != null) ? layer.Text.Colors.Enabled : Color.White; + Point offset = new Point(layer.Text.OffsetX, layer.Text.OffsetY); + + renderer.DrawLayer(this, layer, rect); + + if (font != null && Text != null && Text != "") + { + renderer.DrawString(this, layer, Text, new Rectangle(rect.Left, rect.Top + layer.ContentMargins.Top, rect.Width, Skin.ClientMargins.Top - layer.ContentMargins.Horizontal), false, offset.X, offset.Y, false); + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/ImageBox.cs b/Neoforce/ImageBox.cs new file mode 100644 index 0000000..146a15f --- /dev/null +++ b/Neoforce/ImageBox.cs @@ -0,0 +1,197 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: ImageBox.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +using Microsoft.Xna.Framework; +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework.Graphics; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public class ImageBox: Control + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private Texture2D image = null; + private SizeMode sizeMode = SizeMode.Normal; + private Rectangle sourceRect = Rectangle.Empty; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public Texture2D Image + { + get { return image; } + set + { + image = value; + sourceRect = new Rectangle(0, 0, image.Width, image.Height); + Invalidate(); + if (!Suspended) OnImageChanged(new EventArgs()); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public Rectangle SourceRect + { + get { return sourceRect; } + set + { + if (value != null && image != null) + { + int l = value.Left; + int t = value.Top; + int w = value.Width; + int h = value.Height; + + if (l < 0) l = 0; + if (t < 0) t = 0; + if (w > image.Width) w = image.Width; + if (h > image.Height) h = image.Height; + if (l + w > image.Width) w = (image.Width - l); + if (t + h > image.Height) h = (image.Height - t); + + sourceRect = new Rectangle(l, t, w, h); + } + else if (image != null) + { + sourceRect = new Rectangle(0, 0, image.Width, image.Height); + } + else + { + sourceRect = Rectangle.Empty; + } + Invalidate(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public SizeMode SizeMode + { + get { return sizeMode; } + set + { + if (value == SizeMode.Auto && image != null) + { + Width = image.Width; + Height = image.Height; + } + sizeMode = value; + Invalidate(); + if (!Suspended) OnSizeModeChanged(new EventArgs()); + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + public event EventHandler ImageChanged; + public event EventHandler SizeModeChanged; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public ImageBox(Manager manager): base(manager) + { + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + CanFocus = false; + Color = Color.White; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + if (image != null) + { + if (sizeMode == SizeMode.Normal) + { + renderer.Draw(image, rect.X, rect.Y, sourceRect, Color); + } + else if (sizeMode == SizeMode.Auto) + { + renderer.Draw(image, rect.X, rect.Y, sourceRect, Color); + } + else if (sizeMode == SizeMode.Stretched) + { + renderer.Draw(image, rect, sourceRect, Color); + } + else if (sizeMode == SizeMode.Centered) + { + int x = (rect.Width / 2) - (image.Width / 2); + int y = (rect.Height / 2) - (image.Height / 2); + + renderer.Draw(image, x, y, sourceRect, Color); + } + else if (sizeMode == SizeMode.Tiled) + { + renderer.DrawTileTexture(image, rect, Color); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnImageChanged(EventArgs e) + { + if (ImageChanged != null) ImageChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnSizeModeChanged(EventArgs e) + { + if (SizeModeChanged != null) SizeModeChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/InputSystem.cs b/Neoforce/InputSystem.cs new file mode 100644 index 0000000..43e4249 --- /dev/null +++ b/Neoforce/InputSystem.cs @@ -0,0 +1,735 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: InputSystem.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using System; +using System.Collections.Generic; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Input; +using Microsoft.Xna.Framework.GamerServices; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + #region //// Enums ///////////// + + //////////////////////////////////////////////////////////////////////////// + [Flags] + public enum InputMethods + { + None = 0x00, + Keyboard = 0x01, + Mouse = 0x02, + GamePad = 0x04, + All = Keyboard | Mouse | 0x04 + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public enum MouseButton + { + None = 0, + Left, + Right, + Middle, + XButton1, + XButton2 + } + //////////////////////////////////////////////////////////////////////////// + + public enum MouseScrollDirection + { + None = 0, + Down = 1, + Up = 2 + } + + //////////////////////////////////////////////////////////////////////////// + public enum GamePadButton + { + None = 0, + Start = 6, + Back, + Up, + Down, + Left, + Right, + A, + B, + X, + Y, + BigButton, + LeftShoulder, + RightShoulder, + LeftTrigger, + RightTrigger, + LeftStick, + RightStick, + LeftStickLeft, + LeftStickRight, + LeftStickUp, + LeftStickDown, + RightStickLeft, + RightStickRight, + RightStickUp, + RightStickDown + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public enum ActivePlayer + { + None = -1, + One = 0, + Two = 1, + Three = 2, + Four = 3 + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Structs /////////// + + //////////////////////////////////////////////////////////////////////////// + public struct GamePadVectors + { + public Vector2 LeftStick; + public Vector2 RightStick; + public float LeftTrigger; + public float RightTrigger; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public struct InputOffset + { + public int X; + public int Y; + public float RatioX; + public float RatioY; + + public InputOffset(int x, int y, float rx, float ry) + { + X = x; + Y = y; + RatioX = rx; + RatioY = ry; + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Classes /////////// + + //////////////////////////////////////////////////////////////////////////// + public class InputSystem: Disposable + { + + #region //// Classes /////////// + + //////////////////////////////////////////////////////////////////////////// + private class InputKey + { + public Keys Key = Keys.None; + public bool Pressed = false; + public double Countdown = RepeatDelay; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private class InputMouseButton + { + public MouseButton Button = MouseButton.None; + public bool Pressed = false; + public double Countdown = RepeatDelay; + + public InputMouseButton() + { + } + + public InputMouseButton(MouseButton button) + { + Button = button; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private class InputMouse + { + public MouseState State = new MouseState(); + public Point Position = new Point(0, 0); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private class InputGamePadButton + { + public GamePadButton Button = GamePadButton.None; + public bool Pressed = false; + public double Countdown = RepeatDelay; + + public InputGamePadButton() + { + } + + public InputGamePadButton(GamePadButton button) + { + Button = button; + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Consts //////////// + + //////////////////////////////////////////////////////////////////////////// + private const int RepeatDelay = 500; + private const int RepeatRate = 50; + private float ClickThreshold = 0.5f; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private List keys = new List(); + private List mouseButtons = new List(); + private List gamePadButtons = new List(); + private MouseState mouseState = new MouseState(); + private GamePadState gamePadState = new GamePadState(); + private Manager manager = null; + private InputOffset inputOffset = new InputOffset(0, 0, 1.0f, 1.0f); + private InputMethods inputMethods = InputMethods.All; + private ActivePlayer activePlayer = ActivePlayer.None; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Sets or gets input offset and ratio when rescaling controls in render target. + /// + public virtual InputOffset InputOffset + { + get { return inputOffset; } + set { inputOffset = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Sets or gets input methods allowed for navigation. + /// + public virtual InputMethods InputMethods + { + get { return inputMethods; } + set { inputMethods = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual ActivePlayer ActivePlayer + { + get { return activePlayer; } + set { activePlayer = value; } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + public event KeyEventHandler KeyDown; + public event KeyEventHandler KeyPress; + public event KeyEventHandler KeyUp; + + public event MouseEventHandler MouseDown; + public event MouseEventHandler MousePress; + public event MouseEventHandler MouseUp; + public event MouseEventHandler MouseMove; + /// + /// Occurs when the mouse is scrolled. + /// + public event MouseEventHandler MouseScroll; + + public event GamePadEventHandler GamePadUp; + public event GamePadEventHandler GamePadDown; + public event GamePadEventHandler GamePadPress; + public event GamePadEventHandler GamePadMove; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public InputSystem(Manager manager, InputOffset offset) + { + this.inputOffset = offset; + this.manager = manager; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public InputSystem(Manager manager): this(manager, new InputOffset(0, 0, 1.0f, 1.0f)) + { + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void Initialize() + { + keys.Clear(); + mouseButtons.Clear(); + gamePadButtons.Clear(); + + #if (!XBOX && !XBOX_FAKE) + foreach (string str in Enum.GetNames(typeof(Keys))) + { + InputKey key = new InputKey(); + key.Key = (Keys)Enum.Parse(typeof(Keys), str); + keys.Add(key); + } + + foreach (string str in Enum.GetNames(typeof(MouseButton))) + { + InputMouseButton btn = new InputMouseButton(); + btn.Button = (MouseButton)Enum.Parse(typeof(MouseButton), str); + mouseButtons.Add(btn); + } + + foreach (string str in Enum.GetNames(typeof(GamePadButton))) + { + InputGamePadButton btn = new InputGamePadButton(); + btn.Button = (GamePadButton)Enum.Parse(typeof(GamePadButton), str); + gamePadButtons.Add(btn); + } + #else + gamePadButtons.Add(new InputGamePadButton(GamePadButton.None)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.Start)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.Back)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.Up)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.Down)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.Left)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.Right)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.A)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.B)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.X)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.Y)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.BigButton)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftShoulder)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightShoulder)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftTrigger)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightTrigger)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftStick)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightStick)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftStickLeft)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftStickRight)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftStickUp)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.LeftStickDown)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightStickLeft)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightStickRight)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightStickUp)); + gamePadButtons.Add(new InputGamePadButton(GamePadButton.RightStickDown)); + #endif + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void SendMouseState(MouseState state, GameTime gameTime) + { + UpdateMouse(state, gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void SendKeyboardState(KeyboardState state, GameTime gameTime) + { + UpdateKeys(state, gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void SendGamePadState(PlayerIndex playerIndex, GamePadState state, GameTime gameTime) + { + UpdateGamePad(playerIndex, state, gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void Update(GameTime gameTime) + { + if (manager.UseGuide && Guide.IsVisible) return; + + #if (!XBOX && !XBOX_FAKE) + MouseState ms = Mouse.GetState(); + KeyboardState ks = Keyboard.GetState(); + #endif + + + + { + #if (!XBOX && !XBOX_FAKE) + if ((inputMethods & InputMethods.Mouse) == InputMethods.Mouse) UpdateMouse(ms, gameTime); + if ((inputMethods & InputMethods.Keyboard) == InputMethods.Keyboard) UpdateKeys(ks, gameTime); + #endif + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private ButtonState GetVectorState(GamePadButton button, GamePadState state) + { + ButtonState ret = ButtonState.Released; + bool down = false; + float t = ClickThreshold; + + switch (button) + { + case GamePadButton.LeftStickLeft: down = state.ThumbSticks.Left.X < -t; break; + case GamePadButton.LeftStickRight: down = state.ThumbSticks.Left.X > t; break; + case GamePadButton.LeftStickUp: down = state.ThumbSticks.Left.Y > t; break; + case GamePadButton.LeftStickDown: down = state.ThumbSticks.Left.Y < -t; break; + + case GamePadButton.RightStickLeft: down = state.ThumbSticks.Right.X < -t; break; + case GamePadButton.RightStickRight: down = state.ThumbSticks.Right.X > t; break; + case GamePadButton.RightStickUp: down = state.ThumbSticks.Right.Y > t; break; + case GamePadButton.RightStickDown: down = state.ThumbSticks.Right.Y < -t; break; + + case GamePadButton.LeftTrigger: down = state.Triggers.Left > t; break; + case GamePadButton.RightTrigger: down = state.Triggers.Right > t; break; + } + + ret = down ? ButtonState.Pressed : ButtonState.Released; + + return ret; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void UpdateGamePad(PlayerIndex playerIndex, GamePadState state, GameTime gameTime) + { + GamePadEventArgs e = new GamePadEventArgs(playerIndex); + + if (state.ThumbSticks.Left != gamePadState.ThumbSticks.Left || + state.ThumbSticks.Right != gamePadState.ThumbSticks.Right || + state.Triggers.Left != gamePadState.Triggers.Left || + state.Triggers.Right != gamePadState.Triggers.Right) + { + BuildGamePadEvent(state, GamePadButton.None, ref e); + if (GamePadMove != null) GamePadMove.Invoke(this, e); + } + + foreach (InputGamePadButton btn in gamePadButtons) + { + ButtonState bs = ButtonState.Released; + + if (btn.Button == GamePadButton.None) continue; + else if (btn.Button == GamePadButton.A) bs = state.Buttons.A; + else if (btn.Button == GamePadButton.B) bs = state.Buttons.B; + else if (btn.Button == GamePadButton.Back) bs = state.Buttons.Back; + else if (btn.Button == GamePadButton.Down) bs = state.DPad.Down; + else if (btn.Button == GamePadButton.Left) bs = state.DPad.Left; + else if (btn.Button == GamePadButton.Right) bs = state.DPad.Right; + else if (btn.Button == GamePadButton.Start) bs = state.Buttons.Start; + else if (btn.Button == GamePadButton.Up) bs = state.DPad.Up; + else if (btn.Button == GamePadButton.X) bs = state.Buttons.X; + else if (btn.Button == GamePadButton.Y) bs = state.Buttons.Y; + else if (btn.Button == GamePadButton.BigButton) bs = state.Buttons.BigButton; + else if (btn.Button == GamePadButton.LeftShoulder) bs = state.Buttons.LeftShoulder; + else if (btn.Button == GamePadButton.RightShoulder) bs = state.Buttons.RightShoulder; + else if (btn.Button == GamePadButton.LeftStick) bs = state.Buttons.LeftStick; + else if (btn.Button == GamePadButton.RightStick) bs = state.Buttons.RightStick; + else bs = GetVectorState(btn.Button, state); + + bool pressed = (bs == ButtonState.Pressed); + if (pressed) + { + double ms = gameTime.ElapsedGameTime.TotalMilliseconds; + if (pressed) btn.Countdown -= ms; + } + + if ((pressed) && (!btn.Pressed)) + { + btn.Pressed = true; + BuildGamePadEvent(state, btn.Button, ref e); + + if (GamePadDown != null) GamePadDown.Invoke(this, e); + if (GamePadPress != null) GamePadPress.Invoke(this, e); + } + else if ((!pressed) && (btn.Pressed)) + { + btn.Pressed = false; + btn.Countdown = RepeatDelay; + BuildGamePadEvent(state, btn.Button, ref e); + + if (GamePadUp != null) GamePadUp.Invoke(this, e); + } + else if (btn.Pressed && btn.Countdown < 0) + { + e.Button = btn.Button; + btn.Countdown = RepeatRate; + BuildGamePadEvent(state, btn.Button, ref e); + + if (GamePadPress != null) GamePadPress.Invoke(this, e); + } + } + gamePadState = state; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void BuildGamePadEvent(GamePadState state, GamePadButton button, ref GamePadEventArgs e) + { + e.State = state; + e.Button = button; + e.Vectors.LeftStick = new Vector2(state.ThumbSticks.Left.X, state.ThumbSticks.Left.Y); + e.Vectors.RightStick = new Vector2(state.ThumbSticks.Right.X, state.ThumbSticks.Right.Y); + e.Vectors.LeftTrigger = state.Triggers.Left; + e.Vectors.RightTrigger = state.Triggers.Right; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void UpdateKeys(KeyboardState state, GameTime gameTime) + { + #if (!XBOX && !XBOX_FAKE) + + KeyEventArgs e = new KeyEventArgs(); + + e.Caps = (((ushort)NativeMethods.GetKeyState(0x14)) & 0xffff) != 0; + + foreach (Keys key in state.GetPressedKeys()) + { + if (key == Keys.LeftAlt || key == Keys.RightAlt) e.Alt = true; + else if (key == Keys.LeftShift || key == Keys.RightShift) e.Shift = true; + else if (key == Keys.LeftControl || key == Keys.RightControl) e.Control = true; + } + + foreach (InputKey key in keys) + { + if (key.Key == Keys.LeftAlt || key.Key == Keys.RightAlt || + key.Key == Keys.LeftShift || key.Key == Keys.RightShift || + key.Key == Keys.LeftControl || key.Key == Keys.RightControl) + { + continue; + } + + bool pressed = state.IsKeyDown(key.Key); + + double ms = gameTime.ElapsedGameTime.TotalMilliseconds; + if (pressed) key.Countdown -= ms; + + if ((pressed) && (!key.Pressed)) + { + key.Pressed = true; + e.Key = key.Key; + + if (KeyDown != null) KeyDown.Invoke(this, e); + if (KeyPress != null) KeyPress.Invoke(this, e); + } + else if ((!pressed) && (key.Pressed)) + { + key.Pressed = false; + key.Countdown = RepeatDelay; + e.Key = key.Key; + + if (KeyUp != null) KeyUp.Invoke(this, e); + } + else if (key.Pressed && key.Countdown < 0) + { + key.Countdown = RepeatRate; + e.Key = key.Key; + + if (KeyPress != null) KeyPress.Invoke(this, e); + } + } + #endif + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private Point RecalcPosition(Point pos) + { + return new Point((int)((pos.X - InputOffset.X) / InputOffset.RatioX), (int)((pos.Y - InputOffset.Y) / InputOffset.RatioY)); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void AdjustPosition(ref MouseEventArgs e) + { + Rectangle screen = manager.Game.Window.ClientBounds; + + if (e.Position.X < 0) e.Position.X = 0; + if (e.Position.Y < 0) e.Position.Y = 0; + if (e.Position.X >= screen.Width) e.Position.X = screen.Width - 1; + if (e.Position.Y >= screen.Height) e.Position.Y = screen.Height - 1; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void BuildMouseEvent(MouseState state, MouseButton button, ref MouseEventArgs e) + { + e.State = state; + e.Button = button; + + e.Position = new Point(state.X, state.Y); + AdjustPosition(ref e); + + e.Position = RecalcPosition(e.Position); + e.State = new MouseState(e.Position.X, e.Position.Y, e.State.ScrollWheelValue, e.State.LeftButton, e.State.MiddleButton, e.State.RightButton, e.State.XButton1, e.State.XButton2); + + Point pos = RecalcPosition(new Point(mouseState.X, mouseState.Y)); + e.Difference = new Point(e.Position.X - pos.X, e.Position.Y - pos.Y); + } + //////////////////////////////////////////////////////////////////////////// + + private void BuildMouseEvent(MouseState state, MouseButton button, MouseScrollDirection direction, ref MouseEventArgs e) + { + BuildMouseEvent(state, button, ref e); + + e.ScrollDirection = direction; + } + + //////////////////////////////////////////////////////////////////////////// + private void UpdateMouse(MouseState state, GameTime gameTime) + { + #if (!XBOX && !XBOX_FAKE) + + if ((state.X != mouseState.X) || (state.Y != mouseState.Y)) + { + MouseEventArgs e = new MouseEventArgs(); + + MouseButton btn = MouseButton.None; + if (state.LeftButton == ButtonState.Pressed) btn = MouseButton.Left; + else if (state.RightButton == ButtonState.Pressed) btn = MouseButton.Right; + else if (state.MiddleButton == ButtonState.Pressed) btn = MouseButton.Middle; + else if (state.XButton1 == ButtonState.Pressed) btn = MouseButton.XButton1; + else if (state.XButton2 == ButtonState.Pressed) btn = MouseButton.XButton2; + + BuildMouseEvent(state, btn, ref e); + if (MouseMove != null) + { + MouseMove.Invoke(this, e); + } + } + + // Mouse wheel position changed + if (state.ScrollWheelValue != mouseState.ScrollWheelValue) + { + MouseEventArgs e = new MouseEventArgs(); + MouseScrollDirection direction = state.ScrollWheelValue < mouseState.ScrollWheelValue ? MouseScrollDirection.Down : MouseScrollDirection.Up; + + BuildMouseEvent(state, MouseButton.None, direction, ref e); + + if (MouseScroll != null) + { + MouseScroll.Invoke(this, e); + } + } + + UpdateButtons(state, gameTime); + + mouseState = state; + + #endif + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void UpdateButtons(MouseState state, GameTime gameTime) + { + #if (!XBOX && !XBOX_FAKE) + + MouseEventArgs e = new MouseEventArgs(); + + foreach (InputMouseButton btn in mouseButtons) + { + ButtonState bs = ButtonState.Released; + + if (btn.Button == MouseButton.Left) bs = state.LeftButton; + else if (btn.Button == MouseButton.Right) bs = state.RightButton; + else if (btn.Button == MouseButton.Middle) bs = state.MiddleButton; + else if (btn.Button == MouseButton.XButton1) bs = state.XButton1; + else if (btn.Button == MouseButton.XButton2) bs = state.XButton2; + else continue; + + bool pressed = (bs == ButtonState.Pressed); + if (pressed) + { + double ms = gameTime.ElapsedGameTime.TotalMilliseconds; + if (pressed) btn.Countdown -= ms; + } + + if ((pressed) && (!btn.Pressed)) + { + btn.Pressed = true; + BuildMouseEvent(state, btn.Button, ref e); + + if (MouseDown != null) MouseDown.Invoke(this, e); + if (MousePress != null) MousePress.Invoke(this, e); + } + else if ((!pressed) && (btn.Pressed)) + { + btn.Pressed = false; + btn.Countdown = RepeatDelay; + BuildMouseEvent(state, btn.Button, ref e); + + if (MouseUp != null) MouseUp.Invoke(this, e); + } + else if (btn.Pressed && btn.Countdown < 0) + { + e.Button = btn.Button; + btn.Countdown = RepeatRate; + BuildMouseEvent(state, btn.Button, ref e); + + if (MousePress != null) MousePress.Invoke(this, e); + } + } + + #endif + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + +} \ No newline at end of file diff --git a/Neoforce/KeyboardLayout.cs b/Neoforce/KeyboardLayout.cs new file mode 100644 index 0000000..6a93ff0 --- /dev/null +++ b/Neoforce/KeyboardLayout.cs @@ -0,0 +1,461 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: KeyboardLayout.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +/***** + * Made Changes to the German Input, based on Kergos, input. + *****/ + +#region //// Using ///////////// + +////////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework.Input; +using System.Globalization; +using System.Collections.Generic; +using System; +using System.Text; +////////////////////////////////////////////////////////////////////////////// + +#endregion + + +namespace TomShane.Neoforce.Controls +{ + + public class KeyboardLayout + { + + #region //// Fields //////////// + + ////////////////////////////////////////////////////////////////////////// + private string name = "English"; + public List LayoutList = new List(); + ////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + ////////////////////////////////////////////////////////////////////////// + public virtual string Name + { + get { return name; } + set { name = value; } + } + ////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + ////////////////////////////////////////////////////////////////////////// + public KeyboardLayout() + { + LayoutList.Add(1033); + } + ////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual string GetKey(KeyEventArgs args) + { + string ret = ""; + + if (args.Caps && !args.Shift) ret = KeyToString(args).ToUpper(); + else if (!args.Caps && args.Shift) ret = KeyToString(args).ToUpper(); + else if (args.Caps && args.Shift) ret = KeyToString(args).ToLower(); + else if (!args.Caps && !args.Shift) ret = KeyToString(args).ToLower(); + + + return ret; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual string KeyToString(KeyEventArgs args) + { + switch (args.Key) + { + case Keys.A: + return "a"; + case Keys.B: + return "b"; + case Keys.C: + return "c"; + case Keys.D: + return "d"; + case Keys.E: + return "e"; + case Keys.F: + return "f"; + case Keys.G: + return "g"; + case Keys.H: + return "h"; + case Keys.I: + return "i"; + case Keys.J: + return "j"; + case Keys.K: + return "k"; + case Keys.L: + return "l"; + case Keys.M: + return "m"; + case Keys.N: + return "n"; + case Keys.O: + return "o"; + case Keys.P: + return "p"; + case Keys.Q: + return "q"; + case Keys.R: + return "r"; + case Keys.S: + return "s"; + case Keys.T: + return "t"; + case Keys.U: + return "u"; + case Keys.V: + return "v"; + case Keys.W: + return "w"; + case Keys.X: + return "x"; + case Keys.Y: + return "y"; + case Keys.Z: + return "z"; + + case Keys.D0: + return (args.Shift) ? ")" : "0"; + case Keys.D1: + return (args.Shift) ? "!" : "1"; + case Keys.D2: + return (args.Shift) ? "@" : "2"; + case Keys.D3: + return (args.Shift) ? "#" : "3"; + case Keys.D4: + return (args.Shift) ? "$" : "4"; + case Keys.D5: + return (args.Shift) ? "%" : "5"; + case Keys.D6: + return (args.Shift) ? "^" : "6"; + case Keys.D7: + return (args.Shift) ? "&" : "7"; + case Keys.D8: + return (args.Shift) ? "*" : "8"; + case Keys.D9: + return (args.Shift) ? "(" : "9"; + + case Keys.OemPlus: + return (args.Shift) ? "+" : "="; + case Keys.OemMinus: + return (args.Shift) ? "_" : "-"; + case Keys.OemOpenBrackets: + return (args.Shift) ? "{" : "["; + case Keys.OemCloseBrackets: + return (args.Shift) ? "}" : "]"; + case Keys.OemQuestion: + return (args.Shift) ? "?" : "/"; + case Keys.OemPeriod: + return (args.Shift) ? ">" : "."; + case Keys.OemComma: + return (args.Shift) ? "<" : ","; + case Keys.OemPipe: + return (args.Shift) ? "|" : "\\"; + case Keys.Space: + return " "; + case Keys.OemSemicolon: + return (args.Shift) ? ":" : ";"; + case Keys.OemQuotes: + return (args.Shift) ? "\"" : "'"; + case Keys.OemTilde: + return (args.Shift) ? "~" : "`"; + + case Keys.NumPad0: + return (args.Shift) ? "" : "0"; + case Keys.NumPad1: + return (args.Shift) ? "" : "1"; + case Keys.NumPad2: + return (args.Shift) ? "" : "2"; + case Keys.NumPad3: + return (args.Shift) ? "" : "3"; + case Keys.NumPad4: + return (args.Shift) ? "" : "4"; + case Keys.NumPad5: + return (args.Shift) ? "" : "5"; + case Keys.NumPad6: + return (args.Shift) ? "" : "6"; + case Keys.NumPad7: + return (args.Shift) ? "" : "7"; + case Keys.NumPad8: + return (args.Shift) ? "" : "8"; + case Keys.NumPad9: + return (args.Shift) ? "" : "9"; + case Keys.Decimal: + return (args.Shift) ? "" : "."; + + case Keys.Divide: + return (args.Shift) ? "/" : "/"; + case Keys.Multiply: + return (args.Shift) ? "*" : "*"; + case Keys.Subtract: + return (args.Shift) ? "-" : "-"; + case Keys.Add: + return (args.Shift) ? "+" : "+"; + + default: + return ""; + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + + public class CzechKeyboardLayout: KeyboardLayout + { + + #region //// Constructors ////// + + ////////////////////////////////////////////////////////////////////////// + public CzechKeyboardLayout() + { + Name = "Czech"; + LayoutList.Clear(); + LayoutList.Add(1029); + } + ////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + protected override string KeyToString(KeyEventArgs args) + { + switch (args.Key) + { + case Keys.D0: + return (args.Shift) ? "0" : ""; + case Keys.D1: + return (args.Shift) ? "1" : "+"; + case Keys.D2: + return (args.Shift) ? "2" : ""; + case Keys.D3: + return (args.Shift) ? "3" : ""; + case Keys.D4: + return (args.Shift) ? "4" : ""; + case Keys.D5: + return (args.Shift) ? "5" : ""; + case Keys.D6: + return (args.Shift) ? "6" : ""; + case Keys.D7: + return (args.Shift) ? "7" : ""; + case Keys.D8: + return (args.Shift) ? "8" : ""; + case Keys.D9: + return (args.Shift) ? "9" : ""; + + case Keys.OemPlus: + return (args.Shift) ? "" : ""; + case Keys.OemMinus: + return (args.Shift) ? "%" : "="; + case Keys.OemOpenBrackets: + return (args.Shift) ? "/" : ""; + case Keys.OemCloseBrackets: + return (args.Shift) ? "(" : ")"; + case Keys.OemQuestion: + return (args.Shift) ? "_" : "-"; + case Keys.OemPeriod: + return (args.Shift) ? ":" : "."; + case Keys.OemComma: + return (args.Shift) ? "?" : ","; + case Keys.OemPipe: + return (args.Shift) ? "'" : ""; + case Keys.Space: + return " "; + case Keys.OemSemicolon: + return (args.Shift) ? "\"" : ""; + case Keys.OemQuotes: + return (args.Shift) ? "!" : ""; + case Keys.OemTilde: + return (args.Shift) ? "" : ";"; + + case Keys.Decimal: + return (args.Shift) ? "" : ","; + + default: + return base.KeyToString(args); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + + public class GermanKeyboardLayout : KeyboardLayout + { + + #region //// Constructors ////// + + ////////////////////////////////////////////////////////////////////////// + public GermanKeyboardLayout() + { + Name = "German"; + LayoutList.Clear(); + LayoutList.Add(1031); + } + ////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + protected override string KeyToString(KeyEventArgs args) + { + switch (args.Key) + { + case Keys.D0: + return (args.Shift) ? "=" : "0"; + case Keys.D1: + return (args.Shift) ? "!" : "1"; + case Keys.D2: + return (args.Shift) ? "\"": "2"; + case Keys.D3: + return (args.Shift) ? "" : "3"; + case Keys.D4: + return (args.Shift) ? "$" : "4"; + case Keys.D5: + return (args.Shift) ? "%" : "5"; + case Keys.D6: + return (args.Shift) ? "&" : "6"; + case Keys.D7: + return (args.Shift) ? "/" : "7"; + case Keys.D8: + return (args.Shift) ? "(" : "8"; + case Keys.D9: + return (args.Shift) ? ")" : "9"; + case Keys.OemBackslash: + return (args.Shift) ? ">" : "<"; + case Keys.OemPlus: + return (args.Shift) ? "*" : "+"; + case Keys.OemMinus: + return (args.Shift) ? "_" : "-"; + case Keys.OemOpenBrackets: + return (args.Shift) ? "?" : ""; + case Keys.OemCloseBrackets: + return (args.Shift) ? "`" : ""; + case Keys.OemQuestion: + return (args.Shift) ? "'" : "#"; + case Keys.OemPeriod: + return (args.Shift) ? ":" : "."; + case Keys.OemComma: + return (args.Shift) ? ";" : ","; + case Keys.OemPipe: + return (args.Shift) ? "" : "^"; + case Keys.Space: + return " "; + case Keys.OemSemicolon: + return (args.Shift) ? "" : ""; + case Keys.OemQuotes: + return (args.Shift) ? "" : ""; + case Keys.OemTilde: + return (args.Shift) ? "" : ""; + + case Keys.Decimal: + return (args.Shift) ? "" : "."; + + default: + return base.KeyToString(args); + } + } + //////////////////////////////////////////////////////////////////////////// + + + #endregion + + } + + public class PolishKeyboardLayout: KeyboardLayout + { + + #region //// Constructors ////// + ////////////////////////////////////////////////////////////////////////// + public PolishKeyboardLayout() + { + Name = "Polish"; + LayoutList.Clear(); + LayoutList.Add(1045); + } + ////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + protected override string KeyToString(KeyEventArgs args) + { + if (args.Alt) + { + switch (args.Key) + { + case Keys.A: + return (args.Shift) ? "" : ""; + case Keys.C: + return (args.Shift) ? "" : ""; + case Keys.E: + return (args.Shift) ? "" : ""; + case Keys.L: + return (args.Shift) ? "" : ""; + case Keys.N: + return (args.Shift) ? "" : ""; + case Keys.O: + return (args.Shift) ? "" : ""; + case Keys.S: + return (args.Shift) ? "" : ""; + case Keys.X: + return (args.Shift) ? "" : ""; + case Keys.Z: + return (args.Shift) ? "" : ""; + } + } + return base.KeyToString(args); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} + diff --git a/Neoforce/Label.cs b/Neoforce/Label.cs new file mode 100644 index 0000000..a479796 --- /dev/null +++ b/Neoforce/Label.cs @@ -0,0 +1,104 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: Label.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public class Label: Control + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private Alignment alignment = Alignment.MiddleLeft; + private bool ellipsis = true; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public virtual Alignment Alignment + { + get { return alignment; } + set { alignment = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual bool Ellipsis + { + get { return ellipsis; } + set { ellipsis = value; } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public Label(Manager manager): base(manager) + { + CanFocus = false; + Passive = true; + Width = 64; + Height = 16; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + //base.DrawControl(renderer, rect, gameTime); + + SkinLayer s = new SkinLayer(Skin.Layers[0]); + s.Text.Alignment = alignment; + renderer.DrawString(this, s, Text, rect, true, 0, 0, ellipsis); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/Layout.cs b/Neoforce/Layout.cs new file mode 100644 index 0000000..fd9f62e --- /dev/null +++ b/Neoforce/Layout.cs @@ -0,0 +1,182 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: Layout.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using System; +using Microsoft.Xna.Framework; +using System.Xml; +using System.Reflection; +using System.IO; +using Microsoft.Xna.Framework.Graphics; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + + public static class Layout + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public static Container Load(Manager manager, string asset) + { + Container win = null; + LayoutXmlDocument doc = new LayoutXmlDocument(); + ArchiveManager content = new ArchiveManager(manager.Game.Services); + + try + { + content.RootDirectory = manager.LayoutDirectory; + + #if (!XBOX && !XBOX_FAKE) + + string file = content.RootDirectory + asset; + + if (File.Exists(file)) + { + doc.Load(file); + } + else + + #endif + { + doc = content.Load(asset); + } + + + if (doc != null && doc["Layout"]["Controls"] != null && doc["Layout"]["Controls"].HasChildNodes) + { + XmlNode node = doc["Layout"]["Controls"].GetElementsByTagName("Control").Item(0); + string cls = node.Attributes["Class"].Value; + Type type = Type.GetType(cls); + + if (type == null) + { + cls = "TomShane.Neoforce.Controls." + cls; + type = Type.GetType(cls); + } + + win = (Container)LoadControl(manager, node, type, null); + } + + } + finally + { + content.Dispose(); + } + + return win; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private static Control LoadControl(Manager manager, XmlNode node, Type type, Control parent) + { + Control c = null; + + Object[] args = new Object[] {manager}; + + c = (Control)type.InvokeMember(null, BindingFlags.CreateInstance, null, null, args); + if (parent != null) c.Parent = parent; + c.Name = node.Attributes["Name"].Value; + + if (node != null && node["Properties"] != null && node["Properties"].HasChildNodes) + { + LoadProperties(node["Properties"].GetElementsByTagName("Property"), c); + } + + if (node != null && node["Controls"] != null && node["Controls"].HasChildNodes) + { + foreach (XmlElement e in node["Controls"].GetElementsByTagName("Control")) + { + string cls = e.Attributes["Class"].Value; + Type t = Type.GetType(cls); + + if (t == null) + { + cls = "TomShane.Neoforce.Controls." + cls; + t = Type.GetType(cls); + } + LoadControl(manager, e, t, c); + } + } + + return c; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private static void LoadProperties(XmlNodeList node, Control c) + { + foreach (XmlElement e in node) + { + string name = e.Attributes["Name"].Value; + string val = e.Attributes["Value"].Value; + + PropertyInfo i = c.GetType().GetProperty(name); + + if (i != null) + { + { + try + { + i.SetValue(c, Convert.ChangeType(val, i.PropertyType, null), null); + } + catch + { + } + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/ListBox.cs b/Neoforce/ListBox.cs new file mode 100644 index 0000000..5598674 --- /dev/null +++ b/Neoforce/ListBox.cs @@ -0,0 +1,485 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: ListBox.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using System; +using System.Collections.Generic; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Input; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + #region //// Classes /////////// + + //////////////////////////////////////////////////////////////////////////// + /// + public class ListBox : Control + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private List items = new List(); + private ScrollBar sbVert = null; + private ClipBox pane = null; + private int itemIndex = -1; + private bool hotTrack = false; + private int itemsCount = 0; + private bool hideSelection = true; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public virtual List Items + { + get { return items; } + internal set { items = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual bool HotTrack + { + get { return hotTrack; } + set + { + if (hotTrack != value) + { + hotTrack = value; + if (!Suspended) OnHotTrackChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int ItemIndex + { + get { return itemIndex; } + set + { + //if (itemIndex != value) + { + if (value >= 0 && value < items.Count) + { + itemIndex = value; + } + else + { + itemIndex = -1; + } + ScrollTo(itemIndex); + + if (!Suspended) OnItemIndexChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual bool HideSelection + { + get { return hideSelection; } + set + { + if (hideSelection != value) + { + hideSelection = value; + Invalidate(); + if (!Suspended) OnHideSelectionChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + public event EventHandler HotTrackChanged; + public event EventHandler ItemIndexChanged; + public event EventHandler HideSelectionChanged; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public ListBox(Manager manager) + : base(manager) + { + Width = 64; + Height = 64; + MinimumHeight = 16; + + sbVert = new ScrollBar(Manager, Orientation.Vertical); + sbVert.Init(); + sbVert.Parent = this; + sbVert.Left = Left + Width - sbVert.Width - Skin.Layers["Control"].ContentMargins.Right; + sbVert.Top = Top + Skin.Layers["Control"].ContentMargins.Top; + sbVert.Height = Height - Skin.Layers["Control"].ContentMargins.Vertical; + sbVert.Anchor = Anchors.Top | Anchors.Right | Anchors.Bottom; + sbVert.PageSize = 25; + sbVert.Range = 1; + sbVert.PageSize = 1; + sbVert.StepSize = 10; + + pane = new ClipBox(manager); + pane.Init(); + pane.Parent = this; + pane.Top = Skin.Layers["Control"].ContentMargins.Top; + pane.Left = Skin.Layers["Control"].ContentMargins.Left; + pane.Width = Width - sbVert.Width - Skin.Layers["Control"].ContentMargins.Horizontal - 1; + pane.Height = Height - Skin.Layers["Control"].ContentMargins.Vertical; + pane.Anchor = Anchors.All; + pane.Passive = true; + pane.CanFocus = false; + pane.Draw += new DrawEventHandler(DrawPane); + + CanFocus = true; + Passive = false; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void AutoHeight(int maxItems) + { + if (items != null && items.Count < maxItems) maxItems = items.Count; + if (maxItems < 3) + { + //maxItems = 3; + sbVert.Visible = false; + pane.Width = Width - Skin.Layers["Control"].ContentMargins.Horizontal - 1; + } + else + { + pane.Width = Width - sbVert.Width - Skin.Layers["Control"].ContentMargins.Horizontal - 1; + sbVert.Visible = true; + } + + SkinText font = Skin.Layers["Control"].Text; + if (items != null && items.Count > 0) + { + int h = (int)font.Font.Resource.MeasureString(items[0].ToString()).Y; + Height = (h * maxItems) + (Skin.Layers["Control"].ContentMargins.Vertical);// - Skin.OriginMargins.Vertical); + } + else + { + Height = 32; + } + } + //////////////////////////////////////////////////////////////////////////// + + public override int MinimumHeight + { + get { return base.MinimumHeight; } + set + { + base.MinimumHeight = value; + if (this.sbVert != null) this.sbVert.MinimumHeight = value; + } + } + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + sbVert.Invalidate(); + pane.Invalidate(); + //DrawPane(this, new DrawEventArgs(renderer, rect, gameTime)); + + base.DrawControl(renderer, rect, gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void DrawPane(object sender, DrawEventArgs e) + { + if (items != null && items.Count > 0) + { + SkinText font = Skin.Layers["Control"].Text; + SkinLayer sel = Skin.Layers["ListBox.Selection"]; + int h = (int)font.Font.Resource.MeasureString(items[0].ToString()).Y; + int v = (sbVert.Value / 10); + int p = (sbVert.PageSize / 10); + int d = (int)(((sbVert.Value % 10) / 10f) * h); + int c = items.Count; + int s = itemIndex; + + for (int i = v; i <= v + p + 1; i++) + { + if (i < c) + { + e.Renderer.DrawString(this, Skin.Layers["Control"], items[i].ToString(), new Rectangle(e.Rectangle.Left, e.Rectangle.Top - d + ((i - v) * h), e.Rectangle.Width, h), false); + } + } + if (s >= 0 && s < c && (Focused || !hideSelection)) + { + int pos = -d + ((s - v) * h); + if (pos > -h && pos < (p + 1) * h) + { + e.Renderer.DrawLayer(this, sel, new Rectangle(e.Rectangle.Left, e.Rectangle.Top + pos, e.Rectangle.Width, h)); + e.Renderer.DrawString(this, sel, items[s].ToString(), new Rectangle(e.Rectangle.Left, e.Rectangle.Top + pos, e.Rectangle.Width, h), false); + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnMouseDown(MouseEventArgs e) + { + base.OnMouseDown(e); + + if (e.Button == MouseButton.Left || e.Button == MouseButton.Right) + { + TrackItem(e.Position.X, e.Position.Y); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void TrackItem(int x, int y) + { + if (items != null && items.Count > 0 && (pane.ControlRect.Contains(new Point(x, y)))) + { + SkinText font = Skin.Layers["Control"].Text; + int h = (int)font.Font.Resource.MeasureString(items[0].ToString()).Y; + int d = (int)(((sbVert.Value % 10) / 10f) * h); + int i = (int)Math.Floor((sbVert.Value / 10f) + ((float)y / h)); + if (i >= 0 && i < Items.Count && i >= (int)Math.Floor((float)sbVert.Value / 10f) && i < (int)Math.Ceiling((float)(sbVert.Value + sbVert.PageSize) / 10f)) ItemIndex = i; + Focused = true; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnMouseMove(MouseEventArgs e) + { + base.OnMouseMove(e); + + if (hotTrack) + { + TrackItem(e.Position.X, e.Position.Y); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnKeyPress(KeyEventArgs e) + { + if (e.Key == Keys.Down) + { + e.Handled = true; + itemIndex += sbVert.StepSize / 10; + } + else if (e.Key == Keys.Up) + { + e.Handled = true; + itemIndex -= sbVert.StepSize / 10; + } + else if (e.Key == Keys.PageDown) + { + e.Handled = true; + itemIndex += sbVert.PageSize / 10; + } + else if (e.Key == Keys.PageUp) + { + e.Handled = true; + itemIndex -= sbVert.PageSize / 10; + } + else if (e.Key == Keys.Home) + { + e.Handled = true; + itemIndex = 0; + } + else if (e.Key == Keys.End) + { + e.Handled = true; + itemIndex = items.Count - 1; + } + + if (itemIndex < 0) itemIndex = 0; + else if (itemIndex >= Items.Count) itemIndex = Items.Count - 1; + + ItemIndex = itemIndex; + + base.OnKeyPress(e); + } + //////////////////////////////////////////////////////////////////////////// + + /// + /// Handles mouse scroll events for the list box. + /// + /// + protected override void OnMouseScroll(MouseEventArgs e) + { + Focused = true; + + if (e.ScrollDirection == MouseScrollDirection.Down) + { + e.Handled = true; + itemIndex += sbVert.StepSize / 10; + } + else if (e.ScrollDirection == MouseScrollDirection.Up) + { + e.Handled = true; + itemIndex -= sbVert.StepSize / 10; + } + + // Wrap index in collection range. + if (itemIndex < 0) itemIndex = 0; + else if (itemIndex >= Items.Count) itemIndex = Items.Count - 1; + + ItemIndex = itemIndex; + + base.OnMouseScroll(e); + } + + //////////////////////////////////////////////////////////////////////////// + protected override void OnGamePadPress(GamePadEventArgs e) + { + if (e.Button == GamePadActions.Down) + { + e.Handled = true; + itemIndex += sbVert.StepSize / 10; + } + else if (e.Button == GamePadActions.Up) + { + e.Handled = true; + itemIndex -= sbVert.StepSize / 10; + } + + if (itemIndex < 0) itemIndex = 0; + else if (itemIndex >= Items.Count) itemIndex = Items.Count - 1; + + ItemIndex = itemIndex; + base.OnGamePadPress(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void ItemsChanged() + { + if (items != null && items.Count > 0) + { + SkinText font = Skin.Layers["Control"].Text; + int h = (int)font.Font.Resource.MeasureString(items[0].ToString()).Y; + + int sizev = Height - Skin.Layers["Control"].ContentMargins.Vertical; + sbVert.Range = items.Count * 10; + sbVert.PageSize = (int)Math.Floor((float)sizev * 10 / h); + Invalidate(); + } + else if (items == null || items.Count <= 0) + { + sbVert.Range = 1; + sbVert.PageSize = 1; + Invalidate(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnResize(ResizeEventArgs e) + { + base.OnResize(e); + ItemsChanged(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void ScrollTo(int index) + { + ItemsChanged(); + if ((index * 10) < sbVert.Value) + { + sbVert.Value = index * 10; + } + else if (index >= (int)Math.Floor(((float)sbVert.Value + sbVert.PageSize) / 10f)) + { + sbVert.Value = ((index + 1) * 10) - sbVert.PageSize; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void Update(GameTime gameTime) + { + base.Update(gameTime); + + if (Visible && items != null && items.Count != itemsCount) + { + itemsCount = items.Count; + ItemsChanged(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnItemIndexChanged(EventArgs e) + { + if (ItemIndexChanged != null) ItemIndexChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnHotTrackChanged(EventArgs e) + { + if (HotTrackChanged != null) HotTrackChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnHideSelectionChanged(EventArgs e) + { + if (HideSelectionChanged != null) HideSelectionChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + +} diff --git a/Neoforce/MainMenu.cs b/Neoforce/MainMenu.cs new file mode 100644 index 0000000..b4f5ac4 --- /dev/null +++ b/Neoforce/MainMenu.cs @@ -0,0 +1,362 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: MainMenu.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using System; +using System.Collections.Generic; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public class MainMenu: MenuBase + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private Rectangle[] rs; + private int lastIndex = -1; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public MainMenu(Manager manager): base(manager) + { + Left = 0; + Top = 0; + Height = 24; + Detached = false; + DoubleClicks = false; + StayOnBack = true; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Destructors /////// + + //////////////////////////////////////////////////////////////////////////// + protected override void Dispose(bool disposing) + { + if (disposing) + { + } + base.Dispose(disposing); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + Skin = new SkinControl(Manager.Skin.Controls["MainMenu"]); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + SkinLayer l1 = Skin.Layers["Control"]; + SkinLayer l2 = Skin.Layers["Selection"]; + rs = new Rectangle[Items.Count]; + + renderer.DrawLayer(this, l1, rect, ControlState.Enabled); + + int prev = l1.ContentMargins.Left; + for (int i = 0; i < Items.Count; i++) + { + MenuItem mi = Items[i]; + + int tw = (int)l1.Text.Font.Resource.MeasureString(mi.Text).X + l1.ContentMargins.Horizontal; + rs[i] = new Rectangle(rect.Left + prev, rect.Top + l1.ContentMargins.Top, tw, Height - l1.ContentMargins.Vertical); + prev += tw; + + if (ItemIndex != i) + { + if (mi.Enabled && Enabled) + { + renderer.DrawString(this, l1, mi.Text, rs[i], ControlState.Enabled, false); + } + else + { + renderer.DrawString(this, l1, mi.Text, rs[i], ControlState.Disabled, false); + } + } + else + { + if (Items[i].Enabled && Enabled) + { + renderer.DrawLayer(this, l2, rs[i], ControlState.Enabled); + renderer.DrawString(this, l2, mi.Text, rs[i], ControlState.Enabled, false); + } + else + { + renderer.DrawLayer(this, l2, rs[i], ControlState.Disabled); + renderer.DrawString(this, l2, mi.Text, rs[i], ControlState.Disabled, false); + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void TrackItem(int x, int y) + { + if (Items != null && Items.Count > 0 && rs != null) + { + Invalidate(); + for (int i = 0; i < rs.Length; i++) + { + if (rs[i].Contains(x, y)) + { + if (i >= 0 && i != ItemIndex) + { + Items[i].SelectedInvoke(new EventArgs()); + } + ItemIndex = i; + return; + } + } + if (ChildMenu == null) ItemIndex = -1; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private bool CheckArea(int x, int y) + { + return true; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnMouseMove(MouseEventArgs e) + { + base.OnMouseMove(e); + int i = lastIndex; + + TrackItem(e.State.X - Root.AbsoluteLeft, e.State.Y - Root.AbsoluteTop); + + if (ItemIndex >= 0 && (i == -1 || i != ItemIndex) && Items[ItemIndex].Items != null && Items[ItemIndex].Items.Count > 0 && ChildMenu != null) + { + HideSubMenu(); + lastIndex = ItemIndex; + OnClick(e); + } + else if (ChildMenu != null && i != ItemIndex) + { + HideSubMenu(); + Focused = true; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnMouseDown(MouseEventArgs e) + { + base.OnMouseDown(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnMouseOut(MouseEventArgs e) + { + base.OnMouseOut(e); + + OnMouseMove(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void HideSubMenu() + { + if (ChildMenu != null) + { + (ChildMenu as ContextMenu).HideMenu(true); + ChildMenu.Dispose(); + ChildMenu = null; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void HideMenu() + { + if (ChildMenu != null) + { + (ChildMenu as ContextMenu).HideMenu(true); + ChildMenu.Dispose(); + ChildMenu = null; + } + if (Manager.FocusedControl is MenuBase) Focused = true; + Invalidate(); + ItemIndex = -1; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnClick(EventArgs e) + { + base.OnClick(e); + + MouseEventArgs ex = (e is MouseEventArgs) ? (MouseEventArgs)e : new MouseEventArgs(); + + if (ex.Button == MouseButton.Left || ex.Button == MouseButton.None) + { + if (ItemIndex >= 0 && Items[ItemIndex].Enabled) + { + if (ItemIndex >= 0 && Items[ItemIndex].Items != null && Items[ItemIndex].Items.Count > 0) + { + if (ChildMenu != null) + { + ChildMenu.Dispose(); + ChildMenu = null; + } + ChildMenu = new ContextMenu(Manager); + (ChildMenu as ContextMenu).RootMenu = this; + (ChildMenu as ContextMenu).ParentMenu = this; + (ChildMenu as ContextMenu).Sender = this.Root; + ChildMenu.Items.AddRange(Items[ItemIndex].Items); + + int y = Root.AbsoluteTop + rs[ItemIndex].Bottom + 1; + (ChildMenu as ContextMenu).Show(this.Root, Root.AbsoluteLeft + rs[ItemIndex].Left, y); + if (ex.Button == MouseButton.None) (ChildMenu as ContextMenu).ItemIndex = 0; + } + else + { + if (ItemIndex >= 0) + { + Items[ItemIndex].ClickInvoke(ex); + } + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnKeyPress(KeyEventArgs e) + { + base.OnKeyPress(e); + + if (e.Key == Keys.Right) + { + ItemIndex += 1; + e.Handled = true; + } + if (e.Key == Keys.Left) + { + ItemIndex -= 1; + e.Handled = true; + } + + if (ItemIndex > Items.Count - 1) ItemIndex = 0; + if (ItemIndex < 0) ItemIndex = Items.Count - 1; + + if (e.Key == Keys.Down && Items.Count > 0 && Items[ItemIndex].Items.Count > 0) + { + e.Handled = true; + OnClick(new MouseEventArgs(new MouseState(), MouseButton.None, Point.Zero)); + } + if (e.Key == Keys.Escape) + { + e.Handled = true; + ItemIndex = -1; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnGamePadPress(GamePadEventArgs e) + { + base.OnGamePadPress(e); + + if (e.Button == GamePadActions.Right) + { + ItemIndex += 1; + e.Handled = true; + } + if (e.Button == GamePadActions.Left) + { + ItemIndex -= 1; + e.Handled = true; + } + + if (ItemIndex > Items.Count - 1) ItemIndex = 0; + if (ItemIndex < 0) ItemIndex = Items.Count - 1; + + if (e.Button == GamePadActions.Down && Items[ItemIndex].Items.Count > 0) + { + e.Handled = true; + OnClick(new MouseEventArgs(new MouseState(), MouseButton.None, Point.Zero)); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnFocusGained(EventArgs e) + { + base.OnFocusGained(e); + if (ItemIndex < 0 && Items.Count > 0) ItemIndex = 0; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnFocusLost(EventArgs e) + { + base.OnFocusLost(e); + if (ChildMenu == null || !ChildMenu.Visible) ItemIndex = -1; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/Manager.cs b/Neoforce/Manager.cs new file mode 100644 index 0000000..24fc0d8 --- /dev/null +++ b/Neoforce/Manager.cs @@ -0,0 +1,1849 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: Manager.cs // +// // +// Version: 0.8 // +// // +// Date: 05/07/2014 // +// // +// Author: Nathan 'Grimston' Pipes // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane 2010 // +// Copyright (c) by Nathan Pipes 2014 // +// // +//////////////////////////////////////////////////////////////// + + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using System; +using System.Collections.Generic; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using System.Reflection; +using Microsoft.Xna.Framework.Input; + +#if (!XBOX && !XBOX_FAKE) +using System.IO; +using System.Text; +using System.Media; +#endif +//////////////////////////////////////////////////////////////////////////// + +#endregion + +[assembly: CLSCompliant(false)] + +namespace TomShane.Neoforce.Controls +{ + + #region //// Classes /////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Manages rendering of all controls. + /// + public class Manager : DrawableGameComponent + { + + private struct ControlStates + { + public Control[] Buttons; + public int Click; + public Control Over; + } + + #region //// Consts //////////// + + //////////////////////////////////////////////////////////////////////////// + internal Version _SkinVersion = new Version(0, 7); + internal Version _LayoutVersion = new Version(0, 7); + internal const string _SkinDirectory = ".\\Content\\Skins\\"; + internal const string _LayoutDirectory = ".\\Content\\Layout\\"; + internal const string _DefaultSkin = "Default"; + internal const string _SkinExtension = ".skin"; + internal const int _MenuDelay = 500; + internal const int _ToolTipDelay = 500; + internal const int _DoubleClickTime = 500; + internal const int _TextureResizeIncrement = 32; + internal const RenderTargetUsage _RenderTargetUsage = RenderTargetUsage.DiscardContents; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private bool deviceReset = false; + private bool renderTargetValid = false; + private RenderTarget2D renderTarget = null; + private int targetFrames = 60; + private long drawTime = 0; + private long updateTime = 0; + private GraphicsDeviceManager graphics = null; + private ArchiveManager content = null; + private Renderer renderer = null; + private InputSystem input = null; + private bool inputEnabled = true; + private List components = null; + private ControlsList controls = null; + private ControlsList orderList = null; + private Skin skin = null; + private string skinName = _DefaultSkin; + private string layoutDirectory = _LayoutDirectory; + private string skinDirectory = _SkinDirectory; + private string skinExtension = _SkinExtension; + private Control focusedControl = null; + private ModalContainer modalWindow = null; + private float globalDepth = 0.0f; + private int toolTipDelay = _ToolTipDelay; + private bool toolTipsEnabled = true; + private int menuDelay = _MenuDelay; + private int doubleClickTime = _DoubleClickTime; + private int textureResizeIncrement = _TextureResizeIncrement; + private bool logUnhandledExceptions = true; + private ControlStates states = new ControlStates(); + private KeyboardLayout keyboardLayout = null; + private List keyboardLayouts = new List(); + private bool disposing = false; + private bool useGuide = false; + private bool autoUnfocus = true; + private bool autoCreateRenderTarget = true; + private Cursor cursor = null; + private bool softwareCursor = false; + + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets a value indicating whether Manager is in the process of disposing. + /// + public virtual bool Disposing + { + get { return disposing; } + } + //////////////////////////////////////////////////////////////////////////// + + /// + /// Gets or sets an application cursor. + /// + public Cursor Cursor + { + get { return cursor; } + set { cursor = value; } + } + + /// + /// Should a software cursor be drawn? Very handy on a PC build. + /// + public bool ShowSoftwareCursor + { + get { return softwareCursor; } + set { softwareCursor = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Returns associated component. + /// + public virtual new Game Game { get { return base.Game; } } + + /// + /// Returns associated . + /// + public virtual new GraphicsDevice GraphicsDevice { get { return base.GraphicsDevice; } } + + /// + /// Returns associated . + /// + public virtual GraphicsDeviceManager Graphics { get { return graphics; } } + + /// + /// Returns used for rendering controls. + /// + public virtual Renderer Renderer { get { return renderer; } } + + /// + /// Returns used for loading assets. + /// + public virtual ArchiveManager Content { get { return content; } } + + /// + /// Returns instance responsible for managing user input. + /// + public virtual InputSystem Input { get { return input; } } + + /// + /// Returns list of components added to the manager. + /// + public virtual IEnumerable Components { get { return components; } } + + /// + /// Returns list of controls added to the manager. + /// + public virtual IEnumerable Controls { get { return controls; } } + + /// + /// Gets or sets the depth value used for rendering sprites. + /// + public virtual float GlobalDepth { get { return globalDepth; } set { globalDepth = value; } } + + /// + /// Gets or sets the time that passes before the appears. + /// + public virtual int ToolTipDelay { get { return toolTipDelay; } set { toolTipDelay = value; } } + + /// + /// Gets or sets the time that passes before a submenu appears when hovered over menu item. + /// + public virtual int MenuDelay { get { return menuDelay; } set { menuDelay = value; } } + + /// + /// Gets or sets the maximum number of milliseconds that can elapse between a first click and a second click to consider the mouse action a double-click. + /// + public virtual int DoubleClickTime { get { return doubleClickTime; } set { doubleClickTime = value; } } + + /// + /// Gets or sets texture size increment in pixel while performing controls resizing. + /// + public virtual int TextureResizeIncrement { get { return textureResizeIncrement; } set { textureResizeIncrement = value; } } + + /// + /// Enables or disables showing of tooltips globally. + /// + public virtual bool ToolTipsEnabled { get { return toolTipsEnabled; } set { toolTipsEnabled = value; } } + + /// + /// Enables or disables logging of unhandled exceptions. + /// + public virtual bool LogUnhandledExceptions { get { return logUnhandledExceptions; } set { logUnhandledExceptions = value; } } + + /// + /// Enables or disables input processing. + /// + public virtual bool InputEnabled { get { return inputEnabled; } set { inputEnabled = value; } } + + /// + /// Gets or sets render target for drawing. + /// + public virtual RenderTarget2D RenderTarget { get { return renderTarget; } set { renderTarget = value; } } + + /// + /// Gets or sets update interval for drawing, logic and input. + /// + public virtual int TargetFrames { get { return targetFrames; } set { targetFrames = value; } } + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets collection of active keyboard layouts. + /// + public virtual List KeyboardLayouts + { + get { return keyboardLayouts; } + set { keyboardLayouts = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets a value indicating if Guide component can be used + /// + public bool UseGuide + { + get { return useGuide; } + set { useGuide = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets a value indicating if a control should unfocus if you click outside on the screen. + /// + //////////////////////////////////////////////////////////////////////////// + public virtual bool AutoUnfocus + { + get { return autoUnfocus; } + set { autoUnfocus = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets a value indicating wheter Manager should create render target automatically. + /// + //////////////////////////////////////////////////////////////////////////// + public virtual bool AutoCreateRenderTarget + { + get { return autoCreateRenderTarget; } + set { autoCreateRenderTarget = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets current keyboard layout for text input. + /// + public virtual KeyboardLayout KeyboardLayout + { + get + { + if (keyboardLayout == null) + { + keyboardLayout = new KeyboardLayout(); + } + return keyboardLayout; + } + set + { + keyboardLayout = value; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the initial directory for looking for the skins in. + /// + public virtual string SkinDirectory + { + get + { + if (!skinDirectory.EndsWith("\\")) + { + skinDirectory += "\\"; + } + return skinDirectory; + } + set + { + skinDirectory = value; + if (!skinDirectory.EndsWith("\\")) + { + skinDirectory += "\\"; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets the initial directory for looking for the layout files in. + /// + public virtual string LayoutDirectory + { + get + { + if (!layoutDirectory.EndsWith("\\")) + { + layoutDirectory += "\\"; + } + return layoutDirectory; + } + set + { + layoutDirectory = value; + if (!layoutDirectory.EndsWith("\\")) + { + layoutDirectory += "\\"; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets file extension for archived skin files. + /// + public string SkinExtension + { + get + { + if (!skinExtension.StartsWith(".")) + { + skinExtension = "." + skinExtension; + } + return skinExtension; + } + set + { + skinExtension = value; + if (!skinExtension.StartsWith(".")) + { + skinExtension = "." + skinExtension; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets width of the selected render target in pixels. + /// + public virtual int TargetWidth + { + get + { + if (renderTarget != null) + { + return renderTarget.Width; + } + else return ScreenWidth; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets height of the selected render target in pixels. + /// + public virtual int TargetHeight + { + get + { + if (renderTarget != null) + { + return renderTarget.Height; + } + else return ScreenHeight; + } + } + //////////////////////////////////////////////////////////////////////////// + + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets current width of the screen in pixels. + /// + public virtual int ScreenWidth + { + get + { + if (GraphicsDevice != null) + { + return GraphicsDevice.PresentationParameters.BackBufferWidth; + } + else return 0; + } + + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets current height of the screen in pixels. + /// + public virtual int ScreenHeight + { + get + { + if (GraphicsDevice != null) + { + return GraphicsDevice.PresentationParameters.BackBufferHeight; + } + else return 0; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Gets or sets new skin used by all controls. + /// + public virtual Skin Skin + { + get + { + return skin; + } + set + { + SetSkin(value); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Returns currently active modal window. + /// + public virtual ModalContainer ModalWindow + { + get + { + return modalWindow; + } + internal set + { + modalWindow = value; + + if (value != null) + { + value.ModalResult = ModalResult.None; + + value.Visible = true; + value.Focused = true; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Returns currently focused control. + /// + public virtual Control FocusedControl + { + get + { + return focusedControl; + } + internal set + { + if (value != null && value.Visible && value.Enabled) + { + if (value != null && value.CanFocus) + { + if (focusedControl == null || (focusedControl != null && value.Root != focusedControl.Root) || !value.IsRoot) + { + if (focusedControl != null && focusedControl != value) + { + focusedControl.Focused = false; + } + focusedControl = value; + } + } + else if (value != null && !value.CanFocus) + { + if (focusedControl != null && value.Root != focusedControl.Root) + { + if (focusedControl != value.Root) + { + focusedControl.Focused = false; + } + focusedControl = value.Root; + } + else if (focusedControl == null) + { + focusedControl = value.Root; + } + } + BringToFront(value.Root); + } + else if (value == null) + { + focusedControl = value; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + internal virtual ControlsList OrderList { get { return orderList; } } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Occurs when the GraphicsDevice settings are changed. + /// + public event DeviceEventHandler DeviceSettingsChanged; + + /// + /// Occurs when the skin is about to change. + /// + public event SkinEventHandler SkinChanging; + + /// + /// Occurs when the skin changes. + /// + public event SkinEventHandler SkinChanged; + + /// + /// Occurs when game window is about to close. + /// + public event WindowClosingEventHandler WindowClosing; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Initializes a new instance of the Manager class. + /// + /// + /// The Game class. + /// + /// + /// The GraphicsDeviceManager class provided by the Game class. + /// + /// + /// The name of the skin being loaded at the start. + /// + public Manager(Game game, GraphicsDeviceManager graphics, string skin) + : base(game) + { + disposing = false; + + AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(HandleUnhadledExceptions); + + content = new ArchiveManager(Game.Services); + input = new InputSystem(this, new InputOffset(0, 0, 1f, 1f)); + components = new List(); + controls = new ControlsList(); + orderList = new ControlsList(); + + this.graphics = graphics; + graphics.PreparingDeviceSettings += new EventHandler(PrepareGraphicsDevice); + + skinName = skin; + +#if (XBOX_FAKE) + game.Window.Title += " (XBOX_FAKE)"; +#endif + + states.Buttons = new Control[32]; + states.Click = -1; + states.Over = null; + + input.MouseDown += new MouseEventHandler(MouseDownProcess); + input.MouseUp += new MouseEventHandler(MouseUpProcess); + input.MousePress += new MouseEventHandler(MousePressProcess); + input.MouseMove += new MouseEventHandler(MouseMoveProcess); + input.MouseScroll += new MouseEventHandler(MouseScrollProcess); + + input.GamePadDown += new GamePadEventHandler(GamePadDownProcess); + input.GamePadUp += new GamePadEventHandler(GamePadUpProcess); + input.GamePadPress += new GamePadEventHandler(GamePadPressProcess); + + input.KeyDown += new KeyEventHandler(KeyDownProcess); + input.KeyUp += new KeyEventHandler(KeyUpProcess); + input.KeyPress += new KeyEventHandler(KeyPressProcess); + + keyboardLayouts.Add(new KeyboardLayout()); + keyboardLayouts.Add(new CzechKeyboardLayout()); + keyboardLayouts.Add(new GermanKeyboardLayout()); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Initializes a new instance of the Manager class. + /// + /// + /// The Game class. + /// + /// + /// The name of the skin being loaded at the start. + /// + public Manager(Game game, string skin) + : this(game, game.Services.GetService(typeof(IGraphicsDeviceManager)) as GraphicsDeviceManager, skin) + { + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Initializes a new instance of the Manager class, loads the default skin and registers manager in the game class automatically. + /// + /// + /// The Game class. + /// + /// + /// The GraphicsDeviceManager class provided by the Game class. + /// + public Manager(Game game, GraphicsDeviceManager graphics) + : this(game, graphics, _DefaultSkin) + { + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Initializes a new instance of the Manager class, loads the default skin and registers manager in the game class automatically. + /// + /// + /// The Game class. + /// + public Manager(Game game) + : this(game, game.Services.GetService(typeof(IGraphicsDeviceManager)) as GraphicsDeviceManager, _DefaultSkin) + { + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Destructors /////// + + //////////////////////////////////////////////////////////////////////////// + protected override void Dispose(bool disposing) + { + if (disposing) + { + this.disposing = true; + + // Recursively disposing all controls added to the manager and its child controls. + if (controls != null) + { + int c = controls.Count; + for (int i = 0; i < c; i++) + { + if (controls.Count > 0) controls[0].Dispose(); + } + } + + // Disposing all components added to manager. + if (components != null) + { + int c = components.Count; + for (int i = 0; i < c; i++) + { + if (components.Count > 0) components[0].Dispose(); + } + } + + if (content != null) + { + content.Unload(); + content.Dispose(); + content = null; + } + + if (renderer != null) + { + renderer.Dispose(); + renderer = null; + } + if (input != null) + { + input.Dispose(); + input = null; + } + } + if (GraphicsDevice != null) + GraphicsDevice.DeviceReset -= new System.EventHandler(GraphicsDevice_DeviceReset); + base.Dispose(disposing); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + + public void SetCursor(Cursor cursor) + { + this.cursor = cursor; + if (this.cursor.CursorTexture == null) + { + this.cursor.CursorTexture = Texture2D.FromStream(GraphicsDevice, new FileStream( + this.cursor.cursorPath, FileMode.Open, FileAccess.ReadWrite, FileShare.None)); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void InitSkins() + { + // Initializing skins for every control created, even not visible or + // not added to the manager or another parent. + foreach (Control c in Control.Stack) + { + c.InitSkin(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void InitControls() + { + // Initializing all controls created, even not visible or + // not added to the manager or another parent. + foreach (Control c in Control.Stack) + { + c.Init(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void SortLevel(ControlsList cs) + { + if (cs != null) + { + foreach (Control c in cs) + { + if (c.Visible) + { + OrderList.Add(c); + SortLevel(c.Controls as ControlsList); + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Method used as an event handler for the GraphicsDeviceManager.PreparingDeviceSettings event. + /// + protected virtual void PrepareGraphicsDevice(object sender, PreparingDeviceSettingsEventArgs e) + { + e.GraphicsDeviceInformation.PresentationParameters.RenderTargetUsage = _RenderTargetUsage; + int w = e.GraphicsDeviceInformation.PresentationParameters.BackBufferWidth; + int h = e.GraphicsDeviceInformation.PresentationParameters.BackBufferHeight; + + foreach (Control c in Controls) + { + SetMaxSize(c, w, h); + } + + + if (DeviceSettingsChanged != null) DeviceSettingsChanged.Invoke(new DeviceEventArgs(e)); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void SetMaxSize(Control c, int w, int h) + { + if (c.Width > w) + { + w -= (c.Skin != null) ? c.Skin.OriginMargins.Horizontal : 0; + c.Width = w; + } + if (c.Height > h) + { + h -= (c.Skin != null) ? c.Skin.OriginMargins.Vertical : 0; + c.Height = h; + } + + foreach (Control cx in c.Controls) + { + SetMaxSize(cx, w, h); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Initializes the controls manager. + /// + //////////////////////////////////////////////////////////////////////////// + public override void Initialize() + { + base.Initialize(); + + if (autoCreateRenderTarget) + { + if (renderTarget != null) + { + renderTarget.Dispose(); + } + renderTarget = CreateRenderTarget(); + } + + GraphicsDevice.DeviceReset += new System.EventHandler(GraphicsDevice_DeviceReset); + + input.Initialize(); + renderer = new Renderer(this); + SetSkin(skinName); + } + //////////////////////////////////////////////////////////////////////////// + + private void InvalidateRenderTarget() + { + renderTargetValid = false; + } + + //////////////////////////////////////////////////////////////////////////// + public virtual RenderTarget2D CreateRenderTarget() + { + return CreateRenderTarget(ScreenWidth, ScreenHeight); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual RenderTarget2D CreateRenderTarget(int width, int height) + { + Input.InputOffset = new InputOffset(0, 0, ScreenWidth / (float)width, ScreenHeight / (float)height); + return new RenderTarget2D(GraphicsDevice, width, height, false, SurfaceFormat.Color, DepthFormat.None, GraphicsDevice.PresentationParameters.MultiSampleCount, _RenderTargetUsage); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Sets and loads the new skin. + /// + /// + /// The name of the skin being loaded. + /// + public virtual void SetSkin(string name) + { + Skin skin = new Skin(this, name); + SetSkin(skin); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Sets the new skin. + /// + /// + /// The skin being set. + /// + public virtual void SetSkin(Skin skin) + { + if (SkinChanging != null) SkinChanging.Invoke(new EventArgs()); + + if (this.skin != null) + { + Remove(this.skin); + this.skin.Dispose(); + this.skin = null; + GC.Collect(); + } + this.skin = skin; + this.skin.Init(); + Add(this.skin); + skinName = this.skin.Name; + +#if (!XBOX && !XBOX_FAKE) + if (this.skin.Cursors["Default"] != null) + { + SetCursor(this.skin.Cursors["Default"].Resource); + } +#endif + + InitSkins(); + if (SkinChanged != null) SkinChanged.Invoke(new EventArgs()); + + InitControls(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Brings the control to the front of the z-order. + /// + /// + /// The control being brought to the front. + /// + public virtual void BringToFront(Control control) + { + if (control != null && !control.StayOnBack) + { + ControlsList cs = (control.Parent == null) ? controls as ControlsList : control.Parent.Controls as ControlsList; + if (cs.Contains(control)) + { + cs.Remove(control); + if (!control.StayOnTop) + { + int pos = cs.Count; + for (int i = cs.Count - 1; i >= 0; i--) + { + if (!cs[i].StayOnTop) + { + break; + } + pos = i; + } + cs.Insert(pos, control); + } + else + { + cs.Add(control); + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Sends the control to the back of the z-order. + /// + /// + /// The control being sent back. + /// + public virtual void SendToBack(Control control) + { + if (control != null && !control.StayOnTop) + { + ControlsList cs = (control.Parent == null) ? controls as ControlsList : control.Parent.Controls as ControlsList; + if (cs.Contains(control)) + { + cs.Remove(control); + if (!control.StayOnBack) + { + int pos = 0; + for (int i = 0; i < cs.Count; i++) + { + if (!cs[i].StayOnBack) + { + break; + } + pos = i; + } + cs.Insert(pos, control); + } + else + { + cs.Insert(0, control); + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Called when the manager needs to be updated. + /// + /// + /// Time elapsed since the last call to Update. + /// + public override void Update(GameTime gameTime) + { + updateTime += gameTime.ElapsedGameTime.Ticks; + double ms = TimeSpan.FromTicks(updateTime).TotalMilliseconds; + + if (targetFrames == 0 || ms == 0 || ms >= (1000f / targetFrames)) + { + TimeSpan span = TimeSpan.FromTicks(updateTime); + gameTime = new GameTime(gameTime.TotalGameTime, span); + updateTime = 0; + + if (inputEnabled) + { + input.Update(gameTime); + } + + if (components != null) + { + foreach (Component c in components) + { + c.Update(gameTime); + } + } + + ControlsList list = new ControlsList(controls); + + if (list != null) + { + foreach (Control c in list) + { + c.Update(gameTime); + } + } + + OrderList.Clear(); + SortLevel(controls); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Adds a component or a control to the manager. + /// + /// + /// The component or control being added. + /// + public virtual void Add(Component component) + { + if (component != null) + { + if (component is Control && !controls.Contains(component as Control)) + { + Control c = (Control)component; + + if (c.Parent != null) c.Parent.Remove(c); + + controls.Add(c); + c.Manager = this; + c.Parent = null; + if (focusedControl == null) c.Focused = true; + + DeviceSettingsChanged += new DeviceEventHandler((component as Control).OnDeviceSettingsChanged); + SkinChanging += new SkinEventHandler((component as Control).OnSkinChanging); + SkinChanged += new SkinEventHandler((component as Control).OnSkinChanged); + } + else if (!(component is Control) && !components.Contains(component)) + { + components.Add(component); + component.Manager = this; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Removes a component or a control from the manager. + /// + /// + /// The component or control being removed. + /// + public virtual void Remove(Component component) + { + if (component != null) + { + if (component is Control) + { + Control c = component as Control; + SkinChanging -= c.OnSkinChanging; + SkinChanged -= c.OnSkinChanged; + DeviceSettingsChanged -= c.OnDeviceSettingsChanged; + + if (c.Focused) c.Focused = false; + controls.Remove(c); + } + else + { + components.Remove(component); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void Prepare(GameTime gameTime) + { + + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Renders all controls added to the manager. + /// + /// + /// Time passed since the last call to Draw. + /// + public virtual void BeginDraw(GameTime gameTime) + { + if (!renderTargetValid && AutoCreateRenderTarget) + { + if (renderTarget != null) RenderTarget.Dispose(); + RenderTarget = CreateRenderTarget(); + renderer = new Renderer(this); + } + Draw(gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Draw(GameTime gameTime) + { + if (renderTarget != null) + { + drawTime += gameTime.ElapsedGameTime.Ticks; + double ms = TimeSpan.FromTicks(drawTime).TotalMilliseconds; + + //if (targetFrames == 0 || (ms == 0 || ms >= (1000f / targetFrames))) + //{ + TimeSpan span = TimeSpan.FromTicks(drawTime); + gameTime = new GameTime(gameTime.TotalGameTime, span); + drawTime = 0; + + if ((controls != null)) + { + ControlsList list = new ControlsList(); + list.AddRange(controls); + + foreach (Control c in list) + { + c.PrepareTexture(renderer, gameTime); + } + + GraphicsDevice.SetRenderTarget(renderTarget); + GraphicsDevice.Clear(Color.Transparent); + + if (renderer != null) + { + foreach (Control c in list) + { + c.Render(renderer, gameTime); + } + } + } + + if (softwareCursor && Cursor != null) + { + if (this.cursor.CursorTexture == null) + { + this.cursor.CursorTexture = Texture2D.FromStream(GraphicsDevice, new FileStream( + this.cursor.cursorPath, FileMode.Open, FileAccess.ReadWrite, FileShare.None)); + } + renderer.SpriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend); + MouseState mstate = Mouse.GetState(); + Rectangle rect = new Rectangle(mstate.X, mstate.Y, Cursor.Width, Cursor.Height); + renderer.SpriteBatch.Draw(Cursor.CursorTexture, rect, null, Color.White, 0f, Cursor.HotSpot, SpriteEffects.None, 0f); + renderer.SpriteBatch.End(); + } + + GraphicsDevice.SetRenderTarget(null); + //} + } + else + { + throw new Exception("Manager.RenderTarget has to be specified. Assign a render target or set Manager.AutoCreateRenderTarget property to true."); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Draws texture resolved from RenderTarget used for rendering. + /// + //////////////////////////////////////////////////////////////////////////// + public virtual void EndDraw() + { + EndDraw(new Rectangle(0, 0, ScreenWidth, ScreenHeight)); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + /// Draws texture resolved from RenderTarget to specified rectangle. + /// + //////////////////////////////////////////////////////////////////////////// + public virtual void EndDraw(Rectangle rect) + { + if (renderTarget != null && !deviceReset) + { + renderer.Begin(BlendingMode.Default); + renderer.Draw(RenderTarget, rect, Color.White); + renderer.End(); + } + else if (deviceReset) + { + deviceReset = false; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual Control GetControl(string name) + { + foreach (Control c in Controls) + { + if (c.Name.ToLower() == name.ToLower()) + { + return c; + } + } + return null; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void HandleUnhadledExceptions(object sender, UnhandledExceptionEventArgs e) + { + if (LogUnhandledExceptions) + { + LogException(e.ExceptionObject as Exception); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void GraphicsDevice_DeviceReset(object sender, System.EventArgs e) + { + deviceReset = true; + InvalidateRenderTarget(); + /*if (AutoCreateRenderTarget) + { + if (renderTarget != null) RenderTarget.Dispose(); + RenderTarget = CreateRenderTarget(); + } + }*/ + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void LogException(Exception e) + { +#if (!XBOX && !XBOX_FAKE) + string an = Assembly.GetEntryAssembly().Location; + Assembly asm = Assembly.GetAssembly(typeof(Manager)); + string path = Path.GetDirectoryName(an); + string fn = path + "\\" + Path.GetFileNameWithoutExtension(asm.Location) + ".log"; + + File.AppendAllText(fn, "////////////////////////////////////////////////////////////////\n" + + " Date: " + DateTime.Now.ToString() + "\n" + + "Assembly: " + Path.GetFileName(asm.Location) + "\n" + + " Version: " + asm.GetName().Version.ToString() + "\n" + + " Message: " + e.Message + "\n" + + "////////////////////////////////////////////////////////////////\n" + + e.StackTrace + "\n" + + "////////////////////////////////////////////////////////////////\n\n", Encoding.Default); +#endif + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Input ///////////// + + //////////////////////////////////////////////////////////////////////////// + private bool CheckParent(Control control, Point pos) + { + if (control.Parent != null && !CheckDetached(control)) + { + Control parent = control.Parent; + Control root = control.Root; + + Rectangle pr = new Rectangle(parent.AbsoluteLeft, + parent.AbsoluteTop, + parent.Width, + parent.Height); + + Margins margins = root.Skin.ClientMargins; + Rectangle rr = new Rectangle(root.AbsoluteLeft + margins.Left, + root.AbsoluteTop + margins.Top, + root.OriginWidth - margins.Horizontal, + root.OriginHeight - margins.Vertical); + + + return (rr.Contains(pos) && pr.Contains(pos)); + } + + return true; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private bool CheckState(Control control) + { + bool modal = (ModalWindow == null) ? true : (ModalWindow == control.Root); + + return (control != null && !control.Passive && control.Visible && control.Enabled && modal); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private bool CheckOrder(Control control, Point pos) + { + if (!CheckPosition(control, pos)) return false; + + for (int i = OrderList.Count - 1; i > OrderList.IndexOf(control); i--) + { + Control c = OrderList[i]; + + if (!c.Passive && CheckPosition(c, pos) && CheckParent(c, pos)) + { + return false; + } + } + + return true; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private bool CheckDetached(Control control) + { + bool ret = control.Detached; + if (control.Parent != null) + { + if (CheckDetached(control.Parent)) ret = true; + } + return ret; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private bool CheckPosition(Control control, Point pos) + { + return (control.AbsoluteLeft <= pos.X && + control.AbsoluteTop <= pos.Y && + control.AbsoluteLeft + control.Width >= pos.X && + control.AbsoluteTop + control.Height >= pos.Y && + CheckParent(control, pos)); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private bool CheckButtons(int index) + { + for (int i = 0; i < states.Buttons.Length; i++) + { + if (i == index) continue; + if (states.Buttons[i] != null) return false; + } + + return true; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void TabNextControl(Control control) + { + int start = OrderList.IndexOf(control); + int i = start; + + do + { + if (i < OrderList.Count - 1) i += 1; + else i = 0; + } + while ((OrderList[i].Root != control.Root || !OrderList[i].CanFocus || OrderList[i].IsRoot || !OrderList[i].Enabled) && i != start); + + OrderList[i].Focused = true; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void TabPrevControl(Control control) + { + int start = OrderList.IndexOf(control); + int i = start; + + do + { + if (i > 0) i -= 1; + else i = OrderList.Count - 1; + } + while ((OrderList[i].Root != control.Root || !OrderList[i].CanFocus || OrderList[i].IsRoot || !OrderList[i].Enabled) && i != start); + OrderList[i].Focused = true; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void ProcessArrows(Control control, KeyEventArgs kbe, GamePadEventArgs gpe) + { + Control c = control; + if (c.Parent != null && c.Parent.Controls != null) + { + int index = -1; + + if ((kbe.Key == Microsoft.Xna.Framework.Input.Keys.Left && !kbe.Handled) || + (gpe.Button == c.GamePadActions.Left && !gpe.Handled)) + { + int miny = int.MaxValue; + int minx = int.MinValue; + for (int i = 0; i < (c.Parent.Controls as ControlsList).Count; i++) + { + Control cx = (c.Parent.Controls as ControlsList)[i]; + if (cx == c || !cx.Visible || !cx.Enabled || cx.Passive || !cx.CanFocus) continue; + + int cay = (int)(c.Top + (c.Height / 2)); + int cby = (int)(cx.Top + (cx.Height / 2)); + + if (Math.Abs(cay - cby) <= miny && (cx.Left + cx.Width) >= minx && (cx.Left + cx.Width) <= c.Left) + { + miny = Math.Abs(cay - cby); + minx = cx.Left + cx.Width; + index = i; + } + } + } + else if ((kbe.Key == Microsoft.Xna.Framework.Input.Keys.Right && !kbe.Handled) || + (gpe.Button == c.GamePadActions.Right && !gpe.Handled)) + { + int miny = int.MaxValue; + int minx = int.MaxValue; + for (int i = 0; i < (c.Parent.Controls as ControlsList).Count; i++) + { + Control cx = (c.Parent.Controls as ControlsList)[i]; + if (cx == c || !cx.Visible || !cx.Enabled || cx.Passive || !cx.CanFocus) continue; + + int cay = (int)(c.Top + (c.Height / 2)); + int cby = (int)(cx.Top + (cx.Height / 2)); + + if (Math.Abs(cay - cby) <= miny && cx.Left <= minx && cx.Left >= (c.Left + c.Width)) + { + miny = Math.Abs(cay - cby); + minx = cx.Left; + index = i; + } + } + } + else if ((kbe.Key == Microsoft.Xna.Framework.Input.Keys.Up && !kbe.Handled) || + (gpe.Button == c.GamePadActions.Up && !gpe.Handled)) + { + int miny = int.MinValue; + int minx = int.MaxValue; + for (int i = 0; i < (c.Parent.Controls as ControlsList).Count; i++) + { + Control cx = (c.Parent.Controls as ControlsList)[i]; + if (cx == c || !cx.Visible || !cx.Enabled || cx.Passive || !cx.CanFocus) continue; + + int cax = (int)(c.Left + (c.Width / 2)); + int cbx = (int)(cx.Left + (cx.Width / 2)); + + if (Math.Abs(cax - cbx) <= minx && (cx.Top + cx.Height) >= miny && (cx.Top + cx.Height) <= c.Top) + { + minx = Math.Abs(cax - cbx); + miny = cx.Top + cx.Height; + index = i; + } + } + } + else if ((kbe.Key == Microsoft.Xna.Framework.Input.Keys.Down && !kbe.Handled) || + (gpe.Button == c.GamePadActions.Down && !gpe.Handled)) + { + int miny = int.MaxValue; + int minx = int.MaxValue; + for (int i = 0; i < (c.Parent.Controls as ControlsList).Count; i++) + { + Control cx = (c.Parent.Controls as ControlsList)[i]; + if (cx == c || !cx.Visible || !cx.Enabled || cx.Passive || !cx.CanFocus) continue; + + int cax = (int)(c.Left + (c.Width / 2)); + int cbx = (int)(cx.Left + (cx.Width / 2)); + + if (Math.Abs(cax - cbx) <= minx && cx.Top <= miny && cx.Top >= (c.Top + c.Height)) + { + minx = Math.Abs(cax - cbx); + miny = cx.Top; + index = i; + } + } + } + + if (index != -1) + { + (c.Parent.Controls as ControlsList)[index].Focused = true; + kbe.Handled = true; + gpe.Handled = true; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void MouseDownProcess(object sender, MouseEventArgs e) + { + ControlsList c = new ControlsList(); + c.AddRange(OrderList); + + if (autoUnfocus && focusedControl != null && focusedControl.Root != modalWindow) + { + bool hit = false; + + foreach (Control cx in Controls) + { + if (cx.AbsoluteRect.Contains(e.Position)) + { + hit = true; + break; + } + } + if (!hit) + { + for (int i = 0; i < Control.Stack.Count; i++) + { + if (Control.Stack[i].Visible && Control.Stack[i].Detached && Control.Stack[i].AbsoluteRect.Contains(e.Position)) + { + hit = true; + break; + } + } + } + if (!hit) focusedControl.Focused = false; + } + + for (int i = c.Count - 1; i >= 0; i--) + { + if (CheckState(c[i]) && CheckPosition(c[i], e.Position)) + { + states.Buttons[(int)e.Button] = c[i]; + c[i].SendMessage(Message.MouseDown, e); + + if (states.Click == -1) + { + states.Click = (int)e.Button; + + if (FocusedControl != null) + { + FocusedControl.Invalidate(); + } + c[i].Focused = true; + } + return; + } + } + + if (ModalWindow != null) + { +#if (!XBOX && !XBOX_FAKE) + SystemSounds.Beep.Play(); +#endif + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void MouseUpProcess(object sender, MouseEventArgs e) + { + Control c = states.Buttons[(int)e.Button]; + if (c != null) + { + if (CheckPosition(c, e.Position) && CheckOrder(c, e.Position) && states.Click == (int)e.Button && CheckButtons((int)e.Button)) + { + c.SendMessage(Message.Click, e); + } + states.Click = -1; + c.SendMessage(Message.MouseUp, e); + states.Buttons[(int)e.Button] = null; + MouseMoveProcess(sender, e); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void MousePressProcess(object sender, MouseEventArgs e) + { + Control c = states.Buttons[(int)e.Button]; + if (c != null) + { + if (CheckPosition(c, e.Position)) + { + c.SendMessage(Message.MousePress, e); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void MouseMoveProcess(object sender, MouseEventArgs e) + { + ControlsList c = new ControlsList(); + c.AddRange(OrderList); + + for (int i = c.Count - 1; i >= 0; i--) + { + bool chpos = CheckPosition(c[i], e.Position); + bool chsta = CheckState(c[i]); + + if (chsta && ((chpos && states.Over == c[i]) || (states.Buttons[(int)e.Button] == c[i]))) + { + c[i].SendMessage(Message.MouseMove, e); + break; + } + } + + for (int i = c.Count - 1; i >= 0; i--) + { + bool chpos = CheckPosition(c[i], e.Position); + bool chsta = CheckState(c[i]) || (c[i].ToolTip.Text != "" && c[i].ToolTip.Text != null && c[i].Visible); + + if (chsta && !chpos && states.Over == c[i] && states.Buttons[(int)e.Button] == null) + { + states.Over = null; + c[i].SendMessage(Message.MouseOut, e); + break; + } + } + + for (int i = c.Count - 1; i >= 0; i--) + { + bool chpos = CheckPosition(c[i], e.Position); + bool chsta = CheckState(c[i]) || (c[i].ToolTip.Text != "" && c[i].ToolTip.Text != null && c[i].Visible); + + if (chsta && chpos && states.Over != c[i] && states.Buttons[(int)e.Button] == null) + { + if (states.Over != null) + { + states.Over.SendMessage(Message.MouseOut, e); + } + states.Over = c[i]; + c[i].SendMessage(Message.MouseOver, e); + break; + } + else if (states.Over == c[i]) break; + } + } + //////////////////////////////////////////////////////////////////////////// + + /// + /// Processes mouse scroll events for the manager. + /// + /// + /// + private void MouseScrollProcess(object sender, MouseEventArgs e) + { + ControlsList c = new ControlsList(); + c.AddRange(OrderList); + + for (int i = c.Count - 1; i >= 0; i--) + { + bool chpos = CheckPosition(c[i], e.Position); + bool chsta = CheckState(c[i]); + + if (chsta && chpos && states.Over == c[i]) + { + c[i].SendMessage(Message.MouseScroll, e); + break; + } + } + } + + //////////////////////////////////////////////////////////////////////////// + void GamePadDownProcess(object sender, GamePadEventArgs e) + { + Control c = FocusedControl; + + if (c != null && CheckState(c)) + { + if (states.Click == -1) + { + states.Click = (int)e.Button; + } + states.Buttons[(int)e.Button] = c; + c.SendMessage(Message.GamePadDown, e); + + if (e.Button == c.GamePadActions.Click) + { + c.SendMessage(Message.Click, new MouseEventArgs(new MouseState(), MouseButton.None, Point.Zero)); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void GamePadUpProcess(object sender, GamePadEventArgs e) + { + Control c = states.Buttons[(int)e.Button]; + + if (c != null) + { + if (e.Button == c.GamePadActions.Press) + { + c.SendMessage(Message.Click, new MouseEventArgs(new MouseState(), MouseButton.None, Point.Zero)); + } + states.Click = -1; + states.Buttons[(int)e.Button] = null; + c.SendMessage(Message.GamePadUp, e); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void GamePadPressProcess(object sender, GamePadEventArgs e) + { + Control c = states.Buttons[(int)e.Button]; + if (c != null) + { + c.SendMessage(Message.GamePadPress, e); + + if ((e.Button == c.GamePadActions.Right || + e.Button == c.GamePadActions.Left || + e.Button == c.GamePadActions.Up || + e.Button == c.GamePadActions.Down) && !e.Handled && CheckButtons((int)e.Button)) + { + ProcessArrows(c, new KeyEventArgs(), e); + GamePadDownProcess(sender, e); + } + else if (e.Button == c.GamePadActions.NextControl && !e.Handled && CheckButtons((int)e.Button)) + { + TabNextControl(c); + GamePadDownProcess(sender, e); + } + else if (e.Button == c.GamePadActions.PrevControl && !e.Handled && CheckButtons((int)e.Button)) + { + TabPrevControl(c); + GamePadDownProcess(sender, e); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void KeyDownProcess(object sender, KeyEventArgs e) + { + Control c = FocusedControl; + + if (c != null && CheckState(c)) + { + if (states.Click == -1) + { + states.Click = (int)MouseButton.None; + } + states.Buttons[(int)MouseButton.None] = c; + c.SendMessage(Message.KeyDown, e); + + if (e.Key == Microsoft.Xna.Framework.Input.Keys.Enter) + { + c.SendMessage(Message.Click, new MouseEventArgs(new MouseState(), MouseButton.None, Point.Zero)); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void KeyUpProcess(object sender, KeyEventArgs e) + { + Control c = states.Buttons[(int)MouseButton.None]; + + if (c != null) + { + if (e.Key == Microsoft.Xna.Framework.Input.Keys.Space) + { + c.SendMessage(Message.Click, new MouseEventArgs(new MouseState(), MouseButton.None, Point.Zero)); + } + states.Click = -1; + states.Buttons[(int)MouseButton.None] = null; + c.SendMessage(Message.KeyUp, e); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void KeyPressProcess(object sender, KeyEventArgs e) + { + Control c = states.Buttons[(int)MouseButton.None]; + if (c != null) + { + c.SendMessage(Message.KeyPress, e); + + if ((e.Key == Microsoft.Xna.Framework.Input.Keys.Right || + e.Key == Microsoft.Xna.Framework.Input.Keys.Left || + e.Key == Microsoft.Xna.Framework.Input.Keys.Up || + e.Key == Microsoft.Xna.Framework.Input.Keys.Down) && !e.Handled && CheckButtons((int)MouseButton.None)) + { + ProcessArrows(c, e, new GamePadEventArgs(PlayerIndex.One)); + KeyDownProcess(sender, e); + } + else if (e.Key == Microsoft.Xna.Framework.Input.Keys.Tab && !e.Shift && !e.Handled && CheckButtons((int)MouseButton.None)) + { + TabNextControl(c); + KeyDownProcess(sender, e); + } + else if (e.Key == Microsoft.Xna.Framework.Input.Keys.Tab && e.Shift && !e.Handled && CheckButtons((int)MouseButton.None)) + { + TabPrevControl(c); + KeyDownProcess(sender, e); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + +} diff --git a/Neoforce/MenuBase.cs b/Neoforce/MenuBase.cs new file mode 100644 index 0000000..e3fd4b2 --- /dev/null +++ b/Neoforce/MenuBase.cs @@ -0,0 +1,141 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: MenuBase.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using System; +using System.Collections.Generic; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public class MenuItem: Unknown + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + public string Text = "MenuItem"; + public List Items = new List(); + public bool Separated = false; + public Texture2D Image = null; + public bool Enabled = true; + public object Tag { get; set; } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public MenuItem() + { + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public MenuItem(string text): this() + { + Text = text; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public MenuItem(string text, bool separated): this(text) + { + Separated = separated; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public event EventHandler Click; + public event EventHandler Selected; + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + internal void ClickInvoke(EventArgs e) + { + if (Click != null) Click.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + internal void SelectedInvoke(EventArgs e) + { + if (Selected != null) Selected.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + + public abstract class MenuBase: Control + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private int itemIndex = -1; + private List items = new List(); + private MenuBase childMenu = null; + private MenuBase rootMenu = null; + private MenuBase parentMenu = null; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + protected internal int ItemIndex { get { return itemIndex; } set { itemIndex = value; } } + protected internal MenuBase ChildMenu { get { return childMenu; } set { childMenu = value; } } + protected internal MenuBase RootMenu { get { return rootMenu; } set { rootMenu = value; } } + protected internal MenuBase ParentMenu { get { return parentMenu; } set { parentMenu = value; } } + public List Items { get { return items; } } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public MenuBase(Manager manager): base(manager) + { + rootMenu = this; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/ModalContainer.cs b/Neoforce/ModalContainer.cs new file mode 100644 index 0000000..46c7c9a --- /dev/null +++ b/Neoforce/ModalContainer.cs @@ -0,0 +1,194 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: ModalContainer.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public class ModalContainer: Container + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private ModalResult modalResult = ModalResult.None; + private ModalContainer lastModal = null; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public override bool Visible + { + get + { + return base.Visible; + } + set + { + if (value) Focused = true; + base.Visible = value; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual bool IsModal + { + get { return Manager.ModalWindow == this; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual ModalResult ModalResult + { + get + { + return modalResult; + } + set + { + modalResult = value; + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + public event WindowClosingEventHandler Closing; + public event WindowClosedEventHandler Closed; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Consructors /////// + + //////////////////////////////////////////////////////////////////////////// + public ModalContainer(Manager manager): base(manager) + { + Manager.Input.GamePadDown += new GamePadEventHandler(Input_GamePadDown); + GamePadActions = new WindowGamePadActions(); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void ShowModal() + { + lastModal = Manager.ModalWindow; + Manager.ModalWindow = this; + Manager.Input.KeyDown += new KeyEventHandler(Input_KeyDown); + Manager.Input.GamePadDown += new GamePadEventHandler(Input_GamePadDown); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void Close() + { + WindowClosingEventArgs ex = new WindowClosingEventArgs(); + OnClosing(ex); + if (!ex.Cancel) + { + Manager.Input.KeyDown -= Input_KeyDown; + Manager.Input.GamePadDown -= Input_GamePadDown; + Manager.ModalWindow = lastModal; + if (lastModal != null) lastModal.Focused = true; + Hide(); + WindowClosedEventArgs ev = new WindowClosedEventArgs(); + OnClosed(ev); + + if (ev.Dispose) + { + this.Dispose(); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void Close(ModalResult modalResult) + { + ModalResult = modalResult; + Close(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnClosing(WindowClosingEventArgs e) + { + if (Closing != null) Closing.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnClosed(WindowClosedEventArgs e) + { + if (Closed != null) Closed.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void Input_KeyDown(object sender, KeyEventArgs e) + { + if (Visible && (Manager.FocusedControl != null && Manager.FocusedControl.Root == this) && + e.Key == Microsoft.Xna.Framework.Input.Keys.Escape) + { + //Close(ModalResult.Cancel); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void Input_GamePadDown(object sender, GamePadEventArgs e) + { + if (Visible && (Manager.FocusedControl != null && Manager.FocusedControl.Root == this)) + { + if (e.Button == (GamePadActions as WindowGamePadActions).Accept) + { + Close(ModalResult.Ok); + } + else if (e.Button == (GamePadActions as WindowGamePadActions).Cancel) + { + Close(ModalResult.Cancel); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/NativeMethods.cs b/Neoforce/NativeMethods.cs new file mode 100644 index 0000000..84bafd1 --- /dev/null +++ b/Neoforce/NativeMethods.cs @@ -0,0 +1,69 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: NativeMethods.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using System; +using System.Runtime.InteropServices; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + [Obsolete("Native methods should be avoided at all times")] + internal static class NativeMethods + { + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + [Obsolete] + [DllImport("User32.dll", CharSet = CharSet.Unicode)] + internal static extern IntPtr LoadImage(IntPtr instance, string fileName, uint type, int width, int height, uint load); + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + [Obsolete] + [DllImport("User32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + internal static extern bool DestroyCursor(IntPtr cursor); + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + [Obsolete] + internal static IntPtr LoadCursor(string fileName) + { + return LoadImage(IntPtr.Zero, fileName, 2, 0, 0, 0x0010); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + [Obsolete] + [DllImport("user32.dll")] + internal static extern short GetKeyState(int key); + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/Panel.cs b/Neoforce/Panel.cs new file mode 100644 index 0000000..cbbe504 --- /dev/null +++ b/Neoforce/Panel.cs @@ -0,0 +1,280 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: Panel.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public class Panel: Container + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private Bevel bevel = null; + private BevelStyle bevelStyle = BevelStyle.None; + private BevelBorder bevelBorder = BevelBorder.None; + private int bevelMargin = 0; + private Color bevelColor = Color.Transparent; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public BevelStyle BevelStyle + { + get { return bevelStyle; } + set + { + if (bevelStyle != value) + { + bevelStyle = bevel.Style = value; + AdjustMargins(); + if (!Suspended) OnBevelStyleChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public BevelBorder BevelBorder + { + get { return bevelBorder; } + set + { + if (bevelBorder != value) + { + bevelBorder = bevel.Border = value; + bevel.Visible = bevelBorder != BevelBorder.None; + AdjustMargins(); + if (!Suspended) OnBevelBorderChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public int BevelMargin + { + get { return bevelMargin; } + set + { + if (bevelMargin != value) + { + bevelMargin = value; + AdjustMargins(); + if (!Suspended) OnBevelMarginChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual Color BevelColor + { + get { return bevelColor; } + set + { + bevel.Color = bevelColor = value; + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + public event EventHandler BevelBorderChanged; + public event EventHandler BevelStyleChanged; + public event EventHandler BevelMarginChanged; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public Panel(Manager manager): base(manager) + { + Passive = false; + CanFocus = false; + Width = 64; + Height = 64; + + bevel = new Bevel(Manager); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + + bevel.Init(); + bevel.Style = bevelStyle; + bevel.Border = bevelBorder; + bevel.Left = 0; + bevel.Top = 0; + bevel.Width = Width; + bevel.Height = Height; + bevel.Color = bevelColor; + bevel.Visible = (bevelBorder != BevelBorder.None); + bevel.Anchor = Anchors.Left | Anchors.Top | Anchors.Right | Anchors.Bottom; + Add(bevel, false); + AdjustMargins(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + Skin = new SkinControl(Manager.Skin.Controls["Panel"]); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void AdjustMargins() + { + int l = 0; + int t = 0; + int r = 0; + int b = 0; + int s = bevelMargin; + + if (bevelBorder != BevelBorder.None) + { + if (bevelStyle != BevelStyle.Flat) + { + s += 2; + } + else + { + s += 1; + } + + if (bevelBorder == BevelBorder.Left || bevelBorder == BevelBorder.All) + { + l = s; + } + if (bevelBorder == BevelBorder.Top || bevelBorder == BevelBorder.All) + { + t = s; + } + if (bevelBorder == BevelBorder.Right || bevelBorder == BevelBorder.All) + { + r = s; + } + if (bevelBorder == BevelBorder.Bottom || bevelBorder == BevelBorder.All) + { + b = s; + } + } + ClientMargins = new Margins(Skin.ClientMargins.Left + l, Skin.ClientMargins.Top + t, Skin.ClientMargins.Right + r, Skin.ClientMargins.Bottom + b); + + base.AdjustMargins(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + int x = rect.Left; + int y = rect.Top; + int w = rect.Width; + int h = rect.Height; + int s = bevelMargin; + + if (bevelBorder != BevelBorder.None) + { + if (bevelStyle != BevelStyle.Flat) + { + s += 2; + } + else + { + s += 1; + } + + if (bevelBorder == BevelBorder.Left || bevelBorder == BevelBorder.All) + { + x += s; + w -= s; + } + if (bevelBorder == BevelBorder.Top || bevelBorder == BevelBorder.All) + { + y += s; + h -= s; + } + if (bevelBorder == BevelBorder.Right || bevelBorder == BevelBorder.All) + { + w -= s; + } + if (bevelBorder == BevelBorder.Bottom || bevelBorder == BevelBorder.All) + { + h -= s; + } + } + + base.DrawControl(renderer, new Rectangle(x, y, w, h), gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnBevelBorderChanged(EventArgs e) + { + if (BevelBorderChanged != null) BevelBorderChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnBevelStyleChanged(EventArgs e) + { + if (BevelStyleChanged != null) BevelStyleChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnBevelMarginChanged(EventArgs e) + { + if (BevelMarginChanged != null) BevelMarginChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/ProgressBar.cs b/Neoforce/ProgressBar.cs new file mode 100644 index 0000000..3e46ef8 --- /dev/null +++ b/Neoforce/ProgressBar.cs @@ -0,0 +1,264 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: ProgressBar.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework; +using System; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + #region //// Enums ///////////// + + //////////////////////////////////////////////////////////////////////////// + public enum ProgressBarMode + { + Default, + Infinite + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + public class ProgressBar : Control + { + + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private int range = 100; + private int value = 0; + private double time = 0; + private int sign = 1; + private ProgressBarMode mode = ProgressBarMode.Default; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public int Value + { + get { return this.value; } + set + { + if (mode == ProgressBarMode.Default) + { + if (this.value != value) + { + this.value = value; + if (this.value > range) this.value = range; + if (this.value < 0) this.value = 0; + Invalidate(); + + if (!Suspended) OnValueChanged(new EventArgs()); + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public ProgressBarMode Mode + { + get { return mode; } + set + { + if (mode != value) + { + mode = value; + if (mode == ProgressBarMode.Infinite) + { + range = 100; + this.value = 0; + time = 0; + sign = 1; + } + else + { + this.value = 0; + range = 100; + } + Invalidate(); + + if (!Suspended) OnModeChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public int Range + { + get { return range; } + set + { + if (range != value) + { + if (mode == ProgressBarMode.Default) + { + range = value; + if (range < 0) range = 0; + if (range < this.value) this.value = range; + Invalidate(); + + if (!Suspended) OnRangeChanged(new EventArgs()); + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + public event EventHandler ValueChanged; + public event EventHandler RangeChanged; + public event EventHandler ModeChanged; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public ProgressBar(Manager manager) + : base(manager) + { + Width = 128; + Height = 16; + MinimumHeight = 8; + MinimumWidth = 32; + Passive = true; + CanFocus = false; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + CheckLayer(Skin, "Control"); + CheckLayer(Skin, "Scale"); + + base.DrawControl(renderer, rect, gameTime); + + if (Value > 0 || mode == ProgressBarMode.Infinite) + { + SkinLayer p = Skin.Layers["Control"]; + SkinLayer l = Skin.Layers["Scale"]; + Rectangle r = new Rectangle(rect.Left + p.ContentMargins.Left, + rect.Top + p.ContentMargins.Top, + rect.Width - p.ContentMargins.Vertical, + rect.Height - p.ContentMargins.Horizontal); + + float perc = ((float)value / range) * 100; + int w = (int)((perc / 100) * r.Width); + Rectangle rx; + if (mode == ProgressBarMode.Default) + { + if (w < l.SizingMargins.Vertical) w = l.SizingMargins.Vertical; + rx = new Rectangle(r.Left, r.Top, w, r.Height); + } + else + { + int s = r.Left + w; + if (s > r.Left + p.ContentMargins.Left + r.Width - (r.Width / 4)) s = r.Left + p.ContentMargins.Left + r.Width - (r.Width / 4); + rx = new Rectangle(s, r.Top, (r.Width / 4), r.Height); + } + + renderer.DrawLayer(this, l, rx); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void Update(GameTime gameTime) + { + base.Update(gameTime); + + if (mode == ProgressBarMode.Infinite && Enabled && Visible) + { + time += gameTime.ElapsedGameTime.TotalMilliseconds; + if (time >= 33f) + { + value += sign * (int)Math.Ceiling(time / 20f); + if (value >= Range - (Range / 4)) + { + value = Range - (Range / 4); + sign = -1; + } + else if (value <= 0) + { + value = 0; + sign = 1; + } + time = 0; + Invalidate(); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnValueChanged(EventArgs e) + { + if (ValueChanged != null) ValueChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnRangeChanged(EventArgs e) + { + if (RangeChanged != null) RangeChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnModeChanged(EventArgs e) + { + if (ModeChanged != null) ModeChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/Properties/AssemblyInfo.cs b/Neoforce/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..4c52ffd --- /dev/null +++ b/Neoforce/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("MonoGame.Controls")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MonoGame.Controls")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("581cd203-a917-4a56-87f8-79ef3cbe4f5e")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Neoforce/RadioButton.cs b/Neoforce/RadioButton.cs new file mode 100644 index 0000000..c15d47a --- /dev/null +++ b/Neoforce/RadioButton.cs @@ -0,0 +1,159 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: RadioButton.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework; +using System.Collections.Generic; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + #region //// Enums ///////////// + + //////////////////////////////////////////////////////////////////////////// + public enum RadioButtonMode + { + Auto, + Manual + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + public class RadioButton: CheckBox + { + + #region //// Consts //////////// + + //////////////////////////////////////////////////////////////////////////// + private const string skRadioButton = "RadioButton"; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private RadioButtonMode mode = RadioButtonMode.Auto; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public RadioButtonMode Mode + { + get { return mode; } + set { mode = value; } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public RadioButton(Manager manager): base(manager) + { + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + Skin = new SkinControl(Manager.Skin.Controls[skRadioButton]); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + base.DrawControl(renderer, rect, gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnClick(EventArgs e) + { + MouseEventArgs ex = (e is MouseEventArgs) ? (MouseEventArgs)e : new MouseEventArgs(); + + if (ex.Button == MouseButton.Left || ex.Button == MouseButton.None) + { + if (mode == RadioButtonMode.Auto) + { + if (Parent != null) + { + ControlsList lst = Parent.Controls as ControlsList; + for (int i = 0; i < lst.Count; i++) + { + if (lst[i] is RadioButton) + { + (lst[i] as RadioButton).Checked = false; + } + } + } + else if (Parent == null && Manager != null) + { + ControlsList lst = Manager.Controls as ControlsList; + + for (int i = 0; i < lst.Count; i++) + { + if (lst[i] is RadioButton) + { + (lst[i] as RadioButton).Checked = false; + } + } + } + } + } + base.OnClick(e); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/Renderer.cs b/Neoforce/Renderer.cs new file mode 100644 index 0000000..8da72bf --- /dev/null +++ b/Neoforce/Renderer.cs @@ -0,0 +1,767 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: Renderer.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + public enum BlendingMode + { + Default, + None, + } + + #region //// Classes /////////// + + //////////////////////////////////////////////////////////////////////////// + public class DeviceStates + { + public readonly BlendState BlendState; + public readonly RasterizerState RasterizerState; + public readonly DepthStencilState DepthStencilState; + public readonly SamplerState SamplerState; + + public DeviceStates() + { + BlendState = new BlendState(); + BlendState.AlphaBlendFunction = BlendState.AlphaBlend.AlphaBlendFunction; + BlendState.AlphaDestinationBlend = BlendState.AlphaBlend.AlphaDestinationBlend; + BlendState.AlphaSourceBlend = BlendState.AlphaBlend.AlphaSourceBlend; + BlendState.BlendFactor = BlendState.AlphaBlend.BlendFactor; + BlendState.ColorBlendFunction = BlendState.AlphaBlend.ColorBlendFunction; + BlendState.ColorDestinationBlend = BlendState.AlphaBlend.ColorDestinationBlend; + BlendState.ColorSourceBlend = BlendState.AlphaBlend.ColorSourceBlend; + BlendState.ColorWriteChannels = BlendState.AlphaBlend.ColorWriteChannels; + BlendState.ColorWriteChannels1 = BlendState.AlphaBlend.ColorWriteChannels1; + BlendState.ColorWriteChannels2 = BlendState.AlphaBlend.ColorWriteChannels2; + BlendState.ColorWriteChannels3 = BlendState.AlphaBlend.ColorWriteChannels3; + BlendState.MultiSampleMask = BlendState.AlphaBlend.MultiSampleMask; + + RasterizerState = new RasterizerState(); + RasterizerState.CullMode = RasterizerState.CullNone.CullMode; + RasterizerState.DepthBias = RasterizerState.CullNone.DepthBias; + RasterizerState.FillMode = RasterizerState.CullNone.FillMode; + RasterizerState.MultiSampleAntiAlias = RasterizerState.CullNone.MultiSampleAntiAlias; + RasterizerState.ScissorTestEnable = RasterizerState.CullNone.ScissorTestEnable; + RasterizerState.SlopeScaleDepthBias = RasterizerState.CullNone.SlopeScaleDepthBias; + + RasterizerState.ScissorTestEnable = true; + + SamplerState = new SamplerState(); + SamplerState.AddressU = SamplerState.AnisotropicClamp.AddressU; + SamplerState.AddressV = SamplerState.AnisotropicClamp.AddressV; + SamplerState.AddressW = SamplerState.AnisotropicClamp.AddressW; + SamplerState.Filter = SamplerState.AnisotropicClamp.Filter; + SamplerState.MaxAnisotropy = SamplerState.AnisotropicClamp.MaxAnisotropy; + SamplerState.MaxMipLevel = SamplerState.AnisotropicClamp.MaxMipLevel; + SamplerState.MipMapLevelOfDetailBias = SamplerState.AnisotropicClamp.MipMapLevelOfDetailBias; + + DepthStencilState = new DepthStencilState(); + DepthStencilState = DepthStencilState.None; + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + public class Renderer : Component + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private SpriteBatch sb = null; + private DeviceStates states = new DeviceStates(); + private BlendingMode bmode = BlendingMode.Default; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public virtual SpriteBatch SpriteBatch + { + get + { + return sb; + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public Renderer(Manager manager) + : base(manager) + { + sb = new SpriteBatch(Manager.GraphicsDevice); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Destructors /////// + + //////////////////////////////////////////////////////////////////////////// + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (sb != null) + { + sb.Dispose(); + sb = null; + } + } + base.Dispose(disposing); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void Begin(BlendingMode mode) + { + bmode = mode; + if (mode != BlendingMode.None) + { + sb.Begin(SpriteSortMode.Immediate, states.BlendState, states.SamplerState, states.DepthStencilState, states.RasterizerState); + } + else + { + sb.Begin(SpriteSortMode.Immediate, BlendState.Opaque, states.SamplerState, states.DepthStencilState, states.RasterizerState); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void End() + { + sb.End(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void Draw(Texture2D texture, Rectangle destination, Color color) + { + if (destination.Width > 0 && destination.Height > 0) + { + sb.Draw(texture, destination, null, color, 0.0f, Vector2.Zero, SpriteEffects.None, Manager.GlobalDepth); + } + } + //////////////////////////////////////////////////////////////////////////// + + public virtual void DrawTileTexture(Texture2D texture, Rectangle destination, Color color) + { + if (destination.Width > 0 && destination.Height > 0) + { + End(); + + sb.Begin(SpriteSortMode.Texture, BlendState.AlphaBlend, SamplerState.LinearWrap, DepthStencilState.Default, RasterizerState.CullNone); + + sb.Draw(texture, new Vector2(destination.X,destination.Y), destination, color, 0, Vector2.Zero, 1, SpriteEffects.None, 0); + + End(); + Begin(bmode); + } + } + + //////////////////////////////////////////////////////////////////////////// + public virtual void Draw(Texture2D texture, Rectangle destination, Rectangle source, Color color) + { + if (source.Width > 0 && source.Height > 0 && destination.Width > 0 && destination.Height > 0) + { + sb.Draw(texture, destination, source, color, 0.0f, Vector2.Zero, SpriteEffects.None, Manager.GlobalDepth); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void Draw(Texture2D texture, int left, int top, Color color) + { + sb.Draw(texture, new Vector2(left, top), null, color, 0.0f, Vector2.Zero, 1.0f, SpriteEffects.None, Manager.GlobalDepth); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void Draw(Texture2D texture, int left, int top, Rectangle source, Color color) + { + if (source.Width > 0 && source.Height > 0) + { + sb.Draw(texture, new Vector2(left, top), source, color, 0.0f, Vector2.Zero, 1.0f, SpriteEffects.None, Manager.GlobalDepth); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void DrawString(SpriteFont font, string text, int left, int top, Color color) + { + sb.DrawString(font, text, new Vector2(left, top), color, 0.0f, Vector2.Zero, 1.0f, SpriteEffects.None, Manager.GlobalDepth); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void DrawString(SpriteFont font, string text, Rectangle rect, Color color, Alignment alignment) + { + DrawString(font, text, rect, color, alignment, 0, 0, true); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void DrawString(SpriteFont font, string text, Rectangle rect, Color color, Alignment alignment, bool ellipsis) + { + DrawString(font, text, rect, color, alignment, 0, 0, ellipsis); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void DrawString(Control control, SkinLayer layer, string text, Rectangle rect) + { + DrawString(control, layer, text, rect, true, 0, 0, true); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void DrawString(Control control, SkinLayer layer, string text, Rectangle rect, ControlState state) + { + DrawString(control, layer, text, rect, state, true, 0, 0, true); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void DrawString(Control control, SkinLayer layer, string text, Rectangle rect, bool margins) + { + DrawString(control, layer, text, rect, margins, 0, 0, true); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void DrawString(Control control, SkinLayer layer, string text, Rectangle rect, ControlState state, bool margins) + { + DrawString(control, layer, text, rect, state, margins, 0, 0, true); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void DrawString(Control control, SkinLayer layer, string text, Rectangle rect, bool margins, int ox, int oy) + { + DrawString(control, layer, text, rect, margins, ox, oy, true); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void DrawString(Control control, SkinLayer layer, string text, Rectangle rect, ControlState state, bool margins, int ox, int oy) + { + DrawString(control, layer, text, rect, state, margins, ox, oy, true); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void DrawString(Control control, SkinLayer layer, string text, Rectangle rect, bool margins, int ox, int oy, bool ellipsis) + { + DrawString(control, layer, text, rect, control.ControlState, margins, ox, oy, ellipsis); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void DrawString(Control control, SkinLayer layer, string text, Rectangle rect, ControlState state, bool margins, int ox, int oy, bool ellipsis) + { + Color col = Color.White; + + if (layer.Text != null) + { + if (margins) + { + Margins m = layer.ContentMargins; + rect = new Rectangle(rect.Left + m.Left, rect.Top + m.Top, rect.Width - m.Horizontal, rect.Height - m.Vertical); + } + + if (state == ControlState.Hovered && (layer.States.Hovered.Index != -1)) + { + col = layer.Text.Colors.Hovered; + } + else if (state == ControlState.Pressed) + { + col = layer.Text.Colors.Pressed; + } + else if (state == ControlState.Focused || (control.Focused && state == ControlState.Hovered && layer.States.Hovered.Index == -1)) + { + col = layer.Text.Colors.Focused; + } + else if (state == ControlState.Disabled) + { + col = layer.Text.Colors.Disabled; + } + else + { + col = layer.Text.Colors.Enabled; + } + + if (text != null && text != "") + { + SkinText font = layer.Text; + if (control.TextColor != Control.UndefinedColor && control.ControlState != ControlState.Disabled) col = control.TextColor; + DrawString(font.Font.Resource, text, rect, col, font.Alignment, font.OffsetX + ox, font.OffsetY + oy, ellipsis); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void DrawString(SpriteFont font, string text, Rectangle rect, Color color, Alignment alignment, int offsetX, int offsetY, bool ellipsis) + { + + if (ellipsis) + { + const string elli = "..."; + int size = (int)Math.Ceiling(font.MeasureString(text).X); + if (size > rect.Width) + { + int es = (int)Math.Ceiling(font.MeasureString(elli).X); + for (int i = text.Length - 1; i > 0; i--) + { + int c = 1; + if (char.IsWhiteSpace(text[i - 1])) + { + c = 2; + i--; + } + text = text.Remove(i, c); + size = (int)Math.Ceiling(font.MeasureString(text).X); + if (size + es <= rect.Width) + { + break; + } + } + text += elli; + } + } + + if (rect.Width > 0 && rect.Height > 0) + { + Vector2 pos = new Vector2(rect.Left, rect.Top); + Vector2 size = font.MeasureString(text); + + int x = 0; int y = 0; + + switch (alignment) + { + case Alignment.TopLeft: + break; + case Alignment.TopCenter: + x = GetTextCenter(rect.Width, size.X); + break; + case Alignment.TopRight: + x = rect.Width - (int)size.X; + break; + case Alignment.MiddleLeft: + y = GetTextCenter(rect.Height, size.Y); + break; + case Alignment.MiddleRight: + x = rect.Width - (int)size.X; + y = GetTextCenter(rect.Height, size.Y); + break; + case Alignment.BottomLeft: + y = rect.Height - (int)size.Y; + break; + case Alignment.BottomCenter: + x = GetTextCenter(rect.Width, size.X); + y = rect.Height - (int)size.Y; + break; + case Alignment.BottomRight: + x = rect.Width - (int)size.X; + y = rect.Height - (int)size.Y; + break; + + default: + x = GetTextCenter(rect.Width, size.X); + y = GetTextCenter(rect.Height, size.Y); + break; + } + + pos.X = (int)(pos.X + x); + pos.Y = (int)(pos.Y + y); + + DrawString(font, text, (int)pos.X + offsetX, (int)pos.Y + offsetY, color); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private static int GetTextCenter(float size1, float size2) + { + return (int)Math.Ceiling((size1 / 2) - (size2 / 2)); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void DrawLayer(SkinLayer layer, Rectangle rect, Color color, int index) + { + Size imageSize = new Size(layer.Image.Resource.Width, layer.Image.Resource.Height); + Size partSize = new Size(layer.Width, layer.Height); + + Draw(layer.Image.Resource, GetDestinationArea(rect, layer.SizingMargins, Alignment.TopLeft), GetSourceArea(imageSize, partSize, layer.SizingMargins, Alignment.TopLeft, index), color); + Draw(layer.Image.Resource, GetDestinationArea(rect, layer.SizingMargins, Alignment.TopCenter), GetSourceArea(imageSize, partSize, layer.SizingMargins, Alignment.TopCenter, index), color); + Draw(layer.Image.Resource, GetDestinationArea(rect, layer.SizingMargins, Alignment.TopRight), GetSourceArea(imageSize, partSize, layer.SizingMargins, Alignment.TopRight, index), color); + Draw(layer.Image.Resource, GetDestinationArea(rect, layer.SizingMargins, Alignment.MiddleLeft), GetSourceArea(imageSize, partSize, layer.SizingMargins, Alignment.MiddleLeft, index), color); + Draw(layer.Image.Resource, GetDestinationArea(rect, layer.SizingMargins, Alignment.MiddleCenter), GetSourceArea(imageSize, partSize, layer.SizingMargins, Alignment.MiddleCenter, index), color); + Draw(layer.Image.Resource, GetDestinationArea(rect, layer.SizingMargins, Alignment.MiddleRight), GetSourceArea(imageSize, partSize, layer.SizingMargins, Alignment.MiddleRight, index), color); + Draw(layer.Image.Resource, GetDestinationArea(rect, layer.SizingMargins, Alignment.BottomLeft), GetSourceArea(imageSize, partSize, layer.SizingMargins, Alignment.BottomLeft, index), color); + Draw(layer.Image.Resource, GetDestinationArea(rect, layer.SizingMargins, Alignment.BottomCenter), GetSourceArea(imageSize, partSize, layer.SizingMargins, Alignment.BottomCenter, index), color); + Draw(layer.Image.Resource, GetDestinationArea(rect, layer.SizingMargins, Alignment.BottomRight), GetSourceArea(imageSize, partSize, layer.SizingMargins, Alignment.BottomRight, index), color); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private static Rectangle GetSourceArea(Size imageSize, Size partSize, Margins margins, Alignment alignment, int index) + { + Rectangle rect = new Rectangle(); + int xc = (int)((float)imageSize.Width / partSize.Width); + int yc = (int)((float)imageSize.Height / partSize.Height); + + int xm = (index) % xc; + int ym = (index) / xc; + + int adj = 1; + margins.Left += margins.Left > 0 ? adj : 0; + margins.Top += margins.Top > 0 ? adj : 0; + margins.Right += margins.Right > 0 ? adj : 0; + margins.Bottom += margins.Bottom > 0 ? adj : 0; + + margins = new Margins(margins.Left, margins.Top, margins.Right, margins.Bottom); + switch (alignment) + { + case Alignment.TopLeft: + { + rect = new Rectangle((0 + (xm * partSize.Width)), + (0 + (ym * partSize.Height)), + margins.Left, + margins.Top); + break; + } + case Alignment.TopCenter: + { + rect = new Rectangle((0 + (xm * partSize.Width)) + margins.Left, + (0 + (ym * partSize.Height)), + partSize.Width - margins.Left - margins.Right, + margins.Top); + break; + } + case Alignment.TopRight: + { + rect = new Rectangle((partSize.Width + (xm * partSize.Width)) - margins.Right, + (0 + (ym * partSize.Height)), + margins.Right, + margins.Top); + break; + } + case Alignment.MiddleLeft: + { + rect = new Rectangle((0 + (xm * partSize.Width)), + (0 + (ym * partSize.Height)) + margins.Top, + margins.Left, + partSize.Height - margins.Top - margins.Bottom); + break; + } + case Alignment.MiddleCenter: + { + rect = new Rectangle((0 + (xm * partSize.Width)) + margins.Left, + (0 + (ym * partSize.Height)) + margins.Top, + partSize.Width - margins.Left - margins.Right, + partSize.Height - margins.Top - margins.Bottom); + break; + } + case Alignment.MiddleRight: + { + rect = new Rectangle((partSize.Width + (xm * partSize.Width)) - margins.Right, + (0 + (ym * partSize.Height)) + margins.Top, + margins.Right, + partSize.Height - margins.Top - margins.Bottom); + break; + } + case Alignment.BottomLeft: + { + rect = new Rectangle((0 + (xm * partSize.Width)), + (partSize.Height + (ym * partSize.Height)) - margins.Bottom, + margins.Left, + margins.Bottom); + break; + } + case Alignment.BottomCenter: + { + rect = new Rectangle((0 + (xm * partSize.Width)) + margins.Left, + (partSize.Height + (ym * partSize.Height)) - margins.Bottom, + partSize.Width - margins.Left - margins.Right, + margins.Bottom); + break; + } + case Alignment.BottomRight: + { + rect = new Rectangle((partSize.Width + (xm * partSize.Width)) - margins.Right, + (partSize.Height + (ym * partSize.Height)) - margins.Bottom, + margins.Right, + margins.Bottom); + break; + } + } + + return rect; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public static Rectangle GetDestinationArea(Rectangle area, Margins margins, Alignment alignment) + { + Rectangle rect = new Rectangle(); + + int adj = 1; + margins.Left += margins.Left > 0 ? adj : 0; + margins.Top += margins.Top > 0 ? adj : 0; + margins.Right += margins.Right > 0 ? adj : 0; + margins.Bottom += margins.Bottom > 0 ? adj : 0; + + margins = new Margins(margins.Left, margins.Top, margins.Right, margins.Bottom); + + switch (alignment) + { + case Alignment.TopLeft: + { + rect = new Rectangle(area.Left + 0, + area.Top + 0, + margins.Left, + margins.Top); + break; + + } + case Alignment.TopCenter: + { + rect = new Rectangle(area.Left + margins.Left, + area.Top + 0, + area.Width - margins.Left - margins.Right, + margins.Top); + break; + + } + case Alignment.TopRight: + { + rect = new Rectangle(area.Left + area.Width - margins.Right, + area.Top + 0, + margins.Right, + margins.Top); + break; + + } + case Alignment.MiddleLeft: + { + rect = new Rectangle(area.Left + 0, + area.Top + margins.Top, + margins.Left, + area.Height - margins.Top - margins.Bottom); + break; + } + case Alignment.MiddleCenter: + { + rect = new Rectangle(area.Left + margins.Left, + area.Top + margins.Top, + area.Width - margins.Left - margins.Right, + area.Height - margins.Top - margins.Bottom); + break; + } + case Alignment.MiddleRight: + { + rect = new Rectangle(area.Left + area.Width - margins.Right, + area.Top + margins.Top, + margins.Right, + area.Height - margins.Top - margins.Bottom); + break; + } + case Alignment.BottomLeft: + { + rect = new Rectangle(area.Left + 0, + area.Top + area.Height - margins.Bottom, + margins.Left, + margins.Bottom); + break; + } + case Alignment.BottomCenter: + { + rect = new Rectangle(area.Left + margins.Left, + area.Top + area.Height - margins.Bottom, + area.Width - margins.Left - margins.Right, + margins.Bottom); + break; + } + case Alignment.BottomRight: + { + rect = new Rectangle(area.Left + area.Width - margins.Right, + area.Top + area.Height - margins.Bottom, + margins.Right, + margins.Bottom); + break; + } + } + + return rect; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public void DrawGlyph(Glyph glyph, Rectangle rect) + { + Size imageSize = new Size(glyph.Image.Width, glyph.Image.Height); + + if (!glyph.SourceRect.IsEmpty) + { + imageSize = new Size(glyph.SourceRect.Width, glyph.SourceRect.Height); + } + + if (glyph.SizeMode == SizeMode.Centered) + { + rect = new Rectangle((rect.X + (rect.Width - imageSize.Width) / 2) + glyph.Offset.X, + (rect.Y + (rect.Height - imageSize.Height) / 2) + glyph.Offset.Y, + imageSize.Width, + imageSize.Height); + } + else if (glyph.SizeMode == SizeMode.Normal) + { + rect = new Rectangle(rect.X + glyph.Offset.X, rect.Y + glyph.Offset.Y, imageSize.Width, imageSize.Height); + } + else if (glyph.SizeMode == SizeMode.Auto) + { + rect = new Rectangle(rect.X + glyph.Offset.X, rect.Y + glyph.Offset.Y, imageSize.Width, imageSize.Height); + } + + if (glyph.SourceRect.IsEmpty) + { + Draw(glyph.Image, rect, glyph.Color); + } + else + { + Draw(glyph.Image, rect, glyph.SourceRect, glyph.Color); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void DrawLayer(Control control, SkinLayer layer, Rectangle rect) + { + DrawLayer(control, layer, rect, control.ControlState); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void DrawLayer(Control control, SkinLayer layer, Rectangle rect, ControlState state) + { + Color c = Color.White; + Color oc = Color.White; + int i = 0; + int oi = -1; + SkinLayer l = layer; + + if (state == ControlState.Hovered && (layer.States.Hovered.Index != -1)) + { + c = l.States.Hovered.Color; + i = l.States.Hovered.Index; + + if (l.States.Hovered.Overlay) + { + oc = l.Overlays.Hovered.Color; + oi = l.Overlays.Hovered.Index; + } + } + else if (state == ControlState.Focused || (control.Focused && state == ControlState.Hovered && layer.States.Hovered.Index == -1)) + { + c = l.States.Focused.Color; + i = l.States.Focused.Index; + + if (l.States.Focused.Overlay) + { + oc = l.Overlays.Focused.Color; + oi = l.Overlays.Focused.Index; + } + } + else if (state == ControlState.Pressed) + { + c = l.States.Pressed.Color; + i = l.States.Pressed.Index; + + if (l.States.Pressed.Overlay) + { + oc = l.Overlays.Pressed.Color; + oi = l.Overlays.Pressed.Index; + } + } + else if (state == ControlState.Disabled) + { + c = l.States.Disabled.Color; + i = l.States.Disabled.Index; + + if (l.States.Disabled.Overlay) + { + oc = l.Overlays.Disabled.Color; + oi = l.Overlays.Disabled.Index; + } + } + else + { + c = l.States.Enabled.Color; + i = l.States.Enabled.Index; + + if (l.States.Enabled.Overlay) + { + oc = l.Overlays.Enabled.Color; + oi = l.Overlays.Enabled.Index; + } + } + + if (control.Color != Control.UndefinedColor) c = control.Color * (control.Color.A / 255f); + DrawLayer(l, rect, c, i); + + if (oi != -1) + { + DrawLayer(l, rect, oc, oi); + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } +} \ No newline at end of file diff --git a/Neoforce/ScrollBar.cs b/Neoforce/ScrollBar.cs new file mode 100644 index 0000000..922757a --- /dev/null +++ b/Neoforce/ScrollBar.cs @@ -0,0 +1,493 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: ScrollBar.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public class ScrollBar: Control + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private int range = 100; + private int value = 0; + private int pageSize = 50; + private int stepSize = 1; + private Orientation orientation = Orientation.Vertical; + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private Button btnMinus = null; + private Button btnPlus = null; + private Button btnSlider = null; + + private string strButton = "ScrollBar.ButtonVert"; + private string strRail = "ScrollBar.RailVert"; + private string strSlider = "ScrollBar.SliderVert"; + private string strGlyph = "ScrollBar.GlyphVert"; + private string strMinus = "ScrollBar.ArrowUp"; + private string strPlus = "ScrollBar.ArrowDown"; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int Value + { + get { return this.value; } + set + { + if (this.value != value) + { + this.value = value; + if (this.value < 0) this.value = 0; + if (this.value > range - pageSize) this.value = range - pageSize; + Invalidate(); + if (!Suspended) OnValueChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int Range + { + get { return range; } + set + { + if (range != value) + { + range = value; + if (pageSize > range) pageSize = range; + RecalcParams(); + if (!Suspended) OnRangeChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int PageSize + { + get { return pageSize; } + set + { + if (pageSize != value) + { + pageSize = value; + if (pageSize > range) pageSize = range; + RecalcParams(); + if (!Suspended) OnPageSizeChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int StepSize + { + get { return stepSize; } + set + { + if (stepSize != value) + { + stepSize = value; + if (!Suspended) OnStepSizeChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + public event EventHandler ValueChanged; + public event EventHandler RangeChanged; + public event EventHandler StepSizeChanged; + public event EventHandler PageSizeChanged; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public ScrollBar(Manager manager, Orientation orientation): base(manager) + { + this.orientation = orientation; + CanFocus = false; + + + if (orientation == Orientation.Horizontal) + { + strButton = "ScrollBar.ButtonHorz"; + strRail = "ScrollBar.RailHorz"; + strSlider = "ScrollBar.SliderHorz"; + strGlyph = "ScrollBar.GlyphHorz"; + strMinus = "ScrollBar.ArrowLeft"; + strPlus = "ScrollBar.ArrowRight"; + + MinimumHeight = 16; + MinimumWidth = 46; + Width = 64; + Height = 16; + } + else + { + strButton = "ScrollBar.ButtonVert"; + strRail = "ScrollBar.RailVert"; + strSlider = "ScrollBar.SliderVert"; + strGlyph = "ScrollBar.GlyphVert"; + strMinus = "ScrollBar.ArrowUp"; + strPlus = "ScrollBar.ArrowDown"; + + MinimumHeight = 46; + MinimumWidth = 16; + Width = 16; + Height = 64; + } + + btnMinus = new Button(Manager); + btnMinus.Init(); + btnMinus.Text = ""; + btnMinus.MousePress += new MouseEventHandler(ArrowPress); + btnMinus.CanFocus = false; + + btnSlider = new Button(Manager); + btnSlider.Init(); + btnSlider.Text = ""; + btnSlider.CanFocus = false; + btnSlider.MinimumHeight = 16; + btnSlider.MinimumWidth = 16; + + btnPlus = new Button(Manager); + btnPlus.Init(); + btnPlus.Text = ""; + btnPlus.MousePress += new MouseEventHandler(ArrowPress); + btnPlus.CanFocus = false; + + btnSlider.Move += new MoveEventHandler(btnSlider_Move); + + Add(btnMinus); + Add(btnSlider); + Add(btnPlus); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + + public void ScrollUp() + { + Value -= stepSize; + if (Value < 0) Value = 0; + } + + public void ScrollDown() + { + Value += stepSize; + if (Value > range - pageSize) Value = range - pageSize - 1; + } + + public void ScrollUp(bool alot) + { + if (alot) + { + Value -= pageSize; + if (Value < 0) Value = 0; + } + else + ScrollUp(); + } + + public void ScrollDown(bool alot) + { + if (alot) + { + Value += pageSize; + if (Value > range - pageSize) Value = range - pageSize - 1; + } + else + ScrollDown(); + } + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + + SkinControl sc = new SkinControl(btnPlus.Skin); + sc.Layers["Control"] = new SkinLayer(Skin.Layers[strButton]); + sc.Layers[strButton].Name = "Control"; + btnPlus.Skin = btnMinus.Skin = sc; + + SkinControl ss = new SkinControl(btnSlider.Skin); + ss.Layers["Control"] = new SkinLayer(Skin.Layers[strSlider]); + ss.Layers[strSlider].Name = "Control"; + btnSlider.Skin = ss; + + btnMinus.Glyph = new Glyph(Skin.Layers[strMinus].Image.Resource); + btnMinus.Glyph.SizeMode = SizeMode.Centered; + btnMinus.Glyph.Color = Manager.Skin.Controls["Button"].Layers["Control"].Text.Colors.Enabled; + + btnPlus.Glyph = new Glyph(Skin.Layers[strPlus].Image.Resource); + btnPlus.Glyph.SizeMode = SizeMode.Centered; + btnPlus.Glyph.Color = Manager.Skin.Controls["Button"].Layers["Control"].Text.Colors.Enabled; + + btnSlider.Glyph = new Glyph(Skin.Layers[strGlyph].Image.Resource); + btnSlider.Glyph.SizeMode = SizeMode.Centered; + + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + Skin = new SkinControl(Manager.Skin.Controls["ScrollBar"]); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + RecalcParams(); + + SkinLayer bg = Skin.Layers[strRail]; + renderer.DrawLayer(bg, rect, Color.White, bg.States.Enabled.Index); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void ArrowPress(object sender, MouseEventArgs e) + { + if (e.Button == MouseButton.Left) + { + if (sender == btnMinus) + { + ScrollUp(); + } + else if (sender == btnPlus) + { + ScrollDown(); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnResize(ResizeEventArgs e) + { + base.OnResize(e); + RecalcParams(); + if (Value + PageSize > Range) Value = Range - PageSize; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void RecalcParams() + { + if (btnMinus != null && btnPlus != null && btnSlider != null) + { + if (orientation == Orientation.Horizontal) + { + btnMinus.Width = Height; + btnMinus.Height = Height; + + btnPlus.Width = Height; + btnPlus.Height = Height; + btnPlus.Left = Width - Height; + btnPlus.Top = 0; + + btnSlider.Movable = true; + int size = btnMinus.Width + Skin.Layers[strSlider].OffsetX; + + btnSlider.MinimumWidth = Height; + int w = (Width - 2 * size); + btnSlider.Width = (int)Math.Ceiling((pageSize * w) / (float)range); + btnSlider.Height = Height; + + + float px = (float)(Range - PageSize) / (float)(w - btnSlider.Width); + int pos = (int)(Math.Ceiling(Value / (float)px)); + btnSlider.SetPosition(size + pos, 0); + if (btnSlider.Left < size) btnSlider.SetPosition(size, 0); + if (btnSlider.Left + btnSlider.Width + size > Width) btnSlider.SetPosition(Width - size - btnSlider.Width, 0); + } + else + { + btnMinus.Width = Width; + btnMinus.Height = Width; + + btnPlus.Width = Width; + btnPlus.Height = Width; + btnPlus.Top = Height - Width; + + btnSlider.Movable = true; + int size = btnMinus.Height + Skin.Layers[strSlider].OffsetY; + + btnSlider.MinimumHeight = Width; + int h = (Height - 2 * size); + btnSlider.Height = (int)Math.Ceiling((pageSize * h) / (float)range); + btnSlider.Width = Width; + + float px = (float)(Range - PageSize) / (float)(h - btnSlider.Height); + int pos = (int)(Math.Ceiling(Value / (float)px)); + btnSlider.SetPosition(0, size + pos); + if (btnSlider.Top < size) btnSlider.SetPosition(0, size); + if (btnSlider.Top + btnSlider.Height + size > Height) btnSlider.SetPosition(0, Height - size - btnSlider.Height); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void btnSlider_Move(object sender, MoveEventArgs e) + { + if (orientation == Orientation.Horizontal) + { + int size = btnMinus.Width + Skin.Layers[strSlider].OffsetX; + btnSlider.SetPosition(e.Left, 0); + if (btnSlider.Left < size) btnSlider.SetPosition(size, 0); + if (btnSlider.Left + btnSlider.Width + size > Width) btnSlider.SetPosition(Width - size - btnSlider.Width, 0); + } + else + { + int size = btnMinus.Height + Skin.Layers[strSlider].OffsetY; + btnSlider.SetPosition(0, e.Top); + if (btnSlider.Top < size) btnSlider.SetPosition(0, size); + if (btnSlider.Top + btnSlider.Height + size > Height) btnSlider.SetPosition(0, Height - size - btnSlider.Height); + } + + if (orientation == Orientation.Horizontal) + { + int size = btnMinus.Width + Skin.Layers[strSlider].OffsetX; + int w = (Width - 2 * size) - btnSlider.Width; + float px = (float)(Range - PageSize) / (float)w; + Value = (int)(Math.Ceiling((btnSlider.Left - size) * px)); + } + else + { + int size = btnMinus.Height + Skin.Layers[strSlider].OffsetY; + int h = (Height - 2 * size) - btnSlider.Height; + float px = (float)(Range - PageSize) / (float)h; + Value = (int)(Math.Ceiling((btnSlider.Top - size) * px)); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnMouseUp(MouseEventArgs e) + { + btnSlider.Passive = false; + base.OnMouseUp(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnMouseDown(MouseEventArgs e) + { + base.OnMouseDown(e); + + btnSlider.Passive = true; + + if (e.Button == MouseButton.Left) + { + if (orientation == Orientation.Horizontal) + { + int pos = e.Position.X; + + if (pos < btnSlider.Left) + { + ScrollUp(true); + } + else if (pos >= btnSlider.Left + btnSlider.Width) + { + ScrollDown(true); + } + } + else + { + int pos = e.Position.Y; + + if (pos < btnSlider.Top) + { + ScrollUp(true); + } + else if (pos >= btnSlider.Top + btnSlider.Height) + { + ScrollDown(true); + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnValueChanged(EventArgs e) + { + if (ValueChanged != null) ValueChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnRangeChanged(EventArgs e) + { + if (RangeChanged != null) RangeChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnPageSizeChanged(EventArgs e) + { + if (PageSizeChanged != null) PageSizeChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnStepSizeChanged(EventArgs e) + { + if (StepSizeChanged != null) StepSizeChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/Sidebar.cs b/Neoforce/Sidebar.cs new file mode 100644 index 0000000..c8fcae6 --- /dev/null +++ b/Neoforce/Sidebar.cs @@ -0,0 +1,89 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: SideBar.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + + public class SideBar: Panel + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public SideBar(Manager manager): base(manager) + { + // CanFocus = true; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + Skin = new SkinControl(Manager.Skin.Controls["SideBar"]); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + base.DrawControl(renderer, rect, gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/SidebarPanel.cs b/Neoforce/SidebarPanel.cs new file mode 100644 index 0000000..44ed8c9 --- /dev/null +++ b/Neoforce/SidebarPanel.cs @@ -0,0 +1,77 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: SideBarPanel.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +using Microsoft.Xna.Framework; +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework.Graphics; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public class SideBarPanel: Container + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public SideBarPanel(Manager manager): base(manager) + { + CanFocus = false; + Passive = true; + Width = 64; + Height = 64; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/Skin.cs b/Neoforce/Skin.cs new file mode 100644 index 0000000..92ec378 --- /dev/null +++ b/Neoforce/Skin.cs @@ -0,0 +1,1259 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: Skin.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using System; +using System.Collections.Generic; +using System.IO; +using System.Xml; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + #region //// Structs /////////// + + //////////////////////////////////////////////////////////////////////////// + public struct SkinStates + { + public T Enabled; + public T Hovered; + public T Pressed; + public T Focused; + public T Disabled; + + public SkinStates(T enabled, T hovered, T pressed, T focused, T disabled) + { + Enabled = enabled; + Hovered = hovered; + Pressed = pressed; + Focused = focused; + Disabled = disabled; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public struct LayerStates + { + public int Index; + public Color Color; + public bool Overlay; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public struct LayerOverlays + { + public int Index; + public Color Color; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public struct SkinInfo + { + public string Name; + public string Description; + public string Author; + public string Version; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Classes /////////// + + //////////////////////////////////////////////////////////////////////////// + public class SkinList : List + { + #region //// Indexers ////////// + + //////////////////////////////////////////////////////////////////////////// + public T this[string index] + { + get + { + for (int i = 0; i < this.Count; i++) + { + SkinBase s = (SkinBase)(object)this[i]; + if (s.Name.ToLower() == index.ToLower()) + { + return this[i]; + } + } + return default(T); + } + + set + { + for (int i = 0; i < this.Count; i++) + { + SkinBase s = (SkinBase)(object)this[i]; + if (s.Name.ToLower() == index.ToLower()) + { + this[i] = value; + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + + //////////////////////////////////////////////////////////////////////////// + public SkinList() + : base() + { + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public SkinList(SkinList source) + : base() + { + for (int i = 0; i < source.Count; i++) + { + Type[] t = new Type[1]; + t[0] = typeof(T); + + object[] p = new object[1]; + p[0] = source[i]; + + this.Add((T)t[0].GetConstructor(t).Invoke(p)); + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class SkinBase + { + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + public string Name; + public bool Archive; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public SkinBase() + : base() + { + Archive = false; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public SkinBase(SkinBase source) + : base() + { + if (source != null) + { + this.Name = source.Name; + this.Archive = source.Archive; + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class SkinLayer : SkinBase + { + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + public SkinImage Image = new SkinImage(); + public int Width; + public int Height; + public int OffsetX; + public int OffsetY; + public Alignment Alignment; + public Margins SizingMargins; + public Margins ContentMargins; + public SkinStates States; + public SkinStates Overlays; + public SkinText Text = new SkinText(); + public SkinList Attributes = new SkinList(); + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public SkinLayer() + : base() + { + States.Enabled.Color = Color.White; + States.Pressed.Color = Color.White; + States.Focused.Color = Color.White; + States.Hovered.Color = Color.White; + States.Disabled.Color = Color.White; + + Overlays.Enabled.Color = Color.White; + Overlays.Pressed.Color = Color.White; + Overlays.Focused.Color = Color.White; + Overlays.Hovered.Color = Color.White; + Overlays.Disabled.Color = Color.White; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public SkinLayer(SkinLayer source) + : base(source) + { + if (source != null) + { + this.Image = new SkinImage(source.Image); + this.Width = source.Width; + this.Height = source.Height; + this.OffsetX = source.OffsetX; + this.OffsetY = source.OffsetY; + this.Alignment = source.Alignment; + this.SizingMargins = source.SizingMargins; + this.ContentMargins = source.ContentMargins; + this.States = source.States; + this.Overlays = source.Overlays; + this.Text = new SkinText(source.Text); + this.Attributes = new SkinList(source.Attributes); + } + else + { + throw new Exception("Parameter for SkinLayer copy constructor cannot be null."); + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class SkinText : SkinBase + { + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + public SkinFont Font; + public int OffsetX; + public int OffsetY; + public Alignment Alignment; + public SkinStates Colors; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public SkinText() + : base() + { + Colors.Enabled = Color.White; + Colors.Pressed = Color.White; + Colors.Focused = Color.White; + Colors.Hovered = Color.White; + Colors.Disabled = Color.White; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public SkinText(SkinText source) + : base(source) + { + if (source != null) + { + this.Font = new SkinFont(source.Font); + this.OffsetX = source.OffsetX; + this.OffsetY = source.OffsetY; + this.Alignment = source.Alignment; + this.Colors = source.Colors; + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class SkinFont : SkinBase + { + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + public SpriteFont Resource = null; + public string Asset = null; + public string Addon = null; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public int Height + { + get + { + if (Resource != null) + { + return (int)Resource.MeasureString("AaYy").Y; + } + return 0; + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public SkinFont() + : base() + { + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public SkinFont(SkinFont source) + : base(source) + { + if (source != null) + { + this.Resource = source.Resource; + this.Asset = source.Asset; + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class SkinImage : SkinBase + { + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + public Texture2D Resource = null; + public string Asset = null; + public string Addon = null; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public SkinImage() + : base() + { + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public SkinImage(SkinImage source) + : base(source) + { + this.Resource = source.Resource; + this.Asset = source.Asset; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class SkinCursor : SkinBase + { + #region //// Fields //////////// + + + public Cursor Resource = null; + + public string Asset = null; + public string Addon = null; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public SkinCursor() + : base() + { + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public SkinCursor(SkinCursor source) + : base(source) + { + this.Resource = source.Resource; + + this.Asset = source.Asset; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class SkinControl : SkinBase + { + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + public string Inherits = null; + public Size DefaultSize; + public int ResizerSize; + public Size MinimumSize; + public Margins OriginMargins; + public Margins ClientMargins; + public SkinList Layers = new SkinList(); + public SkinList Attributes = new SkinList(); + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public SkinControl() + : base() + { + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public SkinControl(SkinControl source) + : base(source) + { + this.Inherits = source.Inherits; + this.DefaultSize = source.DefaultSize; + this.MinimumSize = source.MinimumSize; + this.OriginMargins = source.OriginMargins; + this.ClientMargins = source.ClientMargins; + this.ResizerSize = source.ResizerSize; + this.Layers = new SkinList(source.Layers); + this.Attributes = new SkinList(source.Attributes); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class SkinAttribute : SkinBase + { + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + public string Value; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public SkinAttribute() + : base() + { + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public SkinAttribute(SkinAttribute source) + : base(source) + { + this.Value = source.Value; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class Skin : Component + { + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + SkinXmlDocument doc = null; + private string name = null; + private Version version = null; + private SkinInfo info; + private SkinList controls = null; + private SkinList fonts = null; + private SkinList cursors = null; + private SkinList images = null; + private SkinList attributes = null; + private ArchiveManager content = null; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public virtual string Name { get { return name; } } + public virtual Version Version { get { return version; } } + public virtual SkinInfo Info { get { return info; } } + public virtual SkinList Controls { get { return controls; } } + public virtual SkinList Fonts { get { return fonts; } } + public virtual SkinList Cursors { get { return cursors; } } + public virtual SkinList Images { get { return images; } } + public virtual SkinList Attributes { get { return attributes; } } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public Skin(Manager manager, string name) + : base(manager) + { + this.name = name; + content = new ArchiveManager(Manager.Game.Services, GetArchiveLocation(name + Manager.SkinExtension)); + content.RootDirectory = GetFolder(); + doc = new SkinXmlDocument(); + controls = new SkinList(); + fonts = new SkinList(); + images = new SkinList(); + cursors = new SkinList(); + attributes = new SkinList(); + + LoadSkin(null, content.UseArchive); + + string folder = GetAddonsFolder(); + if (folder == "") + { + content.UseArchive = true; + folder = "Addons\\"; + } + else + { + content.UseArchive = false; + } + + string[] addons = content.GetDirectories(folder); + + if (addons != null && addons.Length > 0) + { + for (int i = 0; i < addons.Length; i++) + { + DirectoryInfo d = new DirectoryInfo(GetAddonsFolder() + addons[i]); + if (!((d.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden) || content.UseArchive) + { + LoadSkin(addons[i].Replace("\\", ""), content.UseArchive); + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Destructors /////// + + //////////////////////////////////////////////////////////////////////////// + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (content != null) + { + content.Unload(); + content.Dispose(); + content = null; + } + } + + base.Dispose(disposing); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + private string GetArchiveLocation(string name) + { + string path = Path.GetFullPath(Manager.SkinDirectory) + Path.GetFileNameWithoutExtension(name) + "\\"; + if (!Directory.Exists(path) || !File.Exists(path + "Skin.xnb")) + { + path = Path.GetFullPath(Manager.SkinDirectory) + name; + return path; + } + + return null; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private string GetFolder() + { + string path = Path.GetFullPath(Manager.SkinDirectory) + name + "\\"; + if (!Directory.Exists(path) || !File.Exists(path + "Skin.xnb")) + { + path = ""; + } + + return path; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private string GetAddonsFolder() + { + string path = Path.GetFullPath(Manager.SkinDirectory) + name + "\\Addons\\"; + if (!Directory.Exists(path)) + { + path = Path.GetFullPath(".\\Content\\Skins\\") + name + "\\Addons\\"; + if (!Directory.Exists(path)) + { + path = Path.GetFullPath(".\\Skins\\") + name + "\\Addons\\"; + } + } + + return path; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private string GetFolder(string type) + { + return GetFolder() + type + "\\"; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private string GetAsset(string type, string asset, string addon) + { + string ret = GetFolder(type) + asset; + if (addon != null && addon != "") + { + ret = GetAddonsFolder() + addon + "\\" + type + "\\" + asset; + } + return ret; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + + for (int i = 0; i < fonts.Count; i++) + { + content.UseArchive = fonts[i].Archive; + string asset = GetAsset("Fonts", fonts[i].Asset, fonts[i].Addon); + asset = content.UseArchive ? asset : Path.GetFullPath(asset); + (fonts[i].Resource) = content.Load(asset); + } + +#if (!XBOX && !XBOX_FAKE) + for (int i = 0; i < cursors.Count; i++) + { + content.UseArchive = cursors[i].Archive; + string asset = GetAsset("Cursors", cursors[i].Asset, cursors[i].Addon); + asset = content.UseArchive ? asset : Path.GetFullPath(asset); + cursors[i].Resource = content.Load(asset); + } +#endif + + for (int i = 0; i < images.Count; i++) + { + content.UseArchive = images[i].Archive; + string asset = GetAsset("Images", images[i].Asset, images[i].Addon); + asset = content.UseArchive ? asset : Path.GetFullPath(asset); + images[i].Resource = content.Load(asset); + } + + for (int i = 0; i < controls.Count; i++) + { + for (int j = 0; j < controls[i].Layers.Count; j++) + { + if (controls[i].Layers[j].Image.Name != null) + { + controls[i].Layers[j].Image = images[controls[i].Layers[j].Image.Name]; + } + else + { + controls[i].Layers[j].Image = images[0]; + } + + if (controls[i].Layers[j].Text.Name != null) + { + controls[i].Layers[j].Text.Font = fonts[controls[i].Layers[j].Text.Name]; + } + else + { + controls[i].Layers[j].Text.Font = fonts[0]; + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private string ReadAttribute(XmlElement element, string attrib, string defval, bool needed) + { + if (element != null && element.HasAttribute(attrib)) + { + return element.Attributes[attrib].Value; + } + else if (needed) + { + throw new Exception("Missing required attribute \"" + attrib + "\" in the skin file."); + } + return defval; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void ReadAttribute(ref string retval, bool inherited, XmlElement element, string attrib, string defval, bool needed) + { + if (element != null && element.HasAttribute(attrib)) + { + retval = element.Attributes[attrib].Value; + } + else if (inherited) + { + } + else if (needed) + { + throw new Exception("Missing required attribute \"" + attrib + "\" in the skin file."); + } + else + { + retval = defval; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private int ReadAttributeInt(XmlElement element, string attrib, int defval, bool needed) + { + return int.Parse(ReadAttribute(element, attrib, defval.ToString(), needed)); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void ReadAttributeInt(ref int retval, bool inherited, XmlElement element, string attrib, int defval, bool needed) + { + string tmp = retval.ToString(); + ReadAttribute(ref tmp, inherited, element, attrib, defval.ToString(), needed); + retval = int.Parse(tmp); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private bool ReadAttributeBool(XmlElement element, string attrib, bool defval, bool needed) + { + return bool.Parse(ReadAttribute(element, attrib, defval.ToString(), needed)); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void ReadAttributeBool(ref bool retval, bool inherited, XmlElement element, string attrib, bool defval, bool needed) + { + string tmp = retval.ToString(); + ReadAttribute(ref tmp, inherited, element, attrib, defval.ToString(), needed); + retval = bool.Parse(tmp); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private byte ReadAttributeByte(XmlElement element, string attrib, byte defval, bool needed) + { + return byte.Parse(ReadAttribute(element, attrib, defval.ToString(), needed)); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void ReadAttributeByte(ref byte retval, bool inherited, XmlElement element, string attrib, byte defval, bool needed) + { + string tmp = retval.ToString(); + ReadAttribute(ref tmp, inherited, element, attrib, defval.ToString(), needed); + retval = byte.Parse(tmp); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private string ColorToString(Color c) + { + return string.Format("{0};{1};{2};{3}", c.R, c.G, c.B, c.A); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void ReadAttributeColor(ref Color retval, bool inherited, XmlElement element, string attrib, Color defval, bool needed) + { + string tmp = ColorToString(retval); + ReadAttribute(ref tmp, inherited, element, attrib, ColorToString(defval), needed); + retval = Utilities.ParseColor(tmp); + } + //////////////////////////////////////////////////////////////////////////// + + + //////////////////////////////////////////////////////////////////////////// + private void LoadSkin(string addon, bool archive) + { + try + { + bool isaddon = addon != null && addon != ""; + string file = GetFolder(); + if (isaddon) + { + file = GetAddonsFolder() + addon + "\\"; + } + file += "Skin"; + + file = archive ? file : Path.GetFullPath(file); + doc = content.Load(file); + + XmlElement e = doc["Skin"]; + if (e != null) + { + string xname = ReadAttribute(e, "Name", null, true); + if (!isaddon) + { + if (name.ToLower() != xname.ToLower()) + { + throw new Exception("Skin name defined in the skin file doesn't match requested skin."); + } + else + { + name = xname; + } + } + else + { + if (addon.ToLower() != xname.ToLower()) + { + throw new Exception("Skin name defined in the skin file doesn't match addon name."); + } + } + + Version xversion = null; + try + { + xversion = new Version(ReadAttribute(e, "Version", "0.0.0.0", false)); + } + catch (Exception x) + { + throw new Exception("Unable to resolve skin file version. " + x.Message); + } + + if (xversion != Manager._SkinVersion) + { + throw new Exception("This version of Neoforce Controls can only read skin files in version of " + Manager._SkinVersion.ToString() + "."); + } + else if (!isaddon) + { + version = xversion; + } + + if (!isaddon) + { + XmlElement ei = e["Info"]; + if (ei != null) + { + if (ei["Name"] != null) info.Name = ei["Name"].InnerText; + if (ei["Description"] != null) info.Description = ei["Description"].InnerText; + if (ei["Author"] != null) info.Author = ei["Author"].InnerText; + if (ei["Version"] != null) info.Version = ei["Version"].InnerText; + } + } + + LoadImages(addon, archive); + LoadFonts(addon, archive); + LoadCursors(addon, archive); + LoadSkinAttributes(); + LoadControls(); + } + } + catch (Exception x) + { + throw new Exception("Unable to load skin file. " + x.Message); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void LoadSkinAttributes() + { + if (doc["Skin"]["Attributes"] == null) return; + + XmlNodeList l = doc["Skin"]["Attributes"].GetElementsByTagName("Attribute"); + + if (l != null && l.Count > 0) + { + foreach (XmlElement e in l) + { + SkinAttribute sa = new SkinAttribute(); + sa.Name = ReadAttribute(e, "Name", null, true); + sa.Value = ReadAttribute(e, "Value", null, true); + attributes.Add(sa); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void LoadControls() + { + if (doc["Skin"]["Controls"] == null) return; + + + XmlNodeList l = doc["Skin"]["Controls"].GetElementsByTagName("Control"); + + if (l != null && l.Count > 0) + { + foreach (XmlElement e in l) + { + SkinControl sc = null; + string parent = ReadAttribute(e, "Inherits", null, false); + bool inh = false; + + if (parent != null) + { + sc = new SkinControl(controls[parent]); + sc.Inherits = parent; + inh = true; + } + else + { + sc = new SkinControl(); + } + + ReadAttribute(ref sc.Name, inh, e, "Name", null, true); + + ReadAttributeInt(ref sc.DefaultSize.Width, inh, e["DefaultSize"], "Width", 0, false); + ReadAttributeInt(ref sc.DefaultSize.Height, inh, e["DefaultSize"], "Height", 0, false); + + ReadAttributeInt(ref sc.MinimumSize.Width, inh, e["MinimumSize"], "Width", 0, false); + ReadAttributeInt(ref sc.MinimumSize.Height, inh, e["MinimumSize"], "Height", 0, false); + + ReadAttributeInt(ref sc.OriginMargins.Left, inh, e["OriginMargins"], "Left", 0, false); + ReadAttributeInt(ref sc.OriginMargins.Top, inh, e["OriginMargins"], "Top", 0, false); + ReadAttributeInt(ref sc.OriginMargins.Right, inh, e["OriginMargins"], "Right", 0, false); + ReadAttributeInt(ref sc.OriginMargins.Bottom, inh, e["OriginMargins"], "Bottom", 0, false); + + ReadAttributeInt(ref sc.ClientMargins.Left, inh, e["ClientMargins"], "Left", 0, false); + ReadAttributeInt(ref sc.ClientMargins.Top, inh, e["ClientMargins"], "Top", 0, false); + ReadAttributeInt(ref sc.ClientMargins.Right, inh, e["ClientMargins"], "Right", 0, false); + ReadAttributeInt(ref sc.ClientMargins.Bottom, inh, e["ClientMargins"], "Bottom", 0, false); + + ReadAttributeInt(ref sc.ResizerSize, inh, e["ResizerSize"], "Value", 0, false); + + if (e["Layers"] != null) + { + XmlNodeList l2 = e["Layers"].GetElementsByTagName("Layer"); + if (l2 != null && l2.Count > 0) + { + LoadLayers(sc, l2); + } + } + if (e["Attributes"] != null) + { + XmlNodeList l3 = e["Attributes"].GetElementsByTagName("Attribute"); + if (l3 != null && l3.Count > 0) + { + LoadControlAttributes(sc, l3); + } + } + controls.Add(sc); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void LoadFonts(string addon, bool archive) + { + if (doc["Skin"]["Fonts"] == null) return; + + XmlNodeList l = doc["Skin"]["Fonts"].GetElementsByTagName("Font"); + if (l != null && l.Count > 0) + { + foreach (XmlElement e in l) + { + SkinFont sf = new SkinFont(); + sf.Name = ReadAttribute(e, "Name", null, true); + sf.Archive = archive; + sf.Asset = ReadAttribute(e, "Asset", null, true); + sf.Addon = addon; + fonts.Add(sf); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void LoadCursors(string addon, bool archive) + { + if (doc["Skin"]["Cursors"] == null) return; + + XmlNodeList l = doc["Skin"]["Cursors"].GetElementsByTagName("Cursor"); + if (l != null && l.Count > 0) + { + foreach (XmlElement e in l) + { + SkinCursor sc = new SkinCursor(); + sc.Name = ReadAttribute(e, "Name", null, true); + sc.Archive = archive; + sc.Asset = ReadAttribute(e, "Asset", null, true); + sc.Addon = addon; + cursors.Add(sc); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void LoadImages(string addon, bool archive) + { + if (doc["Skin"]["Images"] == null) return; + XmlNodeList l = doc["Skin"]["Images"].GetElementsByTagName("Image"); + if (l != null && l.Count > 0) + { + foreach (XmlElement e in l) + { + SkinImage si = new SkinImage(); + si.Name = ReadAttribute(e, "Name", null, true); + si.Archive = archive; + si.Asset = ReadAttribute(e, "Asset", null, true); + si.Addon = addon; + images.Add(si); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void LoadLayers(SkinControl sc, XmlNodeList l) + { + foreach (XmlElement e in l) + { + string name = ReadAttribute(e, "Name", null, true); + bool over = ReadAttributeBool(e, "Override", false, false); + SkinLayer sl = sc.Layers[name]; + bool inh = true; + + if (sl == null) + { + sl = new SkinLayer(); + inh = false; + } + + if (inh && over) + { + sl = new SkinLayer(); + sc.Layers[name] = sl; + } + + ReadAttribute(ref sl.Name, inh, e, "Name", null, true); + ReadAttribute(ref sl.Image.Name, inh, e, "Image", "Control", false); + ReadAttributeInt(ref sl.Width, inh, e, "Width", 0, false); + ReadAttributeInt(ref sl.Height, inh, e, "Height", 0, false); + + string tmp = sl.Alignment.ToString(); + ReadAttribute(ref tmp, inh, e, "Alignment", "MiddleCenter", false); + sl.Alignment = (Alignment)Enum.Parse(typeof(Alignment), tmp, true); + + ReadAttributeInt(ref sl.OffsetX, inh, e, "OffsetX", 0, false); + ReadAttributeInt(ref sl.OffsetY, inh, e, "OffsetY", 0, false); + + ReadAttributeInt(ref sl.SizingMargins.Left, inh, e["SizingMargins"], "Left", 0, false); + ReadAttributeInt(ref sl.SizingMargins.Top, inh, e["SizingMargins"], "Top", 0, false); + ReadAttributeInt(ref sl.SizingMargins.Right, inh, e["SizingMargins"], "Right", 0, false); + ReadAttributeInt(ref sl.SizingMargins.Bottom, inh, e["SizingMargins"], "Bottom", 0, false); + + ReadAttributeInt(ref sl.ContentMargins.Left, inh, e["ContentMargins"], "Left", 0, false); + ReadAttributeInt(ref sl.ContentMargins.Top, inh, e["ContentMargins"], "Top", 0, false); + ReadAttributeInt(ref sl.ContentMargins.Right, inh, e["ContentMargins"], "Right", 0, false); + ReadAttributeInt(ref sl.ContentMargins.Bottom, inh, e["ContentMargins"], "Bottom", 0, false); + + if (e["States"] != null) + { + ReadAttributeInt(ref sl.States.Enabled.Index, inh, e["States"]["Enabled"], "Index", 0, false); + int di = sl.States.Enabled.Index; + ReadAttributeInt(ref sl.States.Hovered.Index, inh, e["States"]["Hovered"], "Index", di, false); + ReadAttributeInt(ref sl.States.Pressed.Index, inh, e["States"]["Pressed"], "Index", di, false); + ReadAttributeInt(ref sl.States.Focused.Index, inh, e["States"]["Focused"], "Index", di, false); + ReadAttributeInt(ref sl.States.Disabled.Index, inh, e["States"]["Disabled"], "Index", di, false); + + ReadAttributeColor(ref sl.States.Enabled.Color, inh, e["States"]["Enabled"], "Color", Color.White, false); + Color dc = sl.States.Enabled.Color; + ReadAttributeColor(ref sl.States.Hovered.Color, inh, e["States"]["Hovered"], "Color", dc, false); + ReadAttributeColor(ref sl.States.Pressed.Color, inh, e["States"]["Pressed"], "Color", dc, false); + ReadAttributeColor(ref sl.States.Focused.Color, inh, e["States"]["Focused"], "Color", dc, false); + ReadAttributeColor(ref sl.States.Disabled.Color, inh, e["States"]["Disabled"], "Color", dc, false); + + ReadAttributeBool(ref sl.States.Enabled.Overlay, inh, e["States"]["Enabled"], "Overlay", false, false); + bool dv = sl.States.Enabled.Overlay; + ReadAttributeBool(ref sl.States.Hovered.Overlay, inh, e["States"]["Hovered"], "Overlay", dv, false); + ReadAttributeBool(ref sl.States.Pressed.Overlay, inh, e["States"]["Pressed"], "Overlay", dv, false); + ReadAttributeBool(ref sl.States.Focused.Overlay, inh, e["States"]["Focused"], "Overlay", dv, false); + ReadAttributeBool(ref sl.States.Disabled.Overlay, inh, e["States"]["Disabled"], "Overlay", dv, false); + } + + if (e["Overlays"] != null) + { + ReadAttributeInt(ref sl.Overlays.Enabled.Index, inh, e["Overlays"]["Enabled"], "Index", 0, false); + int di = sl.Overlays.Enabled.Index; + ReadAttributeInt(ref sl.Overlays.Hovered.Index, inh, e["Overlays"]["Hovered"], "Index", di, false); + ReadAttributeInt(ref sl.Overlays.Pressed.Index, inh, e["Overlays"]["Pressed"], "Index", di, false); + ReadAttributeInt(ref sl.Overlays.Focused.Index, inh, e["Overlays"]["Focused"], "Index", di, false); + ReadAttributeInt(ref sl.Overlays.Disabled.Index, inh, e["Overlays"]["Disabled"], "Index", di, false); + + ReadAttributeColor(ref sl.Overlays.Enabled.Color, inh, e["Overlays"]["Enabled"], "Color", Color.White, false); + Color dc = sl.Overlays.Enabled.Color; + ReadAttributeColor(ref sl.Overlays.Hovered.Color, inh, e["Overlays"]["Hovered"], "Color", dc, false); + ReadAttributeColor(ref sl.Overlays.Pressed.Color, inh, e["Overlays"]["Pressed"], "Color", dc, false); + ReadAttributeColor(ref sl.Overlays.Focused.Color, inh, e["Overlays"]["Focused"], "Color", dc, false); + ReadAttributeColor(ref sl.Overlays.Disabled.Color, inh, e["Overlays"]["Disabled"], "Color", dc, false); + } + + if (e["Text"] != null) + { + ReadAttribute(ref sl.Text.Name, inh, e["Text"], "Font", null, true); + ReadAttributeInt(ref sl.Text.OffsetX, inh, e["Text"], "OffsetX", 0, false); + ReadAttributeInt(ref sl.Text.OffsetY, inh, e["Text"], "OffsetY", 0, false); + + tmp = sl.Text.Alignment.ToString(); + ReadAttribute(ref tmp, inh, e["Text"], "Alignment", "MiddleCenter", false); + sl.Text.Alignment = (Alignment)Enum.Parse(typeof(Alignment), tmp, true); + + LoadColors(inh, e["Text"], ref sl.Text.Colors); + } + if (e["Attributes"] != null) + { + XmlNodeList l2 = e["Attributes"].GetElementsByTagName("Attribute"); + if (l2 != null && l2.Count > 0) + { + LoadLayerAttributes(sl, l2); + } + } + if (!inh) sc.Layers.Add(sl); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void LoadColors(bool inherited, XmlElement e, ref SkinStates colors) + { + if (e != null) + { + ReadAttributeColor(ref colors.Enabled, inherited, e["Colors"]["Enabled"], "Color", Color.White, false); + ReadAttributeColor(ref colors.Hovered, inherited, e["Colors"]["Hovered"], "Color", colors.Enabled, false); + ReadAttributeColor(ref colors.Pressed, inherited, e["Colors"]["Pressed"], "Color", colors.Enabled, false); + ReadAttributeColor(ref colors.Focused, inherited, e["Colors"]["Focused"], "Color", colors.Enabled, false); + ReadAttributeColor(ref colors.Disabled, inherited, e["Colors"]["Disabled"], "Color", colors.Enabled, false); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void LoadControlAttributes(SkinControl sc, XmlNodeList l) + { + foreach (XmlElement e in l) + { + string name = ReadAttribute(e, "Name", null, true); + SkinAttribute sa = sc.Attributes[name]; + bool inh = true; + + if (sa == null) + { + sa = new SkinAttribute(); + inh = false; + } + + sa.Name = name; + ReadAttribute(ref sa.Value, inh, e, "Value", null, true); + + if (!inh) sc.Attributes.Add(sa); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void LoadLayerAttributes(SkinLayer sl, XmlNodeList l) + { + foreach (XmlElement e in l) + { + string name = ReadAttribute(e, "Name", null, true); + SkinAttribute sa = sl.Attributes[name]; + bool inh = true; + + if (sa == null) + { + sa = new SkinAttribute(); + inh = false; + } + + sa.Name = name; + ReadAttribute(ref sa.Value, inh, e, "Value", null, true); + + if (!inh) sl.Attributes.Add(sa); + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + +} diff --git a/Neoforce/SpinBox.cs b/Neoforce/SpinBox.cs new file mode 100644 index 0000000..fc358c4 --- /dev/null +++ b/Neoforce/SpinBox.cs @@ -0,0 +1,391 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: SpinBox.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +using System.Collections.Generic; +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Input; +using Microsoft.Xna.Framework.Graphics; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + #region //// Enums ///////////// + + //////////////////////////////////////////////////////////////////////////// + public enum SpinBoxMode + { + Range, + List + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + public class SpinBox: TextBox + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private Button btnUp = null; + private Button btnDown = null; + private SpinBoxMode mode = SpinBoxMode.List; + private List items = new List(); + private float value = 0; + private float minimum = 0; + private float maximum = 100; + private float step = 0.25f; + private int rounding = 2; + private int itemIndex = -1; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public new virtual SpinBoxMode Mode + { + get { return mode; } + set { mode = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public override bool ReadOnly + { + get { return base.ReadOnly; } + set + { + base.ReadOnly = value; + CaretVisible = !value; + if (value) + { + #if (!XBOX && !XBOX_FAKE) + Cursor = Manager.Skin.Cursors["Default"].Resource; + #endif + } + else + { + #if (!XBOX && !XBOX_FAKE) + Cursor = Manager.Skin.Cursors["Text"].Resource; + #endif + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual List Items + { + get { return items; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public float Value + { + get { return this.value; } + set + { + if (this.value != value) + { + this.value = value; + Invalidate(); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public float Minimum + { + get { return minimum; } + set + { + if (minimum != value) + { + minimum = value; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public float Maximum + { + get { return maximum; } + set + { + if (maximum != value) + { + maximum = value; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public float Step + { + get { return step; } + set + { + if (step != value) + { + step = value; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public int ItemIndex + { + get { return itemIndex; } + set + { + if (mode == SpinBoxMode.List) + { + itemIndex = value; + Text = items[itemIndex].ToString(); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public int Rounding + { + get { return rounding; } + set + { + if (rounding != value) + { + rounding = value; + Invalidate(); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public SpinBox(Manager manager, SpinBoxMode mode): base(manager) + { + this.mode = mode; + ReadOnly = true; + + Height = 20; + Width = 64; + + btnUp = new Button(Manager); + btnUp.Init(); + btnUp.CanFocus = false; + btnUp.MousePress += new MouseEventHandler(btn_MousePress); + Add(btnUp, false); + + btnDown = new Button(Manager); + btnDown.Init(); + btnDown.CanFocus = false; + btnDown.MousePress += new MouseEventHandler(btn_MousePress); + Add(btnDown, false); + + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + + SkinControl sc = new SkinControl(btnUp.Skin); + sc.Layers["Control"] = new SkinLayer(Skin.Layers["Button"]); + sc.Layers["Button"].Name = "Control"; + btnUp.Skin = btnDown.Skin = sc; + + btnUp.Glyph = new Glyph(Manager.Skin.Images["Shared.ArrowUp"].Resource); + btnUp.Glyph.SizeMode = SizeMode.Centered; + btnUp.Glyph.Color = Manager.Skin.Controls["Button"].Layers["Control"].Text.Colors.Enabled; + + btnDown.Glyph = new Glyph(Manager.Skin.Images["Shared.ArrowDown"].Resource); + btnDown.Glyph.SizeMode = SizeMode.Centered; + btnDown.Glyph.Color = Manager.Skin.Controls["Button"].Layers["Control"].Text.Colors.Enabled; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + Skin = new SkinControl(Manager.Skin.Controls["SpinBox"]); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + base.DrawControl(renderer, rect, gameTime); + + if (ReadOnly && Focused) + { + SkinLayer lr = Skin.Layers[0]; + Rectangle rc = new Rectangle(rect.Left + lr.ContentMargins.Left, + rect.Top + lr.ContentMargins.Top, + Width - lr.ContentMargins.Horizontal - btnDown.Width - btnUp.Width, + Height - lr.ContentMargins.Vertical); + renderer.Draw(Manager.Skin.Images["ListBox.Selection"].Resource, rc, Color.FromNonPremultiplied(255, 255, 255, 128)); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnResize(ResizeEventArgs e) + { + base.OnResize(e); + + if (btnUp != null) + { + btnUp.Width = 16; + btnUp.Height = Height - Skin.Layers["Control"].ContentMargins.Vertical; + btnUp.Top = Skin.Layers["Control"].ContentMargins.Top; + btnUp.Left = Width - 16 - 2 - 16 - 1; + } + if (btnDown != null) + { + btnDown.Width = 16; + btnDown.Height = Height - Skin.Layers["Control"].ContentMargins.Vertical; + btnDown.Top = Skin.Layers["Control"].ContentMargins.Top; ; + btnDown.Left = Width - 16 - 2; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void ShiftIndex(bool direction) + { + if (mode == SpinBoxMode.List) + { + if (items.Count > 0) + { + if (direction) + { + itemIndex += 1; + } + else + { + itemIndex -= 1; + } + + if (itemIndex < 0) itemIndex = 0; + if (itemIndex > items.Count - 1) itemIndex = itemIndex = items.Count - 1; + + Text = items[itemIndex].ToString(); + } + } + else + { + if (direction) + { + value += step; + } + else + { + value -= step; + } + + if (value < minimum) value = minimum; + if (value > maximum) value = maximum; + + Text = value.ToString("n" + rounding.ToString()); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void btn_MousePress(object sender, MouseEventArgs e) + { + Focused = true; + if (sender == btnUp) ShiftIndex(true); + else if (sender == btnDown) ShiftIndex(false); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnKeyPress(KeyEventArgs e) + { + if (e.Key == Keys.Up) + { + e.Handled = true; + ShiftIndex(true); + } + else if (e.Key == Keys.Down) + { + e.Handled = true; + ShiftIndex(false); + } + + base.OnKeyPress(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnGamePadPress(GamePadEventArgs e) + { + if (e.Button == GamePadActions.Up) + { + e.Handled = true; + ShiftIndex(true); + } + else if (e.Button == GamePadActions.Down) + { + e.Handled = true; + ShiftIndex(false); + } + + base.OnGamePadPress(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnGamePadDown(GamePadEventArgs e) + { + base.OnGamePadDown(e); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/StackPanel.cs b/Neoforce/StackPanel.cs new file mode 100644 index 0000000..1a7e4b6 --- /dev/null +++ b/Neoforce/StackPanel.cs @@ -0,0 +1,160 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: StackPanel.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework; +using System.Collections.Generic; +using Microsoft.Xna.Framework.Graphics; +using System; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public class StackPanel: Container + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private Orientation orientation; + public Orientation Orientation + { + get { return this.orientation; } + set + { + this.orientation = value; + this.CalcLayout(); + } + } + private bool autoRefresh; + + /// + /// Should the stack panel refresh itself, when a control is added + /// + public bool AutoRefresh + { + get { return autoRefresh; } + set { autoRefresh = value; } + } + //////////////////////////////////////////////////////////////////////////// + + private TimeSpan refreshTimer; + private const int refreshTime = 300; //ms + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public StackPanel(Manager manager, Orientation orientation): base(manager) + { + this.orientation = orientation; + this.Color = Color.Transparent; + this.autoRefresh = true; + refreshTimer = new TimeSpan(0, 0, 0, 0, refreshTime); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + private void CalcLayout() + { + int top = Top; + int left = Left; + + foreach (Control c in ClientArea.Controls) + { + Margins m = c.Margins; + + if (orientation == Orientation.Vertical) + { + top += m.Top; + c.Top = top; + top += c.Height; + top += m.Bottom; + c.Left = left; + } + + if (orientation == Orientation.Horizontal) + { + left += m.Left; + c.Left = left; + left += c.Width; + left += m.Right; + c.Top = top; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + base.DrawControl(renderer, rect, gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnResize(ResizeEventArgs e) + { + CalcLayout(); + base.OnResize(e); + } + //////////////////////////////////////////////////////////////////////////// + + protected internal override void Update(GameTime gameTime) + { + base.Update(gameTime); + + if (autoRefresh) + { + refreshTimer = refreshTimer.Subtract(TimeSpan.FromMilliseconds(gameTime.ElapsedGameTime.TotalMilliseconds)); + if (refreshTimer.TotalMilliseconds <= 0.00) + { + Refresh(); + refreshTimer = new TimeSpan(0, 0, 0, 0, refreshTime); + } + } + } + + public override void Add(Control control) + { + base.Add(control); + if (autoRefresh) Refresh(); + } + + public override void Add(Control control, bool client) + { + base.Add(control, client); + if (autoRefresh) Refresh(); + } + + #endregion + + } + +} diff --git a/Neoforce/StatusBar.cs b/Neoforce/StatusBar.cs new file mode 100644 index 0000000..9373c36 --- /dev/null +++ b/Neoforce/StatusBar.cs @@ -0,0 +1,93 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: StatusBar.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + + public class StatusBar: Control + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public StatusBar(Manager manager): base(manager) + { + Left = 0; + Top = 0; + Width = 64; + Height = 24; + CanFocus = false; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + Skin = new SkinControl(Manager.Skin.Controls["StatusBar"]); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + base.DrawControl(renderer, rect, gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/TabControl.cs b/Neoforce/TabControl.cs new file mode 100644 index 0000000..d72b98d --- /dev/null +++ b/Neoforce/TabControl.cs @@ -0,0 +1,390 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: TabControl.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using System; +using System.Collections.Generic; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + //////////////////////////////////////////////////////////////////////////// + public class TabControlGamePadActions: GamePadActions + { + public GamePadButton NextTab = GamePadButton.RightTrigger; + public GamePadButton PrevTab = GamePadButton.LeftTrigger; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class TabPage: Control + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private Rectangle headerRect = Rectangle.Empty; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + protected internal Rectangle HeaderRect + { + get { return headerRect; } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public TabPage(Manager manager): base(manager) + { + Color = Color.Transparent; + Passive = true; + CanFocus = false; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal void CalcRect(Rectangle prev, SpriteFont font, Margins margins, Point offset, bool first) + { + int size = (int)Math.Ceiling(font.MeasureString(Text).X) + margins.Horizontal; + + if (first) offset.X = 0; + + headerRect = new Rectangle(prev.Right + offset.X, prev.Top, size, prev.Height); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public class TabControl: Container + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private List tabPages = new List(); + private int selectedIndex = 0; + private int hoveredIndex = -1; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public TabPage[] TabPages + { + get { return tabPages.ToArray(); } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int SelectedIndex + { + get { return selectedIndex; } + set + { + if (selectedIndex >= 0 && selectedIndex < tabPages.Count && value >= 0 && value < tabPages.Count) + { + TabPages[selectedIndex].Visible = false; + } + if (value >= 0 && value < tabPages.Count) + { + TabPages[value].Visible = true; + ControlsList c = TabPages[value].Controls as ControlsList; + if (c.Count > 0) c[0].Focused = true; + selectedIndex = value; + if (!Suspended) OnPageChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual TabPage SelectedPage + { + get { return tabPages[SelectedIndex]; } + set + { + for (int i = 0; i < tabPages.Count; i++) + { + if (tabPages[i] == value) + { + SelectedIndex = i; + break; + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + public event EventHandler PageChanged; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public TabControl(Manager manager): base(manager) + { + GamePadActions = new TabControlGamePadActions(); + Manager.Input.GamePadDown += new GamePadEventHandler(Input_GamePadDown); + this.CanFocus = false; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + SkinLayer l1 = Skin.Layers["Control"]; + SkinLayer l2 = Skin.Layers["Header"]; + Color col = this.Color != UndefinedColor ? this.Color : Color.White; + + Rectangle r1 = new Rectangle(rect.Left, rect.Top + l1.OffsetY, rect.Width, rect.Height - l1.OffsetY); + if (tabPages.Count <= 0) + { + r1 = rect; + } + + base.DrawControl(renderer, r1, gameTime); + + if (tabPages.Count > 0) + { + + Rectangle prev = new Rectangle(rect.Left, rect.Top + l2.OffsetY, 0, l2.Height); + for (int i = 0; i < tabPages.Count; i++) + { + SpriteFont font = l2.Text.Font.Resource; + Margins margins = l2.ContentMargins; + Point offset = new Point(l2.OffsetX, l2.OffsetY); + if (i > 0) prev = tabPages[i - 1].HeaderRect; + + tabPages[i].CalcRect(prev, font, margins, offset, i==0); + } + + for (int i = tabPages.Count - 1; i >= 0; i--) + { + int li = tabPages[i].Enabled ? l2.States.Enabled.Index : l2.States.Disabled.Index; + Color lc = tabPages[i].Enabled ? l2.Text.Colors.Enabled : l2.Text.Colors.Disabled; + if (i == hoveredIndex) + { + li = l2.States.Hovered.Index; + lc = l2.Text.Colors.Hovered; + } + + + Margins m = l2.ContentMargins; + Rectangle rx = tabPages[i].HeaderRect; + Rectangle sx = new Rectangle(rx.Left + m.Left, rx.Top + m.Top, rx.Width - m.Horizontal, rx.Height - m.Vertical); + if (i != selectedIndex) + { + renderer.DrawLayer(l2, rx, col, li); + renderer.DrawString(l2.Text.Font.Resource, tabPages[i].Text, sx, lc, l2.Text.Alignment); + } + } + + Margins mi = l2.ContentMargins; + Rectangle ri = tabPages[selectedIndex].HeaderRect; + Rectangle si = new Rectangle(ri.Left + mi.Left, ri.Top + mi.Top, ri.Width - mi.Horizontal, ri.Height - mi.Vertical); + renderer.DrawLayer(l2, ri, col, l2.States.Focused.Index); + renderer.DrawString(l2.Text.Font.Resource, tabPages[selectedIndex].Text, si, l2.Text.Colors.Focused, l2.Text.Alignment, l2.Text.OffsetX, l2.Text.OffsetY, false); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual TabPage AddPage(string text) + { + TabPage p = AddPage(); + p.Text = text; + + return p; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual TabPage AddPage() + { + TabPage page = new TabPage(Manager); + page.Init(); + page.Left = 0; + page.Top = 0; + page.Width = ClientWidth; + page.Height = ClientHeight; + page.Anchor = Anchors.All; + page.Text = "Tab " + (tabPages.Count + 1).ToString(); + page.Visible = false; + Add(page, true); + tabPages.Add(page); + tabPages[0].Visible = true; + + return page; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void RemovePage(TabPage page, bool dispose) + { + tabPages.Remove(page); + if (dispose) + { + page.Dispose(); + page = null; + } + SelectedIndex = 0; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void RemovePage(TabPage page) + { + RemovePage(page, true); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnMouseDown(MouseEventArgs e) + { + base.OnMouseDown(e); + + if (tabPages.Count > 1) + { + Point p = new Point(e.State.X - Root.AbsoluteLeft, e.State.Y - Root.AbsoluteTop); + for (int i = 0; i < tabPages.Count; i++) + { + Rectangle r = tabPages[i].HeaderRect; + if (p.X >= r.Left && p.X <= r.Right && p.Y >= r.Top && p.Y <= r.Bottom) + { + SelectedIndex = i; + break; + } + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnMouseMove(MouseEventArgs e) + { + base.OnMouseMove(e); + if (tabPages.Count > 1) + { + int index = hoveredIndex; + Point p = new Point(e.State.X - Root.AbsoluteLeft, e.State.Y - Root.AbsoluteTop); + for (int i = 0; i < tabPages.Count; i++) + { + Rectangle r = tabPages[i].HeaderRect; + if (p.X >= r.Left && p.X <= r.Right && p.Y >= r.Top && p.Y <= r.Bottom && tabPages[i].Enabled) + { + index = i; + break; + } + else + { + index = -1; + } + } + if (index != hoveredIndex) + { + hoveredIndex = index; + Invalidate(); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void Input_GamePadDown(object sender, GamePadEventArgs e) + { + if (this.Contains(Manager.FocusedControl, true)) + { + if (e.Button == (GamePadActions as TabControlGamePadActions).NextTab) + { + e.Handled = true; + SelectedIndex += 1; + } + else if (e.Button == (GamePadActions as TabControlGamePadActions).PrevTab) + { + e.Handled = true; + SelectedIndex -= 1; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnPageChanged(EventArgs e) + { + if (PageChanged != null) PageChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + + #endregion + + } + +} diff --git a/Neoforce/TextBox.cs b/Neoforce/TextBox.cs new file mode 100644 index 0000000..caf6d87 --- /dev/null +++ b/Neoforce/TextBox.cs @@ -0,0 +1,1445 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: TextBox.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +using Microsoft.Xna.Framework; +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +using System; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using Microsoft.Xna.Framework.GamerServices; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + #region //// Enums ///////////// + + //////////////////////////////////////////////////////////////////////////// + public enum TextBoxMode + { + Normal, + Password, + Multiline + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Classes /////////// + + //////////////////////////////////////////////////////////////////////////// + public class TextBox : ClipControl + { + + #region //// Structs /////////// + + //////////////////////////////////////////////////////////////////////////// + private struct Selection + { + private int start; + private int end; + + public int Start + { + get + { + if (start > end && start != -1 && end != -1) return end; + else return start; + } + set + { + start = value; + } + } + + public int End + { + get + { + if (end < start && start != -1 && end != -1) return start; + else return end; + } + set + { + end = value; + } + } + + public bool IsEmpty + { + get { return Start == -1 && End == -1; } + } + + public int Length + { + get { return IsEmpty ? 0 : (End - Start); } + } + + public Selection(int start, int end) + { + this.start = start; + this.end = end; + } + + public void Clear() + { + Start = -1; + End = -1; + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Consts //////////// + + //////////////////////////////////////////////////////////////////////////// + private const string skTextBox = "TextBox"; + private const string lrTextBox = "Control"; + private const string lrCursor = "Cursor"; + + private const string crDefault = "Default"; + private const string crText = "Text"; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private bool showCursor = false; + private double flashTime = 0; + private int posx = 0; + private int posy = 0; + private char passwordChar = ''; + private TextBoxMode mode = TextBoxMode.Normal; + private string shownText = ""; + private bool readOnly = false; + private bool drawBorders = true; + private Selection selection = new Selection(-1, -1); + private bool caretVisible = true; + private ScrollBar horz = null; + private ScrollBar vert = null; + private List lines = new List(); + private int linesDrawn = 0; + private int charsDrawn = 0; + private SpriteFont font = null; + private bool wordWrap = false; + private ScrollBars scrollBars = ScrollBars.Both; + private string Separator = "\n"; + private string text = ""; + private string buffer = ""; + private bool autoSelection = true; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + private int PosX + { + get + { + return posx; + } + set + { + posx = value; + + if (posx < 0) posx = 0; + if (posx > Lines[PosY].Length) posx = Lines[PosY].Length; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private int PosY + { + get + { + return posy; + } + set + { + posy = value; + + if (posy < 0) posy = 0; + if (posy > Lines.Count - 1) posy = Lines.Count - 1; + + PosX = PosX; + } + } + //////////////////////////////////////////////////////////////////////////// + + + //////////////////////////////////////////////////////////////////////////// + private int Pos + { + get + { + return GetPos(PosX, PosY); + } + set + { + PosY = GetPosY(value); + PosX = GetPosX(value); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + //>>>> + + public virtual bool WordWrap + { + get { return wordWrap; } + set + { + wordWrap = value; + if (ClientArea != null) ClientArea.Invalidate(); + SetupBars(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual ScrollBars ScrollBars + { + get { return scrollBars; } + set + { + scrollBars = value; + SetupBars(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual char PasswordChar + { + get { return passwordChar; } + set { passwordChar = value; if (ClientArea != null) ClientArea.Invalidate(); } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual bool CaretVisible + { + get { return caretVisible; } + set { caretVisible = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual TextBoxMode Mode + { + get { return mode; } + set + { + if (value != TextBoxMode.Multiline) + { + Text = Text.Replace(Separator, ""); + } + mode = value; + selection.Clear(); + + if (ClientArea != null) ClientArea.Invalidate(); + SetupBars(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual bool ReadOnly + { + get { return readOnly; } + set { readOnly = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual bool DrawBorders + { + get { return drawBorders; } + set { drawBorders = value; if (ClientArea != null) ClientArea.Invalidate(); } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int CursorPosition + { + get { return Pos; } + set + { + Pos = value; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual string SelectedText + { + get + { + if (selection.IsEmpty) + { + return ""; + } + else + { + return Text.Substring(selection.Start, selection.Length); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int SelectionStart + { + get + { + if (selection.IsEmpty) + { + return Pos; + } + else + { + return selection.Start; + } + } + set + { + Pos = value; + if (Pos < 0) Pos = 0; + if (Pos > Text.Length) Pos = Text.Length; + selection.Start = Pos; + if (selection.End == -1) selection.End = Pos; + ClientArea.Invalidate(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual bool AutoSelection + { + get { return autoSelection; } + set { autoSelection = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int SelectionLength + { + get + { + return selection.Length; + } + set + { + if (value == 0) + { + selection.End = selection.Start; + } + else if (selection.IsEmpty) + { + selection.Start = 0; + selection.End = value; + } + else if (!selection.IsEmpty) + { + selection.End = selection.Start + value; + } + + if (!selection.IsEmpty) + { + if (selection.Start < 0) selection.Start = 0; + if (selection.Start > Text.Length) selection.Start = Text.Length; + if (selection.End < 0) selection.End = 0; + if (selection.End > Text.Length) selection.End = Text.Length; + } + ClientArea.Invalidate(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private List Lines + { + get + { + return lines; + } + set + { + lines = value; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public override string Text + { + get + { + return text; + } + set + { + if (wordWrap) + value = WrapWords(value, ClientWidth); + + if (mode != TextBoxMode.Multiline && value != null) + { + value = value.Replace(Separator, ""); + } + + text = value; + + if (!Suspended) OnTextChanged(new EventArgs()); + + lines = SplitLines(text); + if (ClientArea != null) ClientArea.Invalidate(); + + SetupBars(); + ProcessScrolling(); + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public TextBox(Manager manager) + : base(manager) + { + CheckLayer(Skin, lrCursor); + + SetDefaultSize(128, 20); + Lines.Add(""); + + ClientArea.Draw += new DrawEventHandler(ClientArea_Draw); + + vert = new ScrollBar(manager, Orientation.Vertical); + horz = new ScrollBar(manager, Orientation.Horizontal); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + + vert.Init(); + vert.Range = 1; + vert.PageSize = 1; + vert.Value = 0; + vert.Anchor = Anchors.Top | Anchors.Right | Anchors.Bottom; + vert.ValueChanged += new EventHandler(sb_ValueChanged); + + horz.Init(); + horz.Range = ClientArea.Width; + horz.PageSize = ClientArea.Width; + horz.Value = 0; + horz.Anchor = Anchors.Right | Anchors.Left | Anchors.Bottom; + horz.ValueChanged += new EventHandler(sb_ValueChanged); + + horz.Visible = false; + vert.Visible = false; + + Add(vert, false); + Add(horz, false); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + Skin = new SkinControl(Manager.Skin.Controls[skTextBox]); + + #if (!XBOX && !XBOX_FAKE) + Cursor = Manager.Skin.Cursors[crText].Resource; + #endif + + font = (Skin.Layers[lrTextBox].Text != null) ? Skin.Layers[lrTextBox].Text.Font.Resource : null; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + if (drawBorders) + { + base.DrawControl(renderer, rect, gameTime); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private int GetFitChars(string text, int width) + { + int ret = text.Length; + int size = 0; + + for (int i = 0; i < text.Length; i++) + { + size = (int)font.MeasureString(text.Substring(0, i)).X; + if (size > width) + { + ret = i; + break; + } + } + + return ret; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void DeterminePages() + { + if (ClientArea != null) + { + int sizey = (int)font.LineSpacing; + linesDrawn = (int)(ClientArea.Height / sizey); + if (linesDrawn > Lines.Count) linesDrawn = Lines.Count; + + charsDrawn = ClientArea.Width - 1; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private string GetMaxLine() + { + int max = 0; + int x = 0; + + for (int i = 0; i < Lines.Count; i++) + { + if (Lines[i].Length > max) + { + max = Lines[i].Length; + x = i; + } + } + return Lines.Count > 0 ? Lines[x] : ""; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void ClientArea_Draw(object sender, DrawEventArgs e) + { + SkinLayer layer = Skin.Layers[lrTextBox]; + Color col = Skin.Layers[lrTextBox].Text.Colors.Enabled; + SkinLayer cursor = Skin.Layers[lrCursor]; + Alignment al = mode == TextBoxMode.Multiline ? Alignment.TopLeft : Alignment.MiddleLeft; + Renderer renderer = e.Renderer; + Rectangle r = e.Rectangle; + bool drawsel = !selection.IsEmpty; + string tmpText = ""; + + font = (Skin.Layers[lrTextBox].Text != null) ? Skin.Layers[lrTextBox].Text.Font.Resource : null; + + if (Text != null && font != null) + { + DeterminePages(); + + if (mode == TextBoxMode.Multiline) + { + shownText = Text; + tmpText = Lines[PosY]; + } + else if (mode == TextBoxMode.Password) + { + shownText = ""; + for (int i = 0; i < Text.Length; i++) + { + shownText = shownText + passwordChar; + } + tmpText = shownText; + } + else + { + shownText = Text; + tmpText = Lines[PosY]; + } + + if (TextColor != UndefinedColor && ControlState != ControlState.Disabled) + { + col = TextColor; + } + + if (mode != TextBoxMode.Multiline) + { + linesDrawn = 0; + vert.Value = 0; + } + + if (drawsel) + { + DrawSelection(e.Renderer, r); +/* + renderer.End(); + renderer.SpriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.None); + renderer.SpriteBatch.GraphicsDevice.RenderState.SeparateAlphaBlendEnabled = true; + renderer.SpriteBatch.GraphicsDevice.RenderState.SourceBlend = Blend.DestinationColor; + renderer.SpriteBatch.GraphicsDevice.RenderState.DestinationBlend = Blend.SourceColor; + renderer.SpriteBatch.GraphicsDevice.RenderState.BlendFunction = BlendFunction.Subtract; + //renderer.SpriteBatch.GraphicsDevice.RenderState.AlphaFunction = CompareFunction.Equal; + //renderer.SpriteBatch.GraphicsDevice.RenderState.AlphaSourceBlend = Blend.One; + //renderer.SpriteBatch.GraphicsDevice.RenderState.AlphaDestinationBlend = Blend.DestinationAlpha; + */ + } + + int sizey = (int)font.LineSpacing; + + if (showCursor && caretVisible) + { + Vector2 size = Vector2.Zero; + if (PosX > 0 && PosX <= tmpText.Length) + { + size = font.MeasureString(tmpText.Substring(0, PosX)); + } + if (size.Y == 0) + { + size = font.MeasureString(" "); + size.X = 0; + } + + int m = r.Height - font.LineSpacing; + + Rectangle rc = new Rectangle(r.Left - horz.Value + (int)size.X, r.Top + m / 2, cursor.Width, font.LineSpacing); + + if (mode == TextBoxMode.Multiline) + { + rc = new Rectangle(r.Left + (int)size.X - horz.Value, r.Top + (int)((PosY - vert.Value) * font.LineSpacing), cursor.Width, font.LineSpacing); + } + cursor.Alignment = al; + renderer.DrawLayer(cursor, rc, col, 0); + } + + for (int i = 0; i < linesDrawn + 1; i++) + { + int ii = i + vert.Value; + if (ii >= Lines.Count || ii < 0) break; + + if (Lines[ii] != "") + { + if (mode == TextBoxMode.Multiline) + { + renderer.DrawString(font, Lines[ii], r.Left - horz.Value, r.Top + (i * sizey), col); + } + else + { + Rectangle rx = new Rectangle(r.Left - horz.Value, r.Top, r.Width, r.Height); + renderer.DrawString(font, shownText, rx, col, al, false); + } + } + } + /* if (drawsel) + { + renderer.End(); + renderer.Begin(BlendingMode.Premultiplied); + }*/ + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private int GetStringWidth(string text, int count) + { + if (count > text.Length) count = text.Length; + return (int)font.MeasureString(text.Substring(0, count)).X; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void ProcessScrolling() + { + if (vert != null && horz != null) + { + vert.PageSize = linesDrawn; + horz.PageSize = charsDrawn; + + if (horz.PageSize > horz.Range) horz.PageSize = horz.Range; + + if (PosY >= vert.Value + vert.PageSize) + { + vert.Value = (PosY + 1) - vert.PageSize; + } + else if (PosY < vert.Value) + { + vert.Value = PosY; + } + + if (GetStringWidth(Lines[PosY], PosX) >= horz.Value + horz.PageSize) + { + horz.Value = (GetStringWidth(Lines[PosY], PosX) + 1) - horz.PageSize; + } + else if (GetStringWidth(Lines[PosY], PosX) < horz.Value) + { + horz.Value = GetStringWidth(Lines[PosY], PosX) - horz.PageSize; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void DrawSelection(Renderer renderer, Rectangle rect) + { + if (!selection.IsEmpty) + { + int s = selection.Start; + int e = selection.End; + + int sl = GetPosY(s); + int el = GetPosY(e); + int sc = GetPosX(s); + int ec = GetPosX(e); + + int hgt = font.LineSpacing; + + int start = sl; + int end = el; + + if (start < vert.Value) start = vert.Value; + if (end > vert.Value + linesDrawn) end = vert.Value + linesDrawn; + + for (int i = start; i <= end; i++) + { + Rectangle r = Rectangle.Empty; + + if (mode == TextBoxMode.Normal) + { + int m = ClientArea.Height - font.LineSpacing; + r = new Rectangle(rect.Left - horz.Value + (int)font.MeasureString(Lines[i].Substring(0, sc)).X, rect.Top + m / 2, + (int)font.MeasureString(Lines[i].Substring(0, ec + 0)).X - (int)font.MeasureString(Lines[i].Substring(0, sc)).X, hgt); + } + else if (sl == el) + { + r = new Rectangle(rect.Left - horz.Value + (int)font.MeasureString(Lines[i].Substring(0, sc)).X, rect.Top + (i - vert.Value) * hgt, + (int)font.MeasureString(Lines[i].Substring(0, ec + 0)).X - (int)font.MeasureString(Lines[i].Substring(0, sc)).X, hgt); + } + else + { + if (i == sl) r = new Rectangle(rect.Left - horz.Value + (int)font.MeasureString(Lines[i].Substring(0, sc)).X, rect.Top + (i - vert.Value) * hgt, (int)font.MeasureString(Lines[i]).X - (int)font.MeasureString(Lines[i].Substring(0, sc)).X, hgt); + else if (i == el) r = new Rectangle(rect.Left - horz.Value, rect.Top + (i - vert.Value) * hgt, (int)font.MeasureString(Lines[i].Substring(0, ec + 0)).X, hgt); + else r = new Rectangle(rect.Left - horz.Value, rect.Top + (i - vert.Value) * hgt, (int)font.MeasureString(Lines[i]).X, hgt); + } + + renderer.Draw(Manager.Skin.Images["Control"].Resource, r, Color.FromNonPremultiplied(160, 160, 160, 128)); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void Update(GameTime gameTime) + { + base.Update(gameTime); + + bool sc = showCursor; + + showCursor = Focused; + + if (Focused) + { + flashTime += gameTime.ElapsedGameTime.TotalSeconds; + showCursor = flashTime < 0.5; + if (flashTime > 1) flashTime = 0; + } + if (sc != showCursor) ClientArea.Invalidate(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private int FindPrevWord(string text) + { + bool letter = false; + + int p = Pos - 1; + if (p < 0) p = 0; + if (p >= text.Length) p = text.Length - 1; + + + for (int i = p; i >= 0; i--) + { + if (char.IsLetterOrDigit(text[i])) + { + letter = true; + continue; + } + if (letter && !char.IsLetterOrDigit(text[i])) + { + return i + 1; + } + } + + return 0; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private int FindNextWord(string text) + { + bool space = false; + + for (int i = Pos; i < text.Length - 1; i++) + { + if (!char.IsLetterOrDigit(text[i])) + { + space = true; + continue; + } + if (space && char.IsLetterOrDigit(text[i])) + { + return i; + } + } + + return text.Length; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private int GetPosY(int pos) + { + if (pos >= Text.Length) return Lines.Count - 1; + + int p = pos; + for (int i = 0; i < Lines.Count; i++) + { + p -= Lines[i].Length + Separator.Length; + if (p < 0) + { + p = p + Lines[i].Length + Separator.Length; + return i; + } + } + return 0; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private int GetPosX(int pos) + { + if (pos >= Text.Length) return Lines[Lines.Count - 1].Length; + + int p = pos; + for (int i = 0; i < Lines.Count; i++) + { + p -= Lines[i].Length + Separator.Length; + if (p < 0) + { + p = p + Lines[i].Length + Separator.Length; + return p; + } + } + return 0; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private int GetPos(int x, int y) + { + int p = 0; + + for (int i = 0; i < y; i++) + { + p += Lines[i].Length + Separator.Length; + } + p += x; + + return p; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private int CharAtPos(Point pos) + { + int x = pos.X; + int y = pos.Y; + int px = 0; + int py = 0; + + if (mode == TextBoxMode.Multiline) + { + py = vert.Value + (int)((y - ClientTop) / font.LineSpacing); + if (py < 0) py = 0; + if (py >= Lines.Count) py = Lines.Count - 1; + } + else + { + py = 0; + } + + string str = mode == TextBoxMode.Multiline ? Lines[py] : shownText; + + if (str != null && str != "") + { + for (int i = 1; i <= Lines[py].Length; i++) + { + Vector2 v = font.MeasureString(str.Substring(0, i)) - (font.MeasureString(str[i - 1].ToString()) / 3); + if (x <= (ClientLeft + (int)v.X) - horz.Value) + { + px = i - 1; + break; + } + } + if (x > ClientLeft + ((int)font.MeasureString(str).X) - horz.Value - (font.MeasureString(str[str.Length - 1].ToString()).X / 3)) px = str.Length; + } + + return GetPos(px, py); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnMouseDown(MouseEventArgs e) + { + base.OnMouseDown(e); + + flashTime = 0; + + Pos = CharAtPos(e.Position); + selection.Clear(); + + if (e.Button == MouseButton.Left && caretVisible && mode != TextBoxMode.Password) + { + selection.Start = Pos; + selection.End = Pos; + } + ClientArea.Invalidate(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnMouseMove(MouseEventArgs e) + { + base.OnMouseMove(e); + + if (e.Button == MouseButton.Left && !selection.IsEmpty && mode != TextBoxMode.Password && selection.Length < Text.Length) + { + int pos = CharAtPos(e.Position); + selection.End = CharAtPos(e.Position); + Pos = pos; + + ClientArea.Invalidate(); + + ProcessScrolling(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnMouseUp(MouseEventArgs e) + { + base.OnMouseUp(e); + + if (e.Button == MouseButton.Left && !selection.IsEmpty && mode != TextBoxMode.Password) + { + if (selection.Length == 0) selection.Clear(); + } + } + //////////////////////////////////////////////////////////////////////////// + + protected override void OnMouseScroll(MouseEventArgs e) + { + if (Mode != TextBoxMode.Multiline) + { + base.OnMouseScroll(e); + return; + } + + if (e.ScrollDirection == MouseScrollDirection.Down) + vert.ScrollDown(); + else + vert.ScrollUp(); + + base.OnMouseScroll(e); + } + + //////////////////////////////////////////////////////////////////////////// + protected override void OnKeyPress(KeyEventArgs e) + { + flashTime = 0; + + if (Manager.UseGuide && Guide.IsVisible) return; + + if (!e.Handled) + { + if (e.Key == Keys.A && e.Control && mode != TextBoxMode.Password) + { + SelectAll(); + } + if (e.Key == Keys.Up) + { + e.Handled = true; + + if (e.Shift && selection.IsEmpty && mode != TextBoxMode.Password) + { + selection.Start = Pos; + } + if (!e.Control) + { + PosY -= 1; + } + } + else if (e.Key == Keys.Down) + { + e.Handled = true; + if (e.Shift && selection.IsEmpty && mode != TextBoxMode.Password) + { + selection.Start = Pos; + } + if (!e.Control) + { + PosY += 1; + } + } + else if (e.Key == Keys.Back && !readOnly) + { + e.Handled = true; + if (!selection.IsEmpty) + { + Text = Text.Remove(selection.Start, selection.Length); + Pos = selection.Start; + } + else if (Text.Length > 0 && Pos > 0) + { + Pos -= 1; + Text = Text.Remove(Pos, 1); + } + selection.Clear(); + } + else if (e.Key == Keys.Delete && !readOnly) + { + e.Handled = true; + if (!selection.IsEmpty) + { + Text = Text.Remove(selection.Start, selection.Length); + Pos = selection.Start; + } + else if (Pos < Text.Length) + { + Text = Text.Remove(Pos, 1); + } + selection.Clear(); + } + else if (e.Key == Keys.Left) + { + e.Handled = true; + if (e.Shift && selection.IsEmpty && mode != TextBoxMode.Password) + { + selection.Start = Pos; + } + if (!e.Control) + { + Pos -= 1; + } + if (e.Control) + { + Pos = FindPrevWord(shownText); + } + } + else if (e.Key == Keys.Right) + { + e.Handled = true; + if (e.Shift && selection.IsEmpty && mode != TextBoxMode.Password) + { + selection.Start = Pos; + } + if (!e.Control) + { + Pos += 1; + } + if (e.Control) + { + Pos = FindNextWord(shownText); + } + } + else if (e.Key == Keys.Home) + { + e.Handled = true; + if (e.Shift && selection.IsEmpty && mode != TextBoxMode.Password) + { + selection.Start = Pos; + } + if (!e.Control) + { + PosX = 0; + } + if (e.Control) + { + Pos = 0; + } + } + else if (e.Key == Keys.End) + { + e.Handled = true; + if (e.Shift && selection.IsEmpty && mode != TextBoxMode.Password) + { + selection.Start = Pos; + } + if (!e.Control) + { + PosX = Lines[PosY].Length; + } + if (e.Control) + { + Pos = Text.Length; + } + } + else if (e.Key == Keys.PageUp) + { + e.Handled = true; + if (e.Shift && selection.IsEmpty && mode != TextBoxMode.Password) + { + selection.Start = Pos; + } + if (!e.Control) + { + PosY -= linesDrawn; + } + } + else if (e.Key == Keys.PageDown) + { + e.Handled = true; + if (e.Shift && selection.IsEmpty && mode != TextBoxMode.Password) + { + selection.Start = Pos; + } + if (!e.Control) + { + PosY += linesDrawn; + } + } + else if (e.Key == Keys.Enter && mode == TextBoxMode.Multiline && !readOnly) + { + e.Handled = true; + Text = Text.Insert(Pos, Separator); + PosX = 0; + PosY += 1; + } + else if (e.Key == Keys.Tab) + { + } + else if (!readOnly && !e.Control) + { + string c = Manager.KeyboardLayout.GetKey(e); + if (selection.IsEmpty) + { + Text = Text.Insert(Pos, c); + if (c != "") PosX += 1; + } + else + { + if (Text.Length > 0) + { + Text = Text.Remove(selection.Start, selection.Length); + Text = Text.Insert(selection.Start, c); + Pos = selection.Start + 1; + } + selection.Clear(); + } + } + + if (e.Shift && !selection.IsEmpty) + { + selection.End = Pos; + } + + /* + * TODO: Fix + * MONOTODO: Fix + if (e.Control && e.Key == Keys.C && mode != TextBoxMode.Password) + { +#if (!XBOX && !XBOX_FAKE) + System.Windows.Forms.Clipboard.Clear(); + if (mode != TextBoxMode.Password && !selection.IsEmpty) + { + System.Windows.Forms.Clipboard.SetText((Text.Substring(selection.Start, selection.Length)).Replace("\n", Environment.NewLine)); + } +#endif + } + else if (e.Control && e.Key == Keys.V && !readOnly && mode != TextBoxMode.Password) + { +#if (!XBOX && !XBOX_FAKE) + string t = System.Windows.Forms.Clipboard.GetText().Replace(Environment.NewLine, "\n"); + if (selection.IsEmpty) + { + Text = Text.Insert(Pos, t); + Pos = Pos + t.Length; + } + else + { + Text = Text.Remove(selection.Start, selection.Length); + Text = Text.Insert(selection.Start, t); + PosX = selection.Start + t.Length; + selection.Clear(); + } +#endif + } + */ + if ((!e.Shift && !e.Control) || Text.Length <= 0) + { + selection.Clear(); + } + + if (e.Control && e.Key == Keys.Down) + { + e.Handled = true; + HandleGuide(PlayerIndex.One); + } + flashTime = 0; + if (ClientArea != null) ClientArea.Invalidate(); + + DeterminePages(); + ProcessScrolling(); + } + base.OnKeyPress(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnGamePadDown(GamePadEventArgs e) + { + if (Manager.UseGuide && Guide.IsVisible) return; + + if (!e.Handled) + { + if (e.Button == GamePadActions.Click) + { + e.Handled = true; + HandleGuide(e.PlayerIndex); + } + } + base.OnGamePadDown(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void HandleGuide(PlayerIndex pi) + { + if (Manager.UseGuide && !Guide.IsVisible) + { + Guide.BeginShowKeyboardInput(pi, "Enter Text", "", Text, GetText, pi.ToString()); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void GetText(IAsyncResult result) + { + string res = Guide.EndShowKeyboardInput(result); + Text = res != null ? res : ""; + Pos = text.Length; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void SetupBars() + { + DeterminePages(); + + if (vert != null) vert.Range = Lines.Count; + if (horz != null) + { + horz.Range = (int)font.MeasureString(GetMaxLine()).X; + if (horz.Range == 0) horz.Range = ClientArea.Width; + } + + if (vert != null) + { + vert.Left = Width - 16 - 2; + vert.Top = 2; + vert.Height = Height - 4 - 16; + + if (Height < 50 || (scrollBars != ScrollBars.Both && scrollBars != ScrollBars.Vertical)) vert.Visible = false; + else if ((scrollBars == ScrollBars.Vertical || scrollBars == ScrollBars.Both) && mode == TextBoxMode.Multiline) vert.Visible = true; + } + if (horz != null) + { + horz.Left = 2; + horz.Top = Height - 16 - 2; + horz.Width = Width - 4 - 16; + + if (Width < 50 || wordWrap || (scrollBars != ScrollBars.Both && scrollBars != ScrollBars.Horizontal)) horz.Visible = false; + else if ((scrollBars == ScrollBars.Horizontal || scrollBars == ScrollBars.Both) && mode == TextBoxMode.Multiline && !wordWrap) horz.Visible = true; + } + + AdjustMargins(); + + if (vert != null) vert.PageSize = linesDrawn; + if (horz != null) horz.PageSize = charsDrawn; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void AdjustMargins() + { + if (horz != null && !horz.Visible) + { + vert.Height = Height - 4; + ClientMargins = new Margins(ClientMargins.Left, ClientMargins.Top, ClientMargins.Right, Skin.ClientMargins.Bottom); + } + else + { + ClientMargins = new Margins(ClientMargins.Left, ClientMargins.Top, ClientMargins.Right, 18 + Skin.ClientMargins.Bottom); + } + + if (vert != null && !vert.Visible) + { + horz.Width = Width - 4; + ClientMargins = new Margins(ClientMargins.Left, ClientMargins.Top, Skin.ClientMargins.Right, ClientMargins.Bottom); + } + else + { + ClientMargins = new Margins(ClientMargins.Left, ClientMargins.Top, 18 + Skin.ClientMargins.Right, ClientMargins.Bottom); + } + base.AdjustMargins(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnResize(ResizeEventArgs e) + { + base.OnResize(e); + selection.Clear(); + SetupBars(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private string WrapWords(string text, int size) + { + string ret = ""; + string line = ""; + + string[] words = text.Replace("\v", "").Split(" ".ToCharArray()); + + for (int i = 0; i < words.Length; i++) + { + if (font.MeasureString(line + words[i]).X > size) + { + ret += line + "\n"; + line = words[i] + " "; + } + else + { + line += words[i] + " "; + } + } + + ret += line; + + return ret.Remove(ret.Length - 1, 1); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void SelectAll() + { + if (text.Length > 0) + { + selection.Start = 0; + selection.End = Text.Length; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private List SplitLines(string text) + { + if (buffer != text) + { + buffer = text; + List list = new List(); + string[] s = text.Split(new char[] { Separator[0] }); + list.Clear(); + + //Before adding the lines back in, we will want to first, measure the lines, and split words if needed... + + list.AddRange(s); + + if (posy < 0) posy = 0; + if (posy > list.Count - 1) posy = list.Count - 1; + + if (posx < 0) posx = 0; + if (posx > list[PosY].Length) posx = list[PosY].Length; + + return list; + } + else return lines; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void sb_ValueChanged(object sender, EventArgs e) + { + ClientArea.Invalidate(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnFocusLost(EventArgs e) + { + selection.Clear(); + ClientArea.Invalidate(); + base.OnFocusLost(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnFocusGained(EventArgs e) + { + if (!readOnly && autoSelection) + { + SelectAll(); + ClientArea.Invalidate(); + } + + base.OnFocusGained(e); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + +} \ No newline at end of file diff --git a/Neoforce/TomShane.Neoforce.Controls.csproj b/Neoforce/TomShane.Neoforce.Controls.csproj new file mode 100644 index 0000000..77a1c46 --- /dev/null +++ b/Neoforce/TomShane.Neoforce.Controls.csproj @@ -0,0 +1,115 @@ + + + + + Debug + AnyCPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841} + Library + Properties + TomShane.Neoforce.Controls + TomShane.Neoforce.Controls + v4.0 + 512 + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + C:\Program Files (x86)\MonoGame\v3.0\Assemblies\Windows\MonoGame.Framework.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Neoforce/ToolBar.cs b/Neoforce/ToolBar.cs new file mode 100644 index 0000000..4833d75 --- /dev/null +++ b/Neoforce/ToolBar.cs @@ -0,0 +1,113 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: ToolBar.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + + public class ToolBar: Control + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private int row = 0; + private bool fullRow = false; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int Row + { + get { return row; } + set + { + row = value; + if (row < 0) row = 0; + if (row > 7) row = 7; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual bool FullRow + { + get { return fullRow; } + set { fullRow = value; } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public ToolBar(Manager manager): base(manager) + { + Left = 0; + Top = 0; + Width = 64; + Height = 24; + CanFocus = false; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + Skin = new SkinControl(Manager.Skin.Controls["ToolBar"]); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + base.DrawControl(renderer, rect, gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/ToolBarButton.cs b/Neoforce/ToolBarButton.cs new file mode 100644 index 0000000..1134156 --- /dev/null +++ b/Neoforce/ToolBarButton.cs @@ -0,0 +1,90 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: ToolBarButton.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + + public class ToolBarButton: Button + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public ToolBarButton(Manager manager): base(manager) + { + CanFocus = false; + Text = ""; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + Skin = new SkinControl(Manager.Skin.Controls["ToolBarButton"]); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + base.DrawControl(renderer, rect, gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/ToolBarPanel.cs b/Neoforce/ToolBarPanel.cs new file mode 100644 index 0000000..62a2b7f --- /dev/null +++ b/Neoforce/ToolBarPanel.cs @@ -0,0 +1,135 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: ToolBarPanel.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + + public class ToolBarPanel: Control + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public ToolBarPanel(Manager manager): base(manager) + { + Width = 64; + Height = 25; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + Skin = new SkinControl(Manager.Skin.Controls["ToolBarPanel"]); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + base.DrawControl(renderer, rect, gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnResize(ResizeEventArgs e) + { + base.OnResize(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void Update(GameTime gameTime) + { + base.Update(gameTime); + AlignBars(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void AlignBars() + { + int[] rx = new int[8]; + int h = 0; + int rm = -1; + + foreach (Control c in Controls) + { + if (c is ToolBar) + { + ToolBar t = c as ToolBar; + if (t.FullRow) t.Width = Width; + t.Left = rx[t.Row]; + t.Top = (t.Row * t.Height) + (t.Row > 0 ? 1 : 0); + rx[t.Row] += t.Width + 1; + + if (t.Row > rm) + { + rm = t.Row; + h = t.Top + t.Height + 1; + } + } + } + + Height = h; + } + //////////////////////////////////////////////////////////////////////////// + + + #endregion + + } + +} diff --git a/Neoforce/ToolTip.cs b/Neoforce/ToolTip.cs new file mode 100644 index 0000000..cec409b --- /dev/null +++ b/Neoforce/ToolTip.cs @@ -0,0 +1,110 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: ToolTip.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Input; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + public class ToolTip: Control + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public override bool Visible + { + set + { + if (value && Text != null && Text != "" && Skin != null && Skin.Layers[0] != null) + { + Vector2 size = Skin.Layers[0].Text.Font.Resource.MeasureString(Text); + Width = (int)size.X + Skin.Layers[0].ContentMargins.Horizontal; + Height = (int)size.Y + Skin.Layers[0].ContentMargins.Vertical; + Left = Mouse.GetState().X; + Top = Mouse.GetState().Y + 24; + base.Visible = value; + } + else + { + base.Visible = false; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public ToolTip(Manager manager): base(manager) + { + Text = ""; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + CanFocus = false; + Passive = true; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + Skin = Manager.Skin.Controls["ToolTip"]; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + renderer.DrawLayer(this, Skin.Layers[0], rect); + renderer.DrawString(this, Skin.Layers[0], Text, rect, true); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/TrackBar.cs b/Neoforce/TrackBar.cs new file mode 100644 index 0000000..46c7c8a --- /dev/null +++ b/Neoforce/TrackBar.cs @@ -0,0 +1,341 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: TrackBar.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +using Microsoft.Xna.Framework; +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework.Graphics; +using System; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public class TrackBar: Control + { + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private int range = 100; + private int value = 0; + private int stepSize = 1; + private int pageSize = 5; + private bool scale = true; + private Button btnSlider; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int Value + { + get { return this.value; } + set + { + if (this.value != value) + { + this.value = value; + if (this.value < 0) this.value = 0; + if (this.value > range) this.value = range; + Invalidate(); + if (!Suspended) OnValueChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int Range + { + get { return range; } + set + { + if (range != value) + { + range = value; + range = value; + if (pageSize > range) pageSize = range; + RecalcParams(); + if (!Suspended) OnRangeChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int PageSize + { + get { return pageSize; } + set + { + if (pageSize != value) + { + pageSize = value; + if (pageSize > range) pageSize = range; + RecalcParams(); + if (!Suspended) OnPageSizeChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual int StepSize + { + get { return stepSize; } + set + { + if (stepSize != value) + { + stepSize = value; + if (stepSize > range) stepSize = range; + if (!Suspended) OnStepSizeChanged(new EventArgs()); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual bool Scale + { + get { return scale; } + set { scale = value; } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + public event EventHandler ValueChanged; + public event EventHandler RangeChanged; + public event EventHandler StepSizeChanged; + public event EventHandler PageSizeChanged; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Construstors ////// + + //////////////////////////////////////////////////////////////////////////// + public TrackBar(Manager manager): base(manager) + { + Width = 64; + Height = 20; + CanFocus = false; + + btnSlider = new Button(Manager); + btnSlider.Init(); + btnSlider.Text = ""; + btnSlider.CanFocus = true; + btnSlider.Parent = this; + btnSlider.Anchor = Anchors.Left | Anchors.Top | Anchors.Bottom; + btnSlider.Detached = true; + btnSlider.Movable = true; + btnSlider.Move += new MoveEventHandler(btnSlider_Move); + btnSlider.KeyPress += new KeyEventHandler(btnSlider_KeyPress); + btnSlider.GamePadPress += new GamePadEventHandler(btnSlider_GamePadPress); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + btnSlider.Skin = new SkinControl(Manager.Skin.Controls["TrackBar.Button"]); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + Skin = new SkinControl(Manager.Skin.Controls["TrackBar"]); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + RecalcParams(); + + SkinLayer p = Skin.Layers["Control"]; + SkinLayer l = Skin.Layers["Scale"]; + + float ratio = 0.66f; + int h = (int)(ratio * rect.Height); + int t = rect.Top + (Height - h) / 2; + + float px = ((float)value / (float)range); + int w = (int)Math.Ceiling(px * (rect.Width - p.ContentMargins.Horizontal - btnSlider.Width)) + 2; + + if (w < l.SizingMargins.Vertical) w = l.SizingMargins.Vertical; + if (w > rect.Width - p.ContentMargins.Horizontal) w = rect.Width - p.ContentMargins.Horizontal; + + Rectangle r1 = new Rectangle(rect.Left + p.ContentMargins.Left, t + p.ContentMargins.Top, w, h - p.ContentMargins.Vertical); + + base.DrawControl(renderer, new Rectangle(rect.Left, t, rect.Width, h), gameTime); + if (scale) renderer.DrawLayer(this, l, r1); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void btnSlider_Move(object sender, MoveEventArgs e) + { + SkinLayer p = Skin.Layers["Control"]; + int size = btnSlider.Width; + int w = Width - p.ContentMargins.Horizontal - size; + int pos = e.Left; + + if (pos < p.ContentMargins.Left) pos = p.ContentMargins.Left; + if (pos > w + p.ContentMargins.Left) pos = w + p.ContentMargins.Left; + + btnSlider.SetPosition(pos, 0); + + float px = (float)range / (float)w; + Value = (int)(Math.Ceiling((pos - p.ContentMargins.Left) * px)); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void RecalcParams() + { + if (btnSlider != null) + { + if (btnSlider.Width > 12) + { + btnSlider.Glyph = new Glyph(Manager.Skin.Images["Shared.Glyph"].Resource); + btnSlider.Glyph.SizeMode = SizeMode.Centered; + } + else + { + btnSlider.Glyph = null; + } + + SkinLayer p = Skin.Layers["Control"]; + btnSlider.Width = (int)(Height * 0.8); + btnSlider.Height = Height; + int size = btnSlider.Width; + int w = Width - p.ContentMargins.Horizontal - size; + + float px = (float)range / (float)w; + int pos = p.ContentMargins.Left + (int)(Math.Ceiling(Value / (float)px)); + + if (pos < p.ContentMargins.Left) pos = p.ContentMargins.Left; + if (pos > w + p.ContentMargins.Left) pos = w + p.ContentMargins.Left; + + btnSlider.SetPosition(pos, 0); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnMousePress(MouseEventArgs e) + { + base.OnMouseDown(e); + + if (e.Button == MouseButton.Left) + { + int pos = e.Position.X; + + if (pos < btnSlider.Left) + { + Value -= pageSize; + } + else if (pos >= btnSlider.Left + btnSlider.Width) + { + Value += pageSize; + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void btnSlider_GamePadPress(object sender, GamePadEventArgs e) + { + if (e.Button == GamePadActions.Left || e.Button == GamePadActions.Down) Value -= stepSize; + if (e.Button == GamePadActions.Right || e.Button == GamePadActions.Up) Value += stepSize; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void btnSlider_KeyPress(object sender, KeyEventArgs e) + { + if (e.Key == Microsoft.Xna.Framework.Input.Keys.Left || e.Key == Microsoft.Xna.Framework.Input.Keys.Down) Value -= stepSize; + else if (e.Key == Microsoft.Xna.Framework.Input.Keys.Right || e.Key == Microsoft.Xna.Framework.Input.Keys.Up) Value += stepSize; + else if (e.Key == Microsoft.Xna.Framework.Input.Keys.PageDown) Value -= pageSize; + else if (e.Key == Microsoft.Xna.Framework.Input.Keys.PageUp) Value += pageSize; + else if (e.Key == Microsoft.Xna.Framework.Input.Keys.Home) Value = 0; + else if (e.Key == Microsoft.Xna.Framework.Input.Keys.End) Value = Range; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnResize(ResizeEventArgs e) + { + base.OnResize(e); + RecalcParams(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnValueChanged(EventArgs e) + { + if (ValueChanged != null) ValueChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnRangeChanged(EventArgs e) + { + if (RangeChanged != null) RangeChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnPageSizeChanged(EventArgs e) + { + if (PageSizeChanged != null) PageSizeChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected virtual void OnStepSizeChanged(EventArgs e) + { + if (StepSizeChanged != null) StepSizeChanged.Invoke(this, e); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} diff --git a/Neoforce/Types.cs b/Neoforce/Types.cs new file mode 100644 index 0000000..2f961ec --- /dev/null +++ b/Neoforce/Types.cs @@ -0,0 +1,178 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: Types.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using System; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + #region //// Enums ///////////// + + //////////////////////////////////////////////////////////////////////////// + public enum Message + { + Click, + MouseDown, + MouseUp, + MousePress, + MouseMove, + MouseOver, + MouseOut, + MouseScroll, + KeyDown, + KeyUp, + KeyPress, + GamePadDown, + GamePadUp, + GamePadPress + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public enum ControlState + { + Enabled, + Hovered, + Pressed, + Focused, + Disabled + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public enum Alignment + { + None, + TopLeft, + TopCenter, + TopRight, + MiddleLeft, + MiddleCenter, + MiddleRight, + BottomLeft, + BottomCenter, + BottomRight + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public enum ModalResult + { + None, + Ok, + Cancel, + Yes, + No, + Abort, + Retry, + Ignore + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public enum Orientation + { + Horizontal, + Vertical + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public enum ScrollBars + { + None, + Vertical, + Horizontal, + Both + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + [Flags] + public enum Anchors + { + None = 0x00, + Left = 0x01, + Top = 0x02, + Right = 0x04, + Bottom = 0x08, + Horizontal = Left | Right, + Vertical = Top | Bottom, + All = Left | Top | Right | Bottom + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Structs /////////// + + //////////////////////////////////////////////////////////////////////////// + public struct Margins + { + public int Left; + public int Top; + public int Right; + public int Bottom; + + public int Vertical { get { return (Top + Bottom); } } + public int Horizontal { get { return (Left + Right); } } + + public Margins(int left, int top, int right, int bottom) + { + Left = left; + Top = top; + Right = right; + Bottom = bottom; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public struct Size + { + public int Width; + public int Height; + + public Size(int width, int height) + { + Width = width; + Height = height; + } + + public static Size Zero + { + get + { + return new Size(0, 0); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + +} + \ No newline at end of file diff --git a/Neoforce/Unknown.cs b/Neoforce/Unknown.cs new file mode 100644 index 0000000..a6da660 --- /dev/null +++ b/Neoforce/Unknown.cs @@ -0,0 +1,61 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: Unknown.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + public abstract class Unknown + { + + #region //// Fields //////////// + + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + ////////////////////////////////////////////////////////////////////////// + protected Unknown() + { + } + ////////////////////////////////////////////////////////////////////////// + + #endregion + + } + +} + diff --git a/Neoforce/Utilities.cs b/Neoforce/Utilities.cs new file mode 100644 index 0000000..a71cf47 --- /dev/null +++ b/Neoforce/Utilities.cs @@ -0,0 +1,85 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: Utilities.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using System; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +using Microsoft.Xna.Framework; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + static class Utilities + { + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public static string DeriveControlName(Control control) + { + if (control != null) + { + try + { + string str = control.ToString(); + int i = str.LastIndexOf("."); + return str.Remove(0, i + 1); + } + catch + { + return control.ToString(); + } + } + return control.ToString(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public static Color ParseColor(string str) + { + + string[] val = str.Split(';'); + byte r = 255, g = 255, b = 255, a = 255; + + if (val.Length >= 1) r = byte.Parse(val[0]); + if (val.Length >= 2) g = byte.Parse(val[1]); + if (val.Length >= 3) b = byte.Parse(val[2]); + if (val.Length >= 4) a = byte.Parse(val[3]); + + return Color.FromNonPremultiplied(r, g, b, a); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public static BevelStyle ParseBevelStyle(string str) + { + return (BevelStyle)Enum.Parse(typeof(BevelStyle), str, true); + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + } +} diff --git a/Neoforce/Window.cs b/Neoforce/Window.cs new file mode 100644 index 0000000..5e69c6d --- /dev/null +++ b/Neoforce/Window.cs @@ -0,0 +1,491 @@ +//////////////////////////////////////////////////////////////// +// // +// Neoforce Controls // +// // +//////////////////////////////////////////////////////////////// +// // +// File: Window.cs // +// // +// Version: 0.7 // +// // +// Date: 11/09/2010 // +// // +// Author: Tom Shane // +// // +//////////////////////////////////////////////////////////////// +// // +// Copyright (c) by Tom Shane // +// // +//////////////////////////////////////////////////////////////// + +#region //// Using ///////////// + +//////////////////////////////////////////////////////////////////////////// +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +//////////////////////////////////////////////////////////////////////////// + +#endregion + +namespace TomShane.Neoforce.Controls +{ + + #region //// Classes /////////// + + //////////////////////////////////////////////////////////////////////////// + public class WindowGamePadActions: GamePadActions + { + public GamePadButton Accept = GamePadButton.Start; + public GamePadButton Cancel = GamePadButton.Back; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + /// + public class Window: ModalContainer + { + + #region //// Consts //////////// + + //////////////////////////////////////////////////////////////////////////// + private const string skWindow = "Window"; + private const string lrWindow = "Control"; + private const string lrCaption = "Caption"; + private const string lrFrameTop = "FrameTop"; + private const string lrFrameLeft = "FrameLeft"; + private const string lrFrameRight = "FrameRight"; + private const string lrFrameBottom = "FrameBottom"; + private const string lrIcon = "Icon"; + + private const string skButton = "Window.CloseButton"; + private const string lrButton = "Control"; + + private const string skShadow = "Window.Shadow"; + private const string lrShadow = "Control"; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Fields //////////// + + //////////////////////////////////////////////////////////////////////////// + private Button btnClose; + private bool closeButtonVisible = true; + private bool iconVisible = true; + private Texture2D icon = null; + private bool shadow = true; + private bool captionVisible = true; + private bool borderVisible = true; + private byte oldAlpha = 255; + private byte dragAlpha = 200; + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Events //////////// + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Properties //////// + + //////////////////////////////////////////////////////////////////////////// + public virtual Texture2D Icon + { + get { return icon; } + set { icon = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual bool Shadow + { + get { return shadow; } + set { shadow = value; } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual bool CloseButtonVisible + { + get + { + return closeButtonVisible; + } + set + { + closeButtonVisible = value; + if (btnClose != null) btnClose.Visible = value; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual bool IconVisible + { + get + { + return iconVisible; + } + set + { + iconVisible = value; + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual bool CaptionVisible + { + get { return captionVisible; } + set + { + captionVisible = value; + AdjustMargins(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual bool BorderVisible + { + get { return borderVisible; } + set + { + borderVisible = value; + AdjustMargins(); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual byte DragAlpha + { + get { return dragAlpha; } + set { dragAlpha = value; } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + #region //// Constructors ////// + + //////////////////////////////////////////////////////////////////////////// + public Window(Manager manager): base(manager) + { + CheckLayer(Skin, lrWindow); + CheckLayer(Skin, lrCaption); + CheckLayer(Skin, lrFrameTop); + CheckLayer(Skin, lrFrameLeft); + CheckLayer(Skin, lrFrameRight); + CheckLayer(Skin, lrFrameBottom); + CheckLayer(Manager.Skin.Controls[skButton], lrButton); + CheckLayer(Manager.Skin.Controls[skShadow], lrShadow); + + SetDefaultSize(640, 480); + SetMinimumSize(100, 75); + + btnClose = new Button(manager); + btnClose.Skin = new SkinControl(Manager.Skin.Controls[skButton]); + btnClose.Init(); + btnClose.Detached = true; + btnClose.CanFocus = false; + btnClose.Text = null; + btnClose.Click += new EventHandler(btnClose_Click); + btnClose.SkinChanged += new EventHandler(btnClose_SkinChanged); + + AdjustMargins(); + + AutoScroll = true; + Movable = true; + Resizable = true; + Center(); + + Add(btnClose, false); + + oldAlpha = Alpha; + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + + //////////////////////////////////////////////////////////////////////////// + protected override void Dispose(bool disposing) + { + if (disposing) + { + } + base.Dispose(disposing); + } + //////////////////////////////////////////////////////////////////////////// + + #region //// Methods /////////// + + //////////////////////////////////////////////////////////////////////////// + public override void Init() + { + base.Init(); + + SkinLayer l = btnClose.Skin.Layers[lrButton]; + btnClose.Width = l.Width - btnClose.Skin.OriginMargins.Horizontal; + btnClose.Height = l.Height - btnClose.Skin.OriginMargins.Vertical; + btnClose.Left = OriginWidth - Skin.OriginMargins.Right - btnClose.Width + l.OffsetX; + btnClose.Top = Skin.OriginMargins.Top + l.OffsetY; + btnClose.Anchor = Anchors.Top | Anchors.Right; + + //SkinControl sc = new SkinControl(ClientArea.Skin); + //sc.Layers[0] = Skin.Layers[lrWindow]; + //ClientArea.Color = Color.Transparent; + //ClientArea.BackColor = Color.Transparent; + //ClientArea.Skin = sc; + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected internal override void InitSkin() + { + base.InitSkin(); + Skin = new SkinControl(Manager.Skin.Controls[skWindow]); + AdjustMargins(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void btnClose_SkinChanged(object sender, EventArgs e) + { + btnClose.Skin = new SkinControl(Manager.Skin.Controls[skButton]); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + internal override void Render(Renderer renderer, GameTime gameTime) + { + if (Visible && Shadow) + { + SkinControl c = Manager.Skin.Controls[skShadow]; + SkinLayer l = c.Layers[lrShadow]; + + Color cl = Color.FromNonPremultiplied(l.States.Enabled.Color.R, l.States.Enabled.Color.G, l.States.Enabled.Color.B, Alpha); + + renderer.Begin(BlendingMode.Default); + renderer.DrawLayer(l, new Rectangle(Left - c.OriginMargins.Left, Top - c.OriginMargins.Top, Width + c.OriginMargins.Horizontal, Height + c.OriginMargins.Vertical), cl, 0); + renderer.End(); + } + base.Render(renderer, gameTime); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private Rectangle GetIconRect() + { + SkinLayer l1 = Skin.Layers[lrCaption]; + SkinLayer l5 = Skin.Layers[lrIcon]; + + int s = l1.Height - l1.ContentMargins.Vertical; + return new Rectangle(DrawingRect.Left + l1.ContentMargins.Left + l5.OffsetX, + DrawingRect.Top + l1.ContentMargins.Top + l5.OffsetY, + s, s); + + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) + { + SkinLayer l1 = captionVisible ? Skin.Layers[lrCaption] : Skin.Layers[lrFrameTop]; + SkinLayer l2 = Skin.Layers[lrFrameLeft]; + SkinLayer l3 = Skin.Layers[lrFrameRight]; + SkinLayer l4 = Skin.Layers[lrFrameBottom]; + SkinLayer l5 = Skin.Layers[lrIcon]; + LayerStates s1, s2, s3, s4; + SpriteFont f1 = l1.Text.Font.Resource; + Color c1 = l1.Text.Colors.Enabled; + + if ((Focused || (Manager.FocusedControl != null && Manager.FocusedControl.Root == this.Root)) && ControlState != ControlState.Disabled) + { + s1 = l1.States.Focused; + s2 = l2.States.Focused; + s3 = l3.States.Focused; + s4 = l4.States.Focused; + c1 = l1.Text.Colors.Focused; + } + else if (ControlState == ControlState.Disabled) + { + s1 = l1.States.Disabled; + s2 = l2.States.Disabled; + s3 = l3.States.Disabled; + s4 = l4.States.Disabled; + c1 = l1.Text.Colors.Disabled; + } + else + { + s1 = l1.States.Enabled; + s2 = l2.States.Enabled; + s3 = l3.States.Enabled; + s4 = l4.States.Enabled; + c1 = l1.Text.Colors.Enabled; + } + + renderer.DrawLayer(Skin.Layers[lrWindow], rect, Skin.Layers[lrWindow].States.Enabled.Color, Skin.Layers[lrWindow].States.Enabled.Index); + + if (borderVisible) + { + renderer.DrawLayer(l1, new Rectangle(rect.Left, rect.Top, rect.Width, l1.Height), s1.Color, s1.Index); + renderer.DrawLayer(l2, new Rectangle(rect.Left, rect.Top + l1.Height, l2.Width, rect.Height - l1.Height - l4.Height), s2.Color, s2.Index); + renderer.DrawLayer(l3, new Rectangle(rect.Right - l3.Width, rect.Top + l1.Height, l3.Width, rect.Height - l1.Height - l4.Height), s3.Color, s3.Index); + renderer.DrawLayer(l4, new Rectangle(rect.Left, rect.Bottom - l4.Height, rect.Width, l4.Height), s4.Color, s4.Index); + + if (iconVisible && (icon != null || l5 != null) && captionVisible) + { + Texture2D i = (icon != null) ? icon : l5.Image.Resource; + renderer.Draw(i, GetIconRect(), Color.White); + } + + int icosize = 0; + if (l5 != null && iconVisible && captionVisible) + { + icosize = l1.Height - l1.ContentMargins.Vertical + 4 + l5.OffsetX; + } + int closesize = 0; + if (btnClose.Visible) + { + closesize = btnClose.Width - (btnClose.Skin.Layers[lrButton].OffsetX); + } + + Rectangle r = new Rectangle(rect.Left + l1.ContentMargins.Left + icosize, + rect.Top + l1.ContentMargins.Top, + rect.Width - l1.ContentMargins.Horizontal - closesize - icosize, + l1.Height - l1.ContentMargins.Top - l1.ContentMargins.Bottom); + int ox = l1.Text.OffsetX; + int oy = l1.Text.OffsetY; + renderer.DrawString(f1, Text, r, c1, l1.Text.Alignment, ox, oy, true); + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + void btnClose_Click(object sender, EventArgs e) + { + Close(ModalResult = ModalResult.Cancel); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + public virtual void Center() + { + Left = (Manager.ScreenWidth / 2) - (Width / 2); + Top = (Manager.ScreenHeight - Height) / 2; + } + //////////////////////////////////////////////////////////////////////////// + + + //////////////////////////////////////////////////////////////////////////// + protected override void OnResize(ResizeEventArgs e) + { + SetMovableArea(); + base.OnResize(e); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnMoveBegin(EventArgs e) + { + base.OnMoveBegin(e); + + try + { + oldAlpha = Alpha; + Alpha = dragAlpha; + } + catch + { + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnMoveEnd(EventArgs e) + { + base.OnMoveEnd(e); + try + { + Alpha = oldAlpha; + } + catch + { + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void OnDoubleClick(EventArgs e) + { + base.OnDoubleClick(e); + + MouseEventArgs ex = (e is MouseEventArgs) ? (MouseEventArgs) e : new MouseEventArgs(); + + if (IconVisible && ex.Button == MouseButton.Left) + { + Rectangle r = GetIconRect(); + r.Offset(AbsoluteLeft, AbsoluteTop); + if (r.Contains(ex.Position)) + { + Close(); + } + } + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + protected override void AdjustMargins() + { + + if (captionVisible && borderVisible) + { + ClientMargins = new Margins(Skin.ClientMargins.Left, Skin.Layers[lrCaption].Height, Skin.ClientMargins.Right, Skin.ClientMargins.Bottom); + } + else if (!captionVisible && borderVisible) + { + ClientMargins = new Margins(Skin.ClientMargins.Left, Skin.ClientMargins.Top, Skin.ClientMargins.Right, Skin.ClientMargins.Bottom); + } + else if (!borderVisible) + { + ClientMargins = new Margins(0, 0, 0, 0); + } + + if (btnClose != null) + { + btnClose.Visible = closeButtonVisible && captionVisible && borderVisible; + } + + SetMovableArea(); + + base.AdjustMargins(); + } + //////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////// + private void SetMovableArea() + { + if (captionVisible && borderVisible) + { + MovableArea = new Rectangle(Skin.OriginMargins.Left, Skin.OriginMargins.Top, Width, Skin.Layers[lrCaption].Height - Skin.OriginMargins.Top); + } + else if (!captionVisible) + { + MovableArea = new Rectangle(0, 0, Width, Height); + } + } + //////////////////////////////////////////////////////////////////////////// + + #endregion + } + + //////////////////////////////////////////////////////////////////////////// + + #endregion + +} diff --git a/SpacePew.Common/Constants.cs b/SpacePew.Common/Constants.cs new file mode 100644 index 0000000..073d85a --- /dev/null +++ b/SpacePew.Common/Constants.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Text; +using System.Threading.Tasks; + +namespace SpacePew.Common +{ + public static class Constants + { + public const int MasterServerPort = 31315; + public const int GameServerPort = 31316; + } +} diff --git a/SpacePew.Common/Properties/AssemblyInfo.cs b/SpacePew.Common/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..45c8809 --- /dev/null +++ b/SpacePew.Common/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("SpacePew.Common")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("SpacePew.Common")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("20d7bd02-03b6-44ce-9a48-48f21010d705")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/SpacePew.Common/SpacePew.Common.csproj b/SpacePew.Common/SpacePew.Common.csproj new file mode 100644 index 0000000..2c2486e --- /dev/null +++ b/SpacePew.Common/SpacePew.Common.csproj @@ -0,0 +1,55 @@ + + + + + Debug + AnyCPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624} + Library + Properties + SpacePew.Common + SpacePew.Common + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SpacePew.Common/UdpNetworkPacketType.cs b/SpacePew.Common/UdpNetworkPacketType.cs new file mode 100644 index 0000000..a64695d --- /dev/null +++ b/SpacePew.Common/UdpNetworkPacketType.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SpacePew.Common +{ + public enum UdpNetworkPacketType + { + PlayerJoining, + PlayerJoined, + PlayerDisconnecting, + PlayerDisconnected, + PlayerUpdate, + PlayerDying, + PlayerDied, + MessageSent, + MessageReceived, + EntityCreated, + EntitiesCreated, + RequestingScoreboard, + SendingScoreBoard, + LevelRequest, + LevelResponse, + RegisterHost, + RequestHostList, + RequestIntroduction + } +} diff --git a/SpacePew.Content/SpacePew.Content/SpacePew.Content.csproj b/SpacePew.Content/SpacePew.Content/SpacePew.Content.csproj new file mode 100644 index 0000000..02adf74 --- /dev/null +++ b/SpacePew.Content/SpacePew.Content/SpacePew.Content.csproj @@ -0,0 +1,64 @@ + + + + + {944BAED2-53A4-47E9-AE89-7F6C5843DE94} + {6D335F3A-9D43-41b4-9D22-F6F17C4BE596};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Windows + x86 + Library + Properties + ContentBuilder + IgnoreMe + v4.0 + Client + v4.0 + bin\$(Configuration) + Windows + HiDef + 3ba061e4-8ea0-40ef-a6b6-07a417ea841a + Library + x86 + false + + + Windows + + + Windows8 + + + Android + + + iOS + + + OSX + + + Linux + + + PSM + + + + + + + SpacePew.ContentContent + Content + + + + + + \ No newline at end of file diff --git a/SpacePew.Content/SpacePew.Content/SpacePew.Content.csproj.Linux.cachefile b/SpacePew.Content/SpacePew.Content/SpacePew.Content.csproj.Linux.cachefile new file mode 100644 index 0000000..0248252 --- /dev/null +++ b/SpacePew.Content/SpacePew.Content/SpacePew.Content.csproj.Linux.cachefile @@ -0,0 +1,27 @@ +Content\Fonts\ConsoleFont.xnb +Content\Fonts\NetFont.xnb +Content\Fonts\ScoreBoardFont.xnb +Content\Fonts\Default.xnb +Content\Music\mosaik-locusfruit.xnb +Content\Audio\Waves\bingo.xnb +Content\Audio\Waves\bullet_hit.xnb +Content\Audio\Waves\bullet_sound.xnb +Content\Audio\Waves\engine.xnb +Content\Audio\Waves\explosion.xnb +Content\Audio\Waves\land.xnb +Content\Audio\Waves\thump.xnb +Content\bullet.xnb +Content\explosion.xnb +Content\explosion_small.xnb +Content\longshot.xnb +Content\ParticleTextures\explosion.xnb +Content\ParticleTextures\smoke.xnb +Content\player.xnb +Content\player_thrusting.xnb +Content\scoreboard.xnb +Content\stars.xnb +Content\transparent_pixel.xnb +Content\Music\mosaik-locusfruit.wma +Content\Audio\SpacePew.xgs +Content\Audio\SpacePew.xwb +Content\Audio\SpacePew.xsb diff --git a/SpacePew.Content/SpacePew.Content/SpacePew.Content.csproj.PSM.cachefile b/SpacePew.Content/SpacePew.Content/SpacePew.Content.csproj.PSM.cachefile new file mode 100644 index 0000000..73abb50 --- /dev/null +++ b/SpacePew.Content/SpacePew.Content/SpacePew.Content.csproj.PSM.cachefile @@ -0,0 +1,24 @@ +Content\Fonts\ConsoleFont.xnb +Content\Fonts\NetFont.xnb +Content\Fonts\ScoreBoardFont.xnb +Content\Fonts\Default.xnb +Content\Audio\Waves\bingo.xnb +Content\Audio\Waves\bullet_hit.xnb +Content\Audio\Waves\bullet_sound.xnb +Content\Audio\Waves\engine.xnb +Content\Audio\Waves\explosion.xnb +Content\Audio\Waves\land.xnb +Content\Audio\Waves\thump.xnb +Content\Audio\Waves\beep.xnb +Content\bullet.xnb +Content\explosion.xnb +Content\explosion_small.xnb +Content\longshot.xnb +Content\ParticleTextures\explosion.xnb +Content\ParticleTextures\smoke.xnb +Content\player.xnb +Content\player_thrusting.xnb +Content\scoreboard.xnb +Content\stars.xnb +Content\transparent_pixel.xnb +Content\Audio\Waves\message.xnb diff --git a/SpacePew.Content/SpacePew.Content/SpacePew.Content.csproj.Windows.cachefile b/SpacePew.Content/SpacePew.Content/SpacePew.Content.csproj.Windows.cachefile new file mode 100644 index 0000000..0248252 --- /dev/null +++ b/SpacePew.Content/SpacePew.Content/SpacePew.Content.csproj.Windows.cachefile @@ -0,0 +1,27 @@ +Content\Fonts\ConsoleFont.xnb +Content\Fonts\NetFont.xnb +Content\Fonts\ScoreBoardFont.xnb +Content\Fonts\Default.xnb +Content\Music\mosaik-locusfruit.xnb +Content\Audio\Waves\bingo.xnb +Content\Audio\Waves\bullet_hit.xnb +Content\Audio\Waves\bullet_sound.xnb +Content\Audio\Waves\engine.xnb +Content\Audio\Waves\explosion.xnb +Content\Audio\Waves\land.xnb +Content\Audio\Waves\thump.xnb +Content\bullet.xnb +Content\explosion.xnb +Content\explosion_small.xnb +Content\longshot.xnb +Content\ParticleTextures\explosion.xnb +Content\ParticleTextures\smoke.xnb +Content\player.xnb +Content\player_thrusting.xnb +Content\scoreboard.xnb +Content\stars.xnb +Content\transparent_pixel.xnb +Content\Music\mosaik-locusfruit.wma +Content\Audio\SpacePew.xgs +Content\Audio\SpacePew.xwb +Content\Audio\SpacePew.xsb diff --git a/SpacePew.Content/SpacePew.ContentContent/Audio/Waves/beep.wav b/SpacePew.Content/SpacePew.ContentContent/Audio/Waves/beep.wav new file mode 100644 index 0000000000000000000000000000000000000000..422b9f94684c449056a396f80b0007eedc9db270 GIT binary patch literal 9702 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 literal 0 HcmV?d00001 diff --git a/SpacePew.Content/SpacePew.ContentContent/Audio/Waves/bingo.wav b/SpacePew.Content/SpacePew.ContentContent/Audio/Waves/bingo.wav new file mode 100644 index 0000000000000000000000000000000000000000..2dd82e8d9932deabf7f88732a17e7b2a40efc357 GIT binary patch literal 105884 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 z z_Iy|I4VP>Zpxtr`eT?{q`jviwzKIGYF>&)yXW=+l9rQfx6Z{xJwA=x(DvtXw4zh8x ziXuBG&ge=ICrFDGGjww-<6Q0j3UCBMh0ey)Nhc_$X()!3kpocQ=QA$QpVPXiL~0Vn zM@lE&#YF@BMR&;Qo#T9H9cx}|qMF++Q|)lqLQke|lHccF6mSQ+gK+?TY8iwNDG8~( zX*RL?V`q8I)#44G&b>bU;`~bxpm8cLURm*=uB*w>GQXAC8rAv$NM*`<3iTUZy`XNw zOZLO?ZE^hMwp3yIn)KB4hiO%*r&BH`{fz$woCkm6X3=jF4xm;;OG6TXb9Ohxfa;Ks z@ZD52=ejT}a#c)r-1fK!vEZ12Kw3RF0v`DlXefM*-|ma25vtLwv_4QdclG zGS4$s(!P>2iTU^>+;waUHUq;(ErmfsT=xKTxcX}Mu=Yny4fPM|Zr0`1i|eBr%Ighv zuWHZM7^)*`Hq>hBS2UNkzm#;zky?v!qiv?^fVaf&4+w(cfdRhHZm9E&O=jt1kyvip zGM(`rvyU1a7rGJZANm%29DEi^fJ{Pou@5MP?7?AWQ8jT{iSbFXNgopd?@!{vq|eDs zDG8~8;9a`p#c7Jso zwKv)?0?aC9;1RGoa$zfpzbQf55ym%WHOt2y%zeSr@hb&d0aFmpW3ff_lcaB02GRi8 z8It*_KBH%tr_H_J%>mB!1J12ZnlsM%)5&$`c?p4KASE<}V52t!eDz-tgm0_)P0y{S zgC)<3{`d0Qqvi+r!kbU`zM1y9<=3Cm)0MuelT~Szgo?!#qUwr5h326qlXQ%` z+^K?8;Z=c%zmn@_4`8ok@8gW(%@+&|nw9COsbyf+;<}OtXQ8VNxr%5m|p9 zpy)~(7B@X_zSc6bmDl!fd$3c}y<9onFw}80uozClfyvF(d$hOIt7H*TiMx$GjD3k~ zAWS9SqIT0B&<;~>5K_^4$YcLxSCMVERbgv)`2t(u$M6~S@7!BqcOwjuhR8mV2O_3K zKqK!(sbc2Gk4+RMr6-Pxn-y8i$1=?L1jNjc*wg9Y*zzq3(TuZ5|cTf#ogIbMM0Xy);SU8%Bz(GfV;(~SleE)jC+CM)qHE_;fqf(v0e$knJOWF(vd`sSWs+ApWJ@vEQwe*Lxm z)0|I+&s{$dCBv#V)t3Y38KP!dV`JUL+Szs5#!Dm=rZE zMj1CgX-rz5tm(ORy=cAavj(ObV=KdKtc{c$V84(;$f88E!iDkCOB2J>5Sfn5?99ID zms6aHzvF?uMqFWBRXhvWl{Y62NpQqeh0D3usY@_Y&>fe^^hfnhs_7imwyHU`aajG0 z+O(Ph)vl_q)kU@OjjmR`__5-Sev&Q9^E1#5ItlSZ&Os``so-cZ2=WU$9x((h#El~i zC%z<1#7#!gpy7dh*AQ!|ajXGml$p0U@_he-Pa^%eeDXzF3u7Crf!&L%<5>heQC!4@ zNNkia@~xF)Zw~eIf}F>!t)`uZF*==kfKu4=QNrtd-ukNPM8mauR0Fzc zU+c&&Xiuyr*L2fvaM$^=1N{Rj{u4lIG{QB*nE<>ASgr%ERj%#MWA-Y`KgLAe6!leQ zo^rD)Rtqy;vd(geeHEbqSBRay@hL!UutlO0D zxH?2EnD6g&UAFhPelxe5Mw+UOsm4Wyqk6ecqEqM>n@-x+dY*%tQG9XQ}n!$%`cXas&YDVf#*ynUMZr-WHyZ-orOP3~5JYxkUdgW$pTpnIbXi1+YqFer2q zcw^{nK<<0)6?xZqulOzm(m|=v0SE?q3bq7C$MbPF(I?<-p-XPGdAIU#XHk7oS=g`X zUmkq4zlVPq{c&*7$Sq+}QX!0gk5x`NiJb#|?@hN(*Z$X&EzW44*K)9F zbmQ&@L;b`0xAlt~S{g^SylbaQ=vkcE()kb{taAcG)H zU^3VcS{&Tu&+`6qjdD8~cF+Y&;xLD*gXandlu&X>B!hw=OZ$e{(DgMKr9%qvsWN){>b?x*^Apaz@~rY%;itI9tWD#TnNr84$#M)3a;^b&mIEdz+Jb7*nG)#xJR zEkqV#6Jje8ipFBo@coGmq+)UnnMHm?l;GjGeVC)@k?2DJ|Em|U;~I?=K_B@E_A45w zm|p+oZ^@Ucx8W~-J(>7;(c>Xcc09fH>@+Zmbn4~8*W=zj{Iu!&@xME(zc#-SOB5jB z3!CI<22OOAfW)v@XyCtqGKf*moXu>fy(8_zCL_*(cLf&(04+5*0PqFwkj~KC*%SC9 z!k`iAs6KJnq#^}p{hBvMfakg z#otZ(kuo>!UAi|TIV&@}Gh3d`&YqX~C+&a97voPx-wy8<%;%b!^MU?e1$GDGASllJ z*H&eCq5dLIm%*e_(gInQ{E9M9qtIQ{CvcJ;HLnE>oZkz~t2^h}mbidkuxEgR(~P+0FwUeLBW< z%<0JOFtmSZhj!$2o)-6$g_L{rY-=CabYF7tTWAjGKET#jK##L#QBT;ec+esB74#EFQwnxibt0|t=wLF zsG+UtVaxiqw;e|D)}C3KZRVNo#UKZAJ|T}ff^nQVh*=Np3Haor1U&8~dLfbxmq6-3 zd7(W)ThI%-4U?iLlh!Z~2s$G5am$hhq|~MyPhqC8Q?w~nX*V*BIeqgQ`^NRJ>36x$ z`CLNA!bD=!7QT#rnQ#qB2AjNN9BJm4y05AQ@yFiu6t^MJN7$9*uqSi+D=7Uk4rX6 zQKNZfay#DnCV_54weV6T3^N3;C+nCsf^Sjv35lsg(p_oyQq&3GV;Ulw!|DVl_%nEG zIWEQtvI|`Us&@7=*RHL3SI20HmrT{{x4#Ru zqK8u+v3UHju$AGjBCo}aOn8wJo$1c$-FtZNh8#l1qr~Eg{$bhChtuX(?Ttve|j(R{OH z_s6s+rT_iDQF5#Q!3?NkFNnab!MseB}CsGbwSY=aWif^CLbA z?()?9j&ON=O{Tryf5S(QW{)i_*fMN+->P(Z%pX1xNNfh9=0U#)8$CA!1=)nhc1fxqUjMQZQkS_ZIGf4JT{I~;!< z_no`lYVV4`&=4LpKeRsZ&?|9y90tco_k_S3*f;zl=EblHv83cvY1tX)Gj?SZX6(u& zXTx(}_nOyxX|LVcU7Ww1{_L56*R&Q<8W`l*Zk(>|tEtvz z8l~ z>QK$_y1VrmjXRpl+m?z~$*%#qf569soxpm@1qdwNawn%>mD zF#yQ+MX%b7j)c461KBL{e(X{7U#y)R%`J?Ynu5(%@9h=p8fyKg`lN<0jfYx0#OqXS%P8+cFb{5m#e!kJzIKDLTu(6t94_EY{|E1F zTzQ747q8FD-d)+gwDCzjanx94Oml2@{LF;Xgarxziys;HB{n-wkT5m*cseLY+B?7R z<-XJMc4rr)4338J^2nPJT>ob48O=%Q%=WNGOEtEluvA}SFTGrGx@KbI@U{W<433M&pe#TOW&Goj(;7yJ$7+CJb6SqBHNqOKWA%3 zWnw5IinEfWLJkL)`+Ir8o<;7*t^z09PO;oKL;{4QhjMHWMs`e^E!B6w?!MZM18loD zfu507f6{u^y*PLhdI*_}nTMT;oq;Jq*%5=_QfLrT2&sY01p2DyVV7X<0W0^=V5z6j z-fEht-=Iq|_Hx_+6%u7(3)0&L4j2uaxOsv#|I+|*`rF9WtPjM#*b+=U{wZlQ)lD5o z-h&+uWqY?;TC`53Od(cYR-e{vQy-IyyAqq+745~dzODK);9Ekmp-fVHqFK^*t9?M5 zt2w7>S<}+iapI{;mvMx1u2=7wW-rhtcIDU5i<^r0ACG>1`8%neEgNGsfZpK9bil;P z7YkN|-3Tv<`ViNiv?A?C#^TIX8GX_oB%e*}N#G|fNS%-+%qty`IrPx*+~IjcwEaRk z(^CJ&T1DZ!QA{#bLzs-Qz&;0Ut}&MLx+2vYWw`pQ{(}wU-weBgEg;<^FDE`h4+TfN z&goys#x)D7r`Tm}l(nN{2 z^J&Mh&S=SQIZuDkfdc6<)97`APtk$IMQK@?2eOK?!m=QlpVL>S6{Jo~Ig$Jq==z!y zzQoUqi-{c*Gc;yK?3eg;$*~zT0c(52K*8XrgO2sD?`2B65W8Kll@`FPhqQPx_Bw-J zH9}_XW#%*XtX)(_MVws#rt zOz-kOMgG86yl=B=JNyiME_;%2l3+ID4(gDrOfj{2d&RlGRV8WF>Xsj}SNdUgoM)G> z%dZY5K;L3M(HBOr(`))q8kIzLbs0!{hr$ zUf~~RBB|R+kBJS$X5wK23TuLG_V2LvRi{ecwmxrq+`O=(Ur(gL?Ai=bV+*Ng0Pn!a zunVGEkuwY;EaKW3_eh;6Z|JmhvLRYgEN*Cj*|xglk0e&vVlX@I2Zq3=qTk{+6Lf_8 z1S;V#9w<^03rX)NowP>A7}hX$F+0c}%Q0~Hyn4P=*ex0su>-IWpAdlAr^v5R=+Gp` zApJV|AhDrseaqeEAuW)$!yPxpZs~f3M9tHqOeZY6Y>oECju?mAR&P0PoS;Q0RN_9Z z8|rWsFaEUtB>p(_V^(o)>4R!-)0M6o`Doow^K3_!=cAtm+5^=gD44sr0fhg6D>GpK zLq9@RAnK3;tc>)D1rGm{;LLp7hcc*g$oCcNOHRX@0H`FN_dYTt>1f_qq!yPL? zAnXh3X@HGb%@wdm(|3_e2ru!I2xCc|l;QL?#&TvD^9G}cF^tv4y)0tJtx4P1OWOa* z-~mI959Iaf%Je6miP|eni-d@gzn{607%sP(RMowwmkGEKUC ziuh&g<%ay4j}=zyHi+(28u*LC)XkRm81Mvh6 z$H=F(6E~u5V7~W-b%K7I>YV&%d5jp2lJ`LHLwGc7qG&|; z_6T+4)aas^`qPhv-r)3ew@uv2^Lu zHPbZ)-B9x^2j9Cn@FBP~(C#^Azif=tELKFws}zaa%Vv-}ETn>MMV&&=Lmh!rAvMA4 z{;$3WfA7G+;IyFB|J0+guP~)(mnhMSXUe6zU)E;d0r)$@LB@XGt*~6+szyhHV^iaU ziS*Q78KCUpx!PXDyq9_Hd6{|ny+&p2PR@#)#ux?9w?;`=)$@N=7cKe>EuLGOD&1;L z0$;-r@E}x{|GrM#TJ_idf%zQqc*B!HuS!1+Dvql>*1&8db|rUb^)x6)>DHRxI8wc= zKw;paFU2J@-_`7sE$ig8b~b%zn%I)j-qh6!khOPd*PBK<=J-7@KJgw0AM+yPWB>l6 z)=W4#l{39#ihW$e@Pa;TQuc(`GtT3`Bdg%;$Z_}~^!WmQj37B8eRp~wSsN28_)B3S zhxkX^zUb@Kqg5|egEYN>r09)dk)cI5SM&dw)~fFJ;$c9Rc}V(GK2W_$cfcSuu=Pl_ zL%N_nqkcwtNAZ#Gfv-!x7ZwjF-&TL2qgcMrun4%WJrFEv2!0XeAoDKoDzJKF#OEd* zOhE%JuAS+I^o<$mnXy^@vd84a<=)MGl$(&-J4cq)D|19TDRpzw-1w(JvrEMPAM=0Y zl~@j<2^MMV)5B+b{gT7CmznJxA?fbA#{?DtvTZ%uIHPq7Dc(OA( zqGMt(1No9z$1D`~j@gh5yz2AD4;Vc}2vDdGzvr3tOgmhxN&Z#Ps1hsS)IM@)+7d#vz7@BEl{S zwV9)&{Q5(GPJNMmnDt>vk@0)iUwUwgo z&4!vq_2Aa8l4f_L-G6A~7}G$eaqCo!km# z_`bL!++@!{-`rq0Bp-1QbA}KiZ=oHb%K;B&75*%e0YbRr%=0u;1n5#Eo!UcrrEF1!vk9k-nrMHxdwGo~;LSTdH7?P6_Y z-D2)#45sU;rzyk9U{VL68jrwV!qwtF;ZG97C`0LcSbexso{C51E@Q5v)Z?xquR||` z>%k&eBNBzXLHtHGlXFS^@MiQuqz>^5CC5Fb{AGRNM}#4SxtxKN-Kbl^4bB2fk4a$} z=*;zX1&;xfd2B~WTP-PVimKULb*awU&R5qv|Akc&tkhhp43`eUI!>qxJF4mntCA~U zRfW~fY+BY<)EOi3bbpee6wB0UhM~4)UKe;Wx`F7WZDoz;Jm;9$hgqGB;dCkWK4lbO zdcTHSfI0+$_|mMe)$1htTBLPzY9`k{Y<$p>ClBhc*j1kX{yV-SZk&CF>9tOx8KJ$Y zk2TlY_Bdy|7|u@XZX;K#SDF>CR2=;t>u1jn0Ag!Eu18LS%?sW2jJFRpCmD&xuck{@ zs`I=@>Te5ugVewmqaWd~P_V4W{FsP=u?>ml)a#kh++gn+eb4nn_Y>qz&niq@AX-kd zBUXA-%_$m-qOWqECf+#N_P{m4iw2xbe_Z_?`L@kgxUIrI+STr<@;&kQ^S|{jcB>s9 zY`NAGfcuPNeQ0%A%dIiiM4&@F!qjHe7+0Ed%pwcTO0-R~M>}0^P+$ur7X5~_k@cT& zchvT{K?&OUlGxo*)uNRGGxt5Gn#1Gu6I6#yiC7U;9339BB>HsZSp19f`KO1LgJMB7!JGb8&oSp!YrVmya&^<&oV7>F;J=Ulgcp~V-l{(;5gH5q z>(RrgtJr8>F~E4Z!pvdJV)SFp;7SCqMTT%c&{?5zuF#GW!MHn^*VqyQj=GWghtr=| zz(ujNl&`q02rcM=U*Xy94!R_+t*+(H<@UoCy#b;XDZk2My03{xi2F$XmFna(G&79{ zffV_gFEKE|U**1H&C-tTwl(Ee3V-kZR{uHi%k=NXzso9~G?aI|>cQ)ZEj6yR02Sc< z_s87DKOjw^Hq%G4N;vEJIboy-Nz}U7Z}A@zmn0KXzonICh_YL9Z{{TfQ5j}n<$&S+ z|Mq#&>r}QQV^+F4?M6B&^HY{C+nc>Q3z7aeF%T6Y_(ETT-w$6MEO1BKe8$(h37QWo zrLsr~R&7(gRgG1ZDr#jy@vD}XHLL$_`cm-vZlUv5&*g9Dx=yb>z3y!F#l#z=`)$vD zybpa-{c)EEt8!~dHQTEvSKq3kHDKEQm1=aGU1aDl{3FI}{%28qWLDIFQG{qy^dewV zl$tm(X$x@vw?FP~RBw@*w}*X+d5*cCoyr%4zla%>G&X%%_Rd}#@=o`G^ab}V>od8} zqrAJlQN6xppUF6waw8ra1r{~}34SD=19)8Bp|Ac9563mwKElE<)@d)OF3RoF$C9gE zt2*AdVgRf6!LpK{Gd{(Ex-||Dz+k*7m@mqXFuAn(vb3;0( zgWW=CqBOm3UffairGpj$i_GK=p*xAWI0w21RfQUX24Oa0hGOvOV~BT< zM}eQNZI;Zn~<~CF3lkPF{tEwB?e+}o&vG$qnoWNShGvsRA3{pHbK!Y*r8O_Wq z?BP6xkQcc+c2HteN^xpt+H)YMs!q;N9+!MN`AqVTq*w9hqR4_Bv`1)wFza|}Sfu#} zups;~;_L%Fa{{u^Gf)x;76Ju-1Wp8}fQ~`_fu+KuVG7VQpT}No0IQxzXNuFiJY8~0 zq^zVTTyByL>;BToZ5!LnZ1OhY+c4sZ@+jQ{OF!2};Ct{bG#zvcWC8sF_lB;3Gf`34 zaDtK)PJISguIJOY(%Jwga6P^QLq&aoPlAzPL*OQ45X&V0Wvu3H73D`Ajxod>i@p+Z zRmkF2Fa}e}Zhu%-0>$ggp`5Kn_T z`vHxyb4cy$-}gS}zhCq&^Aq!@wZh%fr$?$=Zysjep$qRZv^uJ%mQ)o__(QJDY3Zv- zvdh7RxW3fhbO`kfei6bEyzb7jldK-ga9g&+?nJl;yTz`>u5Ca|Ezidb$)TT7-*H$X zg17^BADIglc-Py6fOM_Fr~LZ3S51s{TaMkrCy*zNd2VgcDn9!z!;;;}Tu zJkV``xLImBVKNwBnC4nG+EzMb&PT3R*K^lZ7s0*BL-V6Sec;Qmxs(*PSSXFEjNg)c zH+4+f!PI5Rc?n}``2J_1 zevk_21eggh_t-$+gG>GC-VN^Mu34^G?$zE&fxn>Pu#HF+dJQ%bmyS!uox=6t&ysG? zBPP%YAQE=sE}{kSKA{cnjTW{}qzvns zC#&e8s!r%GnpZe>dzJxhld-|`foT6)?^Abg7u7k^@!Za^kFdp9ubMv@pXz^UhiHzg zzp0%XvcAOl(X!OO-&x_xb;I1pTw`2cTztN*hW;^0EPx8(OOSDx ze)yfFE7W<63oJP2Kh6|RGJ7<$jMh#5L^y-JfPx|d&|=7Z2nc!>hDBy#D)Fnye`rgX zc=k^AOV&%qJ1Uuk!!c270E1CM(MQ^^6V}?=w6%GDdtd1&?Hc=(pc%0R|AZ_D ze7Jq-(Tr$T0e7e{B_b4cB|0KK?R+Q#}R@H@DDl#2`o zdj}_zdx86yo6qHPelkI{Zo(hbP{=UK!cuareSH@jDe;o_)nk33axvcrNgz@*$6B7_vgZ^Ar8{D!I^mtjHF z4dM$XH%t!foAT13nMZ-Xa%K`IHZS}pcN6VD+(_6~-vMixrbbHdU^Ztq9IsDnRJN?> znkSzOC|5rOCLtCRcGIVDw+rh;tnk%g0iKXGlahpsM|=c@`%k(%9U9w0E68%nBsb9Y zgSEfZQWadiNRy$TYQE|?>$?l?hx~-SLwHS;5jNwTC>Lxfcv0}9f4X1hZw^chUJbx~ zBb*mZ7gcj4!&+}Q?5W?^bgfgUDzTYCYFq^4I#%~$w$Yt)q#M|qt$44=tcn++x|+9^lJNthAou`{|@^V{v-8A+^+|J2<4jU`i8>RMO_1A zqg6lkYpfaWbAdGA`TmSNgc^Z5ij*N*5cSAzv=sM0lA3B_#ISdAk^pC1B(H!UCOjsx zNBoM4i#`$gHLQuVpIVCj2|E&M_gnoJLVBnNbr48a+sPr)KHxq52k6&4fv$$aU=^?c z3fbe3Fbp#6%HWv(!QB06 zL*k0U&aozwpJG9%XNV6-6{d)|fu6)=g{=ps*z+SH;im+zICN$|+H%T9a*(u)lt3)U z#iIAYrib=>e>lI{>+Q|X!QQCgBCrY~1&aevm(;Mlr=xXP&4-eYzYhO!{y1EGv1CW( zxw=iwZSBXz*Q8xN>lL}mVaop$r{$x1{wM1to7Y2C?$K^BpLgYl)Ceo1pK4UKhdqTy0Us2+L|mW~KVpTKXS z?&2hde~eq0`oAnrZe;GvEO*M9*rmdUbUW4p$?_TO^USjhYTZ{|o!(pfMX=4@aLXfr z$$g@2Q2nQJW^vW$yYHU7s(IP?Mpbm-PkTLBI>FfP9v|uf-3ZKc9@2ZHYg#wf8LRl! z7wZn&;uK|*ViOI;ErvuC*7mU|W zuAEXoapCCUL+kL_TS`IZUHf?_5{+M|YGs2z;go1ej zgJ6bmhOkor7YO+mdG~m0`4xivu(_f+qH^JMUT>z1)Ekon>kcUZd*&bT14IfAM#j@7 z(9V$c*xs-Mz8G7EeurwfVw%FQ9HSYk%hbQoHEYsTJLETH`Lf!cSk)Wd8FR6H7|`(= z?a%>)lw3t*H>_)4r$-zq-=RyhPYgsNpoGh`D)u9w{qbD{4hM<;73|>XXf(o3#LwVw zSB&+9G15?Dz?;)-lbqe|{@$(LU!G!jiu;SZ!+SgU6gmjKp3sM4rshz`lbqNo$U#4uo#BCqm zeL>aNG|h?jH-~nBXM$0ndBM?vRe{*h1jxS#G3Eh*Np2#WNR5PLxa*jum@PO0841ui zM#jI+p!BI5^mus1sB;B{qj!%vFt%u%Z2bBO<>SYVy*cX1;P1VUr5dAJxNK?$t^g^3 zp&|W2mcSD4WXE%(Qu#uxXkJ)bTd}WfZCP3c39#|>G|X>W(*$l@TQ{qEYK5qbQo6d7 zP=2Lyf6c)9NsYUkel*Q#>S=6k)HH2r{nU9)_C~YSlH^GODd2F-YFs|P2X_zaM5m%I zAOJftV7i?GT?CawHLz2NF4T7{g?NP0O|NG0x!t@d!8~D4SbW5?=vVPiQ+{TK_iD@| z^y%MgaK^d#fUt#j2(tjPB0%tSgYO|1P>}=;`6q=>3dh_BTU_^zc`Ac!h-|1LStqq3 zd;=j*k)JRdu+uP!sGsm!=qt#2$VUho+5#yC{|sRQ>0YJlx3jNnpyyvd6%-CV3Ht*b z2iogZT2E0C7 zBKo4x`0unGg4Won>Bo9)?R&p(|K83FMM8E2g3F=R5OCP#s5ry}Xbxz*Z-IkuL@0~9 zTALcG31xqN<9=2B(ELdHwcz*s5@$J~W=}(IE5C~%Gb``t?51iP)V0?$$d~W`?U(qa zeo~+)5CD3GPoN!$5t#S*M$%E>%f5-JXAR`M;ZEcy2or%GCOqm|v;_drM8{80s7+j- z%mR4j>(j8Qg^AplGs4e|?RW!&rfaIeW6Q2Y7+P4%vZY6B3_q@5c`l2kn zyR7?94@#Y^?`xWBUSxWr*Q>b-v}|^FV)rm9sOOpdw&JwnlsvU(xU5{Z7ibZmvW9#P zIGWf)KgWK;-ofY~@iAwhhl3A%S-z+K!J%64OsD{A1YrZ2?zy&qOnC;qexZ?W>1$`Z z*dC_0zc<-?(2MqyL(id`&<}{C>8IE~xu3aT+5a+J6b4|B_Y)B02-?5QC{7-C5@!KZ zLAi^+iuwwB0C@p91FJ^v!*&u#Ol}lE%XUI7AZwuLykr8 zV7Xv&(BLg_FLoYuJaoKsPI1EkS~J|o@|f%gjCkds&S2f#(se&VMdv>9KBa$w{M_*O zNX6Ki$#qNXY=DbUP_eyiJ}@boUo)bqrE{&~U*kDfEC`RX6Uu3u*m_=`a9>z33@>7e z_J|&apN$+GlN%38k|xhdNl2causkLs;<-@EKO*Q9?TNXT+>%wA$LuffXXt$+!ymU* zxR3rnd^J)6gTQiOqhUN?_4vcvVawJ#Om)ta>?lWni_le5sSF>lvzQ_B^z6)4p)ZJfzrqr3Iq+5S8JRsItIO{Elc1CGb7 zrP?{qM4ITq@sAT$Cy?VKV>!{iBiDo<2%`zUb7nJ)q(;nnm@GKaJI5t-E^xkct?z}!QY^RI26<&dev zuv(w13)k{Bsp_RFg|b4KqZ+JMY54lb#(yjW>~7~8&o^IFpf>atya9@U4+CbyW+Lgx zRfv=DM%V$E0Tzkiqi$dZ;4cyT1M`3FWHyj(Hxo~h>L`_r{=CQGS#kPgct&w1DpQpT zPt1wl7ZYj3-6_7wOKHvTFzaOeUdn>Ot>~B|e?^F)g z%{6JQNat@i#V7Ssf`!57!FfS!Fci2D>;!N$ln z@e!%7GUw-9&zYR{G4)9N-3TK8CbON|O72IVMjk-slg8k0qVgaO-hQ@y`X#D8^5&i- zMY&3+eQwxm!k8zS-WopY^ct!9xB8`Kif)P_-E`25v3xRrG)*u%^g7*9U6;Gp+G*|d4UET(K@2=yOQ|F_WAl*zgFFsw z^H80aYzS+zrON!oyv>|tt}-n%^)jsjlI%y8@3sxji=Oa+8^nYkLiZyKppItc@(+p{ zBHu(;N3)}ziyXWYOgg0i{|LPk*@#$zRG_|M&f$;*Eb%gs9*iKh1F2LQMMkZnMbT?$ zkEk8wtHgnLDs}|A6?q;(g3BO#LeIVV_7i$vPX=Iqji_Xo2!Ho0X8j)cmsgfhNvJtg z_oCrw)4G5b{C^rPuN)9$3Erc6o7Nca#N6@4ROgQ!i2 z6_SMwLZWC!cwR(qgh`YvRB$HKO9=0fS3ti#muzI?1WmMJk92@|UPn)>w0TL>&PHOR zv7xzPSHu1Kth&B6_$p?Fvn;thvofI;)ZDvkpkk=ujQyO~5_}EDLpMQ}L&rlm1FZfz zu$QpIuvgG92m|B_%=WkXB>uOd-mo}KC22czDc>df6?rr2O=Lm1L?Ge(0C-Y^h)KB1 z=(Wg)a1jhhH^7}CPvE-mzFX+Xvg8>aXhO=bim}Rab+Q3xlY3C$YUFeLWXgT|XJ!Y` zJs8fmutu`Nm}BWrC@DlT_8ww0gcvgVXZU9Y3PWEYCirPoEM^vF8qg4S!`dOw!R6q2 zK!+WI!4qDQ=h6!46X+|cv7~ma0r4EX)<4m;+p0G_)_hYW$#{~Bo!{GUw~c6f(pKEQ zuJfKaSIU$}s|IK%8dA&+R?9dc&3v@Z60regu#)jc`V*6m;q1GY2 zh?mGN^h!L3GKIN=*AZrjm>bnQ>Qlr&B8)JKAI+P~yTIQpED$XWM~1%*P1JPt7FfByV1zHaH~Y3$6^B1G>PP;J%O_bO@q`z5{mZDku#yCRF1qcipnx zG4<6qYo4i@8ia0#G17L)Ju@hVenH*DttE~kZ>P+l&Z3pk%b0UG1NfYyv4U3NKO$&EPNXT)8JQY+6kx4w z;W1b>lxAEWqIZbr=2^~YU(26KPIk;{l{S$ZU(`RTL)Den3hPqq@r{kmQ`*;wOJsPJ zMcdcdWmZ`?+gltFu03w8C*7CqzviFlpX4j^_*_ezn;l0S-OfcGvmXx5frHUB+(^Pp z;x*D#@j{(zijJmtur4oT{VUq$;Pq9tHw&>2jd)LqoKgy*P{$a3}cL`rXQwH zrWPZ?a9&%c>Z>^1!|53;*8>Ekd{de2l54#8z0c!Y2~3BK^cDl(b3v#Yf<*#K7-Bi) z0{shf2OGj&%WL9OgoLouVQ0gzVMB!51!02Cg2%#JB3R^r=vOiCV#HCf@cFzgbTFX< zaT}!aeQ^7osm@x*07n!s8Q5V8H=NPlRX!TJ^F*x%c&Jwum*na4pYk)x`$qdzWsA1XHkTNtYOM-!_ks>&^RzleRcz(j%7*IL z24b6EGD)?==(C^oazf1zDf~O?H1-XFOnD2CWq$+YoFU=qk-wvuG3#S3afJz+l9E&Q zq~@fBr}a<$o$OCs0#FX;$8SzJle9MVNXDe>!MSa@rkn*?yVCwmR7I0S6S+=0h`b+| zuiXZF2eSD2z#h+GKB5<^0y1A0wry?WKed~x-dBvS7+<-wdVigvabPQ>BdKe(7$%94 z43gZEZ0lA@fAy3o?y21BGn(0&t?J$?h_V2nZ9i8sHRl0OT(LvywT5J{^JofT1?2|g z9p{1|F}xtEJLYd(AbxMc+=P4a!4B^gSDNFn?VL5r zI>_2$h1yFTx$eHc&%qgxX82cB14e;`;bsApw*vG_)DzSs^eW7C>PcEs9@$9t zQbaTiy)STjw1cvP_yem#?f^&}aPVaCH^^JqNyKI3XyhDtGuYryaZxOZx=Ka5bZ*y> z_Oh1Rre%$n8}>J3Ha=~7(qd}^cmC6b5TEIq)cLLbP}{sVfBSv$b~#9Y+1@umhxf%! zC*}bsHDFQ#VLNUaHVOM4TZp@YClhM$-*7Z+2Ko~6BSMWBhI)#r#pjZD)6$vo?0%e6 zoD9x%Hl4MBv4W-`%L!Al8;~QQ385jr7p^__U6wt@T-{bxM9&KG@iu1Dfx7?IAZiZP zer*`udbumSXN5Y-(8p3|=eyVW9Ko-UYk-4%BmN7~PKqI4A$=#N6PFOHN$aVJ%zfMr z;o%5WG$iKV=!(d7;q0(g0u{eW5GT49SsP1FvZSgqo@Oz#g<0zK<0(TEa-*+>-R10~ z?Iu*B9z*j&CwOG3ZJs#;=X))juoGHgD52|jeQ#AcFV9j;) zB=rdOF0~S9S?|@1(cD+>R?(F=<+FQk$~MWYGD}ZC#T}&{$ma>#NZnEWLE|9HU%Sb@ zGSCDrf`34r!Ng-;!`VHSS|0zH+yae7Q?YP(h@AP)A z5s&LGl9ej1YO;*SZR0)3p(n60=yn{3IGFU9R7aXXzD zF>f)ZGGvTu;P=0>elvH`z2uGfZK!=vW@x`p;>Nh{I`ZxNtyuF@{Z93ho)hAAZFd?c z)t;!FR(ASt|KFp3$$k)i_`m=BvEbK--)Bp%m!GK0sNGP%4QO+FT6=ZA>|UT8VL&(t zfd<%9Y#;IfdL1*0{gv%zPvd~O1l~0MdBIlU7vW$bN3e}o%o)o*&U(c9%znfDKaQ>{ zN{XvnmutI?3p2O{cXua1u;32C9fG@S0t9z=hu{Pa7F@=?-Mg#H@A>ay@xa5dW_4Gc zv-hWUQbll^i6@0^|+Jzi|wyPbpL2e zG*8$kOf@EhxxidtDeYn%ukUMIX_{|Nw)C>N%=b+D4Rf@;>0$rt2H_LJ^L>w9K|5A< ztK?&GdhyyKb5Xc(bkVh9qHMbJzV}S%N^FKa6W)rQC*moF)-fa5f!dIsFt@k0N!XL5 zO_`EX0{qzFgf{UXZ6B;%tu?KKtso)RcG@;LZczNwgriBWlo{#4j0zS0t$49gL8Z}^ zwp83+;c59M<(cwSc`kEb=J^b)+>O+yNn7LFTH{O=^xZTAXbCR@r;?W2?EmPPTg2yl z{a)*<|MP**$3D0C{NiK&f4{t5`ON!Z^zB<$cVAq1e*XF17nfWaexuRff84V?y!+_c z<1PRE`J}M#H&gT*n|$m%CK)(Z)_#{ z5UGwBkyXeMbSCZv>&kuIcT>l>8%ad^+syomP!(;}a#j0RVJq*gIK0BS^83oiS8!I? zRq;s0Llx39E2dpf=wkj&^B9Mry`n!RaNA-7g%{EyRfH3;e{hVfMEy*EWFBj3>uFPp zwOYKI*fk}P`XMbpt$tcjiayz!a3HR?wYs^!aid38|>-nDzeus?N@X@e_3u^ z&faWuPVd~R`Hc#HF0Nhrt!#wD>3rv|}9u|*qtA)`z^^T8P5PmFuTIw90^fWFlSz-H zIPwg+f$Twsh!#X9z5wk8uTutzZfii=)pME&L-ucw+{qZ-sFB?63 z|G4nM)_b8lu@Ld0o)Khh~J>w*+ZCxN*703mPqKSiZr~dfGZl&8pSrRkW3>nUrL$q`yoTV-e_sJYT%Q&x`Hg zQaPGi$?b`a5wd^=@F#R5ah~p}>7v`M?_)S@cx=cuWEfW(Vbeg<1XIYEZAj9;)aaO+ zPp$c_l&dws-M$klS<4bmr6y) zZ0~~5jMztMEM!A7@I2xQ6=L3L+ZofWnuH_CYr$qWBBM*jta9n;M^oFTWF`+v`kuHV zv3}yqgh~lL;+x0Owl9|B<}0RvalLV_@n7RSa39^bu(qCYwc=OBTjFoordiq>e+Qa; zH+BaKfzE)lQ7N=A@ZC$h75meYeTBF3#^vN@wa@x9>sI!R+?DxfKpW2Qr5gJ(&=U2x z`@45&U_f{~=MW6aH%LKdVO8-u_%*Bmb%9fTDqI&H00-bK#EQ+r^NBXpB6=_zyEf0uiWy%}(wJ}xX@T(@kAYq7syWHMh{nj&|S z8%TDck?>5&ko&?lNrSGY^>R{Kdbjc)E9|dOyL@^EmEI?{P0GXMt;yY!Hz(;5&%~{^ zxDEZajTwT95w*z`)OBXKHp6hlbleiP9<%MYnQb=fJM&;up<%YZsjjtlgT|z}$W~+9 zGMA~U#8HG*j>p~wdH18T9YwkMFY-Eojy6|u4f`a(LeKD*1davEf{tJ)SSR!)R2=Rb zO#m+MfOuQ(p>BXi!e8NRcqNkVBj)+=;D?b>w#oLGht2%ZSt3PaJo+*1CK_(ArlpWxBxX>2Fn9Hf_jBHj~oh+-VUCA1Ln z!fjy;ZVG>bk0E2xeDn+26fKWD1DOF&m3#$(+8{mgVrsl*tbUfUmkBZbV<^x$H5uUU zZ$UG(LfxW@$i~EZbP)8XbT8IDvO8D|@Yu!vNr87DwQ5h~B1q|+92>x|5R#K9HZEG?>4`p#a# zmFvFjx#MZ-x#-^E9`E_hcQE)lxB~Y4POqe{QETWD;J})qBMoWB z*+#ozyk6A=>B&S9vQ_;eWefNCS^Ovdgm6>5C!LT7D|ThRnhBMM7a={c;lw#AmwBRT zqJ#9c^mldH+KZYQpedy#J&AftHYHCHPCN+uJt`wpp}pWX8zgoX-ted(3CAU$@&`N; zi-N3xRZJ550z3)nRBz%OHV4f|qR38kHdY583KUJJk%ej%k&dqQr@Gpfb}AeLl*4bc zpJsQ?Ny@E~H!j}}v@AVJr#O;4tpk5V?(@IN?V&0Nii${QqyyX@+Msq*7pP|FIW!9X z3%m(!pi9b0X_oLyY)5ol#20P|FxL-UjGrPkRMU`(cx5V;&D9Ptj59^eqGh&qG1w*U zSejX~%?Hf0%^g7YZG!2Qp-4AhbAkRyRKyf`3uFh$8+V`=@Mq)-S_^B3nXzj?eKY`F z2$U)X=pwWZa!S1?&Wcv?_ja5te3w1y+xyQ|K6mH@9E|r`uxl=N@ zR49AueCfR(8o*QPL@bg1sM!G8K-!p&n)aLefKHH###+FOk*bX`v#FaPO|c^cE3Ksl zVpP}wnqteVQTQkP0L8I_ZmcoEESM`;9+?x(i%d;T|3gjBSZdg2#!>NW;`Ue@nr3Lv zk(1yC;?+o-Kx6L__i%T4&wlR^fA!$YQ2ogK=sm6`?-Pvjesw%D6mLkqVDdqWZVi1m z{b%3?nW4#LTG21bt;7YqJYI}F!;WB0u!#W0Z44pGNpS;D#-?+4>?yxTssK@di+T=z zKB$dqYij-MI;Jl@j`{@B(Y}FgvI}O1?Z?BrbT zIBh5FFUsoMyE!skt3CZdOF_$MNvxH~$|IGk>MXUrdR2KV-xJ8VTfQ2LN9gBH|z71aTwSUrx(c)tX2MyFu1xT5BF^ALs_?pXsX@ZW$&T8=HKlR%Xuh z)Ob?APIH%<`M+IVg81vvfsx{{A@WzGYIIX{d$d#ZcBDomFKmo(kuxCG;wSkKl!}cY zQ<)S^XYE04BW(vwgxO3tq%z3f#20)S-Vt|TU9m1`F>HfU6_eCYp!lV+d$AwJ+jYiMTZtbd~Y$X=oUByZx)u$t&Lq#4N2 zQ{Z>-Y&Zsugg&a1)n4j8bqKT_u7)aDHZh;tM8Ba+fU>}V#w$EmDUje?QdE-j`TOaw z)4$T+(d>WoE)^w}ZFgij^{(HY=Nz>iryN6E8@&Et%h-E46pag!bxNbRRjA39*wkxF(*(!4`3e zdQHus7cn>3FPe?o!`dI3Om+#SVh(7E6ya`$to{m~WZ<$H?ilU(+fmKA-RW_*blrFT zzZoIvvaAf zcrJ1STCI*!=RjML-|;M}n`WM#GUc0{mX6jM)=!pomRXi-mNr(eb&Kt>ZL}@Z3SL>m zubM7Y6|56fDpe8UVmqS?BAdfILeqoBzzUGmveLa4baifay>kEK9T^xAp2JN9oaTQ@ zL>&&Y#2Ts|d7*@eSNK!0d~Os+ao3|gqK6`P!z)A0f^03uZ3|sz{Z2!Hkuo1MZ#2&|4K;MtE}>iFe#j>+;q#&ik<4&*hzTzY z6OmPsP-IB-YjiVrAXZaoCgmyFa3y>ywTLz79D0|5GIlnU>NHvl+Z5#R+$J&!FMb~% z15%-!$YN-Y?B^#%`-JoX$lut1E6^a^nwu`PkjJVwp*C=P*Z^zc74TtXEVi2nfe!Jh z8cwrW)12*3mm@WJU$j1Q7~Tl)g7?7<;r>vb5|-`>TVh9}Eg~z!Yr=IR^FY>~z~_sb z~X>#T3je&pxWFR&IHN=r)rD&0_0x43Ol zhoXzcC(CH}+(2IrlcVqhybtw=p3Zy%c+V_NW!-OvLQ{tIpiQ=gtlNNII>de^f5xJ4 z9Q*~=W8=wT>}-9!Ic9wqw>y48{FS)9wnf&mU-M&P`q=Z>TEQlppt>kSjG~g5 z%IrN>VH<1y&@|9mba8szZ~)-sLH%@Hea$es1)(Cm+C|ojo%kZ|Vsvk0dN?C=0?6UJ z0`+`jS9Rwe$4SQ!=L6SsPdk4`NE6MCbrdTAUGf{{w4zfQ0mk;S*jsERju-cfXT-tc zQDHRyl}nFq4$lrL!AYTm;oVU+c2umajDe~nYte1kbbK_inKaT~hSoOKcQE=)h-Hw) zZoX)GZ0M$&#!jI|;2RMHDwBIiRm9~&HNhlMLX>~OFX5Z=iToJ8vmlBql>+z^&N9_? zH;fZ4xNVNjVclWLF(n%h=(p+=?S1WjZ5!=uO_+H=72tm$HC06%!ms4kMyEv$T!Yw2 zzJj+~8fn=kX4BFdW?4*haosm?4!@9;!9Kmiz_z7om{pkY4#A2+?i9B2N=XVewA| zJ#s-hd)A7qs@ZjOhUQMpYn}f&e?UQTL2=>e;)kWVj(TepwxPGsKQKGKk6cX8V#jLR>j~pN6J$xZ zMy+#f=WP3IBW+sSUF&q~Pu4=qD9d(pGgBACdF>45Z{jX;9sGWixana{Fv?#C0H3b7JxrkVpL*#lMf6W2Hmw=Db6uK7n zMNjcNq;+Zr(ivpst|a~>Qi&>f5M7U$;FD?(kRDk@nj>08n>bypDy7S9l>TZD$PYDz z)8X4tIV23rKO90pC3}q?9q`cVl@K~SCSyWsOy7VaYy!qZj?+@<{?@Vta zZ#nNkujtkL*91C+Qo(c83+#On9;ABl2l-|^7t4tuAn)uJuLGOAR#?ohinZjPL`H=> zhh7GCq4wd4(V2X@Tn`?Mcc33={?tD;4l*yd3;?O~|AN!Ge*BYoC?Pw(PP`>V4h9qt=^E}>;@IXI>YEhS3bR!s zHjErZXEJS>=FDlv$7brP7#CVL#GOtUl-NGuPumpJY3*HV3$_3*P>-nd!8z3uO~tHO zA_}%^rK_YDX2;HQm$_eKlffQ;MqD7#@_6~FTvy3a4yw~31kQjr0Bu^HRK~A~;-Tk0 zjYoE#cSP(r?AL&n>b@AmmenHl_tvP01~b#>oI#{#Uz@okv%t9+RD@Kj~I1r)i_h(Vf-Z)OOK4Wp>i#=(BVu_LVkb zXkw`p*C>HboS85*j7x0?Kb57r zLcYuhDR|{J&`Bs>{Vs0hB0;w|#jQBcxN<$3z?$$%pn)wf%;Fz$J0hDyt%CZXHPko) z@|DGQ%3bIn5=Jq+Ch?d=7?)f-Bx=m^&~g{54e33fnJddFN~x{_eKk% z-=jyP1EUq9HKS9bzUXhyufDIEk)=&wvvNMW&$NupoYos7kH}E{t2$A$lQ$viF!_^l9P>a$Rm4^8|nPdYvBo zVEbpg%aI6@Oj-8|*GlIs$0hr9`yt0>;E}8rpuC^N^)=9}Gv$igkG0 zpt!%SOH3~9RtiBWrKa$eGjV@%Phz<|A^a7q8TsbZJ1!JF`7!zP+z*pK)c)Mz$Hn|+ zpu1;*|9imWALLb>N?D821*KW`bkD|M>sSr>AY?^0z*E&el8x^d-5b`1SB1|Cq9|{KF@k4q={K1L>vr2FYYlTd!$xfm`;eWd{cf0SosbBpjn1ITU&{Qg z+`g1o@%zkw>XMj#0JGTzWh$pdlCK|~8{+&GeYL%Py(>T#PICBe6yjG4<-`ZVAs&tm zjv69k!n?z(Bjvbg?3qwYA^=8TDs_^sic`ds;&kb_Osh>G0aBpu5UFkebJlB+_}>?x zBlqzoOl5s{^IY5N__Ya-6ZRy`0)HzfQc2#VrOBg{e@z;haN4%Re9+JoaCOx+6E(bM zh?dswWZhIX{3SF}+85&^@4|RwP_#NggdM^sVKd)`n-M-1nC@%oZSL*tGX?0-negwC zCXu4h@j#&$bc-O}r&-O8M0XY7w1on1>jz5UNa=eP&rOLaM5j8@Wj z+4Z1jXsaR3^x6E%njfc4gp${%^iM69`Xsqp;$oZCG*jD_u0}k^hTg>7YYaU<% z|9CeznUY$0?2n~ijGw=L9`ntdt>jH8DlX|<<}MpzukSE}r*l%UKUYht2(3mGWDR^> z=_d9D`r=xg%Da_e_*_jz^NIMDAn9mf%H5>)30G|wEi=v4&3~F_So&HeYeSpPb{w$B z4XhWfS3nLRk$5MGOCFSRGdVl4AkJ>CrH7f*STBIrEr?VIboRI%waVg4-W2^@biU|o z@$piRy`Ss2XTI-(-x#>;zv%1fEdtxbVAsDc14vH&9(WPn$I(KeXqL~(b~zvuN?YZS zq6OGRnmS%dm#2%z`IcaMni{(y%uptxBz**Qxm1X&1yaUe#W##wV;yd(WYJnnZS4~N zNUD;uJf(l~j)d*jdxkq80lfpd4*CzcFwe{DU@GP+By@riQO~enn zfF7zhBI*!Ad>$lPdazPVBjU!<*RYXzG9>Q{bJxl_ePsZ{W2@8Xar!4j_V5d&hH@`465Rn3QRWm@%o*_G_>WLdPSI%BmQZK$BYd53 zg6Hv^rnk1dZi>E+vAwyg)n)q{C&rD6n{JzCby$+EZNN90mv|t>n0~Qby^M+FrU2z% zS$qZSdSf5m7Pb+sA&aozk*Dgv(qmqUI>5XdAHEP-6RR&ZgF@&_q8`PQFtHJV6<@40 zG|BhM)y#3I>_h3|(qW}dO8JsQB}0KuzOaNVy=pIT_VDcUEel)^CWoE}^8)|+bA8)= zmHh>Q2jP>kA@XYE75Q4z(ipJZj60NYAkm+ABvDF8OK2EBHtvco!*(7#gEuTmmfy^G zO!ZB;X{2eqxg2n4WG22&)}~EKKb5{JjYt`q@X?a3f5JrZHSi%hL2yOOLS&%3_r2?> zqq%)(nWd~=*@m(UWs}O*l%geK;lupDatpHWXEo1ikTouAUDmWLTh@agUw(wMj^#E3 zO;ve;^Fku(0I9=ob)*Iq`6?44Lp(p1#TCbj4wp7}-SI~vRfR87E#lx>-dL3dNnN=Gtxq_#>pW7%z-W?+n7Q&;ORaed;8;xHR(o};HUP3W2AF=7*O zh8RKA!Cxb_)MLWKNTtAT&lcBIS5?mze`ch&uw5OAO{aFV-$3^!V`yU#^bPd++CsKA zP@&z0+sJogv%^{bPF~&}@A(t7ynYUs#zg5Z^b(cuR^;EnWmuj(NsK4f5f)MZy%GR33nr@oynrd2Br_slNr@FoY(O=Pwpfm8{&{XkG^mK5vuZG9r+Tr3{dG1W_ zI&ea+3$o$afcZ*{HRNr=Y2iO%DPYXn#|A__p_G8u8*)lz(@QoM%`6;V*tEz{a-{68 zGtIjsa6Y_=(+TaR=86S+5C4w3Ff;LxC?KX28}aGbTvR}Ypx?38WOp`S|HX19Avc97 zm!Huivrk6lbR?xo0%E;t7^4|Q-NkOf<5Z1u2Qa^@p#^ATavFO>f78s{+9tG1{FG1} z_nT#%eg-`iQH6aW#eKVMa`CF7w31XuvG;alk<t&4dd1*1-c#wJ0rbMD~-c z((Gz^p@Ln-UrX291;>2Xa?eR%W6>vJ+cTyH)#C)0*8(*Q6GZe~`VYne-;+ zXLc*wi~Y>ZWo|NAY(?E<;}q+*gw`qcG;_I=!0op+>2;jnyxj0gE3rXl9@B~m(j(~! zl$M-;A3&eLF}0G?PHHNYalb@X1b6$Mx@&{auSV&$;*mwV!iD+Aa+hcK`7!QWjj#0A zk>C1edGd-%UbxvXE7pVsJeB?(Xo`AL!|}i2kFrj973~s!0@RG3g9F2tqlb8pG!Qz8 zULpF>E7>mE3%dXGcMY429YJf;GmelD&}o@?HKy^jo-77>=9=c{%;WE&yd7t<;h&;^5ec$l}nj;QnCqFvD#T z8Y?s4ztNA_1#Bal3)9eF%58b0Tp*8D&V!%mCeIU%{Hf^v@WD`aXkX-5?39!aZ^S3j zYczLsbq&>x5o3-Cwk!hL?dxzT zMl`}{MMMz!qm*p(Ve^=D8Y@xHJr?aofuML(4Cxq69s)gzX&-izHhq_xjU)g`Q z*L6&F3Eq*Ry0O>NS!gJF6+4GbLx;f66;_(bXK?i+r$UQ@Hv)qKo59ZK4mFE5;h#$T zpru$9YA)MechT_7^wjd&#>IC^TAQ*tEu229+^6)?)K^JI<35<~X ztO5D`>!5+k260tvS0pvmI*{TA<;T9yzIcC{-{BkOyAOI7oStUhpL{v~gwXZKfY>A9 zpp+|*QicJK!7SM#my-|6r0L}{vlfc_1Or`@7i4LFfF3VqI;6JvE4{VSb^@qozcd)g&akF zrAAP7$rE@#;GVHz$8iJYW0qU7^)$>w%=0TFh|zF;$0JM@}WKW68)qrHk-;WQ)J5 z`H8xR*c06E*qpTUySyTRTD0W!z4xA1>AY5(K_K) zpxst$C~ped9(1R&{G^IX_ZdE%R7!Jq#J4D4NXlm%s0&$X5Ki@KiWuCI=I05f{+tmNtC z*M`4yox}opxOzZ+2GmuFVr$;dE$94P4ZcXYB6U&vs1Jbt<(=|aUMeMvi}*F1ArcMz z>K)_USGu9-ML|h{rFf9NySHs*tdxatWM}rH=DWtjK4R>2Hhq=pu4$nY^q>;e=+b}F zc3|&PkBPT9k2fGI(;Zk7m}6YpYnp}3UGh0l2K&?*%5J&39FtB;z~(CM=L@(9nErA^cZV$IlRl%WJ{*F;=zpa`+&5MKiSl%DG8}l9)6c+EY zuXiu?HwjOAM)*r-k*~4DqH#=5v-a)_JyCaY9@{JPX>8 z@{+rzPESiruav$bt$XU_WHoVN!n}ASzCrxg_{#~y6L%(JiJL(4NyJo3Uz4p&PC|`P zGdWL?W508Kfp5kh-X5M29v|)%#=>nwp1?O>#NEe1mh{XYm-W||8Xv~LUG?hfOa04> zFMoeE`EBhFe|*WvTA0_isB$T3FS9H53-oX>DpNu)eWWG3$(iE)DR~e}H79o!XoF4yLGOW!&Y2SxHBer=+|{ zDNK2rvMHr;%B5r>DVn$^;YZvJYkl)n!xHUU<}}ITSCDHE1orp3Qi-sTm$`w_D`9PD zd!Vhqg3s!8xW~GBIyRS@ic<6FtifNee>(Va?Wb*DcV?#+O?F-g@Z4dkI?$Nr%Fl#P z(QmZ^%}%1?XM*$&zO~5Wg;gO`Mt7G3j

    Mg3Ss^}aFCM)mNK2RE9bvOs}ptmwA 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 literal 0 HcmV?d00001 diff --git a/SpacePew.Content/SpacePew.ContentContent/Audio/Waves/bullet_hit.wav b/SpacePew.Content/SpacePew.ContentContent/Audio/Waves/bullet_hit.wav new file mode 100644 index 0000000000000000000000000000000000000000..96798ccfb95aa95b0fbb80d26094d6e065b231b7 GIT binary patch literal 25866 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 literal 0 HcmV?d00001 diff --git a/SpacePew.Content/SpacePew.ContentContent/Audio/Waves/bullet_sound.wav b/SpacePew.Content/SpacePew.ContentContent/Audio/Waves/bullet_sound.wav new file mode 100644 index 0000000000000000000000000000000000000000..fc02f45744284c0cf1e9c3a3d803fe440d0bda0b GIT binary patch literal 18524 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

    #o+kQ(as|s61R=UuG%w6rV17(N*XqJ3h2E7n%yz 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

    j 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 z z{D7jixzo!TiS}Z=UC+K}--U~^0X4@{w%-3j@m`Amvbk`J+?Q==m>)yCIVk)^hUgt@ zBH0UnnnOWS%MYN!ph-fAY< z@X9$++&|}GgPeCJfPZ@#-REpU&!dIgXr^Nuegkbvb91monislF zM;WQMWsY-2y`g>btz%QU(l-jd{bco#+FrY;?bcpHWjaDq^9FvR8A3jG;eF5|6(?ir zr0QqOoXhvd_nUu&zX=-8YJtAN(lPIYI|8Hqfz&L;#z5l@DSF$PMF`F<__uUceoEfU61M9rs4~(8(*=(OmIN{}tzR6|C*~LO-0o-_$d}l!e9Kni z5V=!x1V2Q96u6J-$w!oUt*zD-M);Ti=eGN)p^BkG4#+2!zS=(DTz}1g!mTnRCP!@V z*kQ5NVvon145kRY(!M$gd&_b3Pz#w~7c3dKiF4H ztD@wWatR~dQcgvCHdKv;)@1vUQ{3wyw4|DEi!xyV^t0FMS-$aJoWWmravP+3QggCV zqSOTC(fP;Xr4xkes5+{Us4#$>p#dbF?yx>Ny@dHNi9Dydb=lZtBqx8SD5TIk<_GfT zpF?$8#pd`4oXAXKE-6;3%RaTNxIjE5q;kJC$3{+)jWdRCx|Y5cW^_7glB;e?$n}Y0 z7xvUav=3Kh4Xw|g(ha$Q@*g_Jj?Mr)hH1?S23jrBQ3t?1DFwr$U}!|*)h`PZ$A!*E zKEtU#V84Kj5Q4gI!-U*SS8y7wXLB_{9jV09*^QBlqAqzS?UN$(rWJ4%G$M843_dN* z4p}o`RxM-)_Ry(}XRbM_vop*w`jEZ-6Kv?I5C>cO?{E)1@OSjPzK?KSYWnYzb{Nmk z`;+_~RGm$DY-4eLH{<-aybZ!SK@qAz3@pl-wt>xFa_Wz}?A8=gAX?$!Z-zpBBkoe1 z#*vDlQb~i8R)rRa?}XciuZI>>SN9J89Ic)^LtsGXH5QU zai?ebslo~@)2B)Wr{=}&`?R)G#HyLd~g1LH2M@11{AuzO5_m<+)W{_OrOK3&_Q zD#{JqqP6I3=HWGaDNV!?($%Z#?y=Kb2@rNam__UnFgx<$4XlK|Z#P{_KzpF%$Jch0 ze3NEOG(SiwNC2LzouS+5qqS6TvMs;IR3o1fWIyx}mfATt-jlqa{-1xd!}u{;JXGe( z51)>HT=?nJ=gf%(lMaTeL|2-Ax4+O=tSau~RIE;oSDflfL;ZA2s?1IC)vcahegUQ7 zSJmO|eJ7?6rci^|K)JNY&IR4A1`e&PB%F+JcJrsa^D7l|z?`f5q6foy!*jzM*||>9 z+v&}sNzAIwBrQs+AG#a<4vJHD+$I~uB)J$`lay?9d-)$~_Z5?=R}WNh|4E1Cf&4zr zm0D0bHlQh}fMf0}WBRJG4+ofPRzxFKj~n7BJeF1b{>>l|mKAow+&Ye0;i}j~`dePA zrt+r@ejigK<_z@iX8z&Y6})}fm9(m&b)eg+uKh-4z+Lji0_bYnX`|IWN&)J-ymApK zg&6VnLwbj^Y_>BR8B>iv*rh#>`%@5rUXT&KsL%(Izwzqhi+)wR6%Faa62EwQ$ za;V+O-gt{wqJ@*!E{&gdzg{@%hPyI>JP;0r3zHZ-J^E13&6ep1z0(H$5?b9-oc>Fg zJ(Y0ku_>AjH>i$s1!_iab(maK+C!b6QCcjv5WZ%Wd-eyOK$EI)J)YCs%rjHl9q~dO zu|v*9uPfWeSZSwtnjDHIN_p)Pxw8lTd;M?ysqut}em@TT)wubtlH1i2TH0s+_jv-@ z133e}z;ORiUu7+=`U7bkC#2ulD#>zXIi5H4rZiLL4psUo-%!z8XmpO!;SYvQ|5C}S zWMyjQlLnFCU{JHnwj$5tiLy3qYB-^*%?p2o6CFYBw1-;7j`zpCpPeTgbAM*E#%}rND9mS{7SL!5| z5x($qPeZXd&r1nsD1+37bct=`{6xrzIEzN6mvx5?XlJJ^-_kK<4vfz!_|S@zG~W>A zP$srJTQu)$E)8s$71Xto<6~-BlreN&Hr1=yJ~oDMxY@jEW?-tO*=x}jmS(1R!EK6r z=&*CeY2!S#z8GtC(b#BiunqR7WFoO4%LJ(;K};*HklLV1tBStm9p~~;_fIw>F~SI* zfp#R2?UAc0h1JYjXZA`xltOf*U*P7y;JzG=7Jsmn-Rx#mHJTY^jZ1nRJ*(bdPiS|kn27NE!|mI=`ZC)e7+T+{9J-Gk)93jPvR9JxlouX(n3Dnn&MA#KJ~Qr z9hu^G@VD6RasS0FjcXbgA2&C4WX#<_D!;8Ap<>-kW^fHQjL*4S^ZPGrf|{KqrF9Sw zhwyDCdLfj4UEE_(z?YyTNl)%qygQhCIyp|v%e9~{e4LReh}CZ80-H4 zPjRq*zFFw#cI4L+Q(AIz7SKXg7P%@Cge}#;!UVJ;_g->i}YuWqJJXSE5 z^Rwp;CnVKQ9FG$5{Lc- zT#I$x8Yn0C7(q4|_sLKU=nwU^#vNmy@sJHhR+x$yr^N0`I=ZN5+5@QN z0l(p2#82KY5G5ZYt#6mw8~@rgdeCW70dcmM$E^=rIXw)l)J`6IgXuROMY~0tN9*#> zg=j9LthFEBYC+hKv)QUh+#J8*toFfE$imcekGKOh%5n1FdrFIhh||IvWqj0sGHSCi z3Xo|1t=-Rh#z~yjF5%9Gem)O9jjk-#f`R%mbz-N)JPvI4pYSgZyb2uguh5<<$8bkw z@mCC({*&b9oz$8zL@q4Gew@UmACg2HaFg~72XrkJaAM~SP>n%|$ zT(%zBKcZjCABcp;k{tJ+X~RC$XGPIWiFPk(T{T9|P%OtbN;)_|#`ZB)&?<6&03y z*}iNxHd2$>@dV=ab*rfD*$HftTDj?*16C@O3H_Z}UIs`9b%bH=H_mm~J@H;Fey9yl zMCS=#yaRmyf}LOug!1v5`JD7#cE!9uxy5%l&epM6ekW}ezvJgUDm7BhskgM2^kU$q z@` z7hB1(yhWdtG4dq%o5|#v@Wrlk>)lhA_$-o-dve?Qh?2^tt`dHCMxRb%trP;Cj(mQ0XVzzII=UHY=&gE$oZU0 zEGl25dymCMcAcEk4Zgj;PQD7-w|I8;P%jO|D_EFsr7M%gC=}&2BxD>zDc!}LPoJHU z{a88kgVBK+D7U*x=pk*9{G#ASP)=23&Uwwqpmz%oPCAz~H?qJ~;9;Ede)Xn%lY}ko zacV&v-^7k$l4vNdZ*|~$pgrlSV*}ZOKL-~E3i)4a!|>r`^-Y3ow2(b@ZJf>R*b9a5 z#F!|#%1J|{ALJ77)*dMll;>Hce&pQMfrOD#E+BUGTH#c`$S(N|O82@XWBg;fqzA3T z=e^4+NH>+on~BrO5#c4KzExtH(D#wHxi9JjO3172+ts=Vx##7HPrzp zrF+-SC~QIvk;q2joHCYaPnev|!jQfEs-S$7f988wrp%%5YC|USWp$?7ULA_+>bBbT z|Cv$6sG3)^anIlF zH;Ug$C^F``{hbxKy~@D^FGU(aFHYv(W_h?2pM}Y!olfS?tOsK|HM)UCc;HVmA^pX^ zVE5&AufvT!!b#&aq#M6W3Rgp1mwc=5HN zlcwX{94@Y9W0ryq+gSVxqI@12%}So_a!g>FkXyG=*43B1Q*8t50?C41gI$7`IBhHV zTB)t&QPhb&aYVLpiIbl0&tG>f#4Bw-wPdoS@e%j{l+%&g7o5plp>pNo$0( zUUGK`Q^ss)Di6Zg8bhCFM(5EN#p%2C9!3mY4?hmYHFg_k1MHl0OnZMO?|v!OSR<;5 zo9rXT(W$Oer{T})hhpfBGFeTh&4VD8!(TO!E7&V|2zFLFtq^o@c)_Uh~v(&@;wAGzR9qEHNRY!U%ccD96NUHfKv|hKRkMLi&F_B&e zo#q265hKk3#%EnHGBLT+qJ^lD;zM=ARme&BV6}rJ)Bt_hb!jgw;^E$AHYlmdXY3_w zN<}rKW#T*7ub!2%GfjQKUhgvc;=jJ`dZ5((NkVK`n@Z(=0D*+TlqcD{U4Y)=;gL4wQqmwn^d51)?1HaS z-Y$R^D6Ny3S~jpyd0{Hb zna*ll#s|b~D2`^6onuLr#HnoZt26I^1}`EDwf9(OhS)}}><uKTTKwJIE z%juORN8<{2ZcC$^vBI2duXh*Y2AKvwe1vbl&qX7adH9t2A*)-yX)M+ z2lR@9P?v_$86J(4kHkjeBl*6v zMc8BNBzZUE&z^AK$S8<&8_liu0Cxc{{I$$=4zSBBZyz;1V?A_`J|t|fLu+yeC&sVn z>We#d?R5AnuNuEohZlfj-N0H+%6uMJ$J2z(5CE4$KWRnvk_VpY1Gg1)iu|Zria?7C zFrB*Ml=Gen-KC$&YpRZ-eJZDUXSE`Ugz>(|_=o4i=9@`B+*Vd_z~3N|V>C19lvK-| znI*M`i93SauC>BZAx?ZIwxutdp=HBy6YE>*yX3DF>=yGeW^c^fpcEVxxC=RbWbEO% z^6^$&$+-5hw_=vZEQt9lraB(txxu`_C4tBOLTnRi`fSdnJiO7n*jujNz56)pu|jPzK#l!?BNFCWbCq5L~=#uhkpsr4p)g(jttx$!AvkU&u7;p}I{Qgtznsb#FNo`GuuQ zXce+kS;dfk-O>L}OU(^}{!P4z)@ZoclIeOMubP|I`Nqy-RWg4!`qEwh6fLS3hT6Tx zy^bo@#V>XcAIA=M%;lA2BtDj-x|!(ft6hc^tV#p%;wGU|TPb(vre4WRq_Z?#XyRtD z8=E~*Zm%>B7_*FdMg{iBd8w59!R2peZ?~q}30@g#2Ws7Wq-vI6mzD({PY?C5`T%!G z1Ez*qP>~c-H=yS0i}qwcn%5=L819cU{Mm~_;61(fSk!1=&%_eY!Z)A?9W3_2!!;KM z;$!CyYQ2u`Rrfn~Zx3NLPUfx=y!LPo-g+~iQYnh69jXB0*=oZUylID*3qqX_e78#l0 zCzf)K@b2y+lWeHs^{BM!Qg>dUgPlRA zwTUds8+;DAAZ=7ucPgosb@DK|m^@3`A`0SjHs`IRLh=&0$>}+db#m_ufrK2TC&~!taDC(=v(m=6 z*=Fm#^~w5aJyDm9dh~*3?YrSC=Ig2MBgd$e zbCDfbHmGmAc?)Lgv(2@*ItqAW=-DfU|)61h%HIOC1AW=QX;_tNX>2c!Q*obdK=#>hK(@;S+o9t6Lyy!FQUS9nQEd^cscQiq#- z3g<%sRa9!C5k7&QC%v>r%q9NCXY>76X0v;UH+=&e+p|pHb5H~R#`oDm_=65Jr`MnK z>NN*#>H)H7@6kaYwKv<> z?G8*c_X(xs!DKUT$L*01!fqYdM+2c!mM~K4Dh!M4)PXsy$EE?h{15l7u#F6`LGY#( za_4?#SMJdmG3086|^#;_}lGPg{mGSm4WuN1!r1_9$~4q*r*IuHI-3= zoxxw6ByEf$WOeG(!jS?#oTko5So(NB?8k(kJu(1Jwo z^R3SX6Vrz}k(4kfoGKEHPBJ&4J+6Qs^LOUJc^%2gfcoVMoZm|1l&xXLs^Scs&s67} z)B}a#SV&V3nKdux%-BJ)8O|dmtQ3OQ5=Q0Mh)*yNd()xlByPb0SSOZd*R@P-q&?SG zk!YGXxHBeMTtfW9_*?PMO}SaMJVC6gB?>KIyk&LDOqCHFU`JONDPNWnEsiJ|HwK|Z9lfBlEZ!47-wuZ zd*CkZ2Mgme!5l^Xx8bHLW^)NXe4Lc@4sTZu=qRx34>(Q+RA zzLn4uJas~R8$X!UjVJnI9YR@TPH0PF&o33fJp8gG@in@DDTx`9riaFm1NqL-EXj`A z7IRUHJeA?D-`gtS+rp(W3VzL4GKcbLla+tP#_m(If$pG)`wkZ1?`CTBk9qCCp!No= zy2hU9gNQ}KTS4QCna}y;IZ~23&OZ*V*x{Io!JnB&&Z1j-3Zr2vKH5@DY!3^=q}R$O z-^5@fc6)r21U>#`+~L@#F#}`j#dOBGc`G(YeBFc<308ccxNR}{f+b)d6~PzUMr*8| zq*t56rg*tFK>MsVqI>Qr9~G~Ar6JeNb86EKUv)FOwa9nd<@VrY`$HS49fD~w**oGK zrUyP||Li=&+q%fJ-$f5a*GJXpMG|Fu!p3@^bP9@<9d3csqg^zIzL!1CTfL;w z#;gR1;=S7y3RzyeAd|8hcx{@qZQh5&YL7HuImAx=!Po7p7RUZ9yZ;w0wK7&}C3TY@ zDoY^sje(qGFm1X(S341h)m-NzIf2QnCrt7lL8QE8erpGD-p0F6+|t4+F-~4cPH!%1 z1`GAvW+{!-hgz>SS?qO5Df^uac zPQff>7*vONdO+zS3G`bFaEJUwy>Q35>HZ@8E7p>3b03$6-?&joCVm#$qmrM5%d9jz zK|{W!R8xaQfcbyYY&QU_%*W z=e3R+-{@=LiS-Ikrj|7#t@J0x_jJ&C(f)kvp7UPer^w@RtD#oij+bK_)Vq>aQ7C{T zo!`8UVh(vEy0$UeB;Oc+PN-2G{Iz_owKM8iJQm%Q;_`EGwXhGpz0PkIHLn=AjR7!8 z8i5fdvLL+dc8c)6d_WUMma%wTZq1H! z3a9*r!1=%@a(zo^18~h~YCUo`H?k!=N?(0lcm~b-9yG^(xD`$?Cs~D)xVv}X8_N#s zPm)nCNekGx)RsPbt(@W3Nj~lCuqXZ{uTfyOHv_6*0xp;?=0{!D>qmc$v zCUrxX-8VcbTqwLJG!U=fFX0-IdeonpAaBpYzjOhD&vIsqTkrc*K`*Mv(eyWQhLfYrSHU%-1jTQALJZreqZ&#fS9pyuj0e;qv8^S#r#jz z%8JWm?N4U+M|s*NkoH+xvgAZn^@jo-V$#Q!jLjBXI<|XkE8OryIXU~lm2J+Js8me9 zm_SVS;5~m{Uv2d_&~4eEJO{*HVl3T;#&+?#SY4RomUDVQ+pCUCvk0`m8v1(u3u;rH zJKYY~3-1U;lJX~=O#CV7O~{EX(kmJzjh~DR=4dNwXGB%|vp1Wk^gk~nGrM6zP$=WI zgPV{7VpvhMsSD8JO)>`=ne+qDfA>QkD;0eoZHPYUXQLLX`j4he?R!)IhO@RYJi3+M zT(35Lho~O*O%9}@Cl32(`p@~(1#EvNe~fRNw$Rr+us!%N_$3hX@8I{W8$5_cZIpiq zlYSW`(nh%-YVvOUaGz zir%~&Zrd)H&F7J7+1c!8bk$o#7t@OmBo!*b97smpPSk84tg&tiHjf+Re9BGbKU7Cc z$#BTxyQun<1j+N>JBf4+wqBB)?=yNXsQq=EG;V3wC3%^a7WMkj?OlZiGoA`RllRW6 zL_Y0hrgtm+bAn}J`^067pAx@1zD9hzIDhOWGO@}tM_T1S=KEXwg+1JQx~{wM{?hY% zpQXw&NNOA-W{`J5t!k~@p&xJO=hlxvKdh@i zk7m^0>E}@&JTzZeq@W6Um4d!s0-a$o=qO_wGR3IR9HYMPHRSi~%5TzBh{g%-U-*b; zn!n&79>ga6M>gpBjZZMQlVEW4ZVOVaK*@78xDLUU<_Cc!( z30#@Tqs=Fb7Vk*kqj&gQZGuOnANfr6)!(Ssmq}kUU^WPs#B;nMTctsCsl}BI>JF`` z?}P7^KZf1wu0T&;cV&+#<2wHL|7ZVc97n5B!)zcAdn6}NI;n@;7N2h|RnT(y+M*U- z;;#h1{55HT8PU2<5Dzh_8%>thKBg({l-XiwcQ7Q``$j(KJs*wl$THmov8$y1w_Z!1 z6HO7F7A*$_pN2f>5NA^T_pnd4A4`d5J6YBLI z{fHUsl=Xu2IhW<9Bq5APbD?OjwYk30_^K`V!k5&mq*z>&gX|g?F^zvG9FnFg+i-_B zVvDWA?z|#LNmNXx?3Q5LG9j&rw&X|WwS9)n>TdQ(JEzm0POuC8Of{T$aq#52lUm=; zzQi=Ni17ll%vm(KS)h^r9o-wfrDuXKu-s}(`pZhvgNKtqTNqYlLo}FK`6f!k3;C0o z_W^VvW924d7cVDMh@<7E%0G}62SNHOM&Ga)t+_6KFIQ8)V`~-X zi=s=)zR71kTxqe+hL9wqjcSo3H(Z5 zH9xpCI63g2&qmpjO71BB?6ZW|baFjc{&-;a9y@Ei_$qv?{chc~hB=FcOiEq6I#XeMZK4m@ zqWz5f`z`&-1g31Mxe zp?sWTM$^bG1zBws>Xs=~MQ0#@{Uf;EWp@pFrCQE;Hy>Q^_4J+D)yJyecb~a`AMJwD zP%bU)AnW%$%pp~r1TnQY9ykT^`8EA_lCEAb(f%AB9}a~^grr#!`NeUvHgpEzz6r?35%>b3whmJ%peCUV|gBjx(Om`7TLUadHJ z%Q0;KYPlbnaBFDoCqaGNY!$R5lGKawr!Zz`7ngY^7b7`ye*Z;HczMz1)MT*x0b%^>@X^6I_ zn4AiwMn^n{@4R7RESmkN%3O66^O6q!Y=PT>fx$1q^fCUJL$G`Mp{VcW8>X!w$s@qN zXTP|N9wkP6FJ)6_Y3sB<$+hVytsrYJFXZ-z-YPQd2eIKR{&m76p2DdXFVAI;+(>gc z0eUKXWQo6hgKz*k#&~X+Z1!Yol2+y#wm*MIR)_nAh9=cWDiFFDo(W6q85`8MC<;zN z*356Urn8!l;w7bd*(gsgQ8RO%y#>a>TjvG2!86Qumd`#!72g0JWe13%U8$7A5c6vq z=ggyaJRMFSwiA=xa$>B~LfynhF1Pff?5Li9M{rQ^y}!J#f!18RkE4GqEY#6B;U@E$ z4WI|vq|VgR`1b@x2Lr)h{av(Mib+K?R4Od0LRI+XE!{%SR7*B;AMm+1Sb8EoxOXD_i zenBU>)6T#S?3(uvIit;l+2R}NGYRrzls0%Qn<}f=Dvg2ldyg9HAExth%=8zN0Cy9Q z)H&xMw`&A-URQ_{0bKw0t<83Ncei(fT}@d!)m*SiSK-b$08Qu^q`6qP4D{+c%(CO@ zJd1ey*h~BgWAO&==X2~gKiCgBJ>Kzc)MSUY02;~wySClRS?guvJ}RWVfB@%H4J~V6 zZ}69xoxz3v{AzY_pktX2xb-_T=h{L?Gl&1|Lvq@4(mR@5uE`}wd&2LDW^1j7l3lI_qw%=6 zkO_VTZ!WdMbm=6Mt0gG+Khy0U5e7>+)HeP(F;C(i$M1C$uqXNYbC7LXo@C6)?S0 zMmi@I|1$9NfG@3*U?PNNltwd{?~f-ZYZG*$qsB%3v99nW6eLZ3mfHi3YZpB3bEJF1 zM|YsJ(f$H?gBI9;De+(? zM?>%jjYVhtUaX0RFCY8kW5Q%_wX?vAF$WvFjoc`KzJb?NmHFe-$anf^$Zo5`8A4uC z>+m1Ze8%_Y2KJMum<9g>t>!(Pm=90@?x39Uqks>RANrcU@TqW_xk4&*;R#B2W(CcZ z`4CF}6{ezbjDvTd=p1*`qPXYjlTM=~s;(V|JgKk+`A6QXw9xkYQuxRD&OzN zk?17-If-2+_x%|Z;ddfM^lyx&C_EmU_wCE%jK6T#+ZT=8(ch$_(ihZ@HgoQr*+*vM#ibmKd&J~AA+J|q7^M96;S4Upimk2KaS1<>Z)?x z!mHQb`!DJMB1(66H%NB~(v5V9bPEWGbazQecZqLiCoC1`!h<;@tb+MH7WE+uOt-ga zCpqw$?^J8S@XN(?luK`;=MCt=BEeq*$MnAXQ3%Uj^^Iy{xwQB%gv2krM$U0F5X}`{ z2f1H}R^eX1*?en#bjtaqA&$qf1**^ICxw1VS;F1y{{TCB1~l=Wu-z;0TwTIvcP)y+ z1H9-f#TJsyF8mWNn-$!d_X=(NOx|F32XvP-+>$2HNHNu!Yfoj;OJ(GbW~O=Tjd>U% zzspVjuw9S)MI5yG!%QYc%@D8bY3CE9&SIZCpJ8g1LXqp?Ua;HPQ=EvmQJf~0-zur}zE+3S4$t`3CD7lS%NiKIsbzMFw^Q_ybRmPgE)J}MgBC7S+$)`?qm0N)LI#C#sRXb-!r2- zoYwo;A0^;zzCd?mCA?j!@xku0&siI+d3HTl@ZF>4)=09}xrOP{Q1}6<0=YvOV*AIXijR$76KBMhiv2!ja;R-Es*l#nlRC*F|16gD zhdbH$IS-l-?epGlu>}9Se)=8yFzacR)osdd-idi?5_9fTbul-pqud80+Gn4*jv~A? zbRtHJogMQq)SLw8w7^PjGIz79Bxa8)8_B$enLGE&*Tt+*HV@34n=z|-l#A%f(vd&cZt2%d>}W zqZ}LF8fH7IB$PdoX}_?!hxxvv@g&+Tnj3Xx4Ro{wvde#Qha3-2Y!_Lgp~=0H%QM*} zMjN4IOmkn8k{JN++H&uEhy0Af6*kmk{5L{7`MEkmf5?hW#$rS1sT!Tt75cJ3-0%jy%vLTqu>q%KluZlXcYGfZo`V-2DlZ&pxQ!Z6E?@RxGMi zVfuwj+K#QeU-_w|RO&&P(T&t7f0sG(DS3pvUCK)qa0jzt6J?x~m49;||CrcGc}53X zZ?&7+M|+|F8#qNr8tpCY)0=94s%Mn9{5(Nrj}l^voh28PG~5F_gzva-w2{-`ZEGR_ zO}pZ4Zj{HpnLN9vGP`G!wz2{3FNC?XOegv2IU8VmJmyJUp4aoVl>@KMRdy&@*zA<` z?}!b!xm;4nQlN2XmDX_zWfCoXw&#Rw+yNSjL%bsP9%B`5`@OL~&3#w)GG|So5IGMM)>(PQ7G{UR$R@_6!VN`aJ+bUPp!`f25 zZ9CL<+88~5V7=Z=YsHfxCvC1za4I%XB2qhPEPj!Y5(_o^uHG?d1+NBl?F4)PnWw)@ zds9aFm3%|p7dQ}eHLiX9`ndM7y<<|v+zF)wO+4I-hd#GHk7ngI-psBoxZh`y~u*p)q2JT8H%GBz2zhB_x1; z>U1chyT~s#RyL5-$*Pd;ld_91{2maVi~4y9ulYJQ8 z8O{-Ym$EWkKU$QY$2wM7cqwU&9OhB>icve8E#j$-u}<3my6yZW{$6h_-hf%?_G9P^ zo#qU-^THi?OA35BK6uO7?KKd(p%P4I<3CZkr6y_v^baUe1>|>Rmg{(j+zRXnGP*C= z>njj->WNRGqg9lyilxYw=fvw@4mwy3wYIuTxgjUWouzTGGq=!iUz&9DG}M8E5XTIN zwX2{B4iZ1RL|&6*8Ow<@AJ@(!o(<0f!-F$}jYu2J2)009^I|H+TC`QJ4ZRQ64vq}e z)eqv-e2znCB%N8Ag%N%R^13BaNaMwRv<}Z!Dy#R{Zx+-K=`u9v8+uv2uy#+GA$O4) ziy4Lc-bI{vrRd8&MVC>3e=zBf#@v$z)63FDdJi*c0nehJN7C!$BH=G0y&@eVV5Xn0za#Q_@tZ{xgy%CBH}tC+13g z@Tqy??4)if-$im5+sxWLFV^^3q?*bfYB%z>skEc0)s4`CYA7d2lXg%>LI9pi8%HT6 zjjW)8uU8cq!2h86?$Q%!o#+|p7-$!m5qKSF5we941;+Xo@h?miM*YJ9lW7?<$3pSTO#*HDt zc+wv0pJJGrI4N>F^<&ZB=aPsW zF7KCG;u~5acU1Z*580(3XSRZn&xU;)Sy98=f~R*GJC`-qCaWn7yq4|)HXa>elBZ^i z+*{}*6d@funtSy!$gp?(+&t+QOF!Y4{0skA2mC3|@O@SG-w9LYnOe8t&6pc;BNNu7 zYLI$l>Y}Ohq{+>_WQsaNuZl;6WIBKeH!&`$EO{cgl8@x~lx7l%^WimmcJ_$>XsAQZPu zLIuyX9dne?H2Q61Lip=&({P1I_vmcnCv&d#!fp;BZ!d~bDYuK0fjwhQ`hY9KJKbm> za(4)8#u?B~Hc24{m%qj)o?v=wM@PO@e2EC8^PU=brR9Ux?6#@Q?w6a#Cg)suej;8G|#Z<`z@L+ zdO9*H(kHSy(wm*lEa)h&yxQU)at6&H{XP=M*XUrW;DA7^-b&pncc5=upj+X(-`^YI zG`AK)Fgi)sP9AHDz1r!H-ZhB%xwPyl|8nweRem9@)PPUGTz-ARQE-xZ zaTK?X3yy(`dP?jY^E8x1zFh-@;SPfKKEIB zun97`J*+Q{5TYXu8WG<5AJSF&DH-6eih?~_67gJ+3>eg zOip2^D?9sXORT|O{a2$WysW#?Ja~0qS@Z2X&RTD>5WowQ01x^U{`yt=Fgo_$k#lbr zED@?1ac!+4Dz~|dTBN(aM3txsH_5@-JxN#$$LNk*%w36o zT#K1yA!Mlrq&h~yOZ(n^126tZKM(BxU;JBa{J&w7Tv^BkXKOTmiy7?1tGjjVH*6%I zaY}BXr)m)locWIH%@TLXuaw@*DVx+$s!!tasq#i`02y&Zpk$z&ejg7`XIOY;<#BR( zh+egs;U{ndpDhop4k?h>zH0zNL@jZ_bo4>?`*2DuldJP8Dk!1l@+w7+Ax} zR$WqNsom+ke%*2FROjC_(plg_mKA=H&M9ZL_j=X9mx0s}b%yFs)dg}Lnl=hTaSy{N z$fg!l+bBDvUxgmt80QjgRc9dZ?Fdf@XN&BJ-Z3-6S*}ah%LHEQ{LCe|a!3Jw@^6Yo z&>C*bd6YZKF14!GnC_vqN@e*44Q-wHJZeH8zX*<%S)?Vek^;#}lJF5um!-I!8gPp` zpd8>E9}FY}4+KxbKSffbjhNV+JG#=hW3-rP;`hRQvTkU6dty5@t{GEOF6?7RF z?%4-ESr>3DJhVH*WM6^0-owgfU0^53F3{>|wS^hHz^ZLmak{!kyeh&$@jvM^z4R%Y z=b4Hj_lC+aQ@r87#Pwaox$Dp8=H^v91(#QR+cY~&iBB&7O-L76~ zuL0?T-*|V~0N57uL;^&otvF)#@Euvmw6={)=vzKd)x^6vFV6TaxQ7>ITh)gavGLs3 zcEP;CAz;_S?VHA{Mwbe`s5nDx;Vk>ZD4nr2V~f}u74`bj9U2nTi&@F7Z4+;^ zm0tnTxEW`EOQkHt@4Z@2X6p6&8ZBA5BKMuvqY z(wd3TAor!5=H{wKZy2Sl6V@+y9bThBU$Tzc`yDd%+~negGlEWk={n(Grs)ULMY%G) z?%m{H==Gezt+5Jw!I#j!pP@c1VdDG2If%mZ%qfSnp%dNJ#q7T9&dWiU!6mbA^C=%jGIl+ko% z>@YT1ukBCda%S-U^ryKaRz0RHQ;zeE8>Q@GB3aH)bB~6*^Ui528Gm~$`JefmbTMSg zSEERM?e&NCwU7ojD;SQAPw1C$CoX+Vv%qGpwANOus_ldf8(}gt)t;n48`9yhgS+%% zb+$SdkHCIyaA07_jM)MWcy;W_*r&LlHikax3F>Dz`T!UOG4!xq_RexsdqZ;QGHlab zUL9N_>2ROLkpLYG>+zje1pPmWdt5nQm11I5;R0P%0rInz&}wWbatqPLTl!z42-EjO-3qmjmu;*oukC(#~wJ^w`= zO>r8r&3Z|it}2d5nfy+EvK{69H1I-ZON&rxWO+KgwdUR$XRH-t{1tAM@-M!#yeUmn zKBP2^l)))g$DV{|t%TVp8W%YkK0ue~Y3pyNn|BxYXGuAYx=`z+|3Vk^pZfT~Vi>wH zG38>q#{3?m(zVe%wnJ>u*iJFGg0J;fOn9x($2OsqoziT*Q*d193VF?C%qC5PPlKgG zpZNclp=BHiz6i~R1Gs?%$j87}f!g{(JhoG`TKoy^lxB1$B%t_iQsT%UF5r}+35{=f zYuGTquwlzUZ%_mJrp`+j{Elu})Wyg46045!B76sJI}RoDa&%Bc2`@@%!pxikIX|^I zipGRY_Cfooo!=fnuK2Jy!z>I3ahP$1ri!1KH9oSd9YWKJfuE-(DpNyt-E+;C=5lK+ zs%c)7k&N_LP9S-oU~Y=uM&(!@{mqzf!iB@bKUV0Z+|}O)%ZAbiE9=#vfF2S*`WZY( zxOP!{Kgv`ta-{iShYW<$Gn~fnPUe2=8&?+!NZV=Zl(mq)U7v%8X0U3aQo+z5TM>r* zyvZvk+>rK?nwSxk0Y{j!YwrAMR&K(1l>i%RkL})YHa{;Uowkpvv;&TU zbNT^i&{nhsXTJ4>cFLbgcg>DWO6dw`cw_h!o4qM~+lrf4 z%rt1xo87ON2O8tsPtT5nRzWt`<1`_t#_W%|9V!`=$Ym4>b_x9xnihJEySHrcY~Z@y zPx}(*XfD{)E93>zR52qdr0)EjHRa#QYE>h5_Y18O&BgSzTaQtS>n%cUVzb6R50=)i zswz5F4n2>yjBKDtcJK2E;V3QsVdZcbC zvUuHTV`h!64tGtdlzchqY;ums8{;Xd(c0XK^V$>a^|WZ8q=9-Ww2iQR(V6H5*qD#? zkHPW$g|mC6FSuW$Ielx5v`Sh%=-uoREsV=UH?NUb8)D>+c4iv;Ch{O$JbZ;tidT_M zhC`b5tySK>Vjpxw?^j4VQJ2|wY+BCgLpnc$!K2Pg}KR-p8O^fjt+70~EZ`I3Md>|G4kE~EVFQ7;7 zfF{reSH~E-!R9F~+2pifKQ;mf_G4OdGSE`nG}0@jTXOZ}smamgAt}?t^P@+sIwVxi zbBApYv2U4s)2?VeF>Z3!W{A#@PBG@0W2`dvb#kYjp+r@)h8TsRL^U%8TbrED_~R$g z12IAB$ldQ04Pu&fnoM;Dbcq~zGgm{}yW}*1l2zPkVV|;o<`%Wn`kTbi2>Qwo(%szE z&*=|<7Vr~FdxXxo%%sCkz-|&a1^;wD;WTXH`fge}sRrSXn=gM-mT8`Tjyroo;Aef2 zUYXCD9_kxv68bAB1PibUDx<~XlJCSGNS9yZ?4K-cMwM5To%H0yD6^!k!dCAo90fEK zd^|l!rB)DMN)Ne*98+egZM0rmbF~*)(3?yn5pk>ZkF;Fs!|pTzI$k$icS|4x6y@_j z$6MglrM)i`UY(kd0H#WHq1&ue(z9E8uKcJJQSvHnlxa#2l)NF5$^9#yeRy8n(Zler zonn5i!k^K??bvq?>)v}n-v@O>|Z0M*w&!9Tr>_R-3139;*?+typ>O~4)ZjI(qa zF1syIl-GpIrr623%wagU{VL6ZXhT|SNCsvbYOL26!-H_YKjU`!(AyYC32GK)u;92Zc z<~Fj9dn30ZYohIF!)xT_fZ^~x?HWzx%<3k3W0um&yc-2Mo0dVprF0GwQj2C7aGR2Sl)It$I z8I86KI=Bc|BBwu3_z_aca%R+DH3|1zhTzBGHC(p^XdsKFL-$tj8`uJC0zc`;Xns5j zgXAG3_0G~fl5@K`Ay>2U{7gKsL{ILe-XMo?m9|-r$zTGXrML9TR}Eed+QEf*p??ni z3K_q3;H5T4c?nUb^i!r$Cv37BwovI2~u@wVoQ6BK1-(CI0oX z*M|@9hke-cF;!yDBsE!1>CDrtj1g}RGgmMRy}`Y*kK4jhdxDeN`~3IMDW8UAyI2{l z_RwD7$he4WsWjQ%NpR-7qI<1XCad4#KG~pU;HlJu#ICF->7(dHxe_Q8{4My7biwAJ zNh{&;n42-rLK`99_2pgM7|M%6bXLDf4l7w{FaN}+@w0m;38!9a=|?uvDeO7Vk!n2e zhDeV!pxeH`an$I}Dcsn4iHmF<$s*C}1Q~ItQ{L&qQ|OXM!cI{4T;UF_-i`XZnA9rUP(3Co>bDU>nz&E-cnnwOps~|-+39BVm2|qxFpXWlCjuHZs(@+mc8l#_$E2&z^K6f z_$j`YZ}|C2&@OqDcEpv@vymRrUEJ8NvTZ43wYLNA8qTb%P~W$rhK~?Bi@R`W{Hp$_ zrD!Gbgcj2e<2E0zTqjX+jHlXduQb2&6x*{MFi!^HgedKIpgsH!6yy>lWj~TZ`GuXf z=S>tIir1xf@+j_QA?XsF$WOFmkN48~Erh%@TQ<_3z;+oKxTojDxl>MifG)jKEvt>v zzYlJUIS}`Wtl^fpl$aTGfnN?z4EAMuc?DDXPw8)nha0_DIMjb)5)LpA@1NTI^%bPc-}$ER3N8q42#9)mwGA1%J;IlMveVHz7o8E_lq@C9{WR%g zx{sYdcKh@s@u%c>DN5v@$Q@?QS>|YSD{O@l(NEFCW(-{c<%BKbMp&~&;IckO4f>C5 zSwM1x*M51ns55CM*h^bRQT8zr9DHZo1oy6Ev(vZSgS1VbL^-P~msgIE=01T3Fsrgu z{wU>uz%di$kgUBeK7Th9m&*m`j7fSo(TijQk$Z@z*J8|QH5+lFm!%sry>`N4Srx@(1B1+Ei8VUwg2%gFTtb30)XZ!8gJiaU$fwf7s7=Le;G< zs6tc!OK+>Qm1fxDPGh$$TfZmXBfLgG!r^-3h|Y47w`bf3{t$9`mvPxFW}2*ohCZ0- z<8v>`R8F0{`?rn~Qy(XmoLI|oy(uok5o=&AuQCv(Ry3^FK{FHAh;#?cW_0pY@mr6=HBy!%-T=f z!*bwITgXkPJ3Hj4e2n{XUYds2@wq-}x8a0aWjFVBp`Bi!sj8o6(o^8@y!{iGP-DLf zE~6{(FaPAJw~_DlTXmLlPHIlpuMb&}s$u~$fR}mCKe7eLB9(!T*Nz=qZ|G(V?J-t9 z91V-@N~9N`K)Whwl%(gbA1SGcbOL^7{9(SctKhn6BL>)JCz3o{rPyjC+TU*JCTd0@ zdQVHJC)GGk!?X&{0ln^st;M25DX|068<);P8H`6Y0^{mmJAUrK_<5s~*O z1?U4T3V&C|WjJ5kueT5M3*-$X!+uN`*sSN*I>=Z2$uN6%n#WDoY|c)qmXqwx_7^j6 zwT7U&)O*A&caB?;o6K$W;|2n}H#(-nUlfzPsD(%Iii`d|9CF_ZFN9oB81s=KErvdknU{^{WDVcHqFySmB(%b!@Ufma?Qskpaf>+v?O4vDRPGZy z|K|jLv@vS`%kYixyhs{Duxxvbn;n%rm-{s-%Q&IBn2mc_IebvNpo%ZWHL_IvTj(Kd zgxpbI8Z5`FHT0vw9Wj&1Nh&e-g2{nwq;`H&lEi6#YrG#v>0M4?YjOieX%(pqd)hVf zZ|E5-!~~KJ?`azv3^lPm`6I}SxP-2lcddxi++QtpMq6A3mE}BlzMfti=ac2|WbcQ5 zzZhM-Pp!?w@Ke4}{+hc@tmMrUAZ>KO%s;j(IztKywA5!)EBwDh=Azp^ApMldZ z(c3|8W3CtFwaAADH6xDi{q8A$w|G+$=-RuTxOAJ8#{Jo{6NUt$Y)$yw_9KhObBGS{IzF zJimv){VndBLPPpKXG+tg0&oD+!eA|^+@)_ki&$K|!#zlZYBp8a#vQv84$+rRL1%-# zm25#<2>E^RC02oUqKREOp)In)3uy~0~^4wEiL}EqI{0H!wNg31M*$YX+<8!KDmyN)o;bT zHPER6#i|3$>$GI}572n<1}Z@fFN?FoI*I%LC#SB{%5G|%A;Gf3x`jgjm0QyJA33rK zX!TP_T=ZwF^1$Ckw#MXM^bE#xJoi^HJy!fdxKPsPVm** z+rUqu=b?t7ximZ-4>qO;__3E#<>=;)Iji6w=eo!1K%3=ln?nT7z@@ciDep#QPXVp)`eygPplw-s* z_zLg_Lk?;yeB;|VDb}GBzG9F2yY(17X*=7=G2GZ%8v&yl-oI{;E|yxA%)`-}P_*vR zf!!5n=DlbX0?bk4mDvhUMn87`Yt4?v{pgP9_tAT3rClJlU!;|%a5TUcpo%TCF<O!2P6Dq!Dm9G^j&Up=tDWLwsdJ4r{k7M^|$KN`w8`q-c3GCR0q?RVxX^QG0my+bDLZ>SEh zNH478v)@GiQTmzxG*I}PP5ugqA*H*#tn@oELI+k+t{Jn;@)SC3o z@=%9Rx1b0EC=Xlmn#$kGZ|YRK<7)&0c+B>|ta=X3K2vCFuz#SbeuTE0*V;?8fXcZ4 z){|(g#rOY^)JpzB{!i>HT=Yi?t))pyF738tK&ELfl+VlM;_a_eFO@&Hf|WB6^FR!k$RI zXcOaCwlrn!pX~Zhk}C*bi}i$$_=wVSGffTQ;0-*t6V_`Sx=kQQ?lb=iUrrjFbToy1 z2IuQFHf+AJ(wgBc!s9l84weP>TBjkY*OjOTFUdY^|aHP&tAHyyCQyk@YAnW%f ztl<<=RX?CleHqovmG)`(I8^VnJPo%#bu5?LoWYT;5YpPobZbz$AYAZUurwG{%Tj0*%N9iy{CRu zJFI4Ams(0KOFQgYa?xSA9FCii6sG54w3Gwwcq>%Q8~CP&ORe~{RX|aGAs)D{L z{uDY$jyY?nFh1COP;<)S?Yzi0IiEB}$lwjNtC=V99K}Z#hkJ#Gg;&7sd=sf>%!N>} z)0Fsh?zSF6cWCY!RzD*W*$}xBnGjhKZjv%L`Bn0uaMNgW<8}1=$lH{BDPN}K!sWF& z=~&|K#Kfff;V+Ce*0->73gL)v$Q^G#cieMuMB6*h>?7pCtMRl=Hh;F;I91^m6|+0o zapd&Aa~$iLk)GXfZes}KuA5Gr+raaM3Q8HWoEemE(s=2fk~=Vw4duGv$-ur~yVzIp zwG!6Fwh!D?mT-F&)Cx)-sXo(lU$HH`wylasYO)~j!ymkIcVHUKVMEJFHEmCQvDLP|i*$Z8cbzKASODUdQF zrB3+oaHdG}$e-w=_o97`s8JJ*_Zy>8bSLM|W_oGExYkEQKsz335m9N5dTu_mCfiw< z$xeA=U@UKkU8Q+R>=$s4qeZgiqiNsgm+qeZdS@5N-NNuwQJSct3t_eC_!A@oy8pNmV+bT->FY z{IRLx-z2Rt2oTL>Czn` z6`AUVPDSTur-Qo?hx5N=N}6+Ge}|qo#GCAlFsDYM?1+v;>sj}q{^X_QXMp(-S8(cR zUC!cL(KqI=_Gx=Q36X}zUSlZj5r0LOp&&g^(W3p#Q}|j3;-wj9=W}oK)JO}@rxRU~ zg_M$-fm`3@hVd9m>KryzGP{xsYD_?7BX%iN28V9?kP!M9*si^oH$iP_AT$=9_Wm-jQ>s(Ijc_GVkRK$!2Ja%^ zCRNRZiSc^;ytuS+zsCMAc4W-hP(gfPh4t+E0=;{n3TJDCcARl~GgX!|irjtRg;n=G zp}ssut;89;hd!ACfem^MJq_w{bJE^R^tt*bJyqZmJqf8`W3LKq)Ve9(OPR&;LQlVo zSH^t|gx#``I4xNpg1@Gi6QZHJ0+hv~n+XowQY zn3H~SFM-eTOJ3#QthH7fp3t9@C6=4uAEc3fr?gYNP8UZnvQ95~e>9j5|L}i1N~@Hg zwFla0b%}hG8&pOb`-*ATm74NSCYN*S?|Qbt1GZJ&VGKX_OM0X28pi!_y72Mv;fNC% z5lMwJqn)|UnMu3iDky1}*}e`I>nWGWz<(cD7MM>r<@d3ZV#mak3N54)qXn*%wzRDa z=v@o+dqF!iG&Da@R7<0bgq8f*FXlmgvVTQg{u)+YeSCS9>EP7t%=Th@AnS3d&Vz*b z0jFzU=w$1i-ToL!Q_A27|4~uN0~FAQD7^&PeSnYk6Y0^(es?#ceTp4KK05aq}>;mxWC3K2E^g z+}Xa6`a%x7BY#D6p9)v~vQ$c}u77cBuZ@Fonm93xgYi6ZAVgg>>{+v`_M^hVZjAzlwWC%)Gubt|&5DGYH%D__1Bn}jN z2*te8&R34_P7nmh6mP_?(k}TUB-bi(LE)@Z%W6)yKvTOdT!#WqA*VPBNew2wQvMZg zAKhp==*gD%sa*jFNnLxhJJ{dhpGArL!l#`H9Yo>I@IN^{JMJ`0myhIocm-BVB}oES z)~;wZwCe1~enw&aN4=#kQTj+lgi~zU?~s4`-u@4cdl7RSEuq7Wy`0KVjVtDC)1{H| zpYXtF7psta&8y3{s-?JF#=S4aGkA`k^+Eaq?UA|;|3+hdIgD|Yz2?-wN$s4HAa6rE z%IL>=Pu*plxlLhO@5Fo5hyI;^$jVQki#|Kg^)LAeM&R%qZr{ZJXqtWPbL@F@lH7ji zym7nvlZ58ND?Y)BW82+uW-LM-KTlGsEZMM$=;TkxH!k9K(~A!GzpXj!K@2uQHA%Yu z#nh7>;_HuibwB%vJEJe3QEDh#qzGG@81b$+RIKZ_bMjjebAf#hWh9&TwKJ4It*>(# z@9THMc$ByTUK?1DEm1*Rga%bQ`zlA^I2TY?kDERlCZ|&i*NxmR`F&78ow?+v(^#2+2qgf(3!)e1>#EUk!%F_U0^G@`)ZL+YPhu;{YjuHWzpeT|y2S;$BRr2sjAAK04ZV2|1wH|uHWG;bjrc6Vp9JzT-P@dF#~s9RnXRZCwE zxi()+h1k|{dE&o~7vpEeb%{F|7ZZOxE??~G;00}lQbyj(?ya>npOi!k{|MUj?<71f zKtSyeE#m2YIpHId82{R^Fx#)V~Ti`eFSd`gnf*kQ?sktJr?z4kZPAeU7gY{x+#BPf1 z9XlmvUg$w^P4G@|acEsk&e%Jlae4vyHnfMi@Bt5b^*KLsb7tN1Q%eVFrM#tS%n~cL ztbr4Oclsf1lvbOznU30G`G(NNF9csTtzVN#X)XSUKbVhn~NU6TV^IhiiA@3By~@cla1tgDV;dyND0bOjdDvu;$<&`wNfzA#)~9;27hQaRwTTPNvv|-B$s}%QV`5 zws~{hw{8_Sv$1#``-n|RaP(7tq3!57_l_9t9eVr^G)eVQUdlbxD|*@B^gvgwr?QcB z@NuOkxA#uk4Lmcilm{f#l2KisqXYJb(5*|W*sT329^ho2OqQ#j__MHFsDMjsr8HJP zrlg{)q7TZ@Vp7Ma1P?x;hi9rn}h-Z*@XtEBSqyC9FMs&wQ|hFGNiPylC$$YfHI}2+^+EeT=G<|UaS1-6tvU|cT~ynr zzf=oI!@Sz;1=87-&3usx$yt-SCHITiX2^|$4td;9!uvMaiM5BDmB{S>VGOehI)&UG zPzn=hal0&crF*5AHX08^Moon^whC(O8)=fbmpn=}xLh%`cuZA_(X8kwJGH`rRk+_2 zy@<9|U8L@Ynqt7RPE00$MWjXCcz2G+{ zi{nu$Z_$wQy<9_`qV3>&RSIfvO?pZ@N`Ill{cYy77Sh4eo4$_5Z1HtY_R~=3kKz>g zP2M|zRCGQcUWh~g=&!O4*I`{vqIaQ|QvtO|96b-aER*f(~> z%?y!^r$aX{8|U;4`1wt}q3&2Om-s*BlA6pjvb6e|rtU-9CFP*_4N8AK@ud8nGEf@g zFLvWRQTRoa#D1jN)00u`WR-S)cE8~4@5S78O_(X|;neR#I^`}}MQtgC?bsIB0JZGw z)^uq6@1gPECzJjKzVcVrPWur3$K#Blk+SsGoR8e)UCn79CY$%KxySlsA9wb1nmFX~ z7K=ON3hZ|3!5aKs>P_0ZtN5i~&aLF!BaJ-^itl~4eHn2nmoa)7dyLvcOYItkw*7(skt;-Hw@+eYExr42%m54zvoEjM*DoBX(bKjJ66k+G=fF;Bc^NXcOHb z2V&*;GVwphRtTO}FUniwZQ3Xl-Y5+7vb%TPpM`Unl>>D`G4~m_(6cqOpK&sJ zB6`vI$x1|-{oej$zK1Jz+?w#2ifeB--}2fFa7XzOudy?TKCc1%jP1>@jN9RM$tx0z zByLVrlU5~4iGL+dOc`YKvYR=p?PpeIdR9*G9B)LA&~+!3*WM2aKCJ0E=(RhfM@mjD zmY(M1H6kK8t3DwSoKeD5uj(K>f(84-U)?w9*@^^W-zQL)J-i`7ZjnR~NH4yz1Pr zE--t{FdACDoEoqp^TGVQsJzg|1S;YWzfbq=aeagKl{$lsQw?0o1eGenb94ySC1j5o(I<@Sctw%)$%#L{bj*`J9oA_jN!BJyJqp}GGIr|>E|`DQw2 z*n3{&6s};6a<(|x?Sc3-#-ds_v%)Au17W}n^?xL9$<`YGWR#9${qyZwSmsyr-n)bR z8q&W?NIS1K#6>?%Z;L0Z036n|xD$5KDU(atDlMj2*tl0e%N9u_FB%tA%F}_m&G+-M3a( zn9yT+eSW70>^s|Wu8?q_3qvxP zL?=d7OAj|FVC6IOqe>T|!=f}N!5qO8)5%xi-MxbqxPirOGZsf zkB*mY6ptQ&5c0sNZXLJBlh9u*W}x}}jq*x;s?E~R>gVX#YOP;|hgKG^?L#tJFX&L~ zN+xsw8tQEMkd%tNLIK*r3wy6=!u`#Rv&PUbF%hr(NavP&%xmSV?0H|(rWB!rD;`33 zDd|tKI-2NCmc5c!pR#R*&otE1((JoOx$;a8)baVe= zPdAA_e}NUYUfJnL0sV%P_OkyQN!~$xBBwCHKE_#A&8xtv&;W8$VfQ>!?_U2)eD$9E z5Wd3>^%w1#o);f?W^T3>g1G|cp*9Uxek4io)c?laZOt=+(T0&BkxtPq##%_N%h;L> zMT7pIaUV@?h5K5Nl;K)Y`nS3SW@w6XO8k}l^c+|^vHm*R={#tkYjEeb!^6LsUXYV+ zz&%ax=Lbmb>7~q4A*np+%9c=wHskf#NJ_1n^FOD$T?nV-A~Nvz?48cPIA|TT%xR?a zPjmZdg`@c;zt(D^rqDsyk6yn8%4u9Z1L%8xD}T#3e4{v6`diu{X7F1%53R0tR$hIA z9bOm5vm`|Cg zADE3vel;^sIWL9I$~b>(wf2{ZZErqVz~Hz#9jY4 z9RP);!YD+&@b(sA^Sg)lWS>w1qIv`MIcx)qRAF8<9ZtLmUXV=up3X4;>Z5W!fHjxO z>1Te$;r3n#<#LpB%1!cLNRHYItz|a7v$tSX z)C~L<&;u>BQp&G5i@HHg-A*>4fbu_SzW)oo0Dm~y*qj~5P2bQd>B?-Uqw*^CBAa*; zV^DiL(4YR^d1`GiSDH(?%lt<+cLx)V&i_*K>ai_Z2i5R0p1V~7`CeKazkqwxfF_A4 z;(500w{eQ}@H_fT=@lS{N*hosC~1etb|!GPmZk?uHcJ@y@I`cwKA@ZJV))WBw(Zsm8m=q2?c5}%7@O=Qs}@d^raXO`2|Hg^Zc58MmeNa4NizTANwJ;a%^kb zM6L%P2WIFxWVAyNspg^x)^=8+dFxIkd$*b0up(t6uVHOXiQZ+8o&&PwOdP3`tx_;t zce1_MZ1zA^*=x2XDcyou{X4HM%~V@6_dhJFiF6R(QDMI$(?x4~ zUv!*f*I-sYwhFS4UKAp5wBWGC19 z0+-Ht;URRgx9q65vddq@eZK)rS&%t8J>U0vB-Gd=HQF!0Tpq&a#qQ%43OFj z>HV_s{ECYa;U65k_i+jZ*l^|cS9-U+Ex0nL3cKl6$jiwylBCX5|Cqm)*(js98*=Ku z&`pZ-3H=S<-2n1$cjyZq;9nPC!$MCb-xXr~Dqb${E#8;0OyRHGTqOT{K*s5nuS*x{Dw<$O21wTwvoKI@}z4ye=3l}mQyVUf;2Ks!zmeNVb z#AnR2s+wOP4u7V(uFz3Chfi}=IY<)o7T>h3=uLyYHu(G=qoe%nT*Kj2Av!IZh8*j1 zp68`-A8Dvg!|(*%hwk;CU6Wa;q+AT={SIiG+X6F!OM>rsZq%U9c%;@>Z7#PG>bvKx zn?{l7q41HExhZwS10z#u(8^^LG0qrAxT*EBH`%^@&uQZ&z#}ROPpBjAj!k|pzn6E| zDQZP=A}%(EI>lkyrGlt0_;sb}YA5FKZk$E9>MZrV4!M6sJXG$4`@Zo|gsB7GjGm5ItCviifc|MaY6 znC{ZYazIa1^WmoZAT*}a^&G0A=Pwr?`T;LULVSfa+zvs_tRm!tvi(-K491b4oyIv;fs`TjLUH-c?M1iFb{M3}m((_k!&R(CLsJi@s@I5lI3la`oh70W zxsc^EUHHz_cI%mH|fpVarHW1R_c&-4wVUBzVzCm%d0m|6eU{O-0EtFYe z8~-Q{yiqXrp0mjk$!O(te`AVT`uVQzPvsV~gT{#BI@Nia!^(GGyDiD| z|4a6Ei%+7R&cvELm;S=}+>&ohy}*6_j5bBRtsEkS_y(@_4N|v0w9YATD;nS*HfiM5 zgbB=-HJ$npK@wo`+QKpt^*7;q?V-gd!Od@<#@l%hy(q|Jvy&66v?wTJv{!niKr>tt zT|)E7KOYS>4Q3A{=~c`j_SJrJmw6^rKR!p#AyA{Kq%n z7kY?^G(0ZDHJOXVOjc%suZ3|!8^||b(Wdkk-LfbrFLsM!>#hhUy&z~LB?EI zmuWcR`ms?u@09h(V{$qDWTvvU|2W3L@}SNmDOsgXw#lr{%&sG)^tA zl#>Fq^qzE=z~&q4PJuL$j~!cOyMgtGdCW}1v%M-4(+ON^9cXV|1IO_XAz2(QKTuYv z=hbs$<8rZ|sT?{SGa`0iY&hmZOvTvLaqBsAPR0(6$r-9i8{g=__xc#MoBR}VMH_zI zCNt3szfK`|0Aw$;-d}&e|3kx1k;Kl)3sXMAwa;m` zTTK6B)V1DcMXB1z5%VQ ziT0j}@xK5BVb5Es=xY87P$Y~Qc_chJuw>^*wBtJwkeaQ0dc*w96z=yp62E82t2 z6VX?ZRM7*`#zr6G3sl=_Msaor+2~(NEmVfpRf-1EdGLR1o`DC&f29#}8M!%XdIO%H zwP0@@=X>?RyUN7SKzhipi&A}gh;mQeOinkix|SA#1yYivLS)M)!Z~K*=#86rjDK4= zB;8kzXjk!RmP8#rLke%3zA88<_$Kbv|Fff^X`hJB*KOE=- zQ3eL$Rv+u+w(=W8qwk}$j9NwjKJ?7+s>n>Et@Q&gfVJF;a=RO#8P3Mvt9@>%W3zD1 z-vel_RoNV1%z#U}h7JQc+761zNhn=aqd&nd+)mq3 z@yHCgHiM#5!xNI%C(TM87S0j9h=aYTxxv2f4Z>S}g2cf@IS(1iDuKR%KX@u1(^}}& z0?PxR^mb@k737jo=xti862)VZ%QU@;pQsgTMH^wv|1)6fL;9W}q=<<$V6Tyy!lp@v zymb}FX+8Ku_2l|&oIj!njo?XJOTM9eqgl+EZTP+&q3wDr>HQzsW#94pc(gmSlPTvs zfOb>TZ;6+FIvP?=_o{_l4HPG>Y9ETRZlzP>n!W^{rG; ztWNr+fml&)$#!J0_5@91nNZdr;YHnQZhdEo{o3yBj`J;{yf_6fMJC#{CX#1*>!sy{ zIPD(w%ZtDB-P$h>gEqH9Da{-+4fR-Hx3-XN&=Bb(bn`h-hJszk|1 zhI|=P*bV=oV2Vl7pQLM7siPq7=Fv;xdI{-Ua2;LM&ge%1ANf?*(y}RK*)i4>QsWz5 z>yO7Jo=^Hty%0!EbhFo=e@1UUm~ZXiZd2mlJW B$m#$9 literal 0 HcmV?d00001 diff --git a/SpacePew.Content/SpacePew.ContentContent/Audio/Waves/explosion.wav b/SpacePew.Content/SpacePew.ContentContent/Audio/Waves/explosion.wav new file mode 100644 index 0000000000000000000000000000000000000000..6c783ea4f3865433e6207fd2dce717e60111c22c GIT binary patch literal 180110 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 z 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%0DH7W-YmUBfklBivjG+yJ;5N^d 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 literal 0 HcmV?d00001 diff --git a/SpacePew.Content/SpacePew.ContentContent/Audio/Waves/land.wav b/SpacePew.Content/SpacePew.ContentContent/Audio/Waves/land.wav new file mode 100644 index 0000000000000000000000000000000000000000..d38b65f85ecc79fd850aab51d6b2df5aa8a3b5c4 GIT binary patch literal 66202 zcmY&f1z1!~7hZPh?(US3?(XhRk?!tXR76w|R6+$QK|o4WK$J$hyQRCk;or-OpZ_z@ zy$f?^=A3!Yd(NDhyQ{0BsQ3zu05Xy>RIqpRrNsq-KnSoRUkCz48zX?gAY72Gm9JGN z0s^R8wnR(NXxX^jAVG^#<%9g79F0%HSr7!-JSwrYNXXdf{DH{<$8qO*FlZhkf%FFP6SxR8a7~Pm zhe(LdfU8J!O2S2wihqUv3jyKu%bwfL{9ehaC*&AwlbDWDp7Mm4080@xyhpS=`}_Vx z@g&)t;F|V+%ef&~1Njq57xD|l1_ZWi?MvqimkZWQy{q)=8PF&~5I7fX27ZNL54yO@ zxh%SHzQDhHbJYnVg{&jKL#jj623K6Qp5-1pAMG9oU8F!5F?|U$$qA_H$rA`XQ1Q-d zHtXlkCp^ZJG`E|soat{g8r&eP7A&b_XPkWR4WD1P4g zB|sz7pyIC;qMN06pl7ZB$pFz<#q9i^yEV04u04*!EBo(u5W8jDQagQzuTEaB>>h8t ztb81OqkQvyI=t511zpbUzgsg}?wU87&)y@qdFcpp|KWw_z3NtDt79as#3r=PDn`Fg zm&&Rp{8mllev9`t^a^?nr3$t*W?rX#(s|; zhnAD^i~}TGDvPK#ptY|pu63qXs{C3}O7XLjrYg6FpH{Foo_3I?tU9`?jc-W2##;B){nWD5MYPOyclAvS=?#y(D&o1`_x68Z1nC1jCg z2xa(rM}TidhDeXqHqYA`rhR0%Y~ZBFyhD}svQ@g>nrnjJIjmMZJj##MVO+mh<|#KN zBLy`w%^l_;oW3WxG$GquAil! zn=htMmDjlEXHPyaOz*GWkG-+I*xf0d^Xv+&?ja+5D!~J6e9{ZBI4Oq?U zoyd0!Ua&o&FQt;9l%|TIIi!2Ru*h&qFH7e`qeg8-eN1yqzsoGmF2W_ud%<^)zl=|t zcbvPBOO>mN3!mqVmtBBS=$Y`Tu(+_CAUPi{S2)`~(-9pBO)Hf+^>bQXMjlo}PBy-E zK}C@(5krw;p%Q^bzFyuBysCU2{4WF;1Um&>`5AeGxRyC+*u&Ta*h%k}a@p~|;%^dY z6KLYc<5T3B;1b|+;F9CE;W6Z`PI&?;zCML!|b*dHU z1d{0zv3ky1w-i@4Rxo!4&qL5qh)b!n=oqP22w$M2oVcv9Oz(|c3_ctp9L1d=o|2#P zpI{tCAH?k~=sa!v*n-+rTmPZjvQngcqfGh7yI(9rsOw9RRLVr2A5vrr0W!{lWGwL{ zBN(_S`RHWCv&?)VP0Fo0ojS_O?*toY5>R?~J!Y3ih=w9ZIwxc28kaIwq*g|k)))7e zO4l%U_fEP&d&r#VTIkfMzDRC}%qU;5ugM>>If=$96=>FK2*```eWB7pK|8=*rktZ( zRNituJ3|V@%EeAWWxNnuuNjSKnXi;6oh>3R$@)t6L%;rWD@kw5$lV#QRlR+|OGM-W z%wF6bymDMiY$)bi%wIUV#7Q*5Y$E(W#CW8@lHS4tT#HN%lp92z_zd_Gg!CjdWYwhD zLE`k0Kk^TB@34(BGuIE+X4F2^tuk6Q|8_soO8cI> z;hsv0NGvlo{=_Bf`sg@$w`EgXol>1_<8~`)ujz=`l-CTw%;bdS;ClPx`sY7*zspov zw+N0MZR^0 zuJnw|DGZ$y_i&pb>L-ia$?MVUlUw`;Bd1bVW}t#=!;AeR{T=PqcXRoZJtG=}_xfG? z+XlzR5@*ZT6^^gKGFYz&`$?*Zhw;9m--B>nVO~-oD5G1DkTEy&RZ3jRlu2m{*|I57 zBx2fwFiy(${r2kiviIV4GS++N>Bd35{4J#QE;SUj0u8>+TJ80nx?MJ%;Ev4px1Ec9 zIpf?*RQsvdyJ%y$0|bTy3Ao}|_!y2DbJ&VRF;vXVR(G3toO$nZeYmqi<4zogMT6W9 zvbltw^PbI~v>a9McW=9{i!X1?)6a>`IW7dPU~YvSAe|3@Fpp{rrj z`NNF8)t!x(;du%G`uM?4KTZZU%C@yR~^X)*E+c?PeO%B5+d4Yieu-l zgt7B)d)mtslL-STy$k&>Cy&=5*YWtF3@x1Hymg$148?>9h(d?R>!iySs}s9UmsM!8 zgiGWpl*(j%c)w7FFUt3xt{p6Z=Zt2Z=8_lOm!GZu+^pEq-X}S%Jv==4w8ylKv@X2d zvha3+YdLtMd4Kqv2cm56#fl8eMn@9z71N{5!=b`X{ zYU<(uNGZ1az&^v2O9SZAnLO%H~yL(wL1eDFu{-r-bW(P2~Luad5}K+Jb-AP(C#p9C~c5$tL<^@zuyjBG8<)S zp)N1ZL&=)`;8r|YOFAUEmUUi%Y>)mN#Q{WcQoZ|Wdwj3_%mv9ASBK1>I+5lR)e?Cf znG5AU!w#3HWT1M!p_=K20a&$5_?)SVs0$+kofjXE?j@gy!W$i^fuEL!bPZc8{=h}l zhTwwKg6w+G(Ic=j<_o;Xc$Jtfh?D1+`{`Sf8;>@uwkmd>?!De;I$%F6K7Me~0I9`1 zBl4rtqvNI>Bjd!;0iPaTZM<9U++aWIgUsL)(8k~KWV2)PC#S%axkT8FUnO4A+NeID zzrIH0#`Pxf!#~6_M==C>oqay?Jaj!;I>ESLzV1WdM|_1GiKc-C#^)d*rL3Vbp);l( zqVyrr!fVDLL`6jzMqS6`#^)soB1fXoBK?TJj~)mvI{SLSwJWtFxvRaebSQchd5F6& zzump|ap~DS;hfW)<$~Wb@p|r7-7fb5`jOx9;EB!|$A#V15vUz9icEq22`e2BnYf+2 zj7F0YYzXY&?3*4C z9C+=GZZ~Z7uf{K@E!i&fuF-BU9THx(BNO3F5;2o2Q5=!JB%r3g@s$^GhA_4jJd+2q z{IlS2`D#?kzVMG<|pxaToSWx!GX=T1i7y{9n5$-hXT`r`9fqAfYTI$eVY! zo)v+Gin)Qso@18pfkdAYx(CwGgW+Xa&|UyGR(V>4bXEWB3ymyM|YD%iR7FW zd}J(yGdY~-&d5MyTQpgmqH@8eJf3ik%)MDnj6{dYpI+x}R4tIN;2nZdpHqr*c8SzT zl#2@UA+w_}OS7zV9ZE{*kXh%t4!QQ+S5?_!RYl!d`!u4}pFDB7!-I8?wM{Zg`Mvxv z{xT{vz*;eVH5cLp?uxN6F^;+@Ym z)_*JWs^6RS!_k*YwtpSE5NhNYBcDZHc`z}NH)J>;k6^{hq-){>^f3zCx4Tw(%uPYV zLUu~c%^50NX{cdO=sx3GVuNU)A%D%^!K%jifpM8tgST8vSYA~1SY1T@nevKkvACI# zIsX)YfC#57f#z#7D@P)42me!_U}rKjX=NdSK&D}eaWWyAHP%4EE$K3akFv2sVa)6V zDq#APlw(~43xYJ(S;-9zVm%5Ce+iL0Blyi=-U}ZP9d--tBVINMcJZ#etpr&6U;CMV zM3mH(5p@o4rV-5WldF1Zf@KJpBoWT0UN`c6kExLwQa)CvGLxz_d}PUKQm*K6_XmO9 zwakIfzV*2QY6FoUO%J^<&0Uh0Sk1`KkqL0ZXh($g^wZq|4g(Cd4KBCe)|rt^;Ob{A zqPC(Gp?XG3&y29UCvx(UHzT(>^koMGM_b3G_Eo#G_o@? zHssVl)uz;-SNW(wB$pzCDT6CRBhxC~DTOaND;6rEFZ5m@fWMVbk*|Swk7tRyoGXoU z`)=~xhj$U~8n8#Pw9@_{_D35#6+V2rsH-aYIbEG!f43>SdG^=iTEdEj!tyMW zcQT1s37JWADI!@Nxx1gzKE-@gOh-*}iaC4)jsQhKZmyz-Ns+UWiI2D*fFclJHSl8i zP$Y6ak|R>`;cXr8*&iYHs4em=vgJ|G17HOBGjK%f1BJ-s$L5a{9)15?3yJ_oJbdI5 z_3lZ2RPrNuTe#GTNWA!rROkG-vW&XH_J%>{>8y3)voUlBs#fjpIssAJ+i& zAo*bNkh;)WSmd}ZI#9~ch#=m;hCu3&7Fhko-zUhy!#-~AFPxt`N;#@H5xY>iQF{=1 ziTa%Q`3ALx0dWKrt^Lv(kpNlNawE0?5JV4&05N&!ujD(e9*KUH~DGD6nvF zTkxc^C({<=%OM&ZQ*0J3D$W>8&<_c9uGW72%#bk{-~AZ-VeONRhhYZbdt|UaS1gDE%Joe(i_)ks;PJ@^Q$-MRa$sB@_Oe64Ti~t_XOwo>^Ux*=BZc+xKO(z zxv$stO;s}GWF(YC6T!F#V2TL40FD5cbrjoc{j4vglQkwSk!^Xu0xQe&G2SRX0ono2 zf&2L*tZ1>PEl>O+p*MBFGoU0r@O>Ebkoe)l2M73_Zi}m&*uI3*rYsYYvvW}*n<>8}J8WSOa*k=ZQ2E2v$ zfkaRya(&tC8C^}dc!rFLdIoks+uU8+*xyV!f}osIsfnx_eDb{IAb>ZD=R?bS9Zlt@ zaznEH@`Fmjsu=2h>a!a2+Ac@B!=5NxkMVF)v*$&6Y01Ob?z z!LHtLrC?WBY=V~x|8KgpG^7h|d2ogzL}X@{EopP4Il`aE*g10M?}O?G(w!2Gv%WTX zY|GO6Y52qB{l_-$&~Ohy%Q;ndK2M4khq@sh9wYUY7H;AFY>!`I_iD!TW8> zVYM#k2x#A!d`rODoJrpc=&K+%82-Q4Dxe!uL}-LFKwX9UxY zO-Enw3)D(?n{C!8NoW*BJpe?npvU(fvL$WaErnYU?w6adb_$59Lw-GKh^d?{98E_| z%!n;`iWtrQr1bIN!~a?$z<9?Ots8%xB%Jaw)jdV&&B<%yxb0`CPl_K6{INcOBvnNG zL%~Su$hyB#5+OqMnMrnPi_Y#c<)u8HZHr$*fSHqyMk0&ErSCvMG097SiGViXh~4P5 zjKKQTwGr|UnzwTY@FuceWK3V>{_!Mj{~fgC%g7!^jV!GX@B}DVP=-J*=Tci@M=S5V zKXpKTVt{}Lkt@0fNxm)SF)H_FG#yoRJ2d;!fo$8s5 zQ|gx*_y0zYTWP>&T7bMws>~pP*l*3;TW>;$5P3*df-|Lzyu~~%p`(7+V8Tq>=F0VF zAkYKu6PV$29!K}d4TrRvHNcw58t+x+r0#N`P}C!X4iVPzHt0_qaZ$L!G^L!}f{CHb z0kn3b8kj<6%)KwlsRTdi&*JUBuwO5!{}x1mb`s@|HOLf)bQkU#4ie2x1Oli+K z=6Qk5-q@a2UT^&E{#gs=!~1<_U4xwvT*YAd3|v3pzGt^D<4oqZlhr=+>A|b42LM0e z9s}45DPk}R=Y`_yo&@2S7SZr{3`b%)HnPlN-UHuGg7ba=%yNLPz<9tX{BK3KA=O@L z|4q-T_b}%FH*U?7{aD2p@18w~l8B0m%}&d!jGat_D6yHU=i6@v0ApN1&%#(j%|k8z z>R$~d3l$EM2+Rv&h0PV1KOmzbj4jZ}x7KIU9}89spVKu|IjqaO!I{J{*tH(!54W|~ z(D#<2JVRGp-4WUHkN=w?u)_2|2!8bHadz~(7|nS6R}S%k&ro1Ihp#=ZPh|^yN375o z#H#H7ML8`rC~z~7H-s%j)0fZYsbV!v(H>FLVJd(Q&{Ok~`%CwC;FRE3bTFPE!D^6U z*J?U`_W|fJ?|qA$8=JuqdlA~^H|_n#2NLk@Z`=lC#Xy%rn}Z(&sRxM$i-lgo(D)Bs zqEP<;A>Zdd=>8dh`T%1I_;s0P3v=VmFN@Yae=iM-Yw!Zh7cu5M`Fkc?p64gjywMD& zM93518Sn(KbaP5mgV;7Xm9etS-~AgfqMSQ{fxQSDrT!Jg>|T>;acYYDi+549k4PT+ z{D}o{ED<6iUdfg7%r6seEBL{3gj?Lf;hdh0j;D^N9$Ufx;rBUY*c;%{&Nb2ggRi!%ExiZUq{2rL+V68-FJKtD47frhsp( z0*Nqxikf7a{xQon?c1w>zn%$bS@a>K=jtMaMOV$&zB3R$-mNr1Lv+_z^44S=;J_YC&~Mp_nTd${<7`@8e`?mad%JsM?VZFKr29R z!zT}3Greg}5QNnM|HI{>Ji&XZnS_xj9ozJ$9q>dd@+!l+!D#UcS)Ykn%0OSmuGu@{ zAE_UqAH1ck1+_Fq@feFR*$<4zookOjSU!c12}pE^7|OXbfQ#75*I^OxVW%#!5 zCl6E)6K}@Ak2gF6SOsTLX&7H{z3;dS&b?=<96WpYDZ33l6rW`h+5dPYfKvMtuGp~` z_Av&qRqa1(ctoxxKP?_^Iv!VDk2{DsoZW2x?bg2Yl{7s(E;yPyCNo98oN=5JF`RqT zG#V!F))uMm@=A^ryjyJzOsRnGfaUS%3f`ZpvVc6ipM$>aQ7|zOD zt4s!2`EYxvxO02G{gb5t&jHQ~I&LUg(H$IhbjW_F`hzr}{qf__w3KhxzcRY+bQ(DhCVM7zM^CV?E66tVn~_MtVC|9@V5 z46P0z_8IYZ^Y6W3s#Y+_^`3!~5FsJemQ<@rPTCUy3%F#4hsG(!6>RbxqTD*=}3kAjqR%v_NuYr!K9(Blef z?iecfp4pwmh1Ba#f$Y5H0Sw8aa7IT1xlv-;^_*7H@}u&Z_La@|WWI_GZvXYXm6s4O z9alkG2%S}Xq%S4R0eB}B3O&rtf?6(ykKUYmnD1w*STlKd7Ir~rvxa;x2 zMcjqoCD4J;{H0tJ#1rhWbMMHoPd!eefVmI3 z>Gz9L&6{Wq=U{RC=CAGJFglQ!g3KnrK6%H<>gZkrPBlxr%IX!7h)V50JpAlJDu#|W zG-mbL?FF2>086+YKy#`Gw=rZCHE-5rI9dv}m@MUM7T+C`jbg5ob1I;VSmZ7mt$#8d zcpDfX7Ql;`YV&8aCTo zegk{QUZ(?Eq0&y+1ksW^RYmGcqx7| zRy}k^DU9K9YmH0jOrWDW8kN*GU&~f*+3S?&V{rxPVUwU-iyRrh)<_U63W5Vrh5h9=urz&ZVW%;%p;F5s$#?VM}9)Y(Q@w4oe z<*>E@BEYryzN{+~k|JXAhZ%qr!eA+f2D2(tf7>d5K;PS9XGzS1f}l4DDUp0FexvU# z#&AB{KWELJZ`51i!RFvq)5&%E75s1SYbZw8h%>HMDl5{(Y#YZLxO|`|I3l`~Y5km0 z+T>OefDe~*rrZMQ-HrCzxId8);7{zM!%~kG61psd|M0kg%6b00|G<>Xvf^*93XHVn zrXnqcojj%fb?VhEy8n9K^rNsuf)eH)uKfZMO%Z2jIQHTrZljy@i z(BUyRqyN*sEuh2c@czVoW9Qd5s|O(S0?HhurZGdlw=DOAJqeJ8a3c?{F|cERL=3)& z`H0e-z1EGJ&cCQz>QsBP>H%|wk02dnU{fh`N+>eZocFK3$sd*Gx+tG$P5i_8`alWS z(t8G)BqBRh7MB>~q2JlkGUMA`-^oYm`2ac;JcBXf77MiyX1igdK0_MooEx8m+X=@D zQ!WPgXu7@J>`gQ*SG{EeAQ`wo5nV}Xm7eomIKM^YEQA8!{`;Seuc0_0%k~?JBNPoQ z(_hkVdca4KPyW#rh}&Wb?f7sk}YNMXy(sWTuCAp#{^aI^?pLuU5otp^+j z)G#&QRZlb@D%klW;BT2hG=sDMTIdQ|91?70E8dAcJo&D`{br8vI3tu&)T()Uk2S%7 z<)6G2;;pV|N{~0@^a&nE0BLWYC6`|;SrOAp<6G?p0RC}{FsjMpZ&(7)^Iv$+l8}A+GbL<=K!{=IQ9wGmL z(fs<$=*w@3Nv?lZcZ8V9bdHLn-ieJa^!IFU)lgjj(;zsQT%(;hb;>9Y?v((#c)3}F zVc-CELiHu<7oMsCEWzxdaWJic0@vInILPWswuY_wLnK_>!RRlb|E zBp{ZFhg$kM_?-9(`Ez><*p{d)(SO@7ZXkrk5^%(?hcO?+$LV-~S>hF!MqW zZQZ6jr-ux+BhPMQ0x05VjCmc?@n`lilXri!_ABT&Pg~Uy%GR~h3WS>+AMTfdv6r=u zM|EtoMwGCa0B8$nhZ(lwH{(6wQxu>QY6wjVrwi8Y9R%JY95RQfPV1#nfvp*7rVT1r}i^|?ad~`wS6Zo=VkOMCHKNx*3tnE-o~-^ zB$=Nz3lO|V5=IVii^A{oMpty2E09ulSdIbbw^vlk=i%RH7+`)i{dpJde>e`8d0!J5+368iIJ5kZJj7|DmPTT>A1n^n^#|FzV6X!2# zzv-s7i+-ftN$(;Bo*h zHy-djaf)t_N_xB#jg?qm*w?FfJ;$f#2%rlu!eOauZN#$+=|39Y4c^2&pda9y@Jst) zck=V{H&gEDZ$vt7PKa)2XlY18gR_8K0B;FrO-L$N*TQ8vtC5D11IA4(2PFN+wR4|O z`XP5m5Qv5!6{o^-Q~(dS^??4M2>=EMZZ<(hW z&1!HF+5G5c1o$YZFS>fv36?aqV2A)XT|piFSX={K>HOjUUqF|9OB5N=dzuaZ>=psZ zwTboJ=ZJTB*L4XUc)T3^Bm>F*$&q0ZD1^qio+J3`UjNU+`|9z1?f7-8bzwS5PyGno6PgNWvZea<&VC=TxX&cYmQFd@nqh78v(%d z68bFsv+st-cMlyeP0tkvW&JEZG!&iO}cjH1hDV+}t-V)Cz#0Au_%)?k%B z8EJFKRR6QX2Ie^wC6U2X^?CHpK^T@G<2zvkH607Wo3{{f-@Jxq*jVugpLfLH_##E zN4N%*CV0$M!|+J36PILptQztb?ptt8ed5wTWK>XfB>tw@uR>#G;FU@;r@dLB;Z}(a z+|;3B5D1&c5}b&bq!Su z>o%}v$vJ%U3;SlBgmVrOL6H{M9J$R)l*R9={?@$CUdpY<+x}0!1jGQwkOC7rcAR~; z3V5sm?uZd7?_3ASFet@XErXxZv;jnGV+v-uw1%?FVMDZ*!PC z7%uww#9-$zw|d%!l&FHpi?<_tUj4u>QO#e<7ESYdO@DJT5Ac91cIYeZ0voBCO7K7L zKIa3OyjMN-eEj@ay}#SisEW~}?s!)s{b4vD8RN6~(qpnyIUQ><-xndzLPJCLLU#X& zuo}KTdWWn<=dN8JKM4HUQv;S@!8{})%ig4Xocncp5SP&k7s~Pz`r071dj_7x=N~t(NJ*2 z-C?`b+hXG7E?x@R?j(5+Zwc2j{w-%c?`8$Lp5g~s_V=F+@B^ltHSBmCq&$djzFY7s zM8U3HMupI5uKbHo4BSI%-jvt9-Ml6pk?1w%ce3{M@nZB`@WArnhh;H9EQhbT70zKQ zKJ>OHn%%1(f5CD=KrT?e#76(PvxCLv@_%Q{+u9)Vmc`!6xVPW_yorI&>b4*CyDzm& zn_g7isz|U*2VQR0$gsda{5kR}*TZ5l-9G&SM+e^1`UA%FE{U3wl+(Qq&N(MNMKO z_;a2D$aM4Ukkuj-S(W^i{!uud5GLm~5`!XSpAu#SROL@PUlGvwi!bZ&j+~zYK1~BKg_=V&7G&+!4Bh$MAM)5R))7R)##q8>?9ClcsE?M1Wjye+2_Sokcu`vvJ@Oj0 zMU2ShR@ZANFVxcs#calC_5Q@4Q!hY+j35b>c|6aF<|2u>ua7dHr)QV8WghU-D9ESW zSMp)IIe~l%9S9!?PYe$Wt@g)ty)=_iGUjq8esyKFnl?h#c38DmdipUhB{m-N#Nkxlq>-^Ur}D6*K7a2WH%fh+W`v3T&c*bR=(g;i>cvZ$Xvz0pyouI~T7U8;mNuCn z`|a0;Usl7$%K=AqU|o!0oC$16wACwRGza^tJT*v?$d!6{@78#a09qxMrDkDUEToK|R~uzg4>hYX!el=60p~ zyo*a_P4;+OkS3lh^fjbGc2Ix$@RSw(nrN9~mHY(11#x_rd@{XB|8wE{H!mDu-UJ{I z=(`_%lt_|GU*$hIz7>TQP9GyQt%$5;pf#oBB4WpsgGF}GG;Z3cUGgnmJW(vZIsSDL zZ{}P{eSQ7VkF{sl6a)_#arjgvF%RmOXwKsnI3AHES|4jwcE1XZQR4z-`bPiFFWWw4!zI-i=xhA)?wRV_9Lbp^Dcht zJ}Z-YzX{760GCTS^2O~Ds;T8ZvlD=uwz9)DxX z=!rvrEFBU5;6-#|LP>USMQf+|oY`?S`YQQb77A`v{(Jn`JUr}k3?!6q2#2s1Q67L* zFT0MrcCFX97Wk*Z6I^2guwN+EE?jN&AEI4lBVwX4W0+yMp=+b{pgu(Nz>vpg#G@b} zB9Oo(Kz{)0-Y;5M81QQ_D1Dp>NmzO+97z@F`)ngQvM{IR+p-h-Hx4mg}8Yy2_1ARK=T1>|p_ z+H-{y^5aJ*P8XEm=cu~abokZyF*wSo&n|^_e$2ia;BD!x7WuwhK32I>m)a3LHnU28 zp@-v5FUHRx_en!r7fG96kxHPKiWZ!(u+%bBJeXn`FB;4I3N?+r#J#a$lxI`>8W;PJ zw3nuu{+R9ul?L%C2Hmytj^xZrPh=hcSC)LS4`-RKIjlt%-zS^=2G{1~c4p3GW_(*X`g$ggTn~-xLb!_epiP!QLh^I)$&po4mo)~ZVjyU&0 z8R@V7zQL)<<@4>lBfE}YOMXxOY@`Nh=1HJCAtw#jobfcc4WTwD{V2FB?fuEqGTQfhjOMr9?=KS>BX)xm1G*zuzn51Tjwld}P^Zx5 z5O+^o*F?q{JEZEae!Thlvd*Ptt`pQ<+Ui#o^Jz6P;?FmQXP;u{N_0@~36cC16ww?v zH?v8xS+le^HP(k{rYg3JQ*-rE@*|IJqzp_~^OgvI(*KNAuRES~vP6Q<4^izk;;~>d z`=E!cVj&^O%W+4XrkmITI~>XPVs(Fd!+nKz8Ff`|(`N6@5%&q%5%Z41vfLDOP`4+b zr)=o?tio;>*bv{Fnwn{xiHGhZDG{~~LgGq`f zi)V&O1vx#sySDM$bp&n5b(CUudUNK26tj&ik5QE4DYp#o8P7d#ySt@#Oz5RuP@;~OqTiu-OF23mcIQ%PpF&Sx=&Q&;8IZ`*;2+>5&7}ZcyH%vWIu2j&Li4Irt zWOh2E?W|&|P$!?dh_%9{>E{r5sqerOVGCo3u#eJ$QJ0;R$CV$Of0)yp5sSzL{ANpU z^13Uf>8NqEb+UhB`qgIc=>u>8N&zYs$|mGHDDsLJ_N$X_uq8@2W+y%^SpkhAvm=KK z4*@?LpX1#_y05qW7la{jjnd-nQ=bDONh`qiu?uVgRsmw}} z=(=T=opwbwi6)Vd;1Nq5jf zQm2%l!(ocO!_Gmnr*8b}||`%|U-?{USPJxV);T zZ1o{To>H6-O_|n|#>vjtF63EQY_PR=iXEweqHGE05(Pho&E==PlC`{r!s)|tvSF9L zk}kc@_U;G691D%dl(=;47>b1!G#+??(gC@ymL?yh80a@3rOU-VM%5;zr3HNjOP>!b zQJcjE%jQe>??X`VXQ^FTWq7OvF-3Yr%tQ=?1%-$NKk)PM4&6;8amrv9P4rT z5s=&drZ8?UCMn+aU3~s_mFd9C^#H^P%38h?rT4}$wzMwAE*$n(rbnvJh1BUWuvk=g6ui{I7(TBdA$`boJoZ*bEK@>llIz9)vW{ovnb3Hcg0M#%#UU5EwU!0kD z?$aw%RN@Px#-E>VpiO=11XoL!yviPYUy!VxbLVU z+1G@Uq(914N_p}-)9YY(?0Ss+s=Z%mmUfg__$u(VX|nNqp`6oVjh}t(D8DBTY_N~+ z2+2knh1u)7S-22e@o6)P^)NQz99)X+ST3vAPqncJII@>=^JR6DIY7AEMP3;D1B0? z_{*=?cq(db`q&*wn?RbbowHjMB;TT3r*t8u%wtB`3Z7n)=y?4FJ)PlIa7A z^ua32JNqa<_DgH^R=ecb`m*9tIb<0phCG3xlMSC6o6n7}g?pSWlg@&u8F~1qcWHA( zyCbWf?dR(Xo^s4`rE;F~yfSbZRT*ssa}{9|LI0;YmqRO5YBF`EYc@nyO`2?M(CLqv z!dCmQgde!y8YFqV`H)K1pW>)A~EqX;{w+M!35!8!BuX2Rzq4DQWX3^?0l>_ z>_OZVyg-~GRFcccjpWe}jVYgvv-DEdQsr`GDvNr{*4z+vDN^nxifYOxD?Cy-kbN)d zE-cIK%QQ(6g<^16HW%6Vxv}hrb_I7OcJ1%xd)@H^IzveVu|3)y`faNnHiKPr-wyTB ziK$%K)VcWC7%BE3h0CJtMkVa;Uc?+lWkwIirMwf&4f;mg5YQ_+gS&@@{E*^^TU;Jp z&&2G|Y($?z={Nrv?RzZE%Zr_q6}I`s-(=%T11Rl3YBs*)=LuvvX6ojSecft$KH;>- zib_o($>t-VD^Vp|s+ghjLaj|rT%}jGNT`Wrj3DdMeR*(zu4$$!>Zes*R@?Gm`gFbl+r-kRF7*V5SP!5#wm7g0XDxOBSK1H&j?L^(`WYZQXH>gvTbF4%tlK?HHEK-Raa zyJPtWE0{gBbliSo&2lFyRhlHapY(Ecxio($(1@V1CJ{p+!Mn_J(Zi?ROdS~QkJ=47 ziaN|XzP6XO$8_5F;f$9oeLb2+wWV<4z!JrmD^o;OD3WaE&$*LLF@#M7={ynI(Of;9 zXP&8?DxXB0O8u=iJF|eg8nU^w%X36{2EEh=`Gdbeh9L3a=4<(LhQqkcjs=|wr@qH6 z%hfaA#tRKUvSn#yE@tBuJ5`Ghyx)Rgk8xgU$T*hYyx(T@@3&4>?dG;3eFKT!$6Udf z=^x7epS(Yg>nn^IQCW($P#yk!hj)%MTPAr$37Pmzpt>J*tV#< zKsT!rsSH?VEp|Yro~}In>!ZqF&6}g3O-Yaqt^#EnLjj96D=8Z>`%jLqoJ`!!Tz(uT zOcLao7;$F-E8D|5Ed@U^ON|SAK9v{tmX23``~~hWnN{AGK<*+VzDp~$su^QOYrEm# zV9#o4q^lv#%k~t{|3rCKv0JvD|0hP(!-j{Q8Y4zC>5HaIc=OMvd`82DSI45~tM;go zbV)p!q&Nmy`KiM&qz+MLPJ6Ihwc8%`r_4BP7o3S*SD)kTg62N-%eQbflCk= zV&INZ9@5#;aFe)Weg&sq_?$;w1woKd8j&0?jW!uZIBP(;8c9WQxQQ1z2z40KFRyIL z-*KTx5X-%iE0azY|0s+sAj)&dF2rasww4Bz46gmlMR7m zG>|(I7D@(EEI8_#@QVJL5aNlZil;_)PP59e#lS&hPqc@OaOgd|)~!+J{@tRozp;JT zcpDupjQRze2Wu)>-o^f~R*6$Au=D&L<(e-vN{XQzBD3N{ku3%YM#q8J(%reHm8Zwn=$@3RtcF}1 zcl#N|$Z)XLk=r4~$RDxPh{>pz=<667Xr(Cn3B_;>Fl5p0pjIJwL+Y=HPIz|JHj>wK zcZSa=Fi5D8xah=2q(sEkdBF6F`1g=w5L}VM@st^mguW|Z>r0x(8DHx}swl}mkeriL zlT}d6Q(BR$7QtuxMzV`+b`f_DLG~x#;(w;KY4g*S(jigrNT7<){5W}`awcTsD-sa;Li-Cl;k@pbWB~k3LZ`oZ2?8*bnN}Tqfx@<;F`Wh;-U9jlj!vf zOMJhDt~ebiq7i78^ZRU?aDE+h&QCts<^}~}bmGio8K9-tm-a3t2LnFi7ID4mYY zr9Bq&g=gK^S>()=`Gl6J)v(|7ADt2*OOaZ!hl`X-JQnyx=Z5@c^?pB9^Ja_7$n1^` zcJ3VpQB0{>K_l7pWx#PsE`jLX7l~l}U_-_vLk! z!QFj(;`9sm{f)$4;Xfx<#%8a$U>ZxUcc|3-72o-Bmi7P}IU7~r!eM)6MtqQ}XSy$8 zf_M%0I2>|@%ydq(Gdw>zwlR`BjlLy}oJkC&5uhZ;*j#3AATuLBYRb!=)iR8Iy^Lelx!Wgi zDV4}wh_ADaGn(Di*2^~2e^85KOVh;sk_nS~hVTb=5%w>lak{e`EW-RE_j$fhzd~)= zJel#B$=IyKXlJdtx1_qQ^7GC(_0e8?&rEfERZpm zsl-|Pb$8dI$caQp?ql5Dpf}l1ZBfY9|6H1B{HJ42lkJNtlWDV=mbTQLOR76aUAtx&0HsJrXYTPlb%R}9mrs7fVRD?mTDu-Tlv;xTs)JzSK{29 zurPqZ!nrAz*cW}0VIft}qiGBlEb54DM?~La9-r}a}LryH@nrZTO zia)BIqBGJbyhOj4#yJ()g=j1Ag^^iL*pD1f-5^kOE({k){Qkv!#sEdzVslCN%bBpF zHGE-44$gDdb_zpOk}c@e$nfyEG3}%!Y#H>riDW^B*83xFDdB+>Jd2le8zum04na>2E zy&B%LT*q2(+UvSbj1$G;c+>qx8>!STddH7%9iO$6D#~2P9%Fe34XXzk5bKmk>oR{s z{=PCdnKP@itAr&_kIeIhFNKYtH2QLC{bUw@PH5fv6oz$7f>?<%OP{ibmf6+w%7_#Yqbr z%x~c<8<)^eCK|k=yHvkkd?t9a`2nNgX&2I#A4VGS3E?=})Pc$h(R}#w>A?pqF4|L0 zdY%!M7NWglff>6lvu2&n*y(p??bKr;>k9iS=CVmVez@P4s{cgi52UqaasI5GP(?rF z4S!f}%<}xTdN!W`(qa3JdVkz814OnP4`MevYD3WZ~XYARv)<H&|Aw%Wy_`izkjr<}ps;@K_ir#JN#{U2G%M6oEHOm#ghV#w4jp6)|I?H9JyU9xb| zC%zSOx>4ZW=41&fnEY|Gen4$8s~k-Z_4k1-TRmO9dFs0P`uV ziaT~c-u(Xby#={`*X?+8#@_1efLM)$!(x=NCX5~KXObck`)s0@B0XkV(vii1^6v_Y zFUO6sh4{skU>cmNS`q|YrsM-y_tAdSlr>=HDE<$bJg6hEHk6i`uo7W#xv;t9Fns(gcQ?w53;LY>yrbs?f- zUK`03St<$2o6-!?#PYa;c#$McH2zF{Oe2*1SZ8|^Q=hwKT0eF6j>C2yVFpm~Fny#Y z#~t6v8DRUFp6``^^b>z98e++bqO|c$%E(p2;}#`x>RMQPQH55yd0pjb#|a7bb0H%c zWjSeyDPBHW9XuJdY%~wNr&RY?3Aol-+(^2$gR9dO#&;jQ#RvbAzLbGh;=R`7*o#0CX9FXiIXXwuE5>*6j4WSmI7C)E@3oW zx6tMMr5A48K&KnWt(?jF^KGPQX)B*5|L%nnjwCld&lb{e*<`&quN;=aCBkK;X<+@E z(K9Q5CX{G!eP5X9f zUwPY)QL=MJpcH~FqtB?hMUm)LMb31}@OD0Lb}p1VZ8Gnr7zIC4_8l_z2bM`Cm&FZyF8C(% z2W7_L_y*P>en0l`<;xw9Mb%lprG$NVOdA?q&N?nf+7P6<;jnyrxJ8i)LNBJ-P~jW6 z${xG<`m^{R%JaVEGR?xcI@6^KG7RZ?gSY1MdJpf063xxq)MXS#6wCdwS`fsvXWOgUkV=zfk)tak^hD7N1Yz1`_O}c&-U{-Y@A(twmeicia76OSM#8r3>#bc}Zm%c<4omLQapT>zbv@XL1L!J@QY>!)lpZxVm))wI^m5 zxAs)fm?@e#$c011Afh`wS#%1xN@qG-mCF=MxyvW3)oaj|2lHkV$U_hMa{6e8#ipJw zUan%Sy;y9Y+#I4GwN^THwc^c@s524H@KQ^_uKM+g zT0CvfWI_;LSw5d=7==6#jyj-pqHn8IW7&+6A)NMsr7}XY&P6m5?i{6b)wMs z>y;hl^p=>nnk;f6i4%M#D#Fw{c3vTvU0ifLxugiZGxl`D+S#_>AnJ|;*2~_{DTwR{ z^Y?5D4C9y6vhE@4a~pd1TjDa+Qa(c4 zbb+WSYc@l1ZL!TLor5E)D`gOh#t(pboW#R}!25ku@sS7pU#j}IEz-@98-c!X`A zlpA|%9CAw^%Gdt+&=9coW~;nvM^-ouzKiB1v`DoJKepQ{Ehc*9)57mh$J9dX#xkyW z4&xe)3}Or8#R~6MBYKkFHOlYF&;{QL7aL;}hu{tr7KnaINbIeQTTNzV&>aA*Ju`Gh z2ZzOZ+2(seyvZNd}s8B8Apte5BLIf2Ap&}O6+_TU6A3GjzQXX_4cj7 zrDe>E5BR<0JftibOuIhghHZ)U6HT5&eVaU3wDi7Q5uC>~W*AFbD-*K=uA>-h?@+ht z^@P+vIp-q`p(ZA+;Xg9R6u^6)0 zRB1*a0h0;U6Y1(nSp`P@-!OD?9nBLioHRQ}wWH!a!O z$ig9?w*8jhuAJk{}EfIBW)F{(K0ct()N>VqZ!^6 z?o=xo%kap|Egor19=*MubR>8VJ*ztoI_f^1M#Uj1W+4-LDDhHK;C3cw3W?D<<4OP! zI(am%v{<|Q`vM!S4t4F^ZpU=qZKS%7WuR$-XZ_U$FM%{|9E%%kH$xId9KI-qFbWw8 zKDq&R2_6K$9}5o>wP(7pKa|=**1XeH&_3L6GO4{JvzfYky#N02*2(kBBaAGPLq;Rs zF_E{T3H;uSNti@yRGofh(2Skr=&Y{FqrUY`7K{-xTB;C2$BXzynjZD~`*okY%Qt?K zW64InLS!QPm_x+KAzUpEK=lJum~(i2p6ak2dJd1S9Gfc3eLTKaLcLw|F^*30j@3b( zCG(RJ%zT0&++HNQjkY19hN1GcqBrFz4Lrki+rwBfjPgQeQdkNx@=5pjZ?;mloc$WV zQ&W}R{9ZI>E%8ZZ+q4*7k;qF;h>@$#tV9Z##**rxN`9fA~!7p+o+i`Q6*V&VBHg!4%Fh zR0=CO2mKy8w9K+8|K&vbeB`;P@GzBqxw?u+1u!c1t( z)g_hDQ^7|c*Beq#qi;57MVdT+Vj+ARonmONbT;#};G})yK#8eKMpg@1(_R{x9S`f( z&ZEWQrF(lHQSK2slQ!e&oTDy%?Bi&$X)m1|JZEH@mCDdcdBP%hkA?h*s68SlFyYT9 zzk-;~&}|rA9jzcOD_-MX`N(*qLQQs~)9AY+WAY=OV-Z=t@8l=D=Ixp}T<^Q0Nn-H2hGzIxKT?%LP?Ydw&9q&s^l9dcw8I?fDxV(HRS%SU3T$>I-cDX@E_Egf zDoEQU?da4KSWm8+n?>}!)`HZ3~s$UY_)z1b&2wVU6H$#wS;u$f^NyB zf20M!#kWUvdU1RGG6&-sM&#w(j^up(Na(=&Fy)-q&InR94iDiL?j>^j9%Nx>_+jsG z&&1%xq~ucndc($#mCrLjhTe4gH81`dZ!zdj8ZMY-SW;h0+hE%w-I3k@bDVJ@g8U9y z{sLvcXOUr;w~eD-zfQ9yZg6O^=RgpN6q0mQx}?=VTbKGntperGmvNlVid*~eqbVd^U5ES2;R1<)p)MMiXP`m`Irxdv!Y zFxs{t$)E#~97)7c}@?bZc? zG0I+xcK6o3wgsSgY4IrYwA}*6+LIms>pCmM&l`WJe4`Z$L7 zCUKWGHZc!Wk7bT!54g8=S1A@8W_G4tP7BT6nfG6~wSYW#Zz^-tda$I=qHlQse{5&Q zZAEgM^}yn2?T~7JXiH|zVu^6Ub3SmvZYgl3d^KRze|dJEb^3f%VX&z8d$&*baZhc( z+i>#u=yb>Y&E-F8$h$9H?C z7dkk9#uVNDCS0^%-O|}G=YRYgyN&EF)ifzG_QZ+uisMW zN&PYBKGV9~toE=(w|g5yn|asFkjPx(*4imIY9j_Ay2|C~-uTkWc>F+hpTcm?tl$nB z@*cqwWi53MsVBzk{fX%pT}t)oHB@!)+w;cQ*NacTpm|`4V@M!19r&)7E)31`&yOwh zY!Mz*AG4kC9M*3Kt*S4S&qmIbE)i``?vtJ(ou{8*?I%+PHu zonc|D;^yJq#gaq92Uc40hM3!>8w7r*)hD-E4}VxDIMu~DrRbxNrYEMbz}h&>oImNW zYVB!?YOflqT@*X~hGL2h!LCD&J$SWLI%?JXs{6RVby9Zi@ewk_4D|q#ds4fFvPe8t zI}V*PUew*{I5NEOyF5DW+Y??(n|nUhJGDC>vY~pEk7R(xgGP!JayYtPIR9XJaoS{2 zX-o0sBQhO^J^FVf@k4<%ikY(!@*%b1Pvg|HvslY zTaDXQ#?JOOiGK1VNe0T3OQrEn5ijkb4}Y)AFOMljsS<7~91xrH-w58TIB-5_-;X>% zIeCe+jCn}pL={dqK}%0Tg7*^1cej2?W`=v(ah`r-**p_#bqn5RnT9#-M-xk{x zeJV03kjop$706D?uEG_?Z!LaLF+*!q|G9Cwe!51Uv>$I5)eUTG$Uc$mk%2$0PP8d(U$L)2;veN0o0I5apU@Y%D8 z=uwf8+R?U2NI9s*dmfNJVbsCaFpz5yzQf{9;*PGZeHhgrSl|68a^gM;Coi$aym|90 z*QY;4+%PvsA5=WZd0Q0TasODG>#f#`U7rW39rt63n_n?rF2eevy4l8G?3iOy(w}n# zu~ku&Ag8X;jOh-bOo;6q;y3b|E0{g5)ohgZU>-Sb?C1DylZBd>@%!0=G|}N5MZM8i zJ{EtpwgpfzpHK4s@+mMbCTUVwAtVvKv#zc8vc#l8HIMrOS$%Y)20-u(_}N4 z5Q%qH%2}CLnO~+_1cx(|W|XKBTM>;7iS1-~r+($>ti{Cdag!PLwY+0b%y=?U`X`LK zG)RPYNN$@XK=N^12SEo?Pw!CFRP5sJn(7w%PT@}bPQZ@)_QnSNiuDZT&~fWf&1flY zflxtQ*_+=tdkSVqwkuDz&y`Qow)SS)duJOyR7RGSl+)D6w~0@D+eO8B%Iqb2sSu?u zra`Kdaf^k{3#o5Dy2rW|uh(q(K2EgY7j0#GA4sW>%3MYpt zxik=QHpKf&TQi-!`y?V^9Q;(_7-`#YhHPpwvMayPB+ln%Ha=LQ#GT^Sm$6aFRJwon zBj*^&6f*vC+@alh5rz$MIh7yveG+ce_Km)N!K$1z&u9XFa4uj1>>hS9BHX>i z?xC$?Q)IQI#6kVM@~4ZuGAFMvJEq93j(r5S(}QUW1OgU$jQDQ|sfiNYJC+YnqtW5g ztJIcMO}u-XlY~STX@47KId_g`wt5;m!8SzDiPLaeb^asiCvMxv>5Vfz>YpO!59)QM zp6Tg8RFx!LxlO4qFiH+Xmxe}6I>Y}kHGFQa>F-{0LE57%;?=n`C9Wu-O#2N9f9|N2 zuNtd@>$i8$(0ufP)1}Kf!Pbl6jOzL1CU~?Jq$DNKB+4uH{NuA^`>&-%YQKJW5>5mz zPA$1jiFBrYk4q_!!G6n<%wKD=vBE^6309~DuV23yR)*Lqc1{Y-+wRM z7@9^A=ay1B)D1Hld8VwT@qkUPTqZ}RMjG#~EMFUW#6d>aepW^hh&4E80ADF5O3`VxpOBHBKJd8P(8Ppt)G&CqS$$P~i7o1ze| zWBE_rnFjCM8U?gJ=EMr`18Xqg^9f)FUxe#f*P2M^#G-X+u6B!o5&UKs+sENN+embS z5yk8YJ`vfGr=RYYNe}Xz$ud2VZ8lW8s;B_eAaZheLGpoo1ev685#g9@%SY7c+Q#GwHOs<#U>F)NF)uQtfZd%^td!it|9+1Z;KP68wwe z03>qrPooYGy(lsKlJ_w?@2L9=a)Ri~tID?EGabESt;!6tv`QarNxJi55^t`H*WU-$ z&A|Re;4c}ImK>aJ{$)K9+}niMgIw)*JC-3eC!O>Y3BXB^0`QXb?JM$Ga--3bdubA2 zU+s$K{sqXPxyB0o>+>v|vwvHzHY73bt>dS>iaU!fR3}Op|LhFC#=pob1A*=CETVS2Y?Y&*C)v?(V1OErayy++ey%EXRb9oS>ya-sLLxz5G z+}rCO0dY+Vi%;N69{6PR&mJhCszRpSU@``k;JAjLxwNB@8^1>oe8=fEMzuDikFCUF z7`X{vV7|b^q!SR%e#l^s`nL^Y7hQ#Cri+ceqBXyTiJ71U@9R=vpEcqM5$;-sukMOc zC>?N4`2okgS)DU8_R0DgioX&yDUl5&AsgO>uNGbNo#>5zy8k!j?2Cjiz~0Dfsvxk1 zH;12ulP=;f!@&Lkzej;71h}LVw{&kD6Wrromh603{Itl#?bU|k6tKq@gpSy2Z|-?) zcWM5?EQzf%bbGBFeHujFX@ZFWy)NXqRIoG^?ZS}*t)ZvL2ct2RH z_!x@yTJ2#ad&_BG_iC;qT+UHpqP_}|wecU4+fx@47h=~#5jcT#Aj25_KZW{4V21w& z_7PoE27&DbCPh-e&5pVZ1luBHO2gOW>(o#LK8h^!RSg#qm(O0$UdNbyFmti_1g{K< z(1Y*Zj80895!S!$*nsgB*be0Wh6u(Yrs26dzgJ>yX~hsu%quk z91KH8qHo1Oq9}t9mIfikU;K80Ux#^yz6+cHYBeHuhC^WdK6!zULI*>Sf_QNR32Tw07CaodqiRxzPV&&R!l@ABfb>MyA_Q+Yz${0yUfM`5%PQ&8?Hw-u;N+@-_Y_una%GV7Z8qm>Zv3(j)RG%4w@vf0|Y36_I7K zCCElp1Jr<;X75YIeiJOao>Gms?5**5yNT9ru+eXd5bRFixyi7$y7{2z%%f<2EC{@%18Om=+tu@2qy5xdRpWSlIo)< z1pWvbdJ+VGT1{ghYtvhZ+)%isRiZC$Ds4sL$ON||2;8PUObvdCLUBeX=F4?HwY*XI zpp|di&w!dL>~93N05JmP{T!MCHT6Vsv$ZQUu9rt*4BDitNCB`y=oAtxJL0NoP*%-LDZXS<{f8F79jcwJ{v*xeKR-lJ2)}J z$5{xO0%<^o&BSUpD_!;qIvcqBt?C1w14!UG;2Ghy;1*>4{Baq7ImDv9F5$ZOhJqHp z*KK;UzEHdMdJ%a3B~;fv#EI7__)4pjoH}%+gocpCyS!72{E=W6fuFLUPrYS)Z+y-F zOX#AvodO&F&TvmY-`f=c6Y$yp@fO65CpN5{eJ)75O*rHSxbhbq1n{=EyR z6ccS(!i}Y#+e8kYG*`>;4yZlt9dF*HoX9DHW-_bVAeUPhcQ2F%PB(ZD z1a=l!8edVuI@FDfEm#B8fdP4i;8(0hI(g8@y$nPJ?YBXMd2*wN*x4e!PoBKWbkuT6 zwj^hF7j3ln?4 zlM(Wpb;*zHyBr0an;@mO>Vp(a<9~7{!g&HY<86QEpWxnRg=2u=gsF|Zw)lf(6&yV& zJMbF>l_KWr_m5Z{aZ)d*AytH$oQ|?*&*p8#;kvX2UHV5lFQD(8leMZi+IQuDaz`NW z0wu;cVq7L<}(!cfD4ed?k#EG#cZho@>#+TQAb}zs(=GkYLG_{|@Z>GhcLrf$%)pqD4`6|zfTPuJ3r4c{>d2KhJ6fB+F~vU)6}hs%BmuwP8hxE?tXoH?8B$hv{jUeg z%%=o7PJ$XNKl%ebObNRems3eI&qF{ZlBh{-(dP8T)}VM!Mg)~FYlu;jWZn8|B5CsNb**%B zU&lCiAuk8-Xn1Ro3te83?!Y>gD-PfX!O!5kp_7JsB4g#^=d0>FAmqmx&U2H@Z?*Y= z@ydI*M4hKxySt6Q!h!W45N`zT|Gl3_RpeCv*)nU9%a*yLQrtw6Ywp7ZJ!blwZTrR{I`{H>$93ZaXBoF(w;g5d8L zP-LgoThT|ewU2>%ItX1y0_x@N1k?nm1O|km#P1bI^(vlA-yqdWf&1W0*J527p&X3e zasP^wL`ooxA{oFR%n+F$>yvV~*sKMz9D!ec+XJZ80P+-ku~{A7&Vwwq|4Q=>LkZxF zX31mh<44lxu2DO+8oAPQ3NK_=3#V46@2+V7c+(3g4|Lm$-7C!_&ZWmj-tdP4JtrqJ z^>9JqqiC>a@IoT9iAK9gwbVdbuCLff1(d;a&EMa~CBkLxT0=oTnuQUjnAbg7r=^jX z&otY1MRFe2rxOZ4y<0OMh>$X{6=x(xW%a@V?lvFBWKG3`xmZzZl{hmW`b(n zHw!U;PVAQ5jje+Be|B_eUP%Yjc07>x=OU-A^TO<-gBL&rLMktzAH426GunyRCO95n zeG76W#GLM~8G20n4!l|m2(>oE_lMs`AQQU^x+S$+z1ssDG~HM!JT`Z%=?&R_{i?N8 z3!rYzwM9dMv3|*KW;(s#4b%S*)+JQqSvjx&X>+p*ypA>aT+k0b`)tq}c|Ld3#sIWr z2x$j$EuU+MSRy-hb|xWwCF0pa?@&sU`#tyeN5W^lKR)_EW;6UKeajc9j~A}}Bm1~R24Ocq8*vG}{X~=OV1(dXM)ah=jh}H) zM(B93Gk_gJzfoXML$*rtm-6UBR9b+Ue;;(t#z6fQ&jU22Db8O=8LrVEuV&m}Kivqx zOqFRhKefGy{lLJ!l=ItR<~N?Y93J6GL84-aAJdXuJE_1c1o#-nTIVOG*>u1A-S9Pz||A zl#`a_17eB-%X!;e zb~2Aj4OJcjB+kiQ(Ex@2#^GGmIk3wC)CI8Bh`(UmgABp^Po;&`%dJkc_t8{uE z6U2`1HQDXivwMy6AD{Z6!5E@$=dTYZV{Qt6efk4l=NUL852)hjus?e(|LmbIm<+#||gOA=M$ank??C}1z&KPYt?6+_YFj8hOa?6wJV;r8J0 zbn#3BsJZT+OQ^HAlZ(GyuT7(E`Bf|q>}^gv*#}KD!AsOX)ZRDvc?8#_68F5u{i-wv za1Nn=(dLegSo9s54=M~b zF!obpRqD(itVeuQs+KQ095_60Lq(wXyeGUyyg`Z(dPEJ(5hR@>9L1bZfF1(B*YaMp z{Pci_d1Z&IUh(s@0I1JF40C1Q_W8|ip!ypqm*DH2P8MU$%0<;lg5BTIAt+6{fm?4S zzOw!C-Dse8mgfcTIDzhX_&wX>Gdw>3od;CKMNkBu(uADQT-@J^H*@pQ9~Z(haYs)x z*mC4bda~?PH7j}IA>sqF`E_r=*~*#^>;qPL+gJjs?u}aI)aMG0+VHk#-cP(AT+suk z%PZ04iTxwnLwierqHAlBV9a={2Dzr=TS{Xfu@Cz@>Yw9B z+0Bs$0JJ)oqdzR5?rQ!+9N?E=Utu>rjYY(peV8l2*Ee#|t7S4jnXlR1DO;YDFWbM5r4<1B)5)+NzF z#lt6JCOMX4wth}8+z@d)P=3y!W>9_iOQ#KoASaBg7{>+F(G6Qqod4;$SF`D7&}VSG zJ*pu>vQ@mM7^GWHEgmnn$2-F!eAyQ}pel^}ja!5`K+&~Kv4oygi5z~uS^JF2rNN!T zd_Xpj>}WytmojjEu0)<=qxq6Ho;3fts;H?Qys9|D!vS+pn~ewk^z18VMc|XJ_3}K< zt`h|#UkvNY)`A#ZKx5oJ9J%as9XMPSfKkwOZ?JmNJ73yXymoWo`NtRGIHoAOkcW;J zW+FT_63i>}!E`3WBOSz@w>|XK(dhM--&6!$jY|=DTA#hD&jE#4ov6uh@| zcxN|fDPy#_bMFs-<3P(wU)BuCPC6uuP>DgA&-UK*qblPryFX4 zHUctYcB~xvApcRv_oedleLNN#RSp_qTNyeHT9X;u0l1zbu$uC?<0|G%>>TS7=nkI! z0n&)jl6zi_roOUr6rHnJ-~Q8jWEgP~!B#MLo!*7pIaJCi4}CGwiTnr^Fb7V`SKTJqfNY1E5zM8S6Fb7^ z9JUhl>PE&%)-FzAt{%?QHqVULRY!z@-OC4MeXb?9s6r#oUj6DCyeGB>*^w}JfQK2Ytsrz>;&are{i8{!g@qp@Q(o3tJxYTH6VvCzYPAa znbW=)#}>rQJggd5tli48|00vB|3iOb6t`Xi#qwHSz$dDD$vZjN(pU+;aMYR;`$n=i z`zjwH$%v<2q&}NAq{r42fZN13-ak!Tq)_PFkZ{(w<~o;X50UX^*h!=%J4Sqv`uEF1eNrM}Mo`(2F*2mq<8m?I%jXjm6y(!-N*v#_DKQmK=wFM;w z$>HbYAikc<&+Uz$5VDMT-b{Mxs66RsWnI8Zf%u(5RiU%$?sQp8xfQ4h(P16Yr#T@5 z!Z?p*7#zXh5ifM8z2&U_f*#h34SUc6okNwN+eT(0ZID;(SV_rn&L_k%)Hfd~-jx0u zuak7DP%U8~-BPUEh2sEHkBHtz2Ma}pM6pEl1>X*M8Za6bnlMuMwJUIMi;7#~kFKrl zJ-9@0dNe!v+t1o#xinsR%nN9f{j~0!_#wsl_RaS3T=aJ;0k*!j;TI{X_4*qZG@^=z zKn@#-b(@Ky5Y91G<{D{ zcyHtT%Es<9OQGDW*ehtW3_Z0U-KEQ4eOFWP=@)#q1hzy_h~RWs_>-K?z5%q}+f7%y zK0wUCbLX005&I{_UG0u(Hm|_V@O_K*cUe3F&Q1hP(Zx6~&bUyzW{CNyJ+@PqJ*6$5?Vuyp zKh_bbj{E%Vt_@-EG=9m4uxpM$VEYkNRbksITsivxaRX{iE=i3qF?IT5_%m}jJG=_w zwN@ZtHU{Tsx%7G=lL|)YgWLdR0=#gYgP);EJF*&Lgsp6Mh?YG{F@7%}jrJiqqxt8p z@y-i-Ms3NUr@S_@R~{McsTPlwm)nZ_Ohdb8wI;w05zymKU% z?&xJnXqIpJ@@lM#=OOz3m?*bW&+3nPayz&`oh2y}}Y`?6dT*!^Mm3Ds>W{j2^)z(9WPDk6(Q z+l`f$dxc?VfOVElA15*~pM};NAgYJ(&A^J0r>70ELEQr-(MOD9=yz7tI~)ri!n0mM zs|M2M7gJisJ9UbiFXr`k76z_0jk#i2EE{4PC0WE?jWa;*Vw?RE3_0Mh=)W2lKw#tv zJ?(c;P6Q>j-K?_hh|H@s+(a};6L%JR^2)w_;f7n!Ygmu`M51Mq67z9t&^oiGp6rX` zXLHx6ko;qdFQE`!2xsoTQuAnL=)37C!?>ty>)$A2c6-v;&U6=i)KX6BMJD+6&46DU zcR_k#azC2}vQhl21BiV5>#dPswSIb`bML*fNdM?<#L%v(fL7-Eitrpajo0>kyl1HX z&pe~n*6nTtQbc_Ve03e6KXfV89W-YI>;_7{&-?6+o$+j-x^5EQRAf6Ct-@bRu4>SN zkYfUi!s;U+k!Vr3->oExmA@IpLptQS{nYj^)Jv$lEs-{h6fN&-x_AN?Nbq*rq;z{! zb!Z8F*-E|Y^fqSeEru5en+BZuYfpK9mVkPEv5*D6dWx`|AXe8>iTu&JmUIh^*mcjZm=A=54Ey?at9)$ObpHU0lIlAfs*s{AyS5?R z|03)%F#mAbF()@pH_5iP11JT(=ml`n<_}Fjn)z}66of2*e98*gFA-eqCAXF=&|i3M z;PlmoTt87}fGOy_amcldFa9Tdgb%hyhAsQ&ys7@YlKZTNY`|9~u18UZXiTy!g5#p6SZmhF=4`K?OAQgB25A!*nz|CiN za9w%@wXu^mq0`!wZvm>SwBrq~_0-G2YsZ7|K>Cgf>R0PnWgh4J)v^m9AL5;hkeeW! zLl@8h=#jg<%f55v-`Kz78{4qKhSma**8{v_IlgFRxL-3?!Xuus_TkR^n|cXcB?iL!<+>Gxr^>;@p_1#0(= zfZU*Xz{`U0K-_jha*DYYkLZ@vS^*fKHh{ADz)jB1={1!@FYq1s`3%YgUGo_8XaxR8 z=q81Iu4*fd&NNB}_$0(DKmT&mhHt?r7ihEU6s2y%*s$XAy#(-*h&}-O65@v&h!a@j zAMBqHNCso;Xf01EBzm6rJivolBFaR*H^T?rxq>-QU?id6D<%sfZ{A z!%^s{egpFl?;lZr0%q(nG6Zhu{Q`Od#F^4AQ6Zh&e6GBV2$-RR7or#G{AXv*p7IdE@jDYqFl!~IjX0~0fLTgP{(C{J$}X+AQea=dU)^vd$;@MQJ0 z@XYWE1Sm!H+W|DnE7T*{{m{M1lM(pN2+HJ!ZdL!}q1YCw#~O0|gCq{PA4rU1EQlGN zMN{F+Q!#lasP{!F`Nmxo$zh`++!(k%0+fNhT6y&s1*YP|7ulXXQh_~~wkw0L#3pn* zTp>uy-01w(84%qB`^drhi=p~GIF^HBzQ_5xE{uNZMhygEjhKh zHeXp7u=hTDNxB|5jyR&b3c*_ic-h-bYb6QRt3a5@ov8te7aCDP%6!&m2f zfSg=H89Xyy5vqmVu)CP++RQWs>X0D8mcnClyt{`E*D0)dWCW$Ta!8O4Jp0wl^%5hZ z>VozIn1dj}f`Qra9tAM~d2=4yUB)|-aDD`w6hHsa%Fxd01AxbW-ZIOHUz3`{VgGlX z>ea|>&yOohWe5YO>`sz#KAh4Gd(NlrV*ZqRM-N9eep~0Uerk*ufuAFRpmR4c`eSwJ zVXxSp6zPnB^@9e(EE_*pMPMfJ9~_XTP;Xs#bLUM5R>y1?1K?Ni0`*kswX!NZ^Wt_* zZQuul)+50T-aq_aHX3leg)2oui<@w4IeGtgc82(y9k{haP=}CRP@;e}&d`=meZ__y z<}2jrdkm_g+Yi_cXl;7nxmuvzn|I#Tr>#j*(!4Ju_f|$GTtjTL=yJ63hd@5Fll8@P`d2Z*Z`$`e%pdN=+V`gwlHL28-2=kDw0`*L zGY=^y$bXV&nCndta9!Cb0Vi=AA$76oVc8v6xw&*}4%-kT56rzbF~2~t&}y8=Cc ztOO7r1g*us%+Yr=osf@lFnSxKP_SeqLX!4oe-5oom+{_w<)c#1d1gchCTZR-rqc{9<{c-2f z0)Iz(sIbrBg+b`W2ot0rn*b zhr!j&p5N}H!!1`e!1jROAfSWq=g>P|gRez(QSQDY&s%%-Tl=qHNeKu@Y^#vyNuFk1 z;F#QQ|5@6d&r!+iz{3@veWV1VqtIxo-?$lrr%YAMnU&3YER2Ub)Nd_{sy`a^&b z1xPar?8rwU!KIpFiJOd3^1iVvFdhP7gu3?GvAup~xBidqyM%VTwc5XZEoH~$a`#G$ z+3dKV=nLM#I-C&t{xz-}7_WkwN9fxSsuqp*F8b}ai1EKCb%MX#^79KE2`UXV07fa` zXYd7qB?V%}24p?_6)=2v?;Szg4L&)1gZF^%yyor&^o2>Q7$vs$U~LB29;5>e7La8* zflj6=hht9Ws^~DK%O#Y7Jk>Rmh7OOSfb<1~6uy1>9xGZQ2=vzAU2CC7nP1vw_de3@ zNE$pFv#q`wV<4;&NO`-L1@JU#TSeP;M<;mn2w{_ec*}FiJNIy4Bi*_F@XSjD2mO3a zW8Y<_7YqMD{oYhSk&gPID;R_Zau>wZJ7_r~>P<}K-ana=xMkp2x<0-&?zrn?xUAc3x-Gb5KsiY((EIxIcz8#DE^LY z>%AYkOS{-RXSn#eHM`9_eSQ`Cv{cfT;l=65z?0IP_>RB%kD0!bL2@Am!3X|aS2TjO zCc%&b^+FB9O~UwtwEkv(f_?iV>N1O}`Rj@dZV-2~Jej_+jWVFG|Iyp&7HDKFQAb2M zty%El3JMCWF`26WDfT@vL)|9xOp{`zOlE~W!p6ie$?zyKI;_A?Hd6ZC_n6l3KX7_M zNEZ>kIh&o42P-tYcMG*YzY>Fwsu5g8^kAFEilfHsYAYw3W5=K?j)T8nK>3WEL_c74 zjyUAs4MX%BLRu2Tw-a>I6SFn57t(w_{))OPMdYU?0N9#t49la(RcxzQt!v0n;t zJpBEbN(qJA4Pw+6m*WW7No3fzFXYYK$M?ymU)ta5!=rk@S;+pKStw%*q`y?a%o$K> zK`5q9>!uEdmnPXZ@8EVBL7RxHoaHT(?<<$k-nf(RJJW>(nG%F%pjEiGgIX@_uS#Dwn77!9{zF}j zSExguRmrO~Tkb0vzkp6#D$37Myq!}m;sq$a_G=NLD2c9lBgJe*Y}uz@mSY;j@Pa=E zpN6GIp+|E?Is@Zn5I*8k3gyhz?QK6zXBw0q)ct7n8a{UfF+q5MGHCcqS6M$w+hw-O zZg|uOq+sp;s5%O$sG2S*4N6FeNQ0z+(kRj(A*FP8cf&5-ol?@$B_T*jw}3%NcPR}j z^}n|ZeEw(7Tb4cV&D@?l_uiQozET=7qPYJGmzX+&1%+*s;W_yuoZ7P|+d0#~8QGso zYPt)#GCs#50#JdH1&2&Ay5yZ%_pMFy+l|~58s-0Ih3VX*?R2e>tUufH!(<%fD4ZTh zUWLxJHh3o78U@lWTmi(GC&FKast$`qKK^_A;AEKLTYZixY zr}Ot~ezaHgG6UWihwqSJ{l>b_0Uh8fD90dvVUQ*V2eY4srzZKZQ=hJ9hax8|S(W>) zKLtKnq^kmQ3zr+P|0QTp;D?anu=4PcaK`Ye(8yr6Kw^J>~Hv8?eu>oeh~!-Ua7_bTJE*m!2!UhZ>%$6#H&dQ3rc(vi?3Gnj>d z_ulF)X_ab_Z(wK{dBfF9NQjH6DO4LiSx0WrP+>J^A=B}}%Bt*vQp zW+L$YazeH=#sUWWrWSzz4Yy(7{dxL2kE4)tzdk9I1MDIkGw>7a9|@?0FAiOg9ZuWK z4=+co;i#RiN-G}AqDy)dfqIiufj^TD?T9MN^KL&|%>}%C9-XLv>;~X3xzyQMn#Svh zD$WRAK9D=L8a*liWeR*22`U_!UR^fP_viDS42n0D&7|fy?H5YB_m>*Km-cZq-hbBs zycGq!6F!neQR>_e((ae>|M-dK4#CE0`uL`WH`)Z^_QY|`7^16UpbFH$TzhwykP5pK zQ8N75dFNVR*t#6V6mA{BZ&bcoL5fkfDMqitY#6EB@nWiw2+a{m@%UH|6qsiB5(Rc zf6&O>?q9o&<04}^tJAEjZ4q;`v*Qv{;;tlrMxL;g5P>B@4z3Z}hYR;Z?=|3L zL55|5t|r;-nL?lGFTws{iHJt#1;a?b;=)Npidr zw!+K=S=5vw|B7U3>?!WFAUc{V3lv?=6c14V{cp2 z2NELW-+s2Yl3cCv;dtB&&q;cl@hpop%j~UTmR??bNqP-SvuZo^6IFv;(L_8*dAL*{ zLVJ@xw-+l<mM$P~AqMu&Ca(p3ON@MD;4ByPCH>gqINbu{UFL&9=62pUEuRzLPH$Ce!y)_+dQ~j&>ABdeCM9+Fg zmqZg&zwiHMPBc?#Rk{QbtzY+Hn4&`Y)W_oVD@qTWvW- zfe9$E3eEpG1=QdBJxqLEIq>D_`3NJL(i(W=&LP8T(rp6ptgrnJsCT;SzGH^tI~T^QIRs82h{r4E5PN?c6N>@^ zSCub9)D$0%SNkpAf|y)mLl=)xirm85joInia9H&9&18g6pin?|a9@N{jCOSLKe;qS z=&M+(ru<)e)b)z3fFB5s0pi@`<>Y8@J7Fi~LJf-;dU=vsF{o@m_PyP)(b^G|T?(wG z;PQe19gLGLoNJ;P&Yk+OP`gyQ@O%2;yXJ^xpWmmBdZCiGGz8dN$Kmkp$1FGM{oJM| zRK@iH=OQ>xJq|S{6o#Q@-vJN*KUZ(`)E^T@O%2;OY99X(yF@y$kave@XAk zaXff2rH>4Yre8}S_!oq2&Y?>)Q-GY%W1XdW3&@SbWeTWB43>D4@=l|wtnN-jO=Cy% zyAGYfq3>4nZ&!y_)8Rb5gEThD@2MTDC9Aw&%( z)Fm+{4#)At1t#)mm=~th__mz1$F#P*&&twyXLgN{3F8DH^T?J!gF0hUkh#rDt!KwWvwyPknzOo&qcd(bf zho(!b6TeHN`(ZamJKhJYciLC?!Z{*P_H>z(;=QuRKRcy$912Z^jA<<=|M3+rAhwR0 z=3d6+<`p;dI|xah!*8WWkKW--{Zt;)`v@r^t`sDnHXVr|%pc^%C;Sjo6yjw8zZSJ^@yX3YY70_YLz0 zx))l1j5eLYJFlCs?jD=?x!1^_($s`l*bW9bAFg>(5s_ETJog35kmI$qyu#UYbDGHC z9KFRr%?(^Kz`rf=&Q){6Xj?I;P89J^JY_t!7A=IGXFTI!qx?781?0WmTZIZ*_=P>n5^x)i;=5La4m$ zRIM4peiICjm!!s527s`DFkOEFx!fe{mXz(gWZusVUukJ5$OJM<|DEWb1FGMz^%N0` zkyuo{Gkm#zir_*#&!Y5PLgm7!&H=131t|}wJ_x0nm$;FshzyDO#_L9nD^DBj1p%5G z8=N~{)zyU19ru~y$JzSmNgK)q)(OVTv(-i3HmWOHgJU8`y=ucdabn(ny>*lM1xEk^ z#%?68)~^0;)E?|!UtoN{wsV=@HZB5o%+}*J6IYyvbELr%OWdD?W$RY^d{!Y4UA?w* z@NY=ahTyq;>S6A)x`%fZbd9S_HC5bMgMMc=m%wV0;WYA#y5BCDNtBV)Uc8CzD5BUleHmn+)eX0@N)@s3Yol?V<1MlPmthF&TEHcHp!Nw-<3% z_h<*kf{zR0KkH58ie+zRoo;RK&~}y8fJ=Uv^;gMfphfL6U^oH0IlKpgX2_%_#~BPBbDgZu(b(~sIO>Tq>}t)Clp2% z_ZLi}&qU>&<*949+PiKMw))O{pk_CRpp>IPx+V+dj*0s}_A7Qb>YdOe^cd5yr z=EET8Zr90&S=Muif#X+sHEQ<#s`d?Fwga(;f2O|`9tivE{g6y$5wN!)#vsSfAdc=| z9Ng{L?DZX5?eNS|)Hk0kQMCScAC)QFz4GQjILr%#i1S^S#N>qRe2*0$ zD&jG3a<`4c_IV*fKl*NFkM@}zsF1GmG|G8vCK>)UQ@7D^CW7(%dQ@rGUF+NC)D|4} zW;c|$0QL*G*e@Fw>&+SR{9oN$rcJAOD#@#Dg)Y4UwHS@7JP2GC5TSpfic45W>CeI$ zXyxvhmf8)PV#{sNVDCR`d49!5PY=?X<`!5z3vxSqk22rI+^L26WSL8IA2pjz)Q>Shlz)Nj$VRc zwHbj8uY;yjlar}asnf6v>CIYp+RM=5K*5=P5vyRmuNPXLoSGZ)>MF(v!uA6?7pGBP zHO6pm`EXV71hzu>YMU)DLhZWyqE!fpQG$@cp-YdOE!FJhUEaLxA-m+tlWEY-w_y}T!pUW z0ffZMTfr^QxzI%bW*b3Gdg@A{_gi>`T>qr>Yi+$~j%b2J#9VM%K;M7Zg^*+;cdq>+ zy+0xK1Be@(K}KD?)o9q{&j|)Mfiw8wvH-$o7wVHU*z7WuaUw*>%8o1fMWfKX$}!%3 z(Tf=v39R#kw=+nc`6KDClw5~BJ)&9q|HSSQpzeMhK{H|Pu_>96?+-_c4xf;v3CJiR ztJlhYW7R-V9VkwQ+aW}#NAm5@E?D=(Mz4G!uQ4G!zeMpH5j~%Ctto;wzTiZceV0t3LG<%^?!gJ1l$TjUoL z`8VlMTM(lSM?2YaVxQUSVtm-#ED?Xy^!67nrGm^mvs(9FpH@#n=N?;g8!iX-fBd3i zNVfAMn+(fU8?OJ0&xg4RS=Ji*7iSwXjE&<3WN}{4vDe80HH~nL;GBm4*Bum}{<`_m`U5gfdEbBN zA7#@1$oaQ)$3Y@oN5E$gpz|q#4FS{3m+e%X!a3?QR<7@=|E2%xLt-ZtOKYTcYoVYOBMOd@i{af=3SWI^l>oj8z zBYw;IE2)Re)UKWeml2Zl7n2f+n~49lZ3MY?5aOQG-%WHFOn<2c=P~@bC_OzEw4;F5 zXTTca`V=A-KabMlX;IuBK{_CE2fq(|=C_x;Ymak)>m3hj4=<-s6GMf0_FT;LCBjz3 z?AdTAK+7PgcOZJGN624bPKP%{C~L5DQTJCVlsOK**9SHp&I9HFa^Gm9j>5ZzGAUsZ zF6T(wvOC`tE=3sVrBe+q9e6y&y(c}L+!@>s-If5YxQ3w8XVPuK(Z=4`VZ~+c%DV*N z+VDDeaJ0N_E@XZ7|F%Vsf)n$SXGk~48FrQu+=g6BF;MjuEb=z8llQ2I#n9+_46r{n z*;xYdnXod($!6 z@DAlJ{Ub2}ZF;*3FL3?@p8?)e_?|=j4A_|7?0sutP69ExzEC5XGE1tCd*l~n&KJmJd2^IcELLtj=?h4N$5U%x ztv1OYY*hGj`@3TYHG*jyu(~a<2Mwr=e}sQMj4~h`2EiLCgXJq-E>oxLXgjT2lJnx9 z-!=J`TIY0Ru@<)0iwsSzG+fjWRXvR0$CrNo>Ym}8?NeAb4dlipB-)GB#z{9#>6!F1 zF>lfP60IC@50I~F8c&$=k9ONh zVQZ)B`GLTX8kRE$P9O^!c-!8?bJob?e{~uWNbPC60d9)3#h$fHF<8Y6h#dkn!|xs6An{%#?%NKIrj;sVd{xAgyI6hDyjxdZ56BZ;U-jUZ zp}D~b0pFo+(71ra$l}zMqAwo^x=sfVKF1B4^!s%owcCCw>C74^`!=$0f9K@vITkk= z2a};ds9cxsS33$AWk4RDLW(^59Z9W=OeYO;v`=68%Eybf^3!kudy2UpKSNifF>Sw+ z6A&XQw_q~?U0dA+b6J3D;LHs+Tx&mmWF+(fE7(j3pPS5l&4TX-$HJ^40<=C+2-{!dmm!KXj~phTktuUP4=ga=gdsVQOAeA|Y$jL@7syQzV(!+Kq zZBSaY+}qD}1K&9QmQo6fOBk{IGpk-hKJ0pC!YHf6u<`d>zh^ppB>0#oag$|`_QD~x z;nXhqI`zD<_&XsK{v3g)5hKaTIa0wvE)ld2se}nK$wu zJCEtCEiOZBu$%pb@DoejPPzCy>2#BSELu`xcq{cTA(gZ&pEW4G|5@#8YJYU(Q*59) z*1k3(ibEho2?2TwTa*9f{5m12(^3B)JI^s#PTb6af<3gl@#;n~p`0*i;Pr}}X z3Pe1JYfdvLviZ0)D!grsVb35eW~2SoKI~@xyyfNM=IT6TKV{jjAFagol!KlPC-r!1 z<@-$D+{xyL^Fcx=%g5((N{QO9jbzQ@Ew^lmTpDid^*Q9WC$58%6{A(2L-tLd7mzyR z1zsrXhtco3odA5-d>;1u88jWF9GDHr3Q690SKUF{Lki%WH+Ta%#_;0Z9f2R#Wvw^+ z91)=7!IE)rGVYYHHvJs++@8hcWZsjpG&KZ9yXNy-R}9zl=CQW*7XNFt2|PH z*X{!2-U2REsCbZaxOb#&L}SPsSmqeypnu>>M0R{>a&U57oCYk{1L`dJ3`L531I644 zsv;AsbhVzQ-HIE9*K@CM&umX7?@kz}2E8>LFZF*&TeBQsMQ+Itv(+mX667YmdsHji z|7F=^D-jvP(q9 z^@<_%_q=b009%C!o5PTyXrXoQV*3++P2FZ-e=4=1*=e!mYr*i$&EuPODL6L0iMx0Y)!BLYv{UQ+JME;r zFuH(2Uq3(cK=+XM;TMssQIDcd!m~q~0+3<06K>ZGp{9Of0cJt*p%YQw$yRydb)N^B z*P4)hDUAdYls1hv>`^_aee!_)^3f1`h&bRyN_n-rs@bg?e^5)84(0pskon$sTs_oh zm!Hm1E{Kpjv5JVv=&`tEB)n7|4K%Hm9n4(nToK%y+}7PI|EWZ|gh+V&a>8_=c6s`{LnI6hUvzmcC+Ulq}ie4J?(QbZkG4>xxYnc zEj!IiGm1AG0hwFRh4HAm$| zLoyx4%Ebfn7H})}F9njIOsUwPQuf;)Zs=ZXCn&QDT6r8f7&>cGgIFH~i+*I>OZXbr z09&KNbq6C*IjO4TPN(5){zKzJlgka0}^qvI2231P}8 z?2Hq*<{>~kgAyZ+;+>Kc-c-E7PQg!n68k4&Da1d}%iqnPHs~;%Ezv8Rs}iRz`?J?f z(fYz}&++&vAyP8d5~&@lm^hm5%bT5%^$hYa3?8 z%jt~r>C4js5?@f?K-ocr3I}>ccPBI^;k{|jdR1LBQhmC_zGnhT8(iN7JXf9<-+DV* zP^cBP3e*Tn`{f55z;-)b%O7>p-?oAMHo6?;L09;5@MnuX1zaF@E~Xl4qR(-tgU$%P zQk4Du$3nJ1w48)+CV8_${48)0bM z%ct=6lN+2*&3ykfQEHU^E$gD#x+QZW;aHFemy_W|qAr^)FR=Ri5Aqz~jJiXodM7K_ zZ#SMTqql)cpm-2D)z0*%@;9Kqg4lyHC=~9QJen0>SX33+s`Sm~kc9k~)SG{#C(Xc} zb>KvywwrI z%!19X;wcp(0}=v)<+WXA_i-E_C|h|o{qQN zG2E5xMfC@z!&z(bFb;KQDu?{L*gJW8CqL&*)-5yaSzlV;j--7fAgdB;^`Djkr(`)r znGG478L`=3`+y)eK5pd-+>~ZJj_t`A&tcv?hyz@MKq??Y-D3sHr@k$t&hlYi?ePVB z-Sdin$x1D9a`?rxv8wnY=Vg}E+rR0h$&aJI0_#vX9Ry-@i-Y@Xe)`|O`{;=bflixc zh|@23(4V|+x!y~*>YB#FFDV7i-%OHxKux3nC-;c}RSxctT8-CE%1Ww8L{H>MYD^8u z-LI5wC;$F%bKqLd?)wnB zK&|c?RqCi{XX%Odq)F;O06!K(_K7S$1g<*btr z7`vo0j6P2|Mc5SHYDrtj{9l}g(k;ur-)7n_6!t4fk8=p0O}K0lb-CdjvjEk>hqF#-48desjFO zr?|mAQ}daz)21csll$k`wJ0=K<`VfYFxk2GU<^HiTnAlWd4RG2r=BT;I*xt&{yZQ zzqPe^()Y2EzWPT=TkfOeO`uK(>;t@r0<0=x7kP=%B@bb`aV>}NzaS(KM_(;H!9Jp# zZO1NwykWpD!u4T0ATaba3?)=E;6Kj#LrcRblM(Z+-zR-47+#tzT})s9xaGZ#xjnL# z_48tX=PVj)`Tj8nkNBF(q7I=!txoPMU)hhM?9YA)+el}=Ml%Ob3A?r{d(NC@E}Eh* zd&I^06Pb63%PxxNjoMPO{a|w%BD65kw?=(p^306FhoAc;lHOy>NJo{c_!tN|aIUF) ztfPcowEY4gmGEDHT1i(;6=#Nsqlixas|tR&rTgqZ6ht1h6EG8;7$05IGQxuRgJ%bJ zCJvkyf80c6WXXpPiN-5BtUe@E4Hh?MjRSEouz@`QZ%Ix1*gbUS%^7fYwle&=BPRyy zzn1fM;aAZ{F)s$Q2QNGsln_KF18aXIf4lMikf6TM!62J(NK|&rW!zZO(~S9ohW9ib zOL#k^W&m{T`Jexiaw?fe8Wr z-KXTubmW}%!UZp<^>FOEujU6#PjB-^Mg1occcV_?r=&l9EalILkCTn~8yXz05KEf= zzO<`@U?CKFl5s%pn+>RmaH`RHL9NdXr3`q@ZU0Z}jSVY#UZKC7TB;(ts?LGS21pMS zsGVO!#D{d*_xDG(_N?y?@gHbz!>X%5{ywyqSKAcar&__#JKkCQJ2Uj1bELf|=i{A{ z)Fd6?X;3ynxyp_>ttnZYzCFVKSIh37ItdUiIBeloiL%->^oNrjZ8sIoAV;c0rIR$% zSW}pztbl&tt(^U&bnZ>&_GDBB zM~y}+`n7@Vg3vO%2>nkQH>P5~B!vO9>rp}8ve}ZTMhXnk&fGCVLO2>-Bb{97v8tiZ zN`gfI5urn&wORD7q>D>6&^`_=Nn_dx$BJ{gQR}Tj8K7@Nvg~Qt|=gG1Khc^zdnnh z)4$V-f^*4vF?{jreB${12G4i9mh=2au{;3+el-!4xg;Gc>vwMlK3-QcHqUo$2C`8O z5L53X&nnLxFBYGV|3^=-_m_|pS2WAduOpuNQ08Bz&5pD}@~2{SuFj|gX#(*Rifm8c zs5&0J_4CnfUoLCqL@OphZyY^tSthD33NqA2IW!%3`EH6vt3O&*=A96 zFdw4{8seAk=MD67-8}qHqh!-#ixg{hTRc1Idt>^QhyIR^O&YJ{9_HSDL}xoeNP)F3CZJJ=F$gUpG1>&Osqwd!qya~`|Yk97D`&_@?N5m0vAt~ z9_2m!aeo;r=OF9*etlKiJ)klh0g4^cn~Bn-^dtNCm)nulkJ-AOTndzlrpwD~yV%sh z@PSLeql=V9qoKGlo2@hOD_jfDAzJoI;*SXG=M&yvT+sxSm}|*JhOYX{#2URL>vq_B zMrbTJri*wLFSGJiF;`MD5$LB!zH5yUity*p+JW4*)dJlZe@jV$HEg#s+^T$lau>Y( z;)dMC(W1`!&zuWV8N4)o>|DG}?Bo`h9Z^oFSZY{dC)k3P+0^eayf*ezELH^j)%gct zkAdL{*~1_3hbiY;Hc9uO2Z)E8hpfMmFLN*qi5uwWo^**!zZh5Gl|Ppl<)3BhA#u9J zc6@u2Yx&R0t=%caF4D8d7YdlBOD;OzlkP#*D4HY^C7icug~_$5F2Trf}7_^-@R)O`k`x43)rojV?Vq8EJ zyqvTU_}&vcpR4>tUZ382bR=^50QCSV`dDN>x&1Wz6sTE&H@U3Te$C&!wAs?l#;I3! zUJ_D##d)|ybJzqaim_#)u`Kwti00gmI=DIkK>~QI$Yr2Xc3E^db4Ybr0Q3Wt z9#D=89r!d+pYq5NXr4+A7#KJ{ zaKm+YVzj1|CnCkO&FS*QL9jvekp$79Bc`}=b;zhe@ytUH07^-r+S@0&pn@ud+WVFCZ~#){fYyBt+FiCNOM&a1yXt-b-t}_y$<&ayQj=U9T&?Fju1C@&tBLJ z47XWFDj{yR(D7jtQ z7>fdv;y1B2PAS6bVb8Ys=IvkJCz&V%_^c0f8PJ*j&?`JZA#%l>N31wAIyF3JM?6Eh zymjvu1=7Un)?wgI!OxT32Yp<~(SIs=RcZ{G_g0z4Dm)XZ7z2%>2@%gFF1~l(4-A*K$3W!`ox95p&D?z6qNX ze}t&@3om6&tz~0%+g#Ur7|q{!W4bliJu$1(!BokVYy{4!V!8wUoj8NtKK2eN7VHO{ zD?l2b20+97Bg(=eVbTr$st*m0wJaX%i~osBpvN=z`jG>igO`vU&jzyrMQXlUN`1_h zlV2P53zV~1bJdGa*E%-qw!}89mLz_Jjrk6|=!NzVjK$2e?=zux+zq1LWr=1tVwGTQ zqDFntMWI9elhOMTgd4)U{#ccn;C>pm?s@lq+z#Cl8*&%%2z$SzvsRnsh*O|jqMN-d ztt)~%^UcYt7r;qx-OdHJqt+?*wH_e<;l5O{Wss-|!TWi)svX$7_263C?JFCa9V4S>1@~ z`k0>_RqSWyXBFX@(NmSy#qgbNad(4ihYom601BE9u@eiAn1z-tke9sHze|X}GnQ%J z>rF{p9%A}t0tW>1ZQcpz&ZR2G?D;rvK=a@<2dUrVA0DI;JQrvT%XA_^UqQ7ayK`9E z=9lI$BRSAj=&tHN-}-nt*c*RVAAjjA6EFTsc$0U9b&sM2o8S-6YS{O$0}I`jJ+}r2 z#^NRiXMu{gMbAZtrN?V*I}@kn*mRUQk1-@JmE*LebyKuTRdHlrKOf*$VwI&EpeQH( zLiCv6$DPePngqA*Mw8my=b(zEZDJ5)#(l)ZWAc1W9$i-owx<%r4x}-kTa`7jnVmVU z18C8&+m22Fd*k0X-H@wOKH(Bt6|xj@H~bYKQAp4;f9-^M8uO9-J?rrlG0 zYxy(Y`_x=m!AH7_kTEC_r{HQ-YT*7T+q&QRZs2^ZYU<5m!zS0k(=&!!EO*TB4=}Cq zqDeBUkm+Wd^q4Q0?&?LW?n(@DBQd-t<-=3PC_%Htki{v#LqOzu*MTSie-sxR`wWZg zb|fh#V?F9JOVz7XyB~mb6BnK|^feh`aV%bRBisYp{$D67+A7 zO*DT3d;BNZxep-L;Po-mp;BwS?7V>Df}2wuOXitWmuQo)hlst*`s+>8HRo9`BexUd zN^vzZ@eRZVu^70F0{&X^-|8>@+f$Vb^z-?X>tm%OAHNr^HeVi5^gXlGu7d5+8T7vG zRAIiQAEraE8==3iucu`zm&a9&H?q83-vG<=fxRI^F@1aE#xr8xRwR30RS1D{g5XP+ zlhBL3+eCQGWi9(mr@(^M(ZyXKR?U72yvI!3CEfg|`nr?@FAtOSgLdMt_$Rn>n1aY7 zzlpa*f5;3}Huu)Nsz#`P-tI6)ztVUziuRe{@jYJ(x(7!TJr8!Mw;1&}F8E2r`eoAP zYF}`OAM%&6iBOjjo8Fekal#cK@Fzo{@nELlO5!7U_C%~sTJxo+8mD?*9j~9c<6>ui5Z)*T@kXc}wzl7gi|DIr) zSlPF1RhV5(6TF+`zp;^u(W`L;2#oHfG2roLz39*-vOn^a_ttWx)d_yad$0Kj^XvV_ z!eZ_M-xBwFk?#F34l@!9adWa$+FzMQ-M{Qihy2V&Rw8G5JRwQ1O05~CVXA5*FD^AB zwkzf;X(sbgCO|xl7mel%s_#;1YhY#xtQrPBkA4d_ir$ZM$v5C7-=Z`{-Ci(FgnM<+;n_{Y??Trwi=@}{q;wGH(i8pIeH8XuXW zTDDrV*izVFSiCa`Rcn+j7hZi*!8*ZMz%cwUnT_HJR1il@_r+_aJ+)W5mc}%e0(KTo z@vf!rD4wWZjNTuw^z#Dp(mlaSRlW4tSIVA?=hL^EqOuaM@(6I*cLi!f@`1Ag4I|3p zwKFCP*K73J`1+rY{h1h^OIW8ndUuQcz6Ou7l9~lSP+zU+F=1RUK6GF80ArB0OgMEZ zfh@hJRIWXGd}M8N$Mu)Zvc*@^_SouzLd<7Fi=w4cmV&Hg8gCs<14ijK@@Jj*n`vO3F`N&;TT^`-{FD6$uYC6e=<|@agz5ab z#@I32t$AcyvQ^e}Au;JEide4()m$}jwK#Od^ihqE&9JQ4t)EzO7^iCJytvEziE18$ zbRTc}d0$cELghkaMsxhMq09 zAGPMhXqcn$^Uo1~JzNf)3!Z&87dqE9gEgrz8rdV#tX)%F?p)?o1!?@)(>qSJVer=u zvxh{Kj`h(BUzNyP8BxU})rQx#s#FRKqD+quDC4mbkFw|Yhn!jrsw0c|a|1KIQk9ZY zV!0wLg1P}1Vb%!XkE%a3VltU2AE$=BllfcH>dDCG!$R=DH=(mKHXxkc_5Gb`)qgHb1v{(!RO_nFQ0?H_D(4+Y_GO&I&ZUX z7i|7of3=Rid1q((!~}(!@SLuV7wJWeriuBcW4{NE&u{NV4>jjmYXajsV4JqG%umss zXN6DyJQEZ3lhk}+Am=T+FS+@Q{)ym2EQ(kn?K^7tRwVV*VeAKj6w>WV4(g@a#d?TF z^ybTUM^`afkS}dE?Q+y~1;1Md7xOb<=L*0voeXh}#*EdC>;h(J_%A@^wr@;aK*8Y0 z^^vd3v?nuYe8m2A$(%G#)g=|>o+%W_R*Dk{u(Rb+QWGL$o+1%n#-4MYJDs8Y-8uZT zow2z8J$eAOed6O%LvoXU$J~(WRPvhgVdmv1`T$-o;V0rZq_Jd(_pt8OkS&v1kWk;9 z$Irx-!8k&Ce;R#Iyot8Z{e5TPT^oL_c@b8oX#Bg-7(jmDa|Z&n*0&-=FNQiL?QLFx zS(#=HU6W(i%t+di;@6(*8U~JtDp`GBcdCDSl zp@OYzV76;#?`CjiZO%P~oklE9_5Qv-dFd+aBEuvjBEuzZDUSZMnNyS2lTZWI>CgVY z)WP0gRt!yYa?WWf31@7g`c;BiWYga~`!lE;Xf@*Qu@#n>n;J(MM_Rhr5$xZ2%qx8+=CACArd=+eQa;kjPuT;m|t=0 zD$DANNK3)1o7*QxREW(uGi0$0XPmBr`J%~E)h{aKY!$vK2CB|$)a$#L;{$$Cna3lK zOQ%B%cdc?6Tpl-?oIAwGUB6Ke?DnV++K>1DI$by;bRfLB+&Zs5V?XCd(7xr5_voG> zBOy1JD1ri`dZRw6`H<}+7w~@n-n`Z!FooW{CM)YnKac43rW0Z z!d$|1k#}FBcbt0dVQz}AEHBb6QZ7y|$j*07w|uKcVF+n5>XD5OOSZ-jEr}VV~&OM;UK*fog^&-jT==JMHJaD!UddO zRMPY0!{6H!Yn4lKOI)j(+geA?2=B0mNcw2%SS~n&xodfZc%E{1Kl#Fq!5{hzO|nKI zT+LWd+$7X|#XQaw*APwn>8nQyTvCe94fvmM)iQ6=NR!JDmE$2}7h$Gg8R81#KLu7L z3HS8Kt;jpcKT$-{kg(YDE=kU)k(<-FM0yu^r#N>R$1BJ^DJ3<%tX;<&U+y34NNKBS zb#F~*dDwJV&ruy&(ver1+5W~csU;yZ;W)7-<#+ma&e!6#8oEz9pa0CV?fkl6#2F_M zqdKJfOP@xY@nD9;;0`0^1#-aU*_r;CvG6^Sh1_WHMF9$Kr!btr@KhF_GWu>uji=wMDyhR;oaTC zjrPUSDVZ_uzQk6CTFR2U+4ocMW5*))!V9C`BrK;37T{DY*Csb)H*nSoS85g+h-18J>3@VIQ14~Eje8v8X+S@!RyQ+!FYDB1H0|?)8^x8*|DKvr7@Oi z%T3b1J81j2=?U)Q9wJ#DGOu3#;F$!{9y_RLh%}1NmS3BjBRG`UpP27z|9xp9;U;|Y z?4DSmO!&)qB^vpm=bfx?2!xJNC#_p|N=ULg(%xspWqIGwk~2s!WwXq>VfCnl(G@UzG_DN!hD2uzUEc1nJ1_Mf-PH5Ig~^_qUMpTS%Dy+AhkxKFEQ zAw%P8Pc{-%Fq}U_pu)9@r`RW?!(mmYh*%LnD8V$o*Er+rTALQlbr z%=v=<6!3%E6i#0%$h{JC!`HvMv(Z47tFu~(=|tuwZpe-QT@(fsh1Bl(7|IV>*9Utc)#$!z3%;IcdI3bn)F8%pw5o6M0v}KTa zU|>*abbEY!Zh7tNFPnpgL-c)`E#vv9vDx-d)eX7C$@7sJA(p`_p?cB3k_z6Y7BW`V zejsWk>>TN_@8=(k8d@6uIMVRNY(jdjbUpd70!bEMg*t*G^{Jp#k{r7{kBqqp7HT%`~t^c$hIi9dx4*G8==9;b-`ORh z0DGIHoTjbmx<#LHs``*rF1G}|FBvUS?cE59_e>eQ%Hj(0<%(7E-QvQ$B8)r4&oDI4 zV-F>M@ocOw-JQYtiqVJG{Gn>2@JXIdo?uaMmB>ee&a=MG0sp?RPWjflCP=Gu-{chk zekgW1oem$WSh(nK9z_~Y47#1WlRN#P-ERk4#u?W1kHRl-5uW`C-P)cs=pAWftoc~` ztHpI_Z6R8{%piz?$6@$5WL_AG)#*u$Mj~TbGOJ3P!|`z$A4j) zz+9r-tG!S~*TGu41vw4aqMTaqUupZ@9NMlt^!Z2gX7%yK+2N`7fx+_Q(f3W&MMFfEO<;is%&1dcLy;;Lq-|}b7SG9IJPY5ruQNLi2o_tdAZ&5@x2RxlPuCuY>pM&K`*Xo$BLc(U&jz)W+3MRJ>$f3*Kc_ zc)(8d2X6o`iy)X3>%liFY|7sxr`Ut%TR&gUe;CL9e)^+$eesV3HZ%Dl9UsFo#dn;r zg-ip%VJH<(*SXJ6}h98+**V>-6oi%0FFIWC3 zTFzC-vdMawk5_T0C3KW?T@|65*ns6i07cwX0!O%$Q;ZT3YvpKgNpYNZ?B`deIkFvQ zq?bfGbd&7AI7!)-sHX4~|9)Fq9e&sBRmE3wP%Khu)o9+!HfgyvcaDK)em|B$lx2p= znr8p5HrmURxsC0G`i1A4#HT{|+APlE+Uog6EXIKvSQ2GS&#@79LcjZVAv7m9g|)K} z#(&3}OIYGsnx3)#%G0~jxKS3K^Zw0Zd|+&M+<5YQ)_hrMOUoGjMmmBoF%8S5;G`6% z0`^NGSpsoU!ECPowRN3AO(4!bmGqE8D1ksIp+tHpQltiyqJW|ziYN-|si59j5PLfn zkvsh>_HrsJ0-jP75D}0jCDc$u4FLiP36PMU$NznLAKuLVW_NaWcJ|}W)*<^CyKcMp zj{7{#gA<~6CAjS;r5!(#esCf2-3Er2+Pn>QQ=Tg*pJ57*D41w2)xf~J7j5D6|?;+%N!dq*xS zfi2;7%Yv{3^V1Fr=L$N{*c*0P^mA}ci>!8aZAGI)=a(VX*f3F#B2ByGtcywSso1L6fmf<9kQ?`j@+m+8?y{voB3dNDiT&SvC0> zN1fOapOn1IWb4SKiW-*8vLk1sBxspnDHUwaFajHQfO-&&bv?h82Kr^E;+UsKL%G%>##h^j}|=5 zEBmBd9n^#7LzU?e8sxS76tAN7e9_Y5vYUuYk1p-cba^!X;XtKz%irwqA^qVioa~{6 zA=QWpPasT}2SPyDJES{gQ;M3h$u!(-)|_Q6a2WB(3>XQ!8I!XmIj(Cg2pvcVoqr)i&~Er6GzNE%kWB;=MYz|PRK#7#eyxWhO>#|4o_`~}Dk@nj zRs0Pch8d!J(7}j}K!DVCW(Q|;lA{wiLLqL6@CMGffL0NWh7F@J51XBCY`x&^-m zoYpcx<%=mKO2}W9Rz{ScP@Wa(dzLKYu;inS*#7 zkh|yWVb;27H|=*^2)TjmM6}gmFZa!*%*2TNK#7!>Yhn^2|Mz0ZhQq5Pqb$xz2_cOjXYKAYBs{d6tOFd>wIer}{8a?Ym8#i_6k9?R{0`%~=Oml1voi4d% zF-VLi7b9nPM}7OZb`tAgE4&5G+}fg%MzI&TdHNTHecbpuE-v14Yetk2GsmOD_J~P2 zfr+kyZ-u?oSpzi&eN`QjxC?Gh8jTtZhmI!mj?P!hcY+@vqp-2qqbOfk3Ah_H1P#L2 z7`9neIPdiO*Eiqmz4JE9biH8Mdrhm#3k1hLr`&PCcn|t7_+nlDp;SWM1=zl`O-Z%f zx+APm4t(yutP#)&J_l;kWGEe!|7vd`atz{alHCLR4E+l{QfV!i%thP5(Z<>;{c2J3 zZO$WcDmWi|821@gAW7pKtv#0C_vB>`=$Yro;>K#86?Dc-!+7W)7i6&Jp$oyH1Q)A~ zoL@b5q^GXg`e)MjhvkB=pUaFZgK9<1%BuNPZtCD3 zb{KnkAaf#FSR3TOi`RaeONEwTl((+?-hxD&kfbCpY3+HWX|;VH`o`w+%c zj~{=<^r?}Cbd4y%^KgB-2e9kWXAnU;An-Lnyw(Ds2S&kv$3~OVjlY@s zm}i?Ukaz1bFs?8z_%tL6v4qD^ifn6K!@M-!w>@t=-L-mQ*oToo$5smPZD5rS1Yrs{ z1~17^3T}?XbQ(9FuZgW$-JoIR4TMbU3;ma7mJJknsxv?aGQ*(5_Ka^{lv(1deX}Y2 z?cr+^R+XW?&3)~3txhg~^8I>?`PdoRW-QlqzfHY$A|)F0QjX)n*@-Pre(~DD!_Vh` zfPT|MTWIW>R{?B2slV%Ypixi+fT!lDvo-fMFI4Mf_2TRNZQRFWWG+KcuX=@dumc1f z*oaBEpWwNv#P6BK9nkFfXoH~GE#J3rx$IX<(!{X50&Q({gkoo8k4aIUc;Ah#Ov*Me{u)iQNd}R{hzf~35v4|}UcW2_2CFzhQ%c5m>*N<_z)DC^xw3wAX!u++v2u0Esp9M9d+P7AkIzJ_KjYjjxXztEhl3)Sn*(dSLL3EVQ8-WF z^QF+aTQgw6Vd+(fFKLjL#dz)G<9pVv+X}A>mIiaqHY&?irMoKsXa!H^0`{0VyA?1i zBVMgb@!epTPq0(1nK?d`*emEKP5dQdX?3v_qtj-us9?%x(oXchp!JHBr805m!bfSj z8VwWTizwIaYTPdQ5kd>Y2O>hk$icl{#~s})PV2u$H$iWKEWs35C5BD%H|?OkT19oj zI3IJYqVJ#)%`O=JM!11Fg=|7JqAuVH4Bk)=)7gxNK2HMlg3A2cyvQz{*4`%131i6L zq0t~7;11v-fC0Fu&C#GWr!;YZT5tfo1C79?Yree|ev?b0Gp%)l;AQPjvb9RB}%9Gh{y?eduW29+VZhUn-sc zeNe~>Zpf+L{{7)MX2pNXqQ6WOZ!fYbF8>->1MPUp-KInkKiPitDh|FElIWk|y3c%< z?i(#hvP&#mYS5fT1B{i{Hyn!W$1NL)e`sFt4zTW2xD_P4F@0V5uJ}_+Wkd7mz$_o6 zT8C{iZ*ixGf#Q8rI0v5|a8CTZ{=DamSu-+6IkuFyOa-^Jku1hYYKO-UQv# zkd^-OZ}PjU0N{NcC)8WaGWrAD2AI4|71(o+4R7S6kCpMKmK|XX{Rb9d^u<*!Hcw4D zF*4PYIn;on)NYeCi4O5^ z@M3rvey$j-s)EfE#*MM&b>=gaB>j8neV{TqX(?&p-4a#d2eg8Zp_ec@$T<)|_I!47 zWQOg~d9c&3H+6(Jogp?_z9>tSycbeFT|vt?rfqk-m8Q zzlj%QeWUFim)dfAMSOQiD+TE4=sV%HW)+-Bmc|YotLv=Dt^%|#%~--uS%JI~0)O+V zvU!TI;oYpQeS0Fu>mKgqsjmjTJC=VEb8V>32kil-25{r~@4YVd$(4oQGn)WI^9#*L zcj^o0+unm~PWjlmBOMHA?@afQH3k>;Kk0ekccU<1GdXIW!#gzYHt~9fD0u_UBWO%H zG=JI?6EXUi?AHXalhRO9w{lK&)JT45Wh1S@$2v&q>*{cav`evf)Ujpp$JQS|nnVL$ zq7zWI{x$OrR!_`!kPgAYs;-4^LVHoNG*cUl@Wj6*wUTD=@hBenqdG+Kr@~L;4LOf& z!5Zjdkr%X=M3Ez-ZU3q9s}%k)ZsSZm)HYFEy%(d$ckWBNx*Zqk<%u-^j41$YP|<*v z*g~q8yJBtT=8xOYZ~GdxF~H2x)5H$b0LoM=RoAsg!2LR};m6>uI@6HVkOgP~5=eMK zzG|`CW{XXT`BBnNXxZZE1ggKUXV+lZOoDos-Ws}#Pc+k(3H52B-_@T5ZWhtGHN)RW z-c6E)*QL2CCvCBsA|F~1&S|H;rrY`I`7r4-rHv+8)hyxi=^S+%x>iu}v_ikusMB=n zwKm4E%VF9#HJA~Q%Q$4VO-E-A)%~qH>5Hs{RLS{ud#Fu#MMFaz!fZvkL825JM6J`e zCPSu@10p^`(rY-DS83OKFe`zx*YPBz$ z$^zzd0c{r5R#nJ`fu8MC8tD&!0ceYY%V)9eYaBlXy^YS@Q~15ox`WT%BOwFOkOiPp zNs*itZ4CF2>*CVS^<`HZT>H~zU6kfJdMGT?4HBwM630$wjQz#|4&5Kp8_pOR7^xVB4B`7O zcQIJ9=A2)5n*&)_dQ68?rvF+j*3`qH_(J`gMt>Ov7(^2Du~A3_Y#;O{lnFy3%`o-4 zp?G)vHr+;4y-p*5sc2d3TFGlJPTF$)Ch0Q}(LeIb&`m+1kyXK8YzzY&bn_9W;$7r;}A0RAv6i<3E2)h0Z7xL0ezqv7#%Cn zdrGdR?4a}-zQjFR>5&Np{oM4CzlKF)v(uynv2qOZ0d+yw2=@&GL9jt2)ji3=eCF)+ z=_%f6p668e^ugISA!-pPd#k<+_D5J^kKr>3Is%dp(O_;AH()&{{9 z-3LynwaRE7w4QWTUzhXCyhb$Zf<>S<3cd9k@zOjxT6BP(fQom7{E0Z+g z;H&T=bTL+rIgES{$y0xp@(=Uuw00e1HtLoZnD7oi%Y0CI-n`&c@QMv51;q$WTzZ3vAD3*N{?ugI>>&K?dc01oVBP}lv}Ba;DMVF19I*tod36>hqM cO=&5AoZNjZ`TzA7%iI{eVuM=2{|VuL0Jr}I5dZ)H literal 0 HcmV?d00001 diff --git a/SpacePew.Content/SpacePew.ContentContent/Audio/Waves/message.wav b/SpacePew.Content/SpacePew.ContentContent/Audio/Waves/message.wav new file mode 100644 index 0000000000000000000000000000000000000000..31db131994e2e3891a2e1afa9cb645092447dbf2 GIT binary patch literal 140588 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

    n&N}5zkK=`7 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

    tkGGp3b~~Z!9ksC=MX&d%Law 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∓x#Y&q{njmG$ngH0PvRqW-dB&| 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

    q`%lV$ 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

    !&zcA-Fob>ezCVg2y$Lj|;p0az-ul@c%PhEc* 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 I-=|OiKTD`Npa1{> literal 0 HcmV?d00001 diff --git a/SpacePew.Content/SpacePew.ContentContent/SpacePew.ContentContent.contentproj b/SpacePew.Content/SpacePew.ContentContent/SpacePew.ContentContent.contentproj new file mode 100644 index 0000000..259cf68 --- /dev/null +++ b/SpacePew.Content/SpacePew.ContentContent/SpacePew.ContentContent.contentproj @@ -0,0 +1,192 @@ + + + + {F5811120-B89A-4A2E-A0BD-551E9F06510D} + {96E2B04D-8817-42c6-938A-82C39BA4D311};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Windows + x86 + Library + Properties + SpacePew.ContentContentContent + v4.0 + v4.0 + Windows + bin\$(MonoGamePlatform)\$(Configuration) + Content + x86 + + + Windows + + + Windows8 + + + Android + + + iOS + + + OSX + + + Linux + + + PSM + + + + + + + + + + $(MSBuildExtensionsPath)\MonoGame\v3.0\MonoGameContentProcessors.dll + + + + + ConsoleFont + FontDescriptionImporter + FontDescriptionProcessor + + + NetFont + FontDescriptionImporter + FontDescriptionProcessor + + + ScoreBoardFont + FontDescriptionImporter + FontDescriptionProcessor + + + + + bingo + WavImporter + SoundEffectProcessor + + + bullet_hit + WavImporter + SoundEffectProcessor + + + bullet_sound + WavImporter + SoundEffectProcessor + + + engine + WavImporter + SoundEffectProcessor + + + explosion + WavImporter + SoundEffectProcessor + + + land + WavImporter + SoundEffectProcessor + + + thump + WavImporter + SoundEffectProcessor + + + bullet + TextureImporter + TextureProcessor + + + explosion + TextureImporter + TextureProcessor + + + explosion_small + TextureImporter + TextureProcessor + + + longshot + TextureImporter + TextureProcessor + + + explosion + TextureImporter + TextureProcessor + + + smoke + TextureImporter + TextureProcessor + + + player + TextureImporter + TextureProcessor + + + player_thrusting + TextureImporter + TextureProcessor + + + scoreboard + TextureImporter + TextureProcessor + + + stars + TextureImporter + TextureProcessor + + + transparent_pixel + TextureImporter + TextureProcessor + + + + + Default + FontDescriptionImporter + FontDescriptionProcessor + + + + + + + + beep + WavImporter + SoundEffectProcessor + + + + + message + WavImporter + SoundEffectProcessor + + + + + \ No newline at end of file diff --git a/SpacePew.Content/SpacePew.ContentContent/bullet.png b/SpacePew.Content/SpacePew.ContentContent/bullet.png new file mode 100644 index 0000000000000000000000000000000000000000..7449741fd6cf1b2583f23bada003531d87890bf5 GIT binary patch literal 1234 zcmeAS@N?(olHy`uVBq!ia0vp^EFjFm3?%32=lK9B#^NA%Cx&(BWL|<~(j9#r85lP9 zbN@+X1@aY=J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+0812aQ_ zPlzi}!TqmcoNj?j QH9^V9)78&qol`;+0FKT!cmMzZ literal 0 HcmV?d00001 diff --git a/SpacePew.Content/SpacePew.ContentContent/explosion.png b/SpacePew.Content/SpacePew.ContentContent/explosion.png new file mode 100644 index 0000000000000000000000000000000000000000..3bce9d80a304fde83a2d824de9dd128676b951d9 GIT binary patch literal 293314 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

    hCwr`o5pJ+5X@m#J?; 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�_ui6{|5-Q`YY_hzlbNb>4rx3%LcsXbU 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 literal 0 HcmV?d00001 diff --git a/SpacePew.Content/SpacePew.ContentContent/explosion_small.png b/SpacePew.Content/SpacePew.ContentContent/explosion_small.png new file mode 100644 index 0000000000000000000000000000000000000000..c671d1d1adeb0e103350d8043547f4466949c690 GIT binary patch literal 1242 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 QeE@v;dIxxw?2b71A8qP)fdBvi literal 0 HcmV?d00001 diff --git a/SpacePew.Content/SpacePew.ContentContent/stars.png b/SpacePew.Content/SpacePew.ContentContent/stars.png new file mode 100644 index 0000000000000000000000000000000000000000..196ad801795f8b58fb394cafdf6cfe81efca5418 GIT binary patch literal 2862 zcmeH}`8$;BAIBfl$QUOLLZM6(CfTO4N0u>!7-Nr2M79=_#u(LM#x^8$YHTq?$Uert z)+Ck6QucMS<^<2+$zpv;1+@JgPd4KNfiMFyd*#nh;0syeb z^o)@;0Px(~z9GA~O10aoP40u|hP8#&$2mDUOeT}XV$IIZau@yY`j5c> z1A$`IKv8ZU`-vDwqK%&?G0@Hb5@6-#bB(BMiLr%~PAZ>N&z~BX1pvO=rbY&~Wc=*N zn17cs3~(JcqQWKy_gI*rZ6u&yx1t!9G)wQOtLN&vIGnx=+q$8RCB&P~=^tMbw(3Ot z6&XKEiNIlnZW_( zlwT1Ql?ZE|(~uunZkPhl+&+iN-g81!7jjY8b6}%8m~W1doXVTy?y0dHtK|Fss?hjtg80D1$5`4TOtyrKKD?f? zYib3`gl5g2j*EYNNKH;}ubMXQ?F4W41X;oPkgU}_JJ@zh9kIQWMDUz5wCbf}AD-yP zx{`7c|3$6yMdTDs!^b0L@n$nUrKV8dPjc)uqSY=%{ylnl{2)p_Qk#S#M@e^z4el+=bNs%hfky6%p z+=9WQGKxFt5@AGF1hSlY|MBI0A;n22Zm{BZ7c^#?#8$q%v7B@(HZil&hg~Zk&1u%l z{Iq#1=^zyWs*QKXv^1%%zHEJns)V%&fCN#`BaM591_~Sd^6-~SPXD1X%h4;mmV@S2 zQ3^(QE`24crf!ctYz)S&AlndxZm`J;d?PL)pb~J|-=Q=Vf(&H`gu^$Z$JEW><0}sE zWumm59L#~;<32nXbr+yU@+$t^S42j)P9Od{F=7X`*W`wRS&hoMo;5`1yVkK+VscQ+ z_u97`B$01a^X|*6{`H(3-6c;j*4NwlJF_lZ0~JhU@|<*yJ0(^ zPzIyyb=7!;Tz`5+;ej+HYan`OhNJE1&3f-;?X72Qt7*&mm4Q@W%yzKH;M1{#b+2QY ziqYNf1NAKf<7(zfL0g?G<|cjaTYTv@6CZRtjn~90&?z`m$+OKT?$+q9MkO8U!M;c z#7@oz72P%}cVG_`j{?Vgis084a+UI&(j58PAkC)|8OyrN$&DuT)X&yhinI*AKW}kP zuQFYK??Qbz*5=Y)Y$yE$0f86cKQEOj1lM=PQ)xk|T@qXZ_n|Y#lwuyxu}<91`*<=X6O7UNs5d-;@9G(+mn@un6i^>Fh^iECVoJxg84+j*5 zc1P!K^pr5nzTDl{_$zB_1?W%aXj)Z~@EUfM-C8?|?9J~91Pz^p3kZ-cJjOtupVHZt zQwlU6y@Q-)F|fbDdHWDU`p^x361pGjou2Ge$x~I(+Z8R`I9t`GPQRt_==N{-O!DeH zIqEx8<%+|{if|F>JAmrzOFCmSX5J2!EyTzeZXa5|(KQR9GLBj*85vU8L>`-OxstwA zeL-rflut`2KrI2Q>xSgz6q=bQZhI_?KiNX67%@I=!oF~!)aj#f^lM$t(FB+Yocc&Q z4=Q7;MfW!E+8PaOPQVaNei=CwLQXh#=J3-9H~Wj+2BHB}Pu^>PmX+L`T?)=1RTmt> z77MCe4#>`!0G}T@H04p416JO2D)8E{6eIW?PqEqsMnGr$FKAaJjReg}y63JL=|C$a zZ8*{cdPQ%h<`aAuC3DX>GAuSVYy9*`REi3}2lzPf*H zO7%v^IDRnhq4H{J`?sS@4S!2-(8`8s^)qFWrf&R(WAd^7woT>BFX)4yZ*FFX zVIU+_C%qzPrT4?`|(^c)lLS z;(U@BfBmGRC3KzVBX2Z%KNzx4q(;8CED|g1{nb4bnd5`}?G{7ct_!E+>x1k-AG8;RTm;S8CN#=bm`(tUAP_(KnB5wPi!4zX@ JRAT5F`ag(t;DG=D literal 0 HcmV?d00001 diff --git a/SpacePew.Content/SpacePew.ContentContent/transparent_pixel.png b/SpacePew.Content/SpacePew.ContentContent/transparent_pixel.png new file mode 100644 index 0000000000000000000000000000000000000000..c9ab1fa1682e16eefb2201ffca61d5f2e43abaa4 GIT binary patch literal 900 zcmeAS@N?(olHy`uVBq!ia0vp^EFjFm3?%32=lOs*>5jgR3=A9lx&I`xGB7YR1o(uw z0>wwcXb6nh5ZG++r32`Bi4xa{lHmNblJdl&REB`W%)AmkKi3e2GGjesvz5;usRGq- id%8G=NQ5UR8~|o55eCM!rL_&9aPxHab6Mw<&;$S-g&;2g literal 0 HcmV?d00001 diff --git a/SpacePew.MasterServer/App.config b/SpacePew.MasterServer/App.config new file mode 100644 index 0000000..d0feca6 --- /dev/null +++ b/SpacePew.MasterServer/App.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/SpacePew.MasterServer/GameServer.cs b/SpacePew.MasterServer/GameServer.cs new file mode 100644 index 0000000..2f85849 --- /dev/null +++ b/SpacePew.MasterServer/GameServer.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Text; +using System.Threading.Tasks; + +namespace SpacePew.MasterServer +{ + public class GameServer + { + public long Id { get; set; } + public IPEndPoint[] Endpoints { get; set; } + public DateTime Updated { get; set; } + } +} diff --git a/SpacePew.MasterServer/Program.cs b/SpacePew.MasterServer/Program.cs new file mode 100644 index 0000000..0caa2a2 --- /dev/null +++ b/SpacePew.MasterServer/Program.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Net; +using System.Text; +using System.Threading.Tasks; + +namespace SpacePew.MasterServer +{ + public class Program + { + static void Main(string[] args) + { + var server = new Server(); + server.Run(); + } + } +} diff --git a/SpacePew.MasterServer/Properties/AssemblyInfo.cs b/SpacePew.MasterServer/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..8263435 --- /dev/null +++ b/SpacePew.MasterServer/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("SpacePew.MasterServer")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("SpacePew.MasterServer")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("d8783d9d-5612-4a01-afdf-57a65560d6fd")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/SpacePew.MasterServer/Server.cs b/SpacePew.MasterServer/Server.cs new file mode 100644 index 0000000..b086a02 --- /dev/null +++ b/SpacePew.MasterServer/Server.cs @@ -0,0 +1,121 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Text; +using System.Threading.Tasks; + +using Lidgren.Network; + +using SpacePew.Common; + +namespace SpacePew.MasterServer +{ + public class Server + { + public void Run() + { + var registeredHosts = new List(); + + var config = new NetPeerConfiguration("masterserver"); + config.SetMessageTypeEnabled(NetIncomingMessageType.UnconnectedData, true); + config.Port = Constants.MasterServerPort; + + var peer = new NetPeer(config); + peer.Start(); + + Console.WriteLine("Press ESC to quit"); + while (!Console.KeyAvailable || Console.ReadKey().Key != ConsoleKey.Escape) + { + var removed = registeredHosts.RemoveAll(g => g.Updated <= DateTime.Now.AddSeconds(-50)); + if (removed > 0) + { + Console.WriteLine("Removed {0} hosts from master server list", removed); + } + + NetIncomingMessage msg; + while ((msg = peer.ReadMessage()) != null) + { + switch (msg.MessageType) + { + case NetIncomingMessageType.UnconnectedData: + switch ((UdpNetworkPacketType)msg.ReadByte()) + { + case UdpNetworkPacketType.RegisterHost: + var id = msg.ReadInt64(); + + Console.WriteLine("Got registration for host " + id); + + var host = registeredHosts.FirstOrDefault(s => s.Id == id); + if (host == null) + { + registeredHosts.Add(new GameServer() + { + Id = id, + Endpoints = new IPEndPoint[] + { + msg.ReadIPEndPoint(), + msg.SenderEndPoint + }, + Updated = DateTime.Now + }); + } + else + { + host.Updated = DateTime.Now; + } + break; + + case UdpNetworkPacketType.RequestHostList: + Console.WriteLine("Sending list of " + registeredHosts.Count + " hosts to client " + msg.SenderEndPoint); + foreach (var server in registeredHosts) + { + var message = peer.CreateMessage(); + message.Write(server.Id); + message.Write(server.Endpoints[0]); + message.Write(server.Endpoints[1]); + peer.SendUnconnectedMessage(message, msg.SenderEndPoint); + } + + break; + case UdpNetworkPacketType.RequestIntroduction: + var clientInternal = msg.ReadIPEndPoint(); + long hostId = msg.ReadInt64(); + string token = msg.ReadString(); + + Console.WriteLine(msg.SenderEndPoint + " requesting introduction to " + hostId + " (token " + token + ")"); + + var host2 = registeredHosts.FirstOrDefault(s => s.Id == hostId); + if (host2 != null) + { + Console.WriteLine("Sending introduction..."); + peer.Introduce( + host2.Endpoints[0], // host internal + host2.Endpoints[1], // host external + clientInternal, // client internal + msg.SenderEndPoint, // client external + token // request token + ); + } + else + { + Console.WriteLine("Client requested introduction to nonlisted host"); + } + break; + } + break; + + case NetIncomingMessageType.DebugMessage: + case NetIncomingMessageType.VerboseDebugMessage: + case NetIncomingMessageType.WarningMessage: + case NetIncomingMessageType.ErrorMessage: + Console.WriteLine(msg.ReadString()); + break; + } + } + } + + peer.Shutdown("bye"); + } + } +} diff --git a/SpacePew.MasterServer/SpacePew.MasterServer.csproj b/SpacePew.MasterServer/SpacePew.MasterServer.csproj new file mode 100644 index 0000000..793928d --- /dev/null +++ b/SpacePew.MasterServer/SpacePew.MasterServer.csproj @@ -0,0 +1,71 @@ + + + + + Debug + AnyCPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C} + Exe + Properties + SpacePew.MasterServer + SpacePew.MasterServer + v4.5.1 + 512 + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + {49ba1c69-6104-41ac-a5d8-b54fa9f696e8} + Lidgren.Network + + + {ba98d4ca-718b-4e50-ad4d-f48e8ca67624} + SpacePew.Common + + + + + \ No newline at end of file diff --git a/SpacePew.sln b/SpacePew.sln new file mode 100644 index 0000000..4ffa17f --- /dev/null +++ b/SpacePew.sln @@ -0,0 +1,561 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.31010.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{91E40179-82B4-46A6-ACA4-F1CE7A36C0F6}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Library", "Library", "{E6EF59CA-FDE1-4AE8-8A8F-3C83D8730EE3}" + ProjectSection(SolutionItems) = preProject + ..\Library\ICSharpCode.SharpZipLib.dll = ..\Library\ICSharpCode.SharpZipLib.dll + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpacePew", "SpacePew\SpacePew.csproj", "{1C82F1B3-6F3C-47EC-901A-E656D037F862}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpacePew.Content", "SpacePew.Content\SpacePew.Content\SpacePew.Content.csproj", "{944BAED2-53A4-47E9-AE89-7F6C5843DE94}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpacePew.ContentContent", "SpacePew.Content\SpacePew.ContentContent\SpacePew.ContentContent.contentproj", "{F5811120-B89A-4A2E-A0BD-551E9F06510D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lidgren.Network", "Lidgren.Network\Lidgren.Network.csproj", "{49BA1C69-6104-41AC-A5D8-B54FA9F696E8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TomShane.Neoforce.Controls", "Neoforce\TomShane.Neoforce.Controls.csproj", "{AC5F1CD8-AA8E-4DB5-814F-86C214175841}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpacePew.MasterServer", "SpacePew.MasterServer\SpacePew.MasterServer.csproj", "{9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpacePew.Common", "SpacePew.Common\SpacePew.Common.csproj", "{BA98D4CA-718B-4E50-AD4D-F48E8CA67624}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Android|Any CPU = Android|Any CPU + Android|Mixed Platforms = Android|Mixed Platforms + Android|x86 = Android|x86 + Android|Xbox 360 = Android|Xbox 360 + Android|Zune = Android|Zune + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x86 = Debug|x86 + Debug|Xbox 360 = Debug|Xbox 360 + Debug|Zune = Debug|Zune + iOS|Any CPU = iOS|Any CPU + iOS|Mixed Platforms = iOS|Mixed Platforms + iOS|x86 = iOS|x86 + iOS|Xbox 360 = iOS|Xbox 360 + iOS|Zune = iOS|Zune + Linux|Any CPU = Linux|Any CPU + Linux|Mixed Platforms = Linux|Mixed Platforms + Linux|x86 = Linux|x86 + Linux|Xbox 360 = Linux|Xbox 360 + Linux|Zune = Linux|Zune + OSX|Any CPU = OSX|Any CPU + OSX|Mixed Platforms = OSX|Mixed Platforms + OSX|x86 = OSX|x86 + OSX|Xbox 360 = OSX|Xbox 360 + OSX|Zune = OSX|Zune + PSM|Any CPU = PSM|Any CPU + PSM|Mixed Platforms = PSM|Mixed Platforms + PSM|x86 = PSM|x86 + PSM|Xbox 360 = PSM|Xbox 360 + PSM|Zune = PSM|Zune + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|x86 = Release|x86 + Release|Xbox 360 = Release|Xbox 360 + Release|Zune = Release|Zune + ReleaseWithStatistics|Any CPU = ReleaseWithStatistics|Any CPU + ReleaseWithStatistics|Mixed Platforms = ReleaseWithStatistics|Mixed Platforms + ReleaseWithStatistics|x86 = ReleaseWithStatistics|x86 + ReleaseWithStatistics|Xbox 360 = ReleaseWithStatistics|Xbox 360 + ReleaseWithStatistics|Zune = ReleaseWithStatistics|Zune + Windows|Any CPU = Windows|Any CPU + Windows|Mixed Platforms = Windows|Mixed Platforms + Windows|x86 = Windows|x86 + Windows|Xbox 360 = Windows|Xbox 360 + Windows|Zune = Windows|Zune + Windows8|Any CPU = Windows8|Any CPU + Windows8|Mixed Platforms = Windows8|Mixed Platforms + Windows8|x86 = Windows8|x86 + Windows8|Xbox 360 = Windows8|Xbox 360 + Windows8|Zune = Windows8|Zune + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Android|Any CPU.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Android|Mixed Platforms.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Android|Mixed Platforms.Build.0 = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Android|x86.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Android|x86.Build.0 = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Android|Xbox 360.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Android|Zune.ActiveCfg = Debug|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Debug|Any CPU.ActiveCfg = Debug|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Debug|x86.ActiveCfg = Debug|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Debug|x86.Build.0 = Debug|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Debug|Xbox 360.ActiveCfg = Debug|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Debug|Zune.ActiveCfg = Debug|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.iOS|Any CPU.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.iOS|Mixed Platforms.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.iOS|Mixed Platforms.Build.0 = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.iOS|x86.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.iOS|x86.Build.0 = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.iOS|Xbox 360.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.iOS|Zune.ActiveCfg = Debug|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Linux|Any CPU.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Linux|Mixed Platforms.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Linux|Mixed Platforms.Build.0 = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Linux|x86.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Linux|x86.Build.0 = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Linux|Xbox 360.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Linux|Zune.ActiveCfg = Debug|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.OSX|Any CPU.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.OSX|Mixed Platforms.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.OSX|Mixed Platforms.Build.0 = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.OSX|x86.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.OSX|x86.Build.0 = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.OSX|Xbox 360.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.OSX|Zune.ActiveCfg = Debug|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.PSM|Any CPU.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.PSM|Mixed Platforms.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.PSM|Mixed Platforms.Build.0 = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.PSM|x86.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.PSM|x86.Build.0 = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.PSM|Xbox 360.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.PSM|Zune.ActiveCfg = Debug|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Release|Any CPU.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Release|Mixed Platforms.Build.0 = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Release|x86.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Release|x86.Build.0 = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Release|Xbox 360.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Release|Zune.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.ReleaseWithStatistics|Any CPU.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.ReleaseWithStatistics|Mixed Platforms.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.ReleaseWithStatistics|Mixed Platforms.Build.0 = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.ReleaseWithStatistics|x86.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.ReleaseWithStatistics|x86.Build.0 = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.ReleaseWithStatistics|Xbox 360.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.ReleaseWithStatistics|Zune.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Windows|Any CPU.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Windows|Mixed Platforms.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Windows|Mixed Platforms.Build.0 = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Windows|x86.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Windows|x86.Build.0 = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Windows|Xbox 360.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Windows|Zune.ActiveCfg = Debug|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Windows8|Any CPU.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Windows8|Mixed Platforms.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Windows8|Mixed Platforms.Build.0 = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Windows8|x86.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Windows8|x86.Build.0 = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Windows8|Xbox 360.ActiveCfg = Release|x86 + {1C82F1B3-6F3C-47EC-901A-E656D037F862}.Windows8|Zune.ActiveCfg = Debug|x86 + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Android|Any CPU.ActiveCfg = Android|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Android|Any CPU.Build.0 = Android|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Android|Mixed Platforms.ActiveCfg = Android|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Android|Mixed Platforms.Build.0 = Android|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Android|x86.ActiveCfg = Android|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Android|Xbox 360.ActiveCfg = Android|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Android|Zune.ActiveCfg = Android|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Debug|Any CPU.ActiveCfg = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Debug|Any CPU.Build.0 = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Debug|Mixed Platforms.ActiveCfg = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Debug|Mixed Platforms.Build.0 = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Debug|x86.ActiveCfg = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Debug|Xbox 360.ActiveCfg = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Debug|Zune.ActiveCfg = Windows8|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.iOS|Any CPU.ActiveCfg = iOS|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.iOS|Any CPU.Build.0 = iOS|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.iOS|Mixed Platforms.ActiveCfg = iOS|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.iOS|Mixed Platforms.Build.0 = iOS|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.iOS|x86.ActiveCfg = iOS|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.iOS|Xbox 360.ActiveCfg = iOS|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.iOS|Zune.ActiveCfg = iOS|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Linux|Any CPU.ActiveCfg = Linux|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Linux|Any CPU.Build.0 = Linux|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Linux|Mixed Platforms.ActiveCfg = Linux|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Linux|Mixed Platforms.Build.0 = Linux|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Linux|x86.ActiveCfg = Linux|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Linux|Xbox 360.ActiveCfg = Linux|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Linux|Zune.ActiveCfg = Linux|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.OSX|Any CPU.ActiveCfg = OSX|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.OSX|Any CPU.Build.0 = OSX|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.OSX|Mixed Platforms.ActiveCfg = OSX|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.OSX|Mixed Platforms.Build.0 = OSX|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.OSX|x86.ActiveCfg = OSX|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.OSX|Xbox 360.ActiveCfg = OSX|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.OSX|Zune.ActiveCfg = OSX|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.PSM|Any CPU.ActiveCfg = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.PSM|Any CPU.Build.0 = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.PSM|Mixed Platforms.ActiveCfg = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.PSM|Mixed Platforms.Build.0 = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.PSM|x86.ActiveCfg = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.PSM|Xbox 360.ActiveCfg = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.PSM|Zune.ActiveCfg = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Release|Any CPU.ActiveCfg = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Release|Any CPU.Build.0 = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Release|Mixed Platforms.ActiveCfg = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Release|Mixed Platforms.Build.0 = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Release|x86.ActiveCfg = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Release|Xbox 360.ActiveCfg = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Release|Zune.ActiveCfg = Windows8|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.ReleaseWithStatistics|Any CPU.ActiveCfg = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.ReleaseWithStatistics|Any CPU.Build.0 = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.ReleaseWithStatistics|Mixed Platforms.ActiveCfg = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.ReleaseWithStatistics|Mixed Platforms.Build.0 = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.ReleaseWithStatistics|x86.ActiveCfg = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.ReleaseWithStatistics|Xbox 360.ActiveCfg = PSM|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.ReleaseWithStatistics|Zune.ActiveCfg = Windows8|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Windows|Any CPU.ActiveCfg = Windows|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Windows|Any CPU.Build.0 = Windows|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Windows|Mixed Platforms.ActiveCfg = Windows|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Windows|Mixed Platforms.Build.0 = Windows|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Windows|x86.ActiveCfg = Windows|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Windows|Xbox 360.ActiveCfg = Windows|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Windows|Zune.ActiveCfg = Windows|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Windows8|Any CPU.ActiveCfg = Windows8|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Windows8|Any CPU.Build.0 = Windows8|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Windows8|Mixed Platforms.ActiveCfg = Windows8|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Windows8|Mixed Platforms.Build.0 = Windows8|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Windows8|x86.ActiveCfg = Windows8|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Windows8|Xbox 360.ActiveCfg = Windows8|Any CPU + {944BAED2-53A4-47E9-AE89-7F6C5843DE94}.Windows8|Zune.ActiveCfg = Windows8|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Android|Any CPU.ActiveCfg = Android|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Android|Mixed Platforms.ActiveCfg = Android|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Android|x86.ActiveCfg = Android|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Android|Xbox 360.ActiveCfg = Android|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Android|Zune.ActiveCfg = Android|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Debug|Any CPU.ActiveCfg = PSM|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Debug|Mixed Platforms.ActiveCfg = PSM|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Debug|x86.ActiveCfg = PSM|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Debug|Xbox 360.ActiveCfg = PSM|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Debug|Zune.ActiveCfg = Windows8|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.iOS|Any CPU.ActiveCfg = iOS|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.iOS|Mixed Platforms.ActiveCfg = iOS|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.iOS|x86.ActiveCfg = iOS|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.iOS|Xbox 360.ActiveCfg = iOS|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.iOS|Zune.ActiveCfg = iOS|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Linux|Any CPU.ActiveCfg = Linux|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Linux|Mixed Platforms.ActiveCfg = Linux|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Linux|x86.ActiveCfg = Linux|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Linux|Xbox 360.ActiveCfg = Linux|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Linux|Zune.ActiveCfg = Linux|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.OSX|Any CPU.ActiveCfg = OSX|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.OSX|Mixed Platforms.ActiveCfg = OSX|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.OSX|x86.ActiveCfg = OSX|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.OSX|Xbox 360.ActiveCfg = OSX|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.OSX|Zune.ActiveCfg = OSX|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.PSM|Any CPU.ActiveCfg = PSM|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.PSM|Mixed Platforms.ActiveCfg = PSM|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.PSM|x86.ActiveCfg = PSM|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.PSM|Xbox 360.ActiveCfg = PSM|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.PSM|Zune.ActiveCfg = PSM|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Release|Any CPU.ActiveCfg = PSM|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Release|Mixed Platforms.ActiveCfg = PSM|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Release|x86.ActiveCfg = PSM|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Release|Xbox 360.ActiveCfg = PSM|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Release|Zune.ActiveCfg = Windows8|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.ReleaseWithStatistics|Any CPU.ActiveCfg = PSM|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.ReleaseWithStatistics|Mixed Platforms.ActiveCfg = PSM|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.ReleaseWithStatistics|x86.ActiveCfg = PSM|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.ReleaseWithStatistics|Xbox 360.ActiveCfg = PSM|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.ReleaseWithStatistics|Zune.ActiveCfg = Windows8|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Windows|Any CPU.ActiveCfg = Windows|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Windows|Mixed Platforms.ActiveCfg = Windows|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Windows|x86.ActiveCfg = Windows|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Windows|Xbox 360.ActiveCfg = Windows|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Windows|Zune.ActiveCfg = Windows|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Windows8|Any CPU.ActiveCfg = Windows8|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Windows8|Mixed Platforms.ActiveCfg = Windows8|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Windows8|x86.ActiveCfg = Windows8|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Windows8|Xbox 360.ActiveCfg = Windows8|Any CPU + {F5811120-B89A-4A2E-A0BD-551E9F06510D}.Windows8|Zune.ActiveCfg = Windows8|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Android|Any CPU.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Android|Any CPU.Build.0 = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Android|Mixed Platforms.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Android|Mixed Platforms.Build.0 = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Android|x86.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Android|Xbox 360.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Android|Zune.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Debug|x86.ActiveCfg = Debug|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Debug|Xbox 360.ActiveCfg = Debug|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Debug|Zune.ActiveCfg = Debug|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.iOS|Any CPU.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.iOS|Any CPU.Build.0 = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.iOS|Mixed Platforms.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.iOS|Mixed Platforms.Build.0 = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.iOS|x86.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.iOS|Xbox 360.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.iOS|Zune.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Linux|Any CPU.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Linux|Any CPU.Build.0 = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Linux|Mixed Platforms.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Linux|Mixed Platforms.Build.0 = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Linux|x86.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Linux|Xbox 360.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Linux|Zune.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.OSX|Any CPU.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.OSX|Any CPU.Build.0 = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.OSX|Mixed Platforms.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.OSX|Mixed Platforms.Build.0 = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.OSX|x86.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.OSX|Xbox 360.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.OSX|Zune.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.PSM|Any CPU.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.PSM|Any CPU.Build.0 = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.PSM|Mixed Platforms.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.PSM|Mixed Platforms.Build.0 = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.PSM|x86.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.PSM|Xbox 360.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.PSM|Zune.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Release|Any CPU.Build.0 = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Release|x86.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Release|Xbox 360.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Release|Zune.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.ReleaseWithStatistics|Any CPU.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.ReleaseWithStatistics|Any CPU.Build.0 = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.ReleaseWithStatistics|Mixed Platforms.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.ReleaseWithStatistics|Mixed Platforms.Build.0 = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.ReleaseWithStatistics|x86.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.ReleaseWithStatistics|Xbox 360.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.ReleaseWithStatistics|Zune.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Windows|Any CPU.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Windows|Any CPU.Build.0 = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Windows|Mixed Platforms.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Windows|Mixed Platforms.Build.0 = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Windows|x86.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Windows|Xbox 360.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Windows|Zune.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Windows8|Any CPU.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Windows8|Any CPU.Build.0 = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Windows8|Mixed Platforms.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Windows8|Mixed Platforms.Build.0 = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Windows8|x86.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Windows8|Xbox 360.ActiveCfg = Release|Any CPU + {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Windows8|Zune.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Android|Any CPU.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Android|Any CPU.Build.0 = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Android|Mixed Platforms.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Android|Mixed Platforms.Build.0 = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Android|x86.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Android|Xbox 360.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Android|Zune.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Debug|x86.ActiveCfg = Debug|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Debug|Xbox 360.ActiveCfg = Debug|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Debug|Zune.ActiveCfg = Debug|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.iOS|Any CPU.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.iOS|Any CPU.Build.0 = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.iOS|Mixed Platforms.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.iOS|Mixed Platforms.Build.0 = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.iOS|x86.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.iOS|Xbox 360.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.iOS|Zune.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Linux|Any CPU.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Linux|Any CPU.Build.0 = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Linux|Mixed Platforms.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Linux|Mixed Platforms.Build.0 = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Linux|x86.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Linux|Xbox 360.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Linux|Zune.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.OSX|Any CPU.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.OSX|Any CPU.Build.0 = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.OSX|Mixed Platforms.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.OSX|Mixed Platforms.Build.0 = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.OSX|x86.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.OSX|Xbox 360.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.OSX|Zune.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.PSM|Any CPU.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.PSM|Any CPU.Build.0 = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.PSM|Mixed Platforms.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.PSM|Mixed Platforms.Build.0 = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.PSM|x86.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.PSM|Xbox 360.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.PSM|Zune.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Release|Any CPU.Build.0 = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Release|x86.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Release|Xbox 360.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Release|Zune.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.ReleaseWithStatistics|Any CPU.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.ReleaseWithStatistics|Any CPU.Build.0 = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.ReleaseWithStatistics|Mixed Platforms.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.ReleaseWithStatistics|Mixed Platforms.Build.0 = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.ReleaseWithStatistics|x86.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.ReleaseWithStatistics|Xbox 360.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.ReleaseWithStatistics|Zune.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Windows|Any CPU.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Windows|Any CPU.Build.0 = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Windows|Mixed Platforms.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Windows|Mixed Platforms.Build.0 = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Windows|x86.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Windows|Xbox 360.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Windows|Zune.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Windows8|Any CPU.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Windows8|Any CPU.Build.0 = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Windows8|Mixed Platforms.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Windows8|Mixed Platforms.Build.0 = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Windows8|x86.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Windows8|Xbox 360.ActiveCfg = Release|Any CPU + {AC5F1CD8-AA8E-4DB5-814F-86C214175841}.Windows8|Zune.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Android|Any CPU.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Android|Any CPU.Build.0 = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Android|Mixed Platforms.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Android|Mixed Platforms.Build.0 = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Android|x86.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Android|Xbox 360.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Android|Zune.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Debug|x86.ActiveCfg = Debug|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Debug|Xbox 360.ActiveCfg = Debug|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Debug|Zune.ActiveCfg = Debug|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.iOS|Any CPU.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.iOS|Any CPU.Build.0 = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.iOS|Mixed Platforms.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.iOS|Mixed Platforms.Build.0 = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.iOS|x86.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.iOS|Xbox 360.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.iOS|Zune.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Linux|Any CPU.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Linux|Any CPU.Build.0 = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Linux|Mixed Platforms.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Linux|Mixed Platforms.Build.0 = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Linux|x86.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Linux|Xbox 360.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Linux|Zune.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.OSX|Any CPU.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.OSX|Any CPU.Build.0 = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.OSX|Mixed Platforms.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.OSX|Mixed Platforms.Build.0 = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.OSX|x86.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.OSX|Xbox 360.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.OSX|Zune.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.PSM|Any CPU.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.PSM|Any CPU.Build.0 = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.PSM|Mixed Platforms.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.PSM|Mixed Platforms.Build.0 = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.PSM|x86.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.PSM|Xbox 360.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.PSM|Zune.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Release|Any CPU.Build.0 = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Release|x86.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Release|Xbox 360.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Release|Zune.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.ReleaseWithStatistics|Any CPU.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.ReleaseWithStatistics|Any CPU.Build.0 = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.ReleaseWithStatistics|Mixed Platforms.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.ReleaseWithStatistics|Mixed Platforms.Build.0 = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.ReleaseWithStatistics|x86.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.ReleaseWithStatistics|Xbox 360.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.ReleaseWithStatistics|Zune.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Windows|Any CPU.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Windows|Any CPU.Build.0 = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Windows|Mixed Platforms.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Windows|Mixed Platforms.Build.0 = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Windows|x86.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Windows|Xbox 360.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Windows|Zune.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Windows8|Any CPU.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Windows8|Any CPU.Build.0 = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Windows8|Mixed Platforms.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Windows8|Mixed Platforms.Build.0 = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Windows8|x86.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Windows8|Xbox 360.ActiveCfg = Release|Any CPU + {9BFE240A-AEE0-4FD6-80B8-5846DCFAE95C}.Windows8|Zune.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Android|Any CPU.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Android|Any CPU.Build.0 = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Android|Mixed Platforms.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Android|Mixed Platforms.Build.0 = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Android|x86.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Android|Xbox 360.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Android|Zune.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Debug|x86.ActiveCfg = Debug|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Debug|Xbox 360.ActiveCfg = Debug|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Debug|Zune.ActiveCfg = Debug|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.iOS|Any CPU.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.iOS|Any CPU.Build.0 = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.iOS|Mixed Platforms.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.iOS|Mixed Platforms.Build.0 = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.iOS|x86.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.iOS|Xbox 360.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.iOS|Zune.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Linux|Any CPU.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Linux|Any CPU.Build.0 = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Linux|Mixed Platforms.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Linux|Mixed Platforms.Build.0 = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Linux|x86.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Linux|Xbox 360.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Linux|Zune.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.OSX|Any CPU.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.OSX|Any CPU.Build.0 = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.OSX|Mixed Platforms.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.OSX|Mixed Platforms.Build.0 = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.OSX|x86.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.OSX|Xbox 360.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.OSX|Zune.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.PSM|Any CPU.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.PSM|Any CPU.Build.0 = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.PSM|Mixed Platforms.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.PSM|Mixed Platforms.Build.0 = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.PSM|x86.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.PSM|Xbox 360.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.PSM|Zune.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Release|Any CPU.Build.0 = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Release|x86.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Release|Xbox 360.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Release|Zune.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.ReleaseWithStatistics|Any CPU.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.ReleaseWithStatistics|Any CPU.Build.0 = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.ReleaseWithStatistics|Mixed Platforms.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.ReleaseWithStatistics|Mixed Platforms.Build.0 = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.ReleaseWithStatistics|x86.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.ReleaseWithStatistics|Xbox 360.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.ReleaseWithStatistics|Zune.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Windows|Any CPU.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Windows|Any CPU.Build.0 = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Windows|Mixed Platforms.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Windows|Mixed Platforms.Build.0 = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Windows|x86.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Windows|Xbox 360.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Windows|Zune.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Windows8|Any CPU.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Windows8|Any CPU.Build.0 = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Windows8|Mixed Platforms.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Windows8|Mixed Platforms.Build.0 = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Windows8|x86.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Windows8|Xbox 360.ActiveCfg = Release|Any CPU + {BA98D4CA-718B-4E50-AD4D-F48E8CA67624}.Windows8|Zune.ActiveCfg = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {E6EF59CA-FDE1-4AE8-8A8F-3C83D8730EE3} = {91E40179-82B4-46A6-ACA4-F1CE7A36C0F6} + EndGlobalSection + GlobalSection(TestCaseManagementSettings) = postSolution + CategoryFile = GravityForce1.vsmdi + EndGlobalSection +EndGlobal diff --git a/SpacePew/Arena.cs b/SpacePew/Arena.cs new file mode 100644 index 0000000..275cfe1 --- /dev/null +++ b/SpacePew/Arena.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Xna.Framework; + +namespace SpacePew +{ + public class Arena : DrawableGameComponent + { + public Arena(Game game) : base(game) + { + } + + protected override void LoadContent() + { + base.LoadContent(); + } + + public override void Update(GameTime gameTime) + { + base.Update(gameTime); + } + + public override void Draw(GameTime gameTime) + { + base.Draw(gameTime); + } + } +} diff --git a/SpacePew/Camera/Camera2D.cs b/SpacePew/Camera/Camera2D.cs new file mode 100644 index 0000000..cf37e07 --- /dev/null +++ b/SpacePew/Camera/Camera2D.cs @@ -0,0 +1,93 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; + +namespace SpacePew.Camera +{ + public class Camera2D : GameComponent, ICamera2D + { + private Vector2 _position; + protected float _viewportHeight; + protected float _viewportWidth; + + public Camera2D(Game game) : base(game) { } + + #region Properties + + public Vector2 Position + { + get { return _position; } + set { _position = value; } + } + + public float Rotation { get; set; } + public Vector2 Origin { get; set; } + public float Scale { get; set; } + public Vector2 ScreenCenter { get; protected set; } + public Matrix Transform { get; set; } + public IFocusable Focus { get; set; } + public float MoveSpeed { get; set; } + + #endregion + + ///

    + /// Called when the GameComponent needs to be initialized. + /// + public override void Initialize() + { + _viewportWidth = Game.GraphicsDevice.Viewport.Width; + _viewportHeight = Game.GraphicsDevice.Viewport.Height; + + ScreenCenter = new Vector2(_viewportWidth / 2, _viewportHeight / 2); + Scale = 1; + MoveSpeed = 5f; + + base.Initialize(); + } + + public override void Update(GameTime gameTime) + { + // Create the Transform used by any + // spritebatch process + Transform = Matrix.Identity * + Matrix.CreateTranslation(-Position.X, -Position.Y, 0) * + Matrix.CreateRotationZ(Rotation) * + Matrix.CreateTranslation(Origin.X, Origin.Y, 0) * + Matrix.CreateScale(new Vector3(Scale, Scale, Scale)); + + Origin = ScreenCenter / Scale; + + // Move the Camera to the position that it needs to go + var delta = (float)gameTime.ElapsedGameTime.TotalSeconds; + + _position.X += (Focus.Position.X - Position.X) * MoveSpeed * delta; + _position.Y += (Focus.Position.Y - Position.Y) * MoveSpeed * delta; + + base.Update(gameTime); + } + + /// + /// Determines whether the target is in view given the specified position. + /// This can be used to increase performance by not drawing objects + /// directly in the viewport + /// + /// The position. + /// The texture. + /// + /// true if [is in view] [the specified position]; otherwise, false. + /// + public bool IsInView(Vector2 position, Texture2D texture) + { + // If the object is not within the horizontal bounds of the screen + + if ((position.X + texture.Width) < (Position.X - Origin.X) || (position.X) > (Position.X + Origin.X)) + return false; + + // If the object is not within the vertical bounds of the screen + if ((position.Y + texture.Height) < (Position.Y - Origin.Y) || (position.Y) > (Position.Y + Origin.Y)) + return false; + + // In View + return true; + } + } +} diff --git a/SpacePew/Camera/ICamera2D.cs b/SpacePew/Camera/ICamera2D.cs new file mode 100644 index 0000000..30458f0 --- /dev/null +++ b/SpacePew/Camera/ICamera2D.cs @@ -0,0 +1,72 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; + +namespace SpacePew.Camera +{ + public interface ICamera2D + { + /// + /// Gets or sets the position of the camera + /// + /// The position. + Vector2 Position { get; set; } + + /// + /// Gets or sets the move speed of the camera. + /// The camera will tween to its destination. + /// + /// The move speed. + float MoveSpeed { get; set; } + + /// + /// Gets or sets the rotation of the camera. + /// + /// The rotation. + float Rotation { get; set; } + + /// + /// Gets the origin of the viewport (accounts for Scale) + /// + /// The origin. + Vector2 Origin { get; } + + /// + /// Gets or sets the scale of the Camera + /// + /// The scale. + float Scale { get; set; } + + /// + /// Gets the screen center (does not account for Scale) + /// + /// The screen center. + Vector2 ScreenCenter { get; } + + /// + /// Gets the transform that can be applied to + /// the SpriteBatch Class. + /// + /// + /// The transform. + Matrix Transform { get; } + + /// + /// Gets or sets the focus of the Camera. + /// + /// + /// The focus. + IFocusable Focus { get; set; } + + /// + /// Determines whether the target is in view given the specified position. + /// This can be used to increase performance by not drawing objects + /// directly in the viewport + /// + /// The position. + /// The texture. + /// + /// true if the target is in view at the specified position; otherwise, false. + /// + bool IsInView(Vector2 position, Texture2D texture); + } +} \ No newline at end of file diff --git a/SpacePew/Camera/IFocusable.cs b/SpacePew/Camera/IFocusable.cs new file mode 100644 index 0000000..79aaecf --- /dev/null +++ b/SpacePew/Camera/IFocusable.cs @@ -0,0 +1,9 @@ +using Microsoft.Xna.Framework; + +namespace SpacePew.Camera +{ + public interface IFocusable + { + Vector2 Position { get; } + } +} \ No newline at end of file diff --git a/SpacePew/Content/Skins/Blue.skin b/SpacePew/Content/Skins/Blue.skin new file mode 100644 index 0000000000000000000000000000000000000000..72b1c5a0adfca80b1e56740426bb126d2fc37810 GIT binary patch literal 135023 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�{Ob@~&!m5IEY4}fw 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�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 literal 0 HcmV?d00001 diff --git a/SpacePew/Content/Skins/Default.skin b/SpacePew/Content/Skins/Default.skin new file mode 100644 index 0000000000000000000000000000000000000000..edaa82c31d645d2735d9b1ceff48cb103a60e95b GIT binary patch literal 131349 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 G_a4-QC^Y9q)eE``4~( zXJ>Jqo%?gwqpFC43V8G84dxpqd`79Ztxq&&I&a?0e?)pifOuBY*}>7)!4WLs?CAc{ z%?5gufu;-4q3m%ra}7hwmr@wRrl&K627C@x0LJ@Gz~cRpc$i2-apf>!$)MjqX-S#b zh+uEuhQh+6t4>{Ag!_DSO~kJhcV9ATmh{pccZP;i9A7S*Pa$c-CM1zx3YD2-i$Q+dc4jkk+rri&f7ePy5|4{MJUm(F!2LJM#AU95_9OwpBV zmV1&5xZ4VcVliBcZ%A$!{=sh`bEd0GP?RN-Ad-y}kCRoGQWsa3p@?7%VT_z2n+>Yd z5N>R9rsBk3NkUy|W1BGdve>8HH~cI)Awdy#$oXbAkS6R;h%@cxYH&P4C2~?sK zsGqU&M(!d*LkudTusrH;kkq=1%&HE?46rJTLmKyHo{(J@cMyuA#dXVWhi7s9mUJ` zdT93Z403@?I|P(1^u_YA1##dqUbdFjF}6pxf1gjBiN4L6bXAzKS`!7?M@kfjtc(TV zFEii_M`iogp<0McNO_5L$KKgB#qm=K(%A4iPsHc!#Cs2F?3Kq+z(q1lBT7{K3k)vk zwiL;`y^8(v4A?qOy&-eLZO9b((UPl2&%<8-1hWWxE=RH*H-c{KUIXEFje;gCPG%#yo@~*-D;Qd5zuJ4=z~ktzNwo6Zht7*=oQgRG zC~=4m|N51b>xq*RF9)~sN>T)#n)uV`qHxVL(D0iBw`0r{rv7Zq%+&I@-4&81GEtS~ zUt*Vvt)|gNipBLju6J&9-Oj5nz_j}-k-~q3Ml+o0B)2f&zw@EULa|;7xkfCFT3pV7 zxk6t6<>rZ0&3)T&NR2D8_=LlS_S?vvfJXrmuc6~x&W4r~IfW^H2Jbt~Vf1Ndn;$e= z%M#R_=jbQIg|w_|JcTc3cibl2p}18xY?;gLs%?$LQc+FFCh1g{0uC}0@Y^cT$E>9W zFA04w>S1T}z6R|8SRi*GusCyd_@cPfrwH6eZ&;kd!#0&c=iZ0qcB_N@wbd3gjF$6s zcV4c`PUq6Q{JCKZ{z*rEsrN}x^&5*%I&Ew)rl3WWxb*3G)n{+YjvtSv$vdXAO4Rg;Gy4yluj2Qpt-Or= z2T-f@faaAl;aZd-)%!f2RMMPLUiyZ0ALmat7$&8LcUAX!C_|S+49M$B`V@1vs}Eu9 zU_k%=%i+>%EC$y8foCd7kO`xo?1l@6^0#~GaT!5!?>eN}j<;FZdWC1FnrtJJ8$0P| z4;%IZsGSp|T~0|s3C55Iwxw4PZP-)AYsaXb7heAU<^#rQ17O*XmIX;ue;Jp#H?f5r zD!7mQU_&fIRwk$Xt;|wcfF;sMt4%wl0UyseD|l=xnR&&KsOan;zGU3a*lTST3biKX zZ%m4Po64cjtWEu)Ext&|*ttLKQ+-=rY?>ZRuvxOmsM$&AOKBSvmt7`O$UTq3Gr*|a zQi+*?bGcl7C4ELp=ap_^Cn{z$j=Dv=_~ViPFlf|82e{_c0V(2G?r=x*I1UCdBtCWty4W;9YfpNQ}43Od)4 zCJ{hUJIS483HwvYMXKUzg5=GhM7?eXcE5^^*u*a@yL;`AOQo#A2cuxR7NNFj#+jP< zWV-e6tR{uKRN_6Zm%WpEjW_b?mYnV1oCZUe|9q-TV$sqq275o&|E+z&otkM2+Te{| zh@&yE`j%Mzm=e=l&o_W$Z}!yu?q{@)Ul%Y2F>%fs4pmaX#VUF)NxZ|dhN8n-5W;;S z>+5X0lEF6yu(D+S))91u>)zMkXruY`-j^?o)LvA%^};6h28Di1A-z^{cebc!Z8
  • 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

    kR?lg8(I71VUq^qwxLsh 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 ZiI+P(;?BWC<{O9JF^b5ue<({G*a!83QoaBH literal 0 HcmV?d00001 diff --git a/SpacePew/Content/Skins/Purple.skin b/SpacePew/Content/Skins/Purple.skin new file mode 100644 index 0000000000000000000000000000000000000000..3db20ce65e0ff7a2ffa94214aa1e37ace47d9760 GIT binary patch literal 135129 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�@PD#eYPF72s3eBH~I&FxD33x*|4laOnN{21C)F+|?T%eO`hAB^4DVner}?*<1)PVF5G z<4!N@OcudWsVWQi&m)u5?A*0%x5qDAI=cSY_J>wv(Gmw_p?8t6v>E+)4DM;6ug*W` z%8(1&kH#_=&)54WN7p)@bu15kj0s(SaB5^&as#-tmMlnWzlC(u(?rkq6NI-1beOVL zpE$t_-h}qu-nWo)7PG) zw>jDH0`Xgrs~d9W{21C7B*ya32D)06$xd2d4%4I7dLf$hekg7@ z{r!D7eNWb=_NY5;;}fO9%!c|mjp~8!wag(wHEEE_g)P5twf2onBjZvXRyYHl#qO^AWxmZ3@QLvKMgBqg-lCjXal$t?F$7s4HpTGPF z^D_990n5NaQv5k^hsN-Mf_TYX%4Erh2cFpRYzHo?y~Ip zypt-o@0-Gt^zN`PTHwTRs+}Mcs4eKbhc@%uJGan!$gt+6AIb~g4%hSjY&8=%Le|0c zrWCTS0w(ttgey3c8@B%TgHD`Qmjxl73u;tSdpjDj^yzW<1_X&MjD(=@n{2 zk{DhmZ=XBuc>Ipe`SfXXEFXJQeB*inCN&t)_Ic=z>VWS6HYD1I*JxTMzGK-Fe14Gq za?q3Xr^0gv1GpkvyK`ogTir?LcA^I^HU)1jC%$@h{-N;nox2r=cEETt-DNF$y?UMD zSRERXcw)&pJ{z2u{HWUl{Zlom3_`*tLe!- zNYJ;SlzI_bz~-5Tz7baO5RG+lurcCh^CR1Qt`EW4%DOc&ovz4>tCkJIQ|4~vRA9;T zCG`OO@`OG?2+D+AtviF(6^h!}(HWgFSwTRlt!uts(s=9xrUD#J3Yys2)?JP|xiM_> z(((k#Fa%5BA1KDgA6)^sHm&a4_?cErc~70JyNy(gh@E@6e*S$_Rz_7Lx}d7Z7in+{ zNx24KZySeu)TH|-NL{E7m)VId6RL<05x>ppu$bzj_&0SD??*@Axy?)SV*J?t@(6lm~MSCW3J-`LL>4dN=@f0_RH(ZioLwe(i(d7siR;e z>1meX65;GD6@Qyz%hvZab7_5|y8-r1$#8fgdl@%-r6BvI6jM4g>!)emo3yBo*$&@( zAaNC8L?S~B(pYx>^^&nwmG2v+@?~YGJ~=pHyY0c`Gy>D`?&%u(Pl?AqFJ!%YORffl zGPd%($Vi8L?nw9c2EU%OQJ#s$>jtta`qoEdiAeQ_jzUyQ!+wVUUiLil{L@Em+uZCI zIUQ9_&bz>KC#M!q!c6QPlS-a4fL$x<>ZF>%C*V}3e~8c{;O1bGbfFQMtL_@>L~g2_ zrwqhejls5%1tbN3-3J3Ex{R%>K}s&!qfe*($y|$Vli=3G<5Iu*u8N)8nAuk6rSpi=Q`8=zMD6b4Svxs|%2&+kCgos;jz@&<+1qCj{&- zgbmqJ>mzj#pk;2o*1wlE3GI9Jg!b=OW?rl@>_Ef*g@QSXes;W^g04;;t#}*?@>|7eee$w{Y#Kum zf032Ia%Y-Gn)!ZQ*miJE0Bj#`-=~PH`*ru->QH4HCmz6?%k#P`@ZJ{y1`K(!T@IEV zw9FjCl9`vV+jx8x_b_={*MOv&lqKS(C3ja{X}^iYg{+dw&P?Rwv)l}-f7Ebf`<*B8 zsgSa$(D+NRi*wImtlUT>Vg~~QxueI^=@tuQe!t%LLk>sNaGu~P+4S_pSbjFv zoBftq6InUj^hSM=r^x!{z8%9nrSs_YBu;7$YstBvq=8cGa5>aaqam=orVJeO0*S97 z3^Y<-9k}a}O$7J|pd}RJGAN`hP@ahEHR`BemRPp;O~O)DWHY!)9aWQV8KMRqO6bd? z=0sQbl9jZ@pg86iP`NnZU-9;_Qt|OaEiH|SJo^&)z7-B@)Q$@HdFX?l*)&x>e`y z1nsrWh~FJH=VmomCb>}yPbkYO>D+`ha%za1vAtuoIe-{wS& z(1%Mg1DabwL2}jNd7|7oNX;7(Jo;t?Wf5?&rV1Tcuv@;n+gbJ%esDcySeP^(8Bc)h z6I#jI(fcMjp+c2L@_yriO*Pr^2@ktF$ZwzZNJ8-~C@P^{J$d*ablrYx0@qK{?&mCw zV0F4VN#dZB0@^B2SCVsN%P1~xKa7tL%^!OEN2KDv-K`CK_zL01ZZiJC%}(MCQ^Bbl zr;OM7*?Pc1)11!lPHfY-uT!ZCN{?wDi_kGJR177EXUD9%57Ms5Xbn3%2mvL-IY$vU z@aUOK4Aj>j;7j?im?$mcN@*)!=M|Zf{(47}(LzL&5W($_J`lM1GYsbD=_fvglpv6( zy(VF!hA`kRv_}E)%rfW>YyTrJ<671Jq8{tTe#16j{#f8ww|D0*kzg}1VmIcB$yKf` znT8cq$%C3(pmZ|Eo?<)$@d~yGND+=F-;9`RcpQDiZ}$|^dtBS(T8Y2-2TUIHrka@l z_@b^S{_*CWwj1-Em&e86*fi1F7;?ZEnwhOyeHYWf_HKDxeR<-z-;di`Vk)^%J9l|# zl<3|-GPesCVq~Or)tx;7tL4Y1E;44nfbcsJ5Wkr(&I-2lup`?IS54D0^+RAC)4d{! zfsix(6V6R?+i^DpO24iaEDG`n0k*HHwEo3eoAXl+%SCt8q`lVNdxoYx5zh-(jL)F2 z49!~dRlIK~=B{voUHvU?bHxD*ew%dqsXwi-keiKDUB{?PQQBLck&2 zGVq^N@H{5fv|2?t%kA1Bsb^XY;H$5iWl@v#TDM~>qjbGfyfyW0azl2)AB8xqBC^As z91Crj55#hl|A5jBh;~ovu*2n-th~D-da9*wyU(iwV4T(Ez7UzAygEanyQTNQt*Dix zj)l$^r7n?x_#9u!UJ}=)c*8;ND0??jXp`4gwmZVO{HUI`g8WP1CYYx4-^b7BlRseO z1YplxMLiFJ!-034W&qf;GUv?z^{-)EzC{N41j9ZyHC|!BTY^QtSP5jD!78CGrb(lW z$P_IBvtXDX7w?|WU^aWMFG!q9*T?Wc<@ADqev>$>KZeVRI9|F07m8kNnPC9ZN9aOXk|$#f$AV7Bx-0 zk}LwspF_U?R`2I4)Oj#T={3et$L*}GT*RWizdugAuW!RB@7S=}1w&-DXt(QELiIiX zy~)C^r@b+URQTM7Z{9zBOFq*+i7YF%ujIS`?qKF>w{C94+Pes_bC;db`jXUl(D z)~Fe0k%zxq=!4H;3#ZxzjJ#e1F<~!hu2LyKLycTMa=8<V?nHQ_x8gwp z?YucGiYbG%;A@i4e+crxXKAAjks2t`j%UrpbVDM%gnX(8T(c!EHIf3+0ts7upPAXq zg0d(N2VQ+sFfc+le()%fb2D?NRz*jmXUhpxes;?l(!~hi_IkjnFPT(W;JHcXlMshT zvDqk}dFX$}M%n+CU#@6}UHs*I?ySdy^P|NSBwn5kN^C&jSHRu%>Xdt3*X<`CZps_w z1Dzp>pMe~L7bJ)*225hFd@k?XHhbE+6=3$Vl8T`&y5nEP92et2lPbz)tMF${G>%!r zf%}+P50#KG{c&x+S1Xr0EIfOM0akvnD)y6!1U|8`YFmA_=KIw zZ0w27P=p2ZHhv&)Fy{dD{=VIuFbUULVhbn!iAYnN4BlK%!j8}D&Vo6+ZgLM~3EwM% z>GaO8^iU{YK8GSw38Cn(BWJlXg3qBj4e6!B~q>=8qtb1qVn*xjy9fK}Q z%$9TVVo7sb$p{0;k(U1PNAr!EcALidNp!~jmuQRXq=NFgHiXSJ{1`m-{NHS7nO~fy z?Q~naf3G);K0g*SNuX|D90Utdy7-A=UOjZvLQ3374ZM)ljDdOzY7!{k_H!$W%5~cP z>(8$^%v|+Tq)=^Nd@UlQFKzc2YMLxaK&5#+@}4|;GfbV=50lq4Cj>uWkk{fJ*|i~G z&eAc~vROr1h^akeTgbt;!0G7i>{z}{y<2?y*=)SscDR->L719ToGU!}3<}tw) z6-(P9LsOQ3tId=Mi3=pPf{XT}2)7Z@8l4!|i6c#zA(`%)30Ad=17r8QPdB_v+u-mi-vmA*O&oj9 zYgq#@8NU508gS+l{8G^+*M2Lo%|NGlX#?80eZkciTfDXvLqV2hu^`)9#U$WU3XIjv^W6sJa zKAKWOAA;SWBK472!1n<7lmfv0o>p?w;~xzp-HH}xN!;LkirfLwIEWD9M!+y#-I|E< z4bkKq3|PT{K-fE^J@ zFGMJmJ^@7a!)t6bgjY-t+?%!Hdsm+OY|=8!+@;NY6qYntX!FnHY>~|?sCO1IrsO{L z?w+Uky$=gdmoV-0$KTFe7Tp%sX~4uZw6t-4iJwz`;xShQiRwzhg;fQSNwl{l7&U`2 zF)+j_pnnR9b0PMTpz1(M41#QD<~`K^Xd(-jV*xt!Z6b3Wk~o~(E6+d0JMDJHd;>hIj!E%D+MXlnk?a}7e}eP z?;q+Igd<(9Tnn9wTd#QfOy!ug`mUDOz4Y#92%q7L64unH(S9r4Na^#L{q`7S!7^32 zZq-39U_^E1F))`5cI|}J`*%r9v*wZg(;w;m@4klrE4|+q^*@vPe}=E&pGln)2>Jf~ zD+)cdJO{MIJ3kV{)t}8^R`v0~>ltYVj3Y=H{tS8BPZHGku5!TW)QnY+$J^voOr0O! zm1Qt&UsLF>g8L^sx#|L+4{GIKy^nAL37`#eK6KhfWrD$<2KY+Ki;oS0MEzFw&Tf-e z$}&oBYjgP2sy-py4{jaTq!*^$Wb%0zHE5n)qPRIZcwEE_kJNDZPPiAjeAV(9OIr}W zJH4+E4LC>SGZkH{fR+jK=KmSy7KW;0NsZ^l@5pcdI>^Tdcpcf9NqwI8&4S6p3}`w6 zDXrmX2_ptFJ0+H*Tb-VE{X}{A5l!YC4*nqG$4bUOO^`Un=sn-f^x~OypmeukcvkoR z$yv3eJs=IYrBZsu+hu9q`rg?~EL-_(b4Cp*EtV3J1%cn&;w;{p3;oe?vR8oPvUg1M zsPA3~<+q%%YFbzNqD{RO^B_0d=dzG6AyE!&x3y6E&7)7#@er)~J1H70@~E+*NZx^3 zOsV^7HgjDd*>gv&pLO#2C|yQ-v9lSPu8Lx-zhL^>Do>Pr{ynXBB3Z@f-%{!ilddcPAP_-JdFGg%kF+IS-$ z6K+`6z^(I$y1|2zvrP|Q|I3g2OVsu0Ed3(3rmW26hB!+X++Ie>sT$ACTskn+}OD+6ni%I5TOdZ=@9TKWV|ZE zUNCO&19`?toRGD>jL&2_l^RIBynme+%k%EYnE81Hs>Q8pVyx|`YHOlu84+5}5Iiix zOJdMSSZga^)oUKoYt=vcJwV!t2+mv>r}O;?cS#ApwlzI3B(=A8w?BijCp6mTjo3C! zduVR1gtHHmvfoH(-c_>q%nDltX|Hu+rzLND=!WrKXleuT?L#)grOkf>`w4xR&WB;_ zQ)ANPwrjIF^!jgOtG1(6b|0FKG9HL_cVm_vj}HKuLKB2e2v5+6`tR{^df-i}14-!( z;I(l2@b;^RAQ|4OO$S>yF!(1`!PN zu?H$U>0Qn+YfdV|b$n$`2YqVNq5Ew*NnK84YF42K&YKxr4hU;xTn9J-AKO5kL0UwT z&9_@lE5Q_NuadolF-5aH^jkQ%v3Bhl3UIE8al>x6zXx@{!(xVe=!Q3; z^r;S_u`)okOz9(nY3_!zu?wQh*g_6z?x(S_kF?AH?{^8mFbNe24Ry8J&fVuF-$c@R zET{-vr)8~Ixgs9wEZ$D0d)((t+DV(X24Hnk-@qQ@f`l{P7(kZ=IgVn)2r}lmb8Jo}&&AqticA?T4 z+gL-*uM^&#IcAHRo6fC+= znP}>_YGDuua;*ZxXxeNCJ0@4I)U8gcmm1M(&eEb4WMr+1J|!(;^bd}tELAF^50GrQ zIk!?-{PU~q6ukTIew7QM;_OSdtSt?1s?oL=kKn9^Xtvwas5N^n;4EL$#w^G=m=I-v z9qCA$ca?Gf`-Va$U(xkJ15747-WhJbr2<>!dYHr41h$gMuSY(t(uMt>EGfn{*GUhP zNj`pnuJ(ho(*Ho0(t{lQzt4oJ2Ui(aiu&i$AXV-7=}{lJir-yG3LATo!U7R&JfO;r z9vze$*>jWNA>Og-lzlXoHU~q^D??2L!yiz_JTWLwYI$m3^5F`nUJINR4(71s+0@9{S3!Ro?Nm39!v8?9<>r2;cwKTWGQ0f zkM5pHuC3<`eQiol)!8ZMf}RzQZAU!y8=V4P@ei_>FTDBRfR5o$3v_sP!ZY0w;lbLf z?5E**Xi?!3Tr@sP;;)KjO$kL7;h{3-s4S)u$oBk zk@MX?B#x4Bl<`d2Wmz}?ka4ml%y3_PKMOcHx=fvT!@0^VV&+yVH>-47mo4LVyB4+pW#@BzS~pz1+yq zJ03G>+WxTNDRnIEK#)Utp|d#hA+?XOGy4Sp9Oj!oB)NJI{TkH&)AHk7hs^K<=QGjG zj!k+3Jyx-=H?rA$M=B4-xtiI8M%!arOs2NR0ksF5bg3>wcQfr%tUyPrMt3*goKrHs z9cf5i{P|0awQ^z1O9e3y5p+huZ7 z)6Xp8JWP|zj?lS_EOnY{PZ$P!K}bv1?qzGLSCgh%JgWdT@wIjX7~YwQ`+~X?6oiy+ zXmKBG0wMKYj7H{Qj&Xw+NbSuJT-?2wlXf9}PAGN}M%p`Tplq-87wb2pm9jg~rzRmI z8|tU6&X&{8U#Fcim#1^y63YSrm-MR9%zM4|sy-0iiG?>8+CiGzl>ZJPv6o9y-HDNL z{{+6vMaQ#l!HWUJpHHQ(Q;2T{2uA9C1b5usP_lM`>@6~pg z$wtLzL}xEqGpUJ2&spy=F-hf&R@t>!ezrv9j2!cr9-pYJ`Z6p$J-ej&wk4deRe5c` zV%ugc%O>%zQ`H=RpLo~R(5`gU?U{(IiR>+ZRJ}JWkr?gcz@s{OIYpaUo$JIn%!xson_&ig2V`i?LSdHQ}>W6$L z_mLyiCQ~`|WhtIlgyslOhRm#lBzpByuKBZMBfql;Pf0fO`}T4~!lh3UoY0^Prr&1| zx}?7x%MdU3OH%FJF|V5rK^6|MGobYjVRb(5cO(l14FILyZa|@+NG&?+1sgQ)UArsf z%A;aN3^b$`mUw`4)4OhBbp`uW^irh3%CusutE-(ZE-q^>uCD8McXw-d_xJ0_$jHiI zCg5quCtbR#tx~4(UtQ0-m^lf))k?2DvX3x)d&H;h`|CEzh7uAO5d()Q*fB#iv64TN zzA1j4J>1<5Vm)HttJPq2%Df5|9uV;#H;nySD7B{;M!UzVLWikPp{Zgm$fGxo$2N3o z@b1riuMWUH)rb9OJAxKQT#Uum&N)cr>}@%HaW&)UyAv+NlN2(F!?so%s;cP4Y=CIMPce zs171Ds#YNZ8t>SadQg*?e=tNEAUPg^TNd-#$CD4dl9I0lucblgT|PemMWaBqoqKCZ zSKYFi9G5y8Uh4+sbh%0Fy1{W4Pn_<5KD|Coz5myO)d7!1Ae_Q$rd(Hx>fYCyd#wLz znQEK0iD)e<`s1TdCRf*?z(n1nO)!6Ky}#JTe}Nav=tfU?HB*@Mb|!wcfyUL!%I+-J zg`9XxCz@JeEM4D;U(r*0ZV3Ive& z-`C5{Q3u2|%s-9~Z>IGB5?vGxzMI?r6L9ozq~MT0NWp`|d4pk)TsfgDnhJT&*b%HB z&=6|r8?Xw7*Rt zt^l5c4yMIIwE|ui*C52cm5EZV$)8b-xLx7XDSvuTA#OdK87h(KU(@>- zw%@IoJek=T^l~nLRxdTrI8|?QA4GXRvO^`8HT<)O%(pjS;>liQ=nY6GT;AG>w=)zo z)NH@Q>~UijiNo^#jhH)-BOEy0WUF^`I0K1zjUwoa)6az$WjJ4|GQ8(7Y*Hs#H2Y@X z7dl`F8`5_Hdb#lEs8*-fuTg*4|2TB4;$FYIkVDx9O*iZQJ+3S^d=C}H6!ng(dK}+> zqBivDIa+QZbL2ZJBJ`F+3$__Ec}P+NbK_(?N7kzlY}}Ifo=kicLFieP$ezCl= zmK}LG@e*2b;zx;j{SH%oAQ-Ee-u$6^?x)%c>&!|O8BSSU+)=#vq(AFEV}$^YWkL@# zi#|C%hK;Z7xDp60VIr+;{kkB!n5$T#&zfpRza0;MFeBfD=#h$WU10NNH~FUuKvebi zovJ%5mKdt4%DV`e8lfw9execv<3BK78>yfg!#kbw1%5Hv+Yh({q8>7D_AXV6v+Dg+ z`xDqWK8Hn2qE7oryQV@z&=a2JN*$uQmsm*Q?05+@+_$MhS1sC%Zvewq=ab+!e=H-$ z6U1-hIw`3xDSY+$v9q$E)Tx8`jl!DHn6HKs#$0cQ0sI=j+jmjpbW5pC)vj&`Cfe^MRD=NMt*{|aZ}$)4WZ1M%ZL86`cH;6DQglyQo%afG?qAHamqSa znQ?sXW#IJMr9hHBfSl3?rOgQeaa(0twI4hToX&*|5+U8ITeiCDRJ391B8)wD`R&Vo zpO~0faL$f(84Kr))8~+rM%W!mg!|A!jJoIhrSge9;CSbP4y8}M1wwPCROsTUyV{_S zy6ufvOwm-|WocsV%!hN7+nXOb!kX3Sf{-Wvs1ctdOS}dc3;*T=n&|olCBQ6TE+k z8d^zS@I^(u!iZT*~fpG2Dmukpw*GDk>@zDBl_C0Win}k`_w4i*|<7 zm#g}_K(UU^4_Gnnh;s8X58{9TB`2h)b_8Y=et4CbGs*|2P1_3k?5jtxj<4CP=N)u5 zRlj^zu|7HJuFB_OVjcF_96JnUzg0_;FqOINB$W!Ykp@F!7mnH^tb%wR3M1SveNsWs z3iP+o1`X^#H=Z29*Wx+kvyeI|x`(4T4C+EoMo-vL8S#&3q61__w@)`hJU|?ih1k`N7p*%kId14; z!03qVJZ^krTsoazQgFR(z!v`W5v8g>fY;PtBZlX<$A`V5SXF?q<~(ws7t0Mi3?eNb zp3JXDm1lFPLFyZW!OtTE{a*W=$Eic=-TVQGEin+^IG|lp{NTtqcwJ5<0Yjl&I{NIw zY~G~3Y)oWaAh-qd4gIKNOifHC14TCjMUQHEAkzpjRmu;a$b#- z`W(4=rdW)Nq2fbuN%6Jxp2fdXdcd~I_~%?Z;b?T-r4DoHuY^8QKDz8U;CvTUHwiBG zX`FcUlW`Q%FS;d1eiGEz*(Rxd&6M=u%r%|LQuZxWJ!DDYKoZ5#@P9#!SYn!fG=%&VaQSWo0gr3Wb`2Ts)!wH*r?RPC@uGl2s#D-LQLZ#C+J?~L|p zbq?3txaPBIdLK9IObocS5bRMb{Xy^$uXN?bK2Zb54Q7gspH+_f5NEdIo{fIOOo{=hb@32#PSJq`}6pYDyVrH+w6R zb6!KrgcjU#H_oR!bwx$UH#&JxrB2&#Tjwg>j$zmI-BgQ>&7Qy!km}qZxJ1aB>XE;Fad`vo-d2>v=>5pb*TQg-HYerfaSY4&v2Iq{ks&-%n_ z%FD+`R}c&n-vtWzB_6c%Ix-BRA_rz)x35Zk`Qv9-QSjf(g}=go|59H6wOn{Bum9%% z{>}gWoB#Va|MzeH@8A62|8MYriT~?ptYq{C6SDf_z1ly{$C9=V9)I*Q{0#yA8v^_{ z1o&?V@ZS*NzahZ?e}VuPKbEdiK>tHQ{@-kqs>Tj~a_iRAj^sYtqY{4P*jNB9Waqh& zl7&>3mEk8bSRXb1S|?gtHR^%Kq9@t7M~h(+|9Bf8b{YQ)_i8_N#PnTBAu`S5%kYOM zgC~=XPItESu=*+bJh=d~o-rs@7CoYD0^%%-@r2r_SBJX*J~mw zgTe4e#`|yq!Q&+MUkyA$<-2P}P)!vj6%{{1n>mru2|VUQmWiJ==O~D4)Dau4$GVb? zNipC_QDM7*_oA?u6BmzO8~08_=#nb}lKsCA8-IreDTaRd9s0z^O(DA-${i(ck0sOF z&9Zd>o3pWazQ-30Im>Q<1MQ>}QfMx(f*GDSuEn>w`I7A_j>_JK#)=MmNT7+HX#wv; z8Ff1sDl-=_;q+eX5Th|Zn(({GN1KU@kW6$k6BIIWV)_nZofQ(1V^oo^M5~fU<1VKK z@9uv7;0-qtGTy{yZZu{d_9SXZUOeYH zE=Cc>Qg8#ew1N?LjHo#3yzB@Wl@s>W?3XmRESFsz5efOmA|g1zk&wnQ;ZizMPh8W; z>X!ERD8sVr$Ee&NpKw9EMu0%^sc9y`R~D~*o$aO>4r(Xtq9YpU{t!T~uOhL8VtV<0 zwk6I!9-|%7Y#d|^7*O10b4!LkT0aNyIj*`OaRz+(sOSrKS-O9X%~tF1nzvHT<=aL* z>_|Ky_;q3-)`&42HbR1<&ovXFdK{5HU+qaw692P2;TQQ4_pGM)=Ovk~aO`2tZ}uho zulVfSzkT^Q@Cz-Z!8#I1OP`090#~aOm802CyP#zwGR7-zU&Ay?s_x_hr`=$VHeSuK zgg1l;S?`ILx_tSFExk^vB~JH>B{I1~JGN0JAdd$Wf?lM)K;rg`dP`~|dl*6?u87?X zhO105O+FVr@=&Du;;T~o+mS^76pDu2#*sh}3gINc8a=({{-M)p!qg>uIwYd$Pg##A zZO)K115IBvp)S0tPt8*D>*qq>3ehg^SRbc^yu-QMqsEX}cO;4a7yV-_UUq~t+7Lqn z%(GsL6-eTj?~>LT{Su zdHf?L<7r>8(O7pjUbYs|59N6hD0T=F*s5dGxHUWYb_))#uTsgEfnQh7w;YJ3CeS`4 zkUEt>Iawb3YBGtWxk*)H-f6$MLYTxMGr>!W6;95I)pjoJI8=VZsY_*vksh~pQr#eH zEB5% zm!N|+A&o(SqX~Y%=PVdp!``u~Lqp87%E7zmUd8a!y~Iq`D54iU=t#cdR22IOcdflH z>}6jVb$roC;IJvC>NPB#%`a1TARPR}Q+1Swp-=xFtydyXRs56wq$yBLY{TYs>ncgg zJb9)J5M;Dw`b^b)-VPcC=Lh$_W*a@f-)YP6oIFXl6*}kJS~q~O-zmBT-QeS}o|D=N zzG8a0doCzxZWu*^8D4piCx(RXeK7+E&wy9NGa>s|QxAj=C<_W-95&xjxUcQ*B@23* z2Y8WXU8O=Lp!K=EBiqhLEg8>_M+Dly+T;|~po-+(=iBsTmNWir*Vh2e!SpVkHrqR$ zZtwsI#?v|xXkAh%dOq#95>lNc)+C6yiX%2kAhGPuzvx?fXRG}bQ?itGV4ag+*UHOi zsUQZ#er*d)GGeJPMA7YQC_m8Tlmc6;+%?uBVz8GHKmyi;!sNjyXW7Mx4-2occt)9?!2I6D zE1@&+)Y$^do8=!YBn!AQwtL!tBNpeO1}O+khw&`u?fsJ2>EjBv@cnv+{m#wgKN>UI zf=e8i-p*grZ?Ev+(Q{ev!v|!WhS;VXLNuqpPuzM4QmW+-3-F&1tVrU-gv7g}LKyOW1 z{8N|ti=r_?)-f!>*$H`zgklPt_jaMWu6C0(^wKv^kZb=jCsnk5-P8ZaIr-O~`wv#^ zg^8iQen#(Mda8DUUPiWR9(HVU@qubWO1fs2UP8q|Mz&g9npz%qoTh@JW`e~odO})C zoMu73pLC$7f}yaui9=1ah`NP>y@^j&MOYRD>@hWW^1k1A^@KD71I^d*83kBsnbDDN zcd`|TBU7>ybq&lcUuEkgzjAz&;^1KB;4payA&%Mu)hj>wfkYS{6$|UNDktYcPe%qR z`u6tbH9bA`#nsgnjG|Not88Rw^$hs^8$H_E+8W%}+WLwD2lp6bb6(u>cGvaaHR7xMRZl{xn&qmOV3dU-E;pQP zRF{8>Yy1Wd0S^)v?e7natwN$m_a;jq1KNDjL1jBopxwv`K@(RU%bT40{H0>?ghF@! zd`=hzGmZef0lbaDk?!p$v^2t$P%!0M%KmMOWk{%yKQ3=Y?XQ$o{7b{*v*>R<>}iED z4}JA#ZFg83i%;)pwHUC^d>VeZ!8kDPQP!E75WkAPf{b7e^l)(a)|+Op`7suLU3deA zKJUW_`}vQf^r1qgG6i*i-XF4$^dC=FG$gr>r|9{-Ut}KcKR$I$0GXe|24MW3BJ-~#J^M29gWjSMS&Sy%zXEO@Kya>zR^9b2FrCb2_KQqaNe zN`w*kbhmA1(!n-X3ph=0oGDdn^RF_VK+q8i3;gYwMaKinbCKwVE6%W=e4n=gPgo5M zqSFx)YLp?ahRFq~jyUz0nn2ML^IeP64sai~A}p;pAFb?bwpY&S4m-7^aJB7;2Wg>A zEe03#h}Xqm91C1=Z5$^G}sf z!_$t%m6nq2^oF1i3wk|(XR;Tvy8wVg--nB>H*6x99pnoi4+fh4jPcqfCw?3T$3MnD z{o$DLZWC7UKN8(6&!Vj0?Jsn1Q~DPUjgpyxgYkDp;Wx~#>la&Bn?J;;f2{avlkfi% zRy=Y)y}T?0DtHL;^KnfC`MXl?PoJ@2{$p^qjhx+u|NFsxGdB4P`ucy!;NJJ2z6}nN z_5tO?uoVtiNY#%fMp~%$Kl#u-?FrIF{~X?5uIc|Zc8cbvW`B;)IdTU64HF$qh0zgw zAEi*Z8O4R`j3yQo)Z|EHZk9fdbRyuP=lFlI_ts%;DBIp}DcTlmai_(-Kyfd{9g4fV zJHZMRT8b2RhvE*!3B`-MySqbxkmO7E+2@|_{oVV%_s{dZ_l5@oWG0g}Ypt0zv*brf z_-S=repmNb`qrDU>Ypg{%|U-}tvPtX%L<{t>|m{WE*(cLLR&{!K;m5AGSE zgz`Q%!jVdXMZ@Ev{<@Gw_$h~!z=<-2Yu<0@-hUD&;b8VJ!leH_bPfeBmLpFop;$=h z(rY5bqIiArV5P^Dy}o)U2!A8)cl+wMT0MUf_lI%yi@g6ChSlD}esJlZoc_(h{pVyz zJKFz|Nb`^7_1}%v$iG9J34qjj`MIf z(F1u!%HOfQVpAC{r)TG>7X;Glj`E3AQgcmO@BE0p)fF zMGS43kbSJ0%H0@x5Y)vHLd2d@abg`tNHI=J($P_kPtME3R!)tNOF7EWA&Sk)NVT*z zHi=KSh>5pJj!o3JCO}Y8!Tzd_i|2_ehUBae z@tG^ONX1#oeqq7=C}(nEIF3i@X5+^fRICx+%^%KYq{bre;VO4=~nq!!3eU z49^2;%IH}t$HI^y%M@k@a_-Yy=8?u?u}}R>BfksN&@lJ)yIp3PSN z?AZp1x;vLSA0EpqdwU5#S>K`HngK6$iTB21FYWvGZGQW_L!O`0Xs8ymRMG$0fuIqIhjDOMkYW6= z)iA%0FH0HZn)zXOv`J0*)b-@5V>Vb-52K!uYAT5*_UhjDxMIVN(6?-5x*X50slk|acMl3PZMlwUKHTit5YoiD-Dvx(UqxIZF z+^rmLZ?iQ)<51UQ+r`WKS%6lHP%4&Zvu$BR){MNpP;us*uO46XxQc_eqk5Z;E$hA^ z7d=3;F5Gg^y{1oYdgFVKi}7SoY-vW4Z8%z9vhZ;QKOO`V8yp<|3!Dr3H3U*bIDjpo-Yvw5{Ax z8k8%@6_55tnQ=-irRq83MOwD%(qkJLfhk!E@r<%(ZWj(?Oqt@QIYg;X4Na~E6eKFE zP%_E~jHOB^Hmq2P>l+9n=NIEQrOF4YyKZtn2Y>JU44LV4)-5&htyE|KzNq^8yJ>8s z9Z5l#F3QifZw5=ioWX#misx4q(-$q8rHx7&1Frmuay4m5@khN9e5L+k?5_)G zsd07Yt6#|7BewG~2$pi5uy*0%rRFz*49X5>TAp8IGc`2MvZBb4TM@lQq9ytzG3tWEjL^sXO1 z*KAXO_Q`!uB1^E9m0FfaRSwQox$VW+=%IG`$i5E4sDGVar-L@584>itJqdPG4Vx&=+5+{Sdh}ADCp;zl#Hmg>%!rCy zh*F9l-lRjnzAu&#=I{UP{gVZ;jA;LHwIUq%V8sVgw-=mmWWm`g6Q^%v4frr7URuW4 z&3#DWPc1OLvDgo3li+p^ai3$%;J1p&HRQ0iO_V=Q>BecH9q(3DgU)>y*J+(rUUF zTMOq6{v__5@O`j}dd}=v01@OgJ1g8jc2Eg}#tR2gX!XMI%!`6?8-sFy9+|y`)GTFM z`Kvmr1St!>>sXd;$VID0(S|8Bh)!#d!2gks3fta0wnqT`!-PqC^3EFGv~GN z`XEJYZjo>+&b&__gK{7)=!#Wcc!&7a)7G=NhD#h*2*F|!ju6gLL?PtrC(pHLB zc9Nhfx$EMrvl#oTz*;3W-w?YSUOTdS+f^GYUPB{fDAq^GNU;O`_2mAyLG@6lkdJh>_$_~AUCahj^$M4LF8|bj3O}wX+t?VvAVNgRvW+tPbN1-2n zBc`oEvZfcps7NriV>l|gbn&D#5!l9Zk4aJQ>M zA#GN9Yr|N&RD7Bzd(ovCyONqi=8}x%L*PB&7pStLr5oBH?(_KECRYrI=Bq6p|I4^> zrB>Yi(=Yy&z>C!nCOIfxKV{bn;)5vbA74z`h{hVABBPVh6Gkczafn$D0P0^Qm27rE>3qL;#>j4)+{fPueCz))UY%ksKp|8tj!>EqQfeC zq!rtjhTr3SkL>Su?CbD;n-ttWG0;d?o4}AEk(k?;IhloRG}b ze(#N#7xL>ps>tMO$urk!aE~Z1zrXsdfZ^vRp26K}kicK15%b`po-kFLE5E0sA!uh9 z+sn-so=ZY-8{>YNem2k)0g$!5w@;zD`_@59(Yf!7-OaHK%*<_a=hDD)c>+P$D@3VX zd8sd#f3N?b3sWBjE63|T)2>GTN}`FrbjyKF{XXcm7{*4v&sSO=Q88H@+;8Kzc+QRu$`m~+!B`^xg zgnI?fy7%+H1Z13}`h<$xIoif(>NuMmb&<%3lvEy{q?FYUFku8cR=Rf%NqD7WhC&x!R+x)nfE{8w9 zHbi*$yn8PR@nrhtNG0xz&k0tVi2iI>habF6`fOY+ax%nyHu`DY7so@U0r67)-u-kS zGBgH6uyZ#4WO(Lre*m9d^_Y4~xp#oOrfj=n`@ouT1z+u$H!FTb-X~{P8gM~U{BCT*% z?5d$OIN5REZ6%TLqU@a-4AP3|55ICRt9nRFn*4lUfSYUaT*PzzWsVzpW$_r>Taj6p z#W4F`TaGKbY!PCJ@gC5+%FHf=E(n2QSGsA0*~`F>H{l{SY(!fSBIi(<=5piwK6!9ZN`~+ac{<+AY zgYR|pY@BOMy9v{dY13w$b^CtC%IDdTz36eh>&D9FJ!cZgsq^_l)b^>ze#9z-1=eD~ z-Uppr5oxO!?rq;~u8{(69eW4R0=SEj74MZQw z#VGi5rE-H896#wDJ)Z}}Qv{QjF8-7d81W1X6g29Ce$RtQ%aRGitI}ar-E6-pRgg?u ziJSc9xjmIaMl{_VIqE1=jFWb|fI%AUE?f|R0k*^g7$F0UQnpuXy3cr+zdb)BhD=QDYS8l*U<1FnkPQ)J#M?FvJ`xmqko)8aNhB>T;$tn{5C63v0VDuPAK zPTkC-g^v0QwO)hSTSEA~Lx?Ew$1JeMS}U{LzT-^@FEHi%wU)xagQFXq1;20Ar6{Ch zk-Rv#<*$ggeLT>?7)5iR#j#_QoxQgenag$!+fWWphdlTM2oEfa)`yQ^^F#lRaVueo`|Zl zdECgIhb8!GE(H0Et?`>(Ku%0_DR6L66W*v`kV8W zbkNEWr1ntwr`r;EeoOJT9K;T|!s2yW5m2njdJDUX3E~D6W&61WjzDq)`O-MnYTI5c z?6&mOje4FzxrH0lrNL%6U?ap?l&k2<&kTv`dZ-#MKZOPxQJBrY>JT_%hz5||Gwqy_ z2HwfN4j{ju@AF?mw5sry%zf}UkfJ8Ta(JDbgq5p9{K;f(`ROKs`-&3B3s4=5}VB+^gJ^)Ikw z^Y8ROQ{N$lyl8z`ZHNAVD&1~hEqQv3Dq&}AMT0YM8)p0k;Z^hf8byLhT?o?4{4D6Q zmQK6<%56^s^jr-UGrn)8dWKv=t3GjiD&wBb3-8!7J-M~PvTb-{kI%rP5%k& z%({fZZh!w8B?tb^Ke;h3GkAdVk4vcEeHKpE4sRX3{*3Sbbq)2uvEBb0+x@?>-Txcg z{lBr@{~O!=KPk5Rzo#-!Q7@ba+G$rq?dNMpDHyu4$`0{pzMtfY#P^QfLm_6KjT`H+gf z(IYP*Fh;SSL$D!;IY20jkiiUjjg7dPXutu3jdy=Tdh55XTthGN9E|OzxWk79+gQ{DagHHylkIATj z@cgxZ7mwfR7mXW@ixrE-lOx`RskD&AS-=u7z<%3h`!#x3$BD*FSfZ>GOu_7l#ZXxm zPZ+67GAi05zxvWoo#5kT_)6vO!GJuv|% z66MqNp&I7XVzyq}NBO!ZNbQVtn=R$xjkfCTP2v69`sd>x?+vQ9$s3<9i8?~Yeb(Ba zfac?>^9D00mDFbiBBUtxb1b=g`yHwhq7~QJoCuQRR#;OouG;-hf1q!q?L74gbiU;2 zg{AqeW@*vS9Yzv26+i1|S#^S(2&VWbT@4iiT=sEqXE6ZFC~lYHGhm11+JtUc@~{ao zgg@CX|7a|Mh;LOWYP0m=Z>FcKdYhy@GF-?4|5CQ|y|Ib7qk|hf!;n?l+}OTTso~&Rg~}m1=yZ zW~nt!j+7qoTDF>rn4CQ!nh#QW7RJv-SZtn^G;rs`8_#WXU1Q#x7ZZ2;G%R+Q(WYA= zZ@$R9bbV~uqC#gRn%GfQqv!Qz_1?ZOdm^VIUc`^M;9yG>C+5zE?pB?L9Ik9EzoP8H zMqPE!tfi;%9r93c^y%8J=#!x>B}>&3UI%1ZBU)J3K7%^BJ<_jVhqlT}R=mjQKcqa& z$LC~X0H4KoFlWImF2u8`vtX{KZ1D+J$g-D1saZgncu#xf4`^P0*&P>fXZ9i0@DjAF zly!$#?CrtghXhd;OPYnAdfkMUS1(nSFW%*s>wXMrw$}U3rP^v`>vhsvZnj@mp5x*s z_PMZd!L8}Vd0cH|S)cG6ozNK0!#Go0T)`n^^`ToWp+)n)80YtD7t`-0XLOWhe0`+17{LW0{|DWA}Qn!v#T7$}Ot z)d+DSSIy9yrwiYzh@3nlSgdq;Ay*-CO_&R1{VDxp=RciSfI!Ru4~PN%xL3SDpFWNV~N6c>)|Z zcDrTGwM@1FnW;;EVD&JXW1$awYd>a#3mmqSXgBR7Vt$aQwAln{wIEQkq zf_kk?a6OK7FAm(J5MD!VU&9h!Cum=%AYDTs_%%zhz(`2Pz$ZF^1H;8sRh|Z=MZZ|^ zk4%oHpYki*BTZ)jb$;j%rN$`x$Y zj<@kcW4M$LS_4c?C&1C)4sc>4uyf^rE*@6AS)h%PaiVjgc zO@lGf_CwQ?S^6A#hOGuk+S!<{YraO99Ei6jC})S>Y=KzmMO1e&pUp&C{H67myb!r~ zPt5vSU28nI64RgYgVko5Dsc_tW~=QBN%e?2l7=4rL0Sxvw12wmN|qKN<|rN1uex$- zaMao$)I@W5nVe-to5^=Zw4Q))ihL)Jgv$Adf_FUgp?{L^6aXiLuZgDCdwnpdOb&<( z8*;r9UhF4Lcg>ka-|`DY{~66s3fOHuP1Sc1-=f9hwb##_P0*lQ_cIv$KJ=kJMZAHC z_Y~2I|L*4+u?UBe?;1vc0C%PThR^fECuJ;+im`{{m0Yo|r-2)`WFl~M6tY>aJpxD< z>O%*?!@MvXyTI&&v4_#@#M1{@z&FlfQQ1pd|KZBJ$rLDH{Fj#g@z+097XAk;FGGMA zfeO2HbfIP9dK><$5R^&-e@#S1ojPf z0Hni&@AL47X6@g?R4n-)pAi1C1s);%9{Bg$G7UEdj>fBHyF^I?&n=uzH&#&5s%P+< zaestk=6=H6AEQyIB-Fu?!6`|@T3@_%S`hv5lkT=%z`xJg3AUXkqIaysznW2m<0k>~ z)<|e^(Wkq7rQlF<#dS1j6DL2Iiz$&Y)CpLAZ|nrYolq~@SP7tTD7`wS8TD{J<$K@K z%1qmpzk1ThWB>g)LgsmDvuuO&X|=Y)njon`jn-`mf3id&hPz!H%t3}cv^GBl=0o>r)`K)26-Hm1K|LA|+ zERvHgJbKh6ivDh!CW8v>ILj?7tx@%3|9bAPQ!@;GdjJK0hJAc7?GH!3GXp>SYYge! z$iv43xQqee-@jcpy*KxA`*qnQ?(X91_5&qcYU86(G{wzWg)5@5l2HlAkWh~9?X0g`YztoZYcwQXX91M*jY)W>Ns##9 z`BwLj)*eLKuWtGT2op3_vY^MW)?N48ZRd63Fe#g|KuSqd1HN?k+M1)=;N5f$S$4Ze zl`*GGLS(Lp{xF?yWz3C-|skCkZxtKsTch^?v?vvfUK0@yMv-V^pZ(&~m zV>95v@YT=rm{(EcN$p_h3^BN237%P%rAWHN5~Bhjcerq4Uj#JV+)Zno@M0peqqn6B z1$Yug2LNEfRx~f3ALY;4d_h%>e@i&IC6#FYd?I_nzC*x1=EiyVP3QcN2E$pJ@_N{# z;1`zL6H$h5y1^U2FKo*!uA zt67(Hd;TMy$VWPTC6LmgOJ>((8qwh57s;ias6LEBj{9w%H*FrC`(%)jckY5&MFE^m zvkuz@8F3JU4=%kK2Q7dJA^}8l&^sgkE z6($)%XWmVO9E^y2k+2nNH(sG!h7u+Bz^;wChWlG6seL2>H04AJyI$qUt6I(9nmS>dqQfsc%nV=}kEhO1pEk@7ydr}fuj;cE z$wqclWyo6N_!~hUs#^hFFewJ}x*17piFyffzc+%%HeRsHvgRhb5kuA_$>(wu+tZyq z$m&a9E(yL!pmpEX-YpGT)H>|gR{}g%lqpA|H|M%l>|T{Ro8|U1UKdgMP}O&Al3(UO z^coRJUlvYU!~1NW-%`m#51zbF6(Np%OF2S;83sXLSjj%;-dh2OpHj5Xu48YDWGQVR z`{h82P7TZdUZzLr^gUc}yYseC&uWG(CvjhEx6VZh?6D;BU=X^QvAm=LW??(i#XJ8UwQ zl0O7Jj1c=ygtw%?$+pH2W&^CU6bxT-Y-dW=&PX^tXkf}9uNU$77}XECemH3fp<9-7 zY`BaE_Yqc_t*mk?)&p&!n&6fl*dFZR0RwJ0{Nu4E^0%tjMEMOijU0MAWP5q|^ z{wtb#r23ZvqO7?&oneq(K6?4iK1Ys#iT~3p)qLAj1NJ)FSlaiiT@B~!Q|M7qLEh$H6 zRiK9btFKlgcH|7K(CDBGtTWBtJaG!kTP^TEyg99YEA_U$ z3Xrz%URl*DmPciVyp;Ksh!Kg_ zL%%jzB?5@Su6#l_VmIVp|ux5Wo!K_;603F>5N1Z7=z1>vHc^Tknx| zt>vg&RVjrtFVQsmuIqz&UOyT~1o|t8%;rZnfe&mg1^OKjFz6$(TAUw7eQNS-(T+Bi zU4_Ne?C6W80ECpck^`f!v)y64WLB!>8o=3E%}Q{IUkC`8djt4Md`BetRjeE=VlNdZ z;Cb?(<#@`r+t#MwS}(#X()IXGAKhUY=8SXZe8{sci<}@!w9OHt&7esy(`IQ&>~llR zMZj4Pd(8Jv(CiJ-L^Dk27&exz#hm+|@%eyBj893z3p$H~On%K+&hb(R!-SYd47-`t zA=LBmLjy@5k1fOOqmOS9KKf=_3Ri9+b2Dub@l(Z~e90{0j9&m7mZKPOmWJ4I4{q1+ zZMkTV@4DE0J88ILJlw4Z0rgN?^`5k9v6@v__Pd|>&~}+?T^PiGnj*fc{M=mtX8}5d z;(UC38r@PkGBkvqx5+k-Dp%HgzJbzx`B3^9gB-?bltYcJ(o&Nq5I##RD6S)Cj)m1)X^U3Z4CGK3*guE&t=ln#3r z+r<7jIwk+g($eD71Cu+s1@PtM4?K(TqoboTIa+UjwiH~DfI01SS>^)RQ6AYro^CQQ zjhbAEGUgN24^A;ZJ)`>MXV(U_Ij)TLAdoylMN?oMNo$mZ>8IY@Pd)D>i|MAAYN91c zb`M&8%5R{haWCZ`tKuLCm{6H4#&<_azln3F&YcsqAK4Mg*c8f`UJ3Aie88&knECKE zCI$XMz4`Nlp7e=VCW>6cW*0zAUud8zl&Gh=%)I;6 z-G($32@|Oi5fu|H7g{cQ$#)E)>wVlOh1l1N<`0BL-}++Iuc88@mCIXTY~y}VVwxaF`} z6}f6yMnQRskqDy@Uo`vVJ1S-uwlqC@4!gIksQl}RgN9Q`;ow)D^4EV!Tzc!5sF>`N6|ziwuUqZ% zeM-}VyUbw+NV|QVl^?3cdXrV^mSLy54?T%1$ZYG8Yih^osWG+Jnsx0yV68Z2aj;uy zbZ)D{*a+a^`WA3spiNvpE?>&}`3JH1n^4<`3Bq#r9aO^M>aDMG7&cs2Fn$QdcIHwH zF?%Et@#PzQE9QFyd?#kUE!AM1DZ4!w*S&~MaB1sL^+Y|#S*H_YHe-OxVq0#VvXSI4HnfQ=+$o0*iIIu)uiRUYCF-dp^PR<>*kmX{;yXxTkobU zp-D!`5nc2tLDd{2o8}0#{VyWT;Z(`5N~eTB=g3U&zc1ex^Z?Iti>-8fXChq zSoRJD;geU@(WXOlGuc8l&{y^HyKavq2hlT3)rTQZa79t1JHT2y!qSedktnMCHhxKgQ`|YbpkY$6pv%ItqOicUn9VVO^7%ZSTvj zJ>(bY9+bX!Cu6bB$8yhQR@KLl%!i`bAju}ScpE$7-<`qi!H4i`wh3X)7g^HOMvERo zlyp8&oa3`&(wn)AIm@Imn=G-F_CRhhhw)K_KD(a`__fEP{jVWuGbXKf?lS2IOPf|d z?VCJ@GuN;lMV^kX#$WCg;;6$9R)Nx8kB*`0o|AFCsP_``tx%c@Ll;2!jvA%)hTds z4FYFRFS9e+f*#_LDaM+XORh-PIl6}qf-h6pvPM{@DS=K|ZssX_5Vzkq$E1W^Efg z5*F~=+Nqy@JE1+oRQob{<6O7kx1@%)(AzM3(nAiW1if-O=!f~VhiwscPQ|3ukhz*C zNp>1V-S+b6b312TwxRGvK4@NRGR$_{S9DivEevr2B^8a^(z&b>YtC5`fLM$r`9^9}`3lWr$yBbrJ>M_u&N#8Hb2=W( zJ$`~V!*Z{+>NWBjF!Z#(ItEtaUwa|Hv?KS$`$lunIRoTx7tb_DtywKLQj70IVI)W- z82W23}^OZ`>UQjMM>eKP<{9n)$6z^qMgo z#(IzJ{&ZlDkC#OGLOqz;>ptigXo+=#v-L212lIuUJqr-Ifb{C%SuV-@88R$eB~H?w zCNA~jH{~7MYSH19eI@UW2P5&p^{WstysR=J@FB<(6SZ}4@5*7L$`dumlOU{BckisC zYIKRKpp6{<5iglL!ALWnCrX#*l|R8Rta-R>tG61z&-X3#_yxfk_~A=Hy+k7n@)1aJ z=kJ=a&~6cD*vkcm0Cl z8qL`qA&SvvWTgKdb%G}SsblU7;dcSIxJjLwjW61Jr_V6p+Rhp>>O|`s;^OrMF1?K3 z$w|~7>5{#6y_~W>(jbUYp8X|l;$%Je(;qMxKYCZYbKM6BLhH-V?@nRGuqLi{*ty|B zfOX_)03`Z;wXPQ=0uzTw+SaAsJpZeO!1i2ISqOgq`E?6{13wG>S%Ba_EQDVd5c3K) z!J@bw&iYs6u8(5gM1GCLPE{RWcts3P#4t73!xm7Jq&cn#+q3s+)Og0CZ$??_dzN{D zqfg)Upg)|CHM{t1)764-C(L`4iH4-f;rM<0O*vzhG1GK!rrdat)iHAG_l%%(1@!Hw z@jY&AUM0TX8|tRjQpy-fop2=k^}4y%(lE!y$ITiE^*y-`+Ls5IEBG#mof(R~(>~21 zgLu4DeN7ypU8Jn1LO0;oho?l~SB(-X@38M@;U_>!zM>4sCNDIG`pNvL_DD(vaMv3N zK|f#>^yG0fR16y%$qmx=ni_5IzR+40d+d6&CW12iFl+ZNE0i~-nkP~`1I;YhPrg zT%sF^W5}OYw1>CJ=Pg9JPqogR451vC%dYLPyFO0iA5{|zB@?0w*82L^e&WS@c7$rg zq?(LE%8Vka3s+j!mpBD1N(tYET{D^N0XcP$f{7?iSph?)V;2vg%EG0F^{GIC-)RPx zELem;D<1Rfs4Qy0&m6X4QfR8{mM(}C0`=Tga@}=kahHSz}d}&+42xb$7 zep=fvpd&Nksvzw+ivKe(BoLhCHZ&Ry7J?r8-!s4f3zq5E+Pl6x-dTP>JkjqezO-M~ zoVITeRrn+xX6}btUivaQdTX>84j*-O>n~XbI=JQAws@u?>oM{b*jNtKugErFHkqF2 zQ&YYE>1%{sOZ%S#i;3%P;5P8~UY|mf46itEf*@y}YJb2kUhvhffQY5atw`wu`02pn)&)i4_ zhuccwqNcm&DM~oEsg?0_^D$!+wM2m# zoDm7zVp`rG-7Pr}gYHIpc>I8tS{_n40dub2-xG#@w&rEFY}}Qeh!v))d5Sc1r?Y#~ z?Yy_y{XkS-b8eg@sJb*oWjq7tzv1Tyoc{od`oH2ELMHdaC?; z;S(=46EJ}lZd(}Ud5#Pu0NwdUfdSe#3~64P^IL#{Z%dlo*B@%EhX=m#l=5!ogmY4S z9P%mKup3OL%WP5-x^zi_m9cMdPX5>=+m{FRBm8%P1)+ef0dJ9#$FpvN&nr$nbY!qv zEGu1Q@AZ^}z#ozlFuz-3wS0368Rj_nHo-pLGAyu9u6(-N901Zu8{;jyO}25VgkuUMpg0--W0)^iF&a*o{uSC4$J6hIw0 zX7aLM`sEVvbrb7Cm}x5CCT`cX*25>GkKFCT->raixyzvAzsc}rSl}gNUBf8N!2Av&wizWf26G>LpI|>9TEznJ4O`Ue59fM%cq8b$jO;hpsrPK- zo38u29?i6>S+jVb!o5iMSdlTjm7du+%dK=7;sIK}X5&I1?ZN0jMTFfXUxTC2_BMej zJotQPf>$G+-9Ww=2izN~Tuef)o58y7AO+bz3DB@RsCCi4oo~Grw&O>%VyLTm*b+Xa zj{`bF=kdL=E3=#|?3GTR74TwP{WA9__S*F#`F|-AyuDl_c`)u9V2 zQkiW&(ECi=6i>qhN>@sCPm$MM7A z3(AC{o4H`^<{@P1WJM{ox1y;F;i}KcxQ|WcHSMIfMQM5s}9W%U2^2bk6-Q z4CKNXAtY$plZG$ar9ohy%|b3n+Sh&B&*f5^+YY>S`)R2` zWgi0OwNfDt6cyeEB&g)xqW`OnAh|O+{28dns@}5vt8G{p0w=tMAv1o-w2gD1I3$;T z%2#+7{z|g_;;#nYnWg(~1MoMqtWB}uP9t4YhI@9lc`@Og`n;J3e|eL_&Rc+{=nT8L#LwEeYdl1c#p$NkL|gApzRj~+iF`_N*$Kl{U>)d!m4uw3}^R}bfzzA&7EvoxjA__`3#9m6XhWF7rO(qDGPUMmw&(pP-Tgc~j)8mg)l%`X?a38f~VgDo{?`r>TxQ36G$3@;dGZGcEVn)&vMl$0@GLlAk zUhUL`)^}4THeq^OIJ&&<+OqKf$+yKbJ&IqQc6bYN9}*IEjg(BO*DUZIXx$*XMO{js zjGK_TeR|hQsc)6Ez$Qz;CX>XUA2m2(KE>dk%QS(vHQGL+H&c~J*!|Sog6-x_-_~12 z_}i)pTVUD7FYEPf@b6f53=r;c`%2+)rd=?Oe7yGJDt%ctiObhEAI^TOPlH`%l?f0{tel_V%C(WW-~ykIqAi0 za@RjT?yGOw+e^ zm?x;{hOxD?b;5Lm;VfjeV-9g2Vd)2@yl_IMa9n2FSAz%{Q?`Pn%6!erg4vu~qW>7~ z6>ar=aNAs5+s_{lv1vj>ZOovKw(g^QQaOwz;I~$$KSV}I^b+01a7$abuy<$zoT9yg zH($C(bdG)*Ubx0);r@=8y|C(5(&tjcM>la`bK*AS4LgHEE@%R8jnOW0GuY zl4g8k=6ERwXEzp=W$oY}qv&qwPqEHAJG&39!gh#XHV9|U*X}JpL=Egt%~dWHUW|P5 zl)gpUm1#8e6ex_mnnD(jsh4eRJw>%=7#IDJM z#4|6tNO97H=DrBcr;+x5Oz)2*{WF6=MT~I>*bd%zZ z^()*q8DDt_VtP35mA9Y5izdR{mm8E>w@+6k+wl~7P^pt?ab-qQd8}1~QB;Q0xU8}3 z7lA)wH}_-Rrdxw+*Sik+0F~F}J^W>Td_TeLKG4wsvZUIgbvt2&=)R?-%+U+=*A^*c z+cMr;&+cVi(CTUGEh68WRxi+Vamy&Ms6Jz#XRP;-Cev5dY?xZ6y1tTa6LX3L92v7& z@_s=#dpT)BsK57)=N~Zd<0d@Gz^W&URpUGJbN+fK;SXLeB9feem%8hX7&oOq(#D|)rJQYUr|EybDmq9 zy(cD%>+LOY?r^Mdh9_Kaqg%#&U^aV2Lbmsou6g|t0q;jsf|I#Gmbnmn?orI03L_YC z)M9`1&pSB1YNj;di)&^4$+cw$<~O#Sj6Pze>MVvm`GnV0e&!kPr4*~Z?2{ILigYh$ zzmaBsk%lwT9sh=lYIsP-^>X4NsP572FxN?SSX=r!GsoAD@@BdZxj4&CfzQ&J1GF)o zd8U~g$4yuMSi(y;rVED;3OniByHmuo^jI*=-*OmwS;csQ%L&Dk3=(Y zBf1rb*VVl#^1OvF3X7hBuQP#zSMg8w0$9*Og!c@JstGebF{Dbi|y>vkL$ye>*2JM;d0#*$noNdoKG`2HD>+)qwX)` zqUzfBaTuhfr5ltGkd}@C34>IS4(Vp-h5?Zf5KxpZ0Rg2!x*KVvyBT`u0fw3R50~Ee z75DXhUjLr;g2ji;I_9jkXRo!-bso)@R`n1)y@T+c;XMave+L`h&|M6@UIh_}kzd~M z%b=QHwvm1?Uyg3jUWcFBQN`W-l)T1zqbEF(w@xp%Cy}p#L#L#+sZeJj7`kr&9B!Z! zoyUodWz1}Rx9s+z?4Hw#jH`Er7(prAnP z_3`nse5YCYz5CqUk_xuAUoqI&*h*?^FGv&>6|u$OHDIKuu=VjhO>(6pl8#8F8ph~i zJsQf*x+Hn)Ca|jk;58~T`^3Pu(x9OpZtn%>QbLgZjNScIv%l)?OC_1QIKgY_UTL2! zex57uh3~OvTG~l>#JddVTaC%56#n`STi+)89ZqABHUg;yU^hUZvcJ`p)>d5MV>Hmp zgToUUkDYN`%{&#CWzNr+;Ol;-no)4keE-U1kyB}ky-eDPOQ{%4b^v2uvmU@VOlj*t z&JBDlY%SHtjtto^cGXSDxsKAeJc++3N}I%ai0S{MS3uLC#isG-TCxHs>C1Nk`*^$S zg=GeH9=jKGgx^OL=!m_=M=HLo5XO3U2`$=UIDSTzf|@Hfvh_QyD+D-gOJ4Cmhi`2n zzrPHu zI5;s{L~&v}@Z0`m#mPWCL(Ie;^%R4K`iyyzqL`UqTdX#`EavID>zJXDIERwig_VXMOb_TAW8T8ZT94hR%Jj z9Q2hoiG`fa17iN-=ZY3Z{0=(Cqe$zKKOGdf#t$Maz$xQnvM<(de}4q)W#X0lSQ zaM4daI(-{{q}odTii+gcA3;;G9=6HvrwRoti?!;Oa;Lnu1aiTPF5}tkRim=_s^8() z$k9NRyz3iQ<$><5;hJGog2y{ZkY#^@;->q~d%q-UKhJ^7g<%+q0sNjy5L0D9KUvV%WdqJ4N)<jg)`b|IhGKqnzoSEG%ch(_z56;{(o5ge zl*QgV@hC};2@vT2#$~Nrky^-#AOoR~fJ^UgNpm0UugahbNgmUY3_)u-(uOna+vhnv zpO~A8yM-Kk^0Rdvc+uFXcX3;mDQMk~eVNUkRZSX`>lqQfkW#&0EE}8p&??hokL(0q z!uZPpM?s0wgDEtNhY>nbYw02*l(PzRHuoIgEjAoOOU%~+Ebv;n=9(&}V)!^Say7v_ z$1ov65T!2d=UPYoT&6PS)uH+-mU#9d8$a=o0&YbbT8HA z5WJg|yjbs1c*G!k?qgW?O3s28>L#NN%O`S`(T8!yG&V}1qS_Ww7q;77++y7YX}cJ> zlomG+f^`wUqc)9x_h^tTl$IM>Pf*6O8tPq2pAdEXIomfyRr<);fYg@Tn6c0bUy&>0 zzlfk5yvftJLR#wGE$NuWgIN4TSMwb{g(|ZTe}bs#gW*|1Ue|ItaYdDONT93+%^&?YMvsE1j*-gn3&1+)>XfE$^Nm>C+FKVyK;z`;SoD0y@do$D z{c@Q;D0S?ph#mPl&H83cB)_W#?=q+D$uOMB|NL5Mz2Vw^{vaOQkd8BLPI?EZsOwMi zDZ4L6f>I8#Vpce*J@y$&3^}sb_^$z#<;H7oZaf_={h;f>`K-oru*-wu%5*B7PD0W< zrCpNG?>@t57bsvwmM|%XPHK-rTzWL4Qhr5RH-_=#L))J=00iXHx_M%3$?Rm4N9p|J zUS^^sE^Tb9C&iRO)KUlmpDa)K#SY}U~E8d62zkWFOiUi!=~p(%ZL-ShkX zp>!_hOI~lU8C<{2*D@PSl2c9gQu0PTcwWI?!CjF^Vo5j?6R-p=9ex~U&NH-~Ze3!}u-mudD!!pD&m%lB z8Db8i=|Mg;r=spjZFO?SHpEP9qnJaGN&VREDQ-R65D0_AH`RA~+46V4eNITRGw{;K z>H#oeb+!0NbO)9ioAki232D9QnXeljtRdCG#bL?Heb-3Z5_Bhy*gbw9Z|mOveqks2 z*i_*t9UlG8xdfgy>5GwXFBN2Z>89o2F0Ys_t$!TjsHSv2*o0V@U!!NXc_rYBuYb^V z5*~k{=_tLWsBS5Yv<9esGnU>QFCgtt!^kD{8|cqb^|D3A=c%rVI|kqxqrPZX2}vNf z_CI6&b|#b);>jkqlmUy@GN(LCdKu%1%4&5J8p^6wXIWIzFW0X#%O~Rl^jXRQuUdnc z0)-9|ALt#|z|f>WO`NrS_BK}AD`CrYr`wlS2s{w4X__ovvxS`>)obQ^Pu02kZ~bJ; zwx0r)h4>rQ%)E1`Ttc2_88sxei%3Q}#M~b-^s(7nDYeUuxq3t!<|6H~3-w0j(LIuHe`xN_@si{xzMZn~bc%s55IUbgUK#y;>{EcY3IYN>GKm*K+(tc5 zaf$?fdHMQ+?;wCXXLl+#(0ifV=K{SumW)2u#7wHW>*6|M+W%?BI^996?=bxjoMYM$ zf15jL_^;{zYHN@%cWxDmOboK3#3$1&ak%+fVUQJdyguj=*mLdWeA|15Q=}z4o_z zd`dtHnKGpCD@6i&Y5|KUoe`v@_Z}-nGa8Yg((C>cuW_9%i-$>9FqCQN`wSPT52|R? z2L>(nj9wYDfmi*+*a4mJp~uNfV%tY(J)*0p|1OK;?03%cGf3r%Mx2Ggh6DtpQ1Jj!kv#wdDZ7YLyPEFmVeG^Fk-U(v0O#T#f)-?$o8 z*~|e8CU_IoMfl`?G0fCQZ{)Kk1Os+$=djD(x>(^)V|RMKhb}A`_IMPV|HD%um*eKM znaH!2bMsF{A8Rd!iw820$t8gU&p4IO=Xdrlm$r9$iau6YK#F@8k?((BSp2pJH~H^{ zfyMuhSlrozFEP#3xTMxD1_Lll=g+_zQ& zsq%750sf&5= zF`0e>3UuBs9a?@c^pWOMrFPTKK%Q|ie21bYwP)(Mb{Kh*F!kzZ$#`k{!a&8D|E7#p zi(Q+I?!_0H#e3(*q#6F&X?d@ro42@Kz$dKKrva{EPZKhYDtnBfwTZ;d7wZND<(&kj zqg>W*O4c5m0|k1ukQQnM!z6cF&ZqwEp4KaBd=rb)>Dv`u_!dZhSy@`or`ddEtjYhd%UX=$M!PmWiBgW@ z`1FlwlGUq-z~!e9T_2*cl`D%nC*VdrpUfqt zd{NmB!O%|+u0~_qiOvUeQq7q?0f@}1c1Pl**D&cLNdZIg64d`Xi52>179EIRE;k73i!NtCFoMETX-($t+q}6OD6(TnF{zPjun>G zW82e}m17yql{Miv#7IxOt=9~vtrnx$*?l3sch4^No6xx1ZH=;DE)rbrSZ z^%X5AleP(-`Ng&c>3KkF$33a)4nG;U7&oIe{eUgyOmX~ZOBM4dxd&!T z9M42I^CCXzlCG<1q_S}fswURB=1XOTMIjxBTP6_e@bi(e-O4<*A*KbBAgmMT-4oSm zt<(+}UG4Lp4G4Z?udO%&%Vg;gjsd`+CNLFy{l3E@#1$jwCop;2jTk zc?74AtQ~rJKF3zZ3!LxbvM}DP3lkCB^Zuc_Mg;~%mum-KhwO@qY#Xa0P}Y6F=d5xY zu%k%#ubd*E5Q91xBV*-CnKhDi z!)qn#uV)=D1%N|1nxDde_Cx|A$lpc zE8rn%|9!XFC^uc0fgzJz{B5(OqQr1S+V-7o2@cni$GIGsrALfY&OB~OQG^brV=Xv` zq3ZsB*)1i*C?|=ZLLa4Xh2CnXWu62{g_?g4w#`D3tvTFn8Forlp!|! zF1$7KFH>CgNV{ zx94bxa>N;^D^1)@YgJ$)d>5b(d+Y|fS{?_c{j z)mXfh(XH2F;x)({PT-sJ;?~~ES9pZ;;VFZlg(fG1z!uZ%y6IL*k@9!M{wril&O!Yz z*RVvzeEHB0I%OY>(g!8w2%|x*1W!@4f7vzz2t*?F1|}gz^Y;g$@6J*YrF@13>YBS}mUbb{oYMtNI!@!I+@jmim#OZ({Ec>% zR)qIJcn+`dQ>VLenh)Os#acJAk5K#LO+-O{Nf;z_0(ZCt{0Ns}XwAf8dRIU@yPx&- z^?1)sOpy3?_Vztld3o&NJ3Bi91>e5)eXgi@A*ZMqnvj?X*3j184ALw@+6rFmz32(M z@lx8`qxmI2#9sPyNw>|6K-yhSYd4{}>TUF~X|}Ps2`v26r+46`Q=)kt#8`Qtjv(8U zaMNCQ38~1v`%08l1+&)ntbn$Y@+T!P( z#ZW6pv`UHMr`_yc{f9WJb9>G}Od31UJdbC%GdgdI^j zJFi@eZ9(rd9>LsBPWK}xS_azw5}nG!(KI)bPuK@#?xj7oA(x{L74Utb(#=42y41kg5&F?!ro>u8cAG zumpWtHxNCfQosB>dHVp_bo=Dnw?c%IC{qw>3$S_;tF|H#wDrF_MY-|yU^ai3|aDKH=8EZ2fQLVf{Ija))5R)LVSOyaKV z{S_udl@I4d;|*fNrwurk4ssi-LItz~CEtItRL4;-Pi&X;DSK8B&qVhoBBXSGStWB1 z5FneY11QvJ;uh*R-iQXC_=_@@uLR+%)s6-w$S>5>%#K88Kg{`a^X{w^-4}|6_=Ke5 z(SHNTX=kW}xAu2_Cf2QY|B9+armLry{3$VU&GG8ij!4sx0M#iOZ)9ZTAENdxU1T;n zPod-mWE6HtN+rf7_BH^LGlAZFHuo(a3kmK2Se7azU&PH^@1XsxW4T_V(Ir zfNspgT8IP>n=k{1-eO;RJAGX1+F{zHX~yYK;Hjh$vg%u^H0)hcWPBs6juwh-HT1x_ z%>zv}7&(^9YIhB2_cv&H|2Tww&TXaY(D>qkKdD`)#OFo1kdgZe^bgNyY&hs4Ot@!N zM#o5lL1c?%Y!xop^&Qyv=E=sn6^mouMz+5#I{G6Wk_LDtz+PnBGW1pB ze&##`rF>Ml%JhNRu0%R3doxQ>aD`5_8?5ALu>J8-D-F&=M+nu=N@C1=o+Y-+h9xWd zW{1)OZwYY>o!j?q3bt|))^H|BJQ=^ojutm3rwc5o6)E?$_iD-4)wK!%Qt}I$!X_y5 z>+A5#ZfvZP57*z1AU$^+zYi1l{Vt5pW8R(Q^SLp2w>~h{Sy|lg06NhTHe+181et(N zd{fO#H}7Po{QYU~u)k+LORLVsREjf0}d`EA~)E!fGg-5mr%Y8ce(5IqmeIr>l`RDDaPo+^%J}%G* zs7OL|%F~7rR4O&Flwsb9$|Cq3>XZ+^j3bzg`-g`iagU84@vyNk%2aETJ5E=~71%pE zQP1zhvYN}thn#PFk(?92^;#(}HJ^(qVWOp}T0>5C?H~E?#y-OGm(=5j>_^4SnCWA% z{;m_ABWFA^WGYWJRgHnKHbCxyvoIDyJ>(ALdWna&~ z$-1h0A!0Kd@SS6#NV<@6Uq1P~-F*%pV94nspCP5DzLJ2Kbj7f0tBCr8iT^+1GWrg~FNJ|&*Z59d7OGqmC9yC<~q z<-QybI|=Gp^1qYoHT(Cc=05?*H7F>SQF>PKK6#|*>>6sqSlvK7jlkER#UfRGSi8ka z(?|`P=N%@vgo@?nW~;2~ajH~PReo#<1XKTM;N>eO$Dc{3!^nCBmgCMD8{A(M}kl?G)Lj!Y-7xkSmxJgulSB(d)NxyKzh!@P7A8}?4MBaQ$?bPBOd8L-fN4Gpr2sQ@np?3}J{-H3;_5IMVq^@{uh9=} z(4uIJ$|IgSh%LV+b9$JCrE2+Y^ycIGUd%mgX6HF@F@8&h)xZ^$A{a$M;TIt#B01_12G_`rjbaEYA4xN=k+Gikz z&y7>TprI2$&!YXwHN*!2o%Y)gLwXQtFqOHsmSCKY3}OzB8|i2Q*U*Kh;hviimtb1e zoF1Hq4SsH>`aC9yQ2I)aM#;oj{^1&Gvrs?rUPZORtM&RxI0I}OQ3YYTj+LJ9Pi(Ob zx(Z6isAtde5&;Ow=YJi$brdwatKVSneVG9?(uIIx^fb%ZBb}XEVnK3VQ zOY6rm@jvDX(=`k8tILIM+}9Bo-CZh2F?*t3nLwHRBGVtrx&_hUJS5(#mxZ^2A&_{= zAaUU-h@CCa+kJ3>K+Q4iWq?mwmJ>{xQ7SXR{QQjv__&QK(?5zOA<3-&a|&P0X`mb8 z3Ql*v3(G%8$*O$~p?w8LtFKLdHHEc7F$2$PAQ}$?AajV5j}u;O4uoXs>fa?cWR^^4{np$18cDF1%z-w-?(q>Yopx zcb>Xc=Jpd~)7E#lR(3yB(Sw@zY?+&{lklj+)}s-=lJ;wJgP#wlE^Vi29wLm4fwv*2 z$#||I^kw$JM#O2}%&J)}F~s9bVl2kGbu57w)w5LH9X`5L_Zp*&iUBKurBJ^?lX5^6 zXphiyHORzgITvp=B%N$Ew3a2%rtP?X(tID{-|Sfw4%IA1Qb0rC<)X7+sl-lN)A6-s zbj4YWr*)Fvaj4lZxE;SomNl=!V=jdb9-qWE%^>EA&B=pM#VTGSkse&ZVgsbBf|Xgk zPbQoi=|&bYW?t{LJv6N^o8uQMInYjHZ<&)kKd2Lhc0ipG*DYWfeugccEoreDQ_)o` zSCjd|W>K&YaU(=dgk`Rb!@xzz5jw9vbxCBXQ6Cp@A<;D_F$l~+Rd4vCAzJ^DODw?h z_=B{;r{=DG+ z-Mb}ErOS26o@$Om4;}q$`&iW2$lc4Rn&%n3mi7~J?4zVOS%y0Fa^Gs#Nl;hEr>P19 zI$my*(Q(_#(pCqjay~p|w_o-f2?ml`rI^Ine!xLcx@U0F5bENXEXPI>02S`s&heqV zD12mLD;N$_N|#mYkmD04z;cI@c(#|R^V46?_U3=a%!yvB?Yz#LHSpT2qQ< zkH6~s7mDP+>ib`cb+94IVij_2_drO%5;Md4Ku_ljS5 z@H=pbr`iRE75?N9(f%3q&;dg<-gZlMvK5*oU4xrs8z|oWe5cM}#J0$S{}qFOhUCzl z0bEuKrISuKo#ZF0Hbl^O62SyvA;#|1x3>=3AQyp|uk?nJ7A(trjNF`@cR)MF3)2!^t4q4;E z&#KN@RJ&=5-sa(PWk+m)GN#|y9@Z!nRs`&M+%(yU{;*awmk$1}7zX?`JnRBTrseX2M|5PUO$=LQd{{sz6 zvVh_nk7Nh^GHgoR(b_l>T3?Lz?X4Y(x4K_O%XFXUu)la(vtU8Wl+%`3OoCidyFH^K zp>O(dpg-Xyt662}+57QlEZduVlhdvxDoK=7w;y0(i991nzWDiM=ThTEQ)o&rZ~TvT z1(u3x62dG56UL`!U$UllcU7%44T3usO*e`dG#|vv*gPgGe0iVZ3v0eQUy)kQD7{CW zA#T{MLoDe-*sc4n!(E2fn3aZ#&dy_?pCMY|PY&W*bSX?@kEDn}aXl)fbWv6xUxfs4 zoTmPJB_TbXSE>}~EvkRoQpeE|)bpmPCs1A*#;B7tRr{z# zDb&-A>Pr^o+Y=8ldWJhDTV3aE!o8zLz2)gPW}szs7{j{(>-krU@9RsQmEh#yZK@}P zOFvaF*m6NaZ#_W~iB~51bD^mivm>q5IT=2Ds3c!HLkoSpxoFxm`7|wX`4cMGvn%4L zjL~iPsV^t^&boqC1i~1u1vyKR1f$Annt=Eu^BwlIoy;C|N1kq5j!j&9=4|rYif_dL z&pB zG#c2M1lM{HKC2b88ajN<@NDYCyzO{P4%3lYvO6e(!y$BX$d*@gigoT{xTA-_@x|$< zDCyYG2qxOQqjaQohQ=zBrrG7lXV?GuX1XJb>;Hn_=HLhVUkkqdo}wta<(o4=H|MR> zVJ|dw$iu(rkQdC$5#Fi8y*2p8po3WgJ&pP9>o>u#dsT@NvELFh8{5r=Z_S-<)bIJn z3FE9KYf|^r>qwYbOK4g`mTJyt?ZHfefe&3z_d{Fw$c^q_723Fh^>`aH7o;NKjWv|Y z8km5YTT9cfc;z;1)NLsz5GN1#^^YR=94z%zk5?nC|i5DVzR zY1b+Qxg8n9c+iZLJlOLI$EmAYDA_t)xjGoC#DknUh^*}|&}{AcREw7#cmTcOM+n3s z{_*>XA7J%3d~_>x4%%*RS3@-q5+tR?qIvvn3&>Nl5N#GA%iz zcVc;;iYx2Ib4!2n^p{v43k^XURT^1Dx2IY!Yo`{)moBV`Cmy}i!1vGqV&)uw3#An- zesLxX((rK3qiqFX)=q(&()5e9OHj+DQ2R#;HbJ{e{9L8DG{$UWYbgcnC$0;`x9nu= z2m{XH2mM=$6n%cuyU}Ig1TO!v|I^rWNz{E#?(A-xH6^a+XA5_y$49 z{Lky`xxV}Dl!r>}TQn`~<(NFd#b{@q4`Y#+=UrE@!V}zM8>6PFdG9l>gFzv7`vAQS z0k>|6_Q{!rWYk~3_uV&N2-({$i6ajSB{d~Kpz+b-y=U=>wSlEVCC)LeXbzx(F(Jmq zJ&kcl?+q0?*{xKM{km~rJASaO2fzy{@=FT%@&?vkdnlU}6dv~4u-7JS;Dv>lN?wS? z{90kKQrh_HlQXo%TeAT2(^5YGv>CD|>Wovx3B|J${*lr%-Ji?Prh*?EO2a}}85TEe z9u}SV!{Gx#Pw&I0-FPoC9BXY3&(Jo}JaEVlndV`2P;uC4n)X4qn6S7)dY3r7l~JrJw<8$HQc`IF}CtsPYmq@whSHoV8t* zkW>??r74iC5;w3re>{6_>cR6I&C~B#=Vk3OqL}K_+Q1 zdMU2HoQ1(L<)Vc;jYZXQH3gCJfKC-Gg5pJO`8>oPM33hGEP`?hH?=K#zA}-j*-~g)dFnm3u|oL-Au2{dRQr*Xp*>DqiXp03`nI# z-)w>LEZsC#Zzc4Q+r~ASQ2beK z3c9cJPn6BC8Zyl?k-ow(uWvIzg#|eNDQB!WyD~s>{9p#fNX;lXD(w8kQ?KH**Hdl~ z?H-2^Gr~m+a$*ua25i63S%PWXBJIvwc%qMa(@h-<+t~wlyMD~{Nc#okUo5z|Q+^;6 zmL+EHAV@Cxa72(CyP8GCF$uJXNxaP+Co)b?b;1G)?>U~38_7aop^nKUfLT&gNFPdpa)=u zeID*a79F=ZB8C@`)yDuB4a|gZIWrleHH;i{`3MTuD+@xN@pU4ZHcc+W`9?rP*O@b@ zAE41BP>lf6$sDoJeckZx(u?i{BC@&UIM6cp|MGU%rJzQnm&Ivb5VC4`8l-=@B!~nbfRr!QLF@=1eoi~4y}lO0OAi+8+?la>8?p?A ziW%cy67+^fFUHNF(;RRiqb#K5&T9bWNXkI%(qUwD8FSI?)JIC*EPMETp;PrZTN2J` zURlEkd%-!5U%rhV2Jxxs56vLi5HZg(k!pdPS^RgUNEj=tDcZ;aNh@{;z1?4647|qX zKjDNv-q}xNQ;v0@>b*jrAzsZM1Gn7qN_=#MOhH2ZGLaIW`!0?8hf5>+PM4o= za`e+aVO_M4{6q?`gpIIwzCpx`G7F)>ZQtrmn8RtVbhW+P5ZCMUYg*VA@oa?zGd>n| z3f1%QMtCPW@2s=iK0Vxo{8^~$XQf&$h0xRA&< zhd<&*iIN@TRx|}w9$uBcl~s&0EO)-W;e6B(Biv_Rg^^%`xu^}+6NydqFI+aZORaUd?eqagfD092Wi!s{*Pfz)n1BbZ*@vCI^6dEh>Q=Ub{t9`Vf{b@h z#EA4?Lcj;s=foRJNCpxil+^;hWQZz}3H8J_0?3NEpMq%32jj;N9{MGd{^YmEy_B-* zwMiLZ|KS|15^s^le8S{1@+RJw-UTWIyKIKxoevZA5@a>wlxRt3y_d{~*J2m^kUPjT zolILTmKZW-U;g}=nM#nBqmrD4D1MunhN%JABe(Wr2D}g}bbx3FB1ybtlS^?F-V~H# zug*Wko0RCRkKZ#@pbqs@V*J#PtH<`kDdGW{1>Mwv3(2T8lTKR`V7es`C!s(*tJ?(Q z^t0OLd#6PzF}N6Ip$9>`y!fiz%f99t%3Q-NHabi1zX-sl&E_}-)bq{A~FXG=k| zmM+A{dutvCMr?x7^^M3KPUI#YMN*dr~vEV)cs`*!3LUYr}4L8`%(!I?OW(|bO~ z40h+V{;mbt3R⩔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 _entities = new List(); + + public IList Entities + { + get { return _entities; } + } + + public void RemoveEntities(IEnumerable entities) + { + Action a = e => + { + e.Collide(null); + _entities.Remove(e); + }; + + entities.ToList().ForEach(e => + { + if (e is IKillable) + (e as IKillable).Kill(); + + _entities.Remove(e); + }); + } + + public void RemoveEntity(IEntity entity) + { + _entities.Remove(entity); + } + + public EntityFactory(MainGame game) + { + Instance = this; + this._game = game; + } + + public T CreateEntity(string owner, Vector2 position, Vector2 velocity, float angle) where T : IEntity, new() + { + var entity = new T(); + + var tex = TextureManager.LoadTexture(entity.TextureName); + entity.Texture = tex; + entity.Position = position; + entity.Velocity = velocity; + entity.Angle = angle; + + entity.Owner = owner; + + this._entities.Add(entity); + + entity.Created(); + + return entity; + } + + public T CreateEntity(Type entityType, string owner, Vector2 position, Vector2 velocity, float angle) where T : IEntity + { + T entity = (T)entityType.Assembly.CreateInstance(entityType.FullName); + + Texture2D tex = TextureManager.LoadTexture(entity.TextureName); + entity.Texture = tex; + entity.Position = position; + entity.Velocity = velocity; + entity.Angle = angle; + + entity.Owner = owner; + + this._entities.Add(entity); + + entity.Created(); + + return entity; + } + } +} diff --git a/SpacePew/Extensions/LidgrenExtensions.cs b/SpacePew/Extensions/LidgrenExtensions.cs new file mode 100644 index 0000000..349702e --- /dev/null +++ b/SpacePew/Extensions/LidgrenExtensions.cs @@ -0,0 +1,294 @@ +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics.PackedVector; + +using Lidgren.Network; + +namespace SpacePew.Extensions +{ + public static class LidgrenExtensions + { + ///

    + /// Write a Point + /// + public static void Write(this NetBuffer message, Point value) + { + message.Write(value.X); + message.Write(value.Y); + } + + /// + /// Read a Point + /// + public static Point ReadPoint(this NetBuffer message) + { + return new Point(message.ReadInt32(), message.ReadInt32()); + } + + /// + /// Write a Single with half precision (16 bits) + /// + public static void WriteHalfPrecision(this NetBuffer message, float value) + { + message.Write(new HalfSingle(value).PackedValue); + } + + /// + /// Reads a half precision Single written using WriteHalfPrecision(float) + /// + public static float ReadHalfPrecisionSingle(this NetBuffer message) + { + HalfSingle h = new HalfSingle(); + h.PackedValue = message.ReadUInt16(); + return h.ToSingle(); + } + + /// + /// Writes a Vector2 + /// + public static void Write(this NetBuffer message, Vector2 vector) + { + message.Write(vector.X); + message.Write(vector.Y); + } + + /// + /// Reads a Vector2 + /// + public static Vector2 ReadVector2(this NetBuffer message) + { + Vector2 retval; + retval.X = message.ReadSingle(); + retval.Y = message.ReadSingle(); + return retval; + } + + /// + /// Writes a Vector3 + /// + public static void Write(this NetBuffer message, Vector3 vector) + { + message.Write(vector.X); + message.Write(vector.Y); + message.Write(vector.Z); + } + + /// + /// Writes a Vector3 at half precision + /// + public static void WriteHalfPrecision(this NetBuffer message, Vector3 vector) + { + message.Write(new HalfSingle(vector.X).PackedValue); + message.Write(new HalfSingle(vector.Y).PackedValue); + message.Write(new HalfSingle(vector.Z).PackedValue); + } + + /// + /// Reads a Vector3 + /// + public static Vector3 ReadVector3(this NetBuffer message) + { + Vector3 retval; + retval.X = message.ReadSingle(); + retval.Y = message.ReadSingle(); + retval.Z = message.ReadSingle(); + return retval; + } + + /// + /// Writes a Vector3 at half precision + /// + public static Vector3 ReadHalfPrecisionVector3(this NetBuffer message) + { + HalfSingle hx = new HalfSingle(); + hx.PackedValue = message.ReadUInt16(); + + HalfSingle hy = new HalfSingle(); + hy.PackedValue = message.ReadUInt16(); + + HalfSingle hz = new HalfSingle(); + hz.PackedValue = message.ReadUInt16(); + + Vector3 retval; + retval.X = hx.ToSingle(); + retval.Y = hy.ToSingle(); + retval.Z = hz.ToSingle(); + return retval; + } + + /// + /// Writes a Vector4 + /// + public static void Write(this NetBuffer message, Vector4 vector) + { + message.Write(vector.X); + message.Write(vector.Y); + message.Write(vector.Z); + message.Write(vector.W); + } + + /// + /// Reads a Vector4 + /// + public static Vector4 ReadVector4(this NetBuffer message) + { + Vector4 retval; + retval.X = message.ReadSingle(); + retval.Y = message.ReadSingle(); + retval.Z = message.ReadSingle(); + retval.W = message.ReadSingle(); + return retval; + } + + + /// + /// Writes a unit vector (ie. a vector of length 1.0, for example a surface normal) + /// using specified number of bits + /// + public static void WriteUnitVector3(this NetBuffer message, Vector3 unitVector, int numberOfBits) + { + float x = unitVector.X; + float y = unitVector.Y; + float z = unitVector.Z; + double invPi = 1.0 / Math.PI; + float phi = (float)(Math.Atan2(x, y) * invPi); + float theta = (float)(Math.Atan2(z, Math.Sqrt(x * x + y * y)) * (invPi * 2)); + + int halfBits = numberOfBits / 2; + message.WriteSignedSingle(phi, halfBits); + message.WriteSignedSingle(theta, numberOfBits - halfBits); + } + + /// + /// Reads a unit vector written using WriteUnitVector3(numberOfBits) + /// + public static Vector3 ReadUnitVector3(this NetBuffer message, int numberOfBits) + { + int halfBits = numberOfBits / 2; + float phi = message.ReadSignedSingle(halfBits) * (float)Math.PI; + float theta = message.ReadSignedSingle(numberOfBits - halfBits) * (float)(Math.PI * 0.5); + + Vector3 retval; + retval.X = (float)(Math.Sin(phi) * Math.Cos(theta)); + retval.Y = (float)(Math.Cos(phi) * Math.Cos(theta)); + retval.Z = (float)Math.Sin(theta); + + return retval; + } + + /// + /// Writes a unit quaternion using the specified number of bits per element + /// for a total of 4 x bitsPerElements bits. Suggested value is 8 to 24 bits. + /// + public static void WriteRotation(this NetBuffer message, Quaternion quaternion, int bitsPerElement) + { + if (quaternion.X > 1.0f) + quaternion.X = 1.0f; + if (quaternion.Y > 1.0f) + quaternion.Y = 1.0f; + if (quaternion.Z > 1.0f) + quaternion.Z = 1.0f; + if (quaternion.W > 1.0f) + quaternion.W = 1.0f; + if (quaternion.X < -1.0f) + quaternion.X = -1.0f; + if (quaternion.Y < -1.0f) + quaternion.Y = -1.0f; + if (quaternion.Z < -1.0f) + quaternion.Z = -1.0f; + if (quaternion.W < -1.0f) + quaternion.W = -1.0f; + + message.WriteSignedSingle(quaternion.X, bitsPerElement); + message.WriteSignedSingle(quaternion.Y, bitsPerElement); + message.WriteSignedSingle(quaternion.Z, bitsPerElement); + message.WriteSignedSingle(quaternion.W, bitsPerElement); + } + + /// + /// Reads a unit quaternion written using WriteRotation(... ,bitsPerElement) + /// + public static Quaternion ReadRotation(this NetBuffer message, int bitsPerElement) + { + Quaternion retval; + retval.X = message.ReadSignedSingle(bitsPerElement); + retval.Y = message.ReadSignedSingle(bitsPerElement); + retval.Z = message.ReadSignedSingle(bitsPerElement); + retval.W = message.ReadSignedSingle(bitsPerElement); + return retval; + } + + /// + /// Writes an orthonormal matrix (rotation, translation but not scaling or projection) + /// + public static void WriteMatrix(this NetBuffer message, ref Matrix matrix) + { + Quaternion rot = Quaternion.CreateFromRotationMatrix(matrix); + WriteRotation(message, rot, 24); + message.Write(matrix.M41); + message.Write(matrix.M42); + message.Write(matrix.M43); + } + + /// + /// Writes an orthonormal matrix (rotation, translation but no scaling or projection) + /// + public static void WriteMatrix(this NetBuffer message, Matrix matrix) + { + Quaternion rot = Quaternion.CreateFromRotationMatrix(matrix); + WriteRotation(message, rot, 24); + message.Write(matrix.M41); + message.Write(matrix.M42); + message.Write(matrix.M43); + } + + /// + /// Reads a matrix written using WriteMatrix() + /// + public static Matrix ReadMatrix(this NetBuffer message) + { + Quaternion rot = ReadRotation(message, 24); + Matrix retval = Matrix.CreateFromQuaternion(rot); + retval.M41 = message.ReadSingle(); + retval.M42 = message.ReadSingle(); + retval.M43 = message.ReadSingle(); + return retval; + } + + /// + /// Reads a matrix written using WriteMatrix() + /// + public static void ReadMatrix(this NetBuffer message, ref Matrix destination) + { + Quaternion rot = ReadRotation(message, 24); + destination = Matrix.CreateFromQuaternion(rot); + destination.M41 = message.ReadSingle(); + destination.M42 = message.ReadSingle(); + destination.M43 = message.ReadSingle(); + } + + /// + /// Writes a bounding sphere + /// + public static void Write(this NetBuffer message, BoundingSphere bounds) + { + message.Write(bounds.Center.X); + message.Write(bounds.Center.Y); + message.Write(bounds.Center.Z); + message.Write(bounds.Radius); + } + + /// + /// Reads a bounding sphere written using Write(message, BoundingSphere) + /// + public static BoundingSphere ReadBoundingSphere(this NetBuffer message) + { + BoundingSphere retval; + retval.Center.X = message.ReadSingle(); + retval.Center.Y = message.ReadSingle(); + retval.Center.Z = message.ReadSingle(); + retval.Radius = message.ReadSingle(); + return retval; + } + } +} diff --git a/SpacePew/Extensions/RenderExtensions.cs b/SpacePew/Extensions/RenderExtensions.cs new file mode 100644 index 0000000..3453e17 --- /dev/null +++ b/SpacePew/Extensions/RenderExtensions.cs @@ -0,0 +1,42 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using SpacePew.Models; + +namespace SpacePew.Extensions +{ + public static class RenderExtensions + { + + public static Vector2 AsVector2D(this Point p) + { + return new Vector2(p.X, p.Y); + } + + public static void Draw(this SpriteBatch batch, TiledTexture texture, Rectangle destination, Color color) + { + Draw(batch, texture, destination, new Rectangle(0, 0, texture.Width, texture.Height), color); + } + + public static void Draw(this SpriteBatch batch, TiledTexture texture, Rectangle dstRect, Rectangle srcRect, Color color) + { + //TODO: kolla om dom ens syns innan man renderar.. hur man nu ska kunna göra det.. + var wratio = dstRect.Width / (double)srcRect.Width; + var hratio = dstRect.Height / (double)srcRect.Height; + var pos = new Point(dstRect.X, dstRect.Y); + dstRect = new Rectangle(0, 0, (int)(wratio * texture.TileWidth), (int)(hratio * texture.TileHeight)); + + for (var j = 0; j < texture.XTiles; j++) + { + for (var i = 0; i < texture.YTiles; i++) + { + //if srcRect.Intersects tile + var tile = texture[i * texture.XTiles + j]; + dstRect.X = pos.X + (int)(tile.Position.X * wratio); + dstRect.Y = pos.Y + (int)(tile.Position.Y * hratio); + + batch.Draw(tile.Texture, dstRect, color); + } + } + } + } +} diff --git a/SpacePew/Game.ico b/SpacePew/Game.ico new file mode 100644 index 0000000000000000000000000000000000000000..8cff41eab28dc99e31a693a39d399f9eb05f1cce GIT binary patch literal 4286 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 literal 0 HcmV?d00001 diff --git a/SpacePew/GameThumbnail.png b/SpacePew/GameThumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..462311aba2cd09de3992129ca43564755249ef09 GIT binary patch literal 5734 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 Y0L3g3-xp*i%>V!Z07*qoM6N<$f>>Wb>;M1& literal 0 HcmV?d00001 diff --git a/SpacePew/Hud.cs b/SpacePew/Hud.cs new file mode 100644 index 0000000..8394b0d --- /dev/null +++ b/SpacePew/Hud.cs @@ -0,0 +1,112 @@ +using System; +using System.Collections.Generic; + +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using SpacePew.Models; + + +namespace SpacePew +{ + /// + /// This is a game component that implements IUpdateable. + /// + public class Hud : GameComponent, IDrawable + { + SpriteBatch _spriteBatch; + readonly MainGame _game; + + SpriteFont _consoleFont; + + public Hud(MainGame game) + : base(game) + { + _game = game; + } + + /// + /// Allows the game component to perform any initialization it needs to before starting + /// to run. This is where it can query for any required services and load content. + /// + public override void Initialize() + { + _spriteBatch = new SpriteBatch(_game.GraphicsDevice); + _consoleFont = _game.Content.Load("Fonts\\ConsoleFont"); + + base.Initialize(); + } + + public void Draw(GameTime gameTime) + { + if (_game.NetworkClient.LocalPlayer != null) + { + _spriteBatch.Begin(); + _spriteBatch.DrawString(_consoleFont, + string.Format("Health: {0}", + _game.NetworkClient.LocalPlayer.Health), + new Vector2(300, _game.GraphicsDevice.Viewport.Height - 100), + Color.White); + + _spriteBatch.DrawString(_consoleFont, + string.Format("Fuel: {0}", + _game.NetworkClient.LocalPlayer.Fuel), + new Vector2(300, _game.GraphicsDevice.Viewport.Height - 75), + Color.White); + + _spriteBatch.DrawString(_consoleFont, + string.Format("Heat #1: {0}", + _game.NetworkClient.LocalPlayer.Weapon.Heat), + new Vector2(500, _game.GraphicsDevice.Viewport.Height - 100), + Color.White); + + _spriteBatch.DrawString(_consoleFont, + string.Format("Heat #2: {0}", + _game.NetworkClient.LocalPlayer.SecondaryWeapon.Heat), + new Vector2(500, _game.GraphicsDevice.Viewport.Height - 75), + Color.White); + + _spriteBatch.DrawString(_consoleFont, + string.Format("Entities: {0}", + ((List)EntityFactory.Instance.Entities).Count), + new Vector2(500, _game.GraphicsDevice.Viewport.Height - 50), + Color.White); + + _spriteBatch.DrawString(_consoleFont, + string.Format("Pos X: {0}", + _game.NetworkClient.LocalPlayer.Position.X), + new Vector2(700, _game.GraphicsDevice.Viewport.Height - 100), + Color.White); + + _spriteBatch.DrawString(_consoleFont, + string.Format("Pos Y: {0}", + _game.NetworkClient.LocalPlayer.Position.Y), + new Vector2(700, _game.GraphicsDevice.Viewport.Height - 75), + Color.White); + + _spriteBatch.End(); + } + } + + public int DrawOrder + { + get { return 2; } + } + + public bool Visible + { + get { return true; } + } + + event EventHandler IDrawable.DrawOrderChanged + { + add { } + remove { } + } + + event EventHandler IDrawable.VisibleChanged + { + add { } + remove { } + } + } +} \ No newline at end of file diff --git a/SpacePew/Icon.ico b/SpacePew/Icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..13be62a66e7cdf22ce7df765b577a5b914392e28 GIT binary patch literal 32038 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
    MH*mE~`uwWYcyF(Gm!G%j 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 Z_{Wy@?|g;#8~>g1pxyrc_kUOd{|_kcJuCnK literal 0 HcmV?d00001 diff --git a/SpacePew/KeyboardHelper.cs b/SpacePew/KeyboardHelper.cs new file mode 100644 index 0000000..e0e9ab1 --- /dev/null +++ b/SpacePew/KeyboardHelper.cs @@ -0,0 +1,663 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Microsoft.Xna.Framework.Input; + +namespace SpacePew +{ + [Flags] + public enum KbModifiers + { + None = 0, + Ctrl = 1, + Shift = 2, + Alt = 4, + } + + public static class KeyboardHelper + { + public static bool TreadNumpadAsNumeric = true; + private static readonly string[] _unShiftedKeysString = new string[256] + { + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + " ", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "", + "", + "", + "", + "", + "", + "", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "", + "", + "", + "", + "", + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "*", + "+", + "", + "-", + ".", + "/", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + ";", + "=", + ",", + "-", + ".", + "/", + "`", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "[", + "\\", + "]", + "'", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + }; + private static string[] shiftedkeysstring = new string[256] + { + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + " ", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + ")", + "!", + "@", + "#", + "$", + "%", + "^", + "&", + "*", + "(", + "", + "", + "", + "", + "", + "", + "", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "*", + "+", + "", + "-", + ".", + "/", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + ":", + "+", + "<", + "_", + ">", + "?", + "~", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "{", + "|", + "}", + "\"", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + }; + + static KeyboardHelper() + { + } + + public static bool IsKeyAlpha(Keys k) + { + return k >= Keys.A && k <= Keys.Z; + } + + public static bool IsKeyNumber(Keys k) + { + return k >= Keys.D0 && k <= Keys.D9; + } + + public static bool IsKeyNumberpad(Keys k) + { + return k >= Keys.NumPad0 && k <= Keys.NumPad9; + } + + public static bool IsKeyNumeric(Keys k) + { + return KeyboardHelper.IsKeyNumber(k) || KeyboardHelper.TreadNumpadAsNumeric && KeyboardHelper.IsKeyNumberpad(k); + } + + public static bool IsKeyAlphanumeric(Keys k) + { + return KeyboardHelper.IsKeyAlpha(k) || KeyboardHelper.IsKeyNumeric(k); + } + + public static bool IsFkey(Keys k) + { + return k >= Keys.F1 && k <= Keys.F12; + } + + public static bool IsKeySpace(Keys k) + { + return k == Keys.Space; + } + + public static bool IsShift(Keys k) + { + return k == Keys.LeftShift || k == Keys.RightShift; + } + + public static bool IsCtrl(Keys k) + { + return k == Keys.LeftControl || k == Keys.RightControl; + } + + public static bool IsAlt(Keys k) + { + return k == Keys.LeftAlt || k == Keys.RightAlt; + } + + public static bool IsShiftDown(KbModifiers m) + { + return (KbModifiers.Shift & m) == KbModifiers.Shift; + } + + public static bool IsCtrlDown(KbModifiers m) + { + return (KbModifiers.Ctrl & m) == KbModifiers.Ctrl; + } + + public static bool IsAltDown(KbModifiers m) + { + return (KbModifiers.Alt & m) == KbModifiers.Alt; + } + + public static bool IsMod(Keys k) + { + return KeyboardHelper.IsShift(k) || KeyboardHelper.IsAlt(k) || KeyboardHelper.IsCtrl(k); + } + + public static KbModifiers IsShiftM(Keys k) + { + return k == Keys.LeftShift || k == Keys.RightShift ? KbModifiers.Shift : KbModifiers.None; + } + + public static KbModifiers IsCtrlM(Keys k) + { + return k == Keys.LeftControl || k == Keys.RightControl ? KbModifiers.Ctrl : KbModifiers.None; + } + + public static KbModifiers IsAltM(Keys k) + { + return k == Keys.LeftAlt || k == Keys.RightAlt ? KbModifiers.Alt : KbModifiers.None; + } + + public static string ToPrintableString(Keys k, KbModifiers m) + { + return KeyboardHelper.ToPrintableString(k, m, true, true, true, false); + } + + public static string ToPrintableString(Keys k, KbModifiers m, bool selectspecials) + { + return KeyboardHelper.ToPrintableString(k, m, selectspecials, true, true, false); + } + + public static string ToPrintableString(Keys k, KbModifiers m, bool selectspecials, bool selectalphas, bool selectnumerics) + { + return KeyboardHelper.ToPrintableString(k, m, selectspecials, selectalphas, selectnumerics, false); + } + + public static string ToPrintableString(Keys k, KbModifiers m, bool selectspecials, bool selectalphas, bool selectnumerics, bool suppressspace) + { + if (KeyboardHelper.IsKeySpace(k) && !suppressspace) + return " "; + if (KeyboardHelper.IsKeyAlpha(k) && selectalphas || KeyboardHelper.IsKeyNumber(k) && selectnumerics || KeyboardHelper.TreadNumpadAsNumeric && KeyboardHelper.IsKeyNumberpad(k) && selectnumerics || selectspecials && (!KeyboardHelper.IsKeyAlpha(k) && !KeyboardHelper.IsKeyNumeric(k) || KeyboardHelper.IsKeyNumber(k) && KeyboardHelper.IsShiftDown(m))) + { + if (!KeyboardHelper.IsShiftDown(m)) + return KeyboardHelper._unShiftedKeysString[k.GetHashCode()]; + if (selectspecials || !KeyboardHelper.IsKeyNumber(k)) + return KeyboardHelper.shiftedkeysstring[k.GetHashCode()]; + } + return ""; + } + + public static KbModifiers GetModifiers(KeyboardState ks) + { + return ks.GetPressedKeys().Aggregate(KbModifiers.None, (current, k) => current | KeyboardHelper.IsShiftM(k) | KeyboardHelper.IsAltM(k) | KeyboardHelper.IsCtrlM(k)); + } + } +} diff --git a/SpacePew/LevelLoader.cs b/SpacePew/LevelLoader.cs new file mode 100644 index 0000000..8948a7f --- /dev/null +++ b/SpacePew/LevelLoader.cs @@ -0,0 +1,181 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; +using System.Linq; +using System.Media; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Audio; +using Microsoft.Xna.Framework.Graphics; +using ICSharpCode.SharpZipLib.Zip; +using System.IO; +using System.Xml; +using Microsoft.Xna.Framework.Media; +using Microsoft.Xna.Framework.Content; +using SpacePew.Models; +using Rectangle = System.Drawing.Rectangle; + +namespace SpacePew +{ + static class LevelLoader + { + public static Level LoadLevel(string filePath, ContentManager cm, GraphicsDevice device) + { + var levelResources = GetResourceList(filePath); + if (!levelResources.ContainsKey("leveldata.xml")) + throw new InvalidOperationException("Level: " + filePath + " doesnt contain any leveldata.xml"); + + var levelData = GetXmlFile(levelResources["leveldata.xml"]); + string baseTexture = levelData.SelectSingleNode("//baseTexture").InnerText.ToLower(); + string indestructibleTexture = levelData.SelectSingleNode("//indestructibleTexture").InnerText.ToLower(); + + var spriteBatch = new SpriteBatch(device); + var level = new Level(); + level.FilePath = filePath; + level.Texture = LoadTextureTiles(levelResources[baseTexture], device, spriteBatch); + level.IndestructibleTexture = LoadTextureTiles(levelResources[indestructibleTexture], device, spriteBatch); + level.DeformedTexture = new TiledTexture + { + Width = level.Texture.Width, + Height = level.Texture.Height, + TileHeight = level.Texture.TileHeight, + TileWidth = level.Texture.TileWidth, + XTiles = level.Texture.XTiles, + YTiles = level.Texture.YTiles + }; + + level.Texture.ForEach(t => level.DeformedTexture.Add(new Tile( + new RenderTarget2D(device, level.Texture.TileWidth, level.Texture.TileHeight, false, + SurfaceFormat.Color, DepthFormat.Depth24, + device.PresentationParameters.MultiSampleCount, + RenderTargetUsage.PreserveContents + ), + t.Position))); + + if (levelData.SelectSingleNode("//song") != null) + { + string songName = levelData.SelectSingleNode("//song").InnerText.ToLower(); + level.OggVorbisSong = levelResources[songName]; + } + + level.Initialize(); + return level; + } + + private static XmlDocument GetXmlFile(byte[] rawData) + { + var d = new XmlDocument(); + d.LoadXml(System.Text.Encoding.UTF8.GetString(rawData)); + return d; + } + + public static TiledTexture LoadTextureTiles(Byte[] bitmapData, GraphicsDevice device, SpriteBatch spriteBatch, int tileWidth = 0, int tileHeight = 0) + { + using (var ms = new MemoryStream(bitmapData)) + { + ms.Seek(0, SeekOrigin.Begin); + using (var image = Image.FromStream(ms)) + { + return LoadTextureTiles(image, device, spriteBatch, tileWidth, tileHeight); + } + } + } + + public static TiledTexture LoadTextureTiles(string fileName, GraphicsDevice device, SpriteBatch spriteBatch, int tileWidth = 0, int tileHeight = 0) + { + using (var image = Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + fileName.Replace("/", "\\"))) + { + return LoadTextureTiles(image, device, spriteBatch, tileWidth, tileHeight); + } + } + + public static TiledTexture LoadTextureTiles(Image image, GraphicsDevice device, SpriteBatch spriteBatch, int tileWidth = 0, int tileHeight = 0) + { + //OBS!!! Stt kartans bredd el hjd till ett primtal o det r krt iom att d kan man inte hitta en jmn multiple och en ojmn kommer att anvndas + //och det kommer att pricka i framtiden. + if (tileWidth == 0) + tileWidth = FindNearbyMultiple(image.Width, 1000); + if (tileHeight == 0) + tileHeight = FindNearbyMultiple(image.Height, 1000); + + + int tilesX = (image.Width % tileWidth == 0) + ? (int)Math.Floor(image.Width / (double)tileWidth) + : (int)Math.Ceiling(image.Width / (double)tileWidth); + + int tilesY = (image.Height % tileHeight == 0) + ? (int)Math.Floor(image.Height / (double)tileHeight) + : (int)Math.Ceiling(image.Height / (double)tileHeight); + + var ret = new TiledTexture + { + TileWidth = tileWidth, + TileHeight = tileHeight, + XTiles = tilesX, + YTiles = tilesY, + Width = image.Width, + Height = image.Height + }; + for (var j = 0; j < tilesX; j++) + { + for (var i = 0; i < tilesY; i++) + { + var part = new Bitmap(tileWidth, tileHeight, image.PixelFormat); + var graphics = Graphics.FromImage(part); + var srcRect = new Rectangle(j * tileWidth, i * tileHeight, tileWidth, tileHeight); + graphics.DrawImage(image, 0, 0, srcRect, GraphicsUnit.Pixel); + using (var ms = new MemoryStream()) + { + //TODO: ngot vettigare n s hr fr att f fram bytesen... tar ju r och dagar att ladda nu. + part.Save(ms, System.Drawing.Imaging.ImageFormat.Png); + ms.Seek(0, SeekOrigin.Begin); + + ret.Add(new Tile(Texture2D.FromStream(device, ms), new Microsoft.Xna.Framework.Point(j * tileWidth, i * tileHeight))); + } + } + } + return ret; + } + + private static int FindNearbyMultiple(int totLen, int chunkLen) + { + chunkLen = totLen / (int)Math.Ceiling(totLen / (double)chunkLen); + + var step = 0; + while (step < 100) + { + var t = chunkLen - step; + if ((totLen % t) == 0) + return t; + t = chunkLen + step; + if ((totLen % t) == 0) + return t; + step++; + } + return FindNearbyMultiple(totLen - 1, chunkLen); + } + + private static Dictionary GetResourceList(string file) + { + var resources = new Dictionary(); + using (var stream = new ZipInputStream(File.OpenRead(file))) + { + ZipEntry entry = null; + while ((entry = stream.GetNextEntry()) != null) + { + if (entry.Name.Length > 0) + { + var buf = new byte[(int)entry.Size]; + stream.Read(buf, 0, buf.Length); + resources.Add(entry.Name.ToLower().Trim(), buf); + } + } + } + + return resources; + } + } +} \ No newline at end of file diff --git a/SpacePew/Levels/hippie.zip b/SpacePew/Levels/hippie.zip new file mode 100644 index 0000000000000000000000000000000000000000..970f05d829ffabd4bda1e381f0693dde1b7e3a10 GIT binary patch literal 761321 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�C5230PMCtS`%VOaz3(}4&MmAlQw9G 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 z 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

    I0@V9}hsI}6;F`liF7tP;zXSv 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

    + /// LoadContent will be called once per game and is the place to load + /// all of your content. + /// + protected override void LoadContent() + { + _udpClientGui.Initialize(); + + _spriteBatch = new SpriteBatch(GraphicsDevice); + + _backgroundTexture = TextureManager.LoadTexture("stars"); + } + + /// + /// UnloadContent will be called once per game and is the place to unload + /// all content. + /// + protected override void UnloadContent() + { + } + + protected override void OnExiting(object sender, EventArgs args) + { + if (_level != null) + { + _level.StopLevelSong(); + } + + if (NetworkClient.IsSessionAlive) + { + NetworkClient.ExitSession("Quitting..."); + } + + NetworkServer.Shutdown(); + + Trace.WriteLine("Exiting"); + Trace.Unindent(); + Trace.Flush(); + + base.OnExiting(sender, args); + } + + /// + /// Handles input. + /// + private void HandleInput() + { + _currentKeyboardState = Keyboard.GetState(); + _currentGamePadState = GamePad.GetState(PlayerIndex.One); + + // Check for exit. + if (IsActive && IsPressed(Microsoft.Xna.Framework.Input.Keys.Escape, Buttons.Back)) + { + Exit(); + } + } + + /// + /// Checks if the specified button is pressed on either keyboard or gamepad. + /// + bool IsPressed(Microsoft.Xna.Framework.Input.Keys key, Buttons button) + { + return (_currentKeyboardState.IsKeyDown(key) || _currentGamePadState.IsButtonDown(button)); + } + + /// + /// Allows the game to run logic such as updating the world, + /// checking for collisions, gathering input, and playing audio. + /// + /// Provides a snapshot of timing values. + protected override void Update(GameTime gameTime) + { + HandleInput(); + + if (!NetworkClient.IsSessionAlive || NetworkClient.LocalPlayer == null) + { + // If we are not in a network session, update the + // menu screen that will let us create or join one. + } + else + { + while (WeaponBase.FiredShots.Count > 0) + { + NetworkClient.EntitiesToSend.Add(WeaponBase.FiredShots.Dequeue()); + } + + NetworkClient.Update(); + + NetworkClient.LocalPlayer.HandleKeyboard(Keyboard.GetState()); + + var entitiesToKill = new HashSet(); + + //fixa en metod fr entity som skter det hr.. + foreach (var entity in _entityFactory.Entities) + { + entity.Update(gameTime); + + foreach (var player in NetworkClient.Players) + { + if (player.IsCollisionWith(entity)) + { + player.CollideWith(entity); + + if (!(entity is Player)) + { + AddExplosion(entity.Position, 0.05f); + + entitiesToKill.Add(entity); + } + } + + if (player == NetworkClient.LocalPlayer && player.Health <= 0) + { + AddExplosion(player.Position, 1f); + player.Kill(); + + NetworkClient.SendDeath(entity); + + var message = new NetworkMessage + { + Sent = DateTime.Now + }; + + if (player.Owner == entity.Owner) + { + message.Color = player.Color; + message.Message = string.Format("- {0} commited suicide.", player.Owner); + } + else + { + var killer = ((List)NetworkClient.Players).Find(p => p.Owner == entity.Owner); + message.Message = string.Format("{0} killed {1}.", entity.Owner, player.Owner); + message.Color = killer.Color; + } + + NetworkMessenger.SendMessage(message); + } + } + + entity.Health -= _level.Collide(entity, CenterX, CenterY); + + if (NetworkClient.LocalPlayer.Health <= 0) + { + AddExplosion(NetworkClient.LocalPlayer.Position, 1f); + NetworkClient.LocalPlayer.Kill(); + + NetworkMessenger.AddDeath(NetworkClient.LocalPlayer); + NetworkMessenger.SendMessage(new NetworkMessage + { + Color = NetworkClient.LocalPlayer.Color, + Message = GetRandomCrashMessage(), + Sent = DateTime.Now + }); + } + + if (!(entity is Player) && entity.Health <= 0) + { + entitiesToKill.Add(entity); + + AddExplosion(entity.Position, 0.05f); + } + } + + _entityFactory.RemoveEntities(entitiesToKill); + } + + base.Update(gameTime); + } + + private string GetRandomCrashMessage() + { + int random = _randomizer.Next(0, 3); + var crashMessages = new List + { + "{0} is driving under influence.", + "{0} crashed.", + "{0} sent himself straight towards the wall." + }; + + return string.Format(crashMessages[random], NetworkClient.LocalPlayer.Owner); + } + + /// + /// This is called when the game should draw itself. + /// + /// Provides a snapshot of timing values. + protected override void Draw(GameTime gameTime) + { + GraphicsDevice.Clear(Color.Black); + + if (NetworkClient.IsSessionAlive) + { + if (!BeginDraw() || NetworkClient.LocalPlayer == null) + return; + + _graphics.GraphicsDevice.Clear(Color.Black); + + RenderDeformation(); + RenderTiledBackground(); + RenderLevel(); + RenderEntities(); + } + + base.Draw(gameTime); + } + + private static readonly BlendState + opaqueExceptAlpha = new BlendState + { + ColorSourceBlend = Blend.One, + AlphaSourceBlend = Blend.One, + ColorDestinationBlend = Blend.InverseDestinationAlpha, + AlphaDestinationBlend = Blend.InverseDestinationAlpha, + ColorWriteChannels = ColorWriteChannels.Alpha + }; + + void RenderDeformation() + { + var hits = new List(); + while (_level.Hits.Count > 0) + { + hits.Add(_level.Hits.Dequeue()); + } + + foreach (var tile in _level.DeformedTexture) + { + _graphics.GraphicsDevice.SetRenderTarget((RenderTarget2D)tile.Texture); + _spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend); // TODO: fixa blendstaten dr uppe s att den tar hnsyn till alpha i source + foreach (var hit in hits) + { + _spriteBatch.Draw(hit.Texture, + hit.Position + _camera.ScreenCenter - tile.Position.AsVector2D(), + null, + Color.Black, + hit.Angle, + hit.Origin, + 1, + SpriteEffects.None, + 1); + } + + _spriteBatch.End(); + } + + _graphics.GraphicsDevice.SetRenderTarget(null); + } + + private void RenderTiledBackground() + { + _spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Opaque); + + var pos = Vector2.Zero; + var scrollPos = NetworkClient.LocalPlayer.Position / 3.0f; + + int startX = ((int)scrollPos.X) % _backgroundTexture.Width; + int startY = ((int)scrollPos.Y) % _backgroundTexture.Height; + + for (int y = -startY; y < GraphicsDevice.Viewport.Height; y += _backgroundTexture.Height) + { + for (int x = -startX; x < GraphicsDevice.Viewport.Width; x += _backgroundTexture.Width) + { + pos.X = x; pos.Y = y; + _spriteBatch.Draw(_backgroundTexture, pos, Color.White); + } + } + + _spriteBatch.End(); + } + + void RenderLevel() + { + var bounds = new Rectangle(0, 0, _level.Texture.TileWidth, _level.Texture.TileHeight); + var viewPort = new Rectangle( + (int)_camera.Position.X - _graphics.GraphicsDevice.Viewport.Width / 2, + (int)_camera.Position.Y - _graphics.GraphicsDevice.Viewport.Height / 2, + _graphics.GraphicsDevice.Viewport.Width + _graphics.GraphicsDevice.Viewport.Width / 2, + _graphics.GraphicsDevice.Viewport.Height + _graphics.GraphicsDevice.Viewport.Height / 2); + + for (var i = 0; i < _level.Texture.Count; i++) + { + var tile = _level.Texture[i]; + var deformedTile = _level.DeformedTexture[i]; + var indestructibleTile = _level.IndestructibleTexture[i]; + + bounds.X = tile.Position.X; + bounds.Y = tile.Position.Y; + if (viewPort.Intersects(bounds)) + { + _spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend); + + _spriteBatch.Draw(indestructibleTile.Texture, new Vector2(indestructibleTile.Position.X - _camera.Position.X, indestructibleTile.Position.Y - _camera.Position.Y)); + _spriteBatch.Draw(deformedTile.Texture, new Vector2(deformedTile.Position.X - _camera.Position.X, deformedTile.Position.Y - _camera.Position.Y)); + + _spriteBatch.End(); + } + } + } + + private void RenderEntities() + { + _spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null, null, _camera.Transform); + + foreach (var entity in _entityFactory.Entities) + { + _spriteBatch.Draw(entity.Texture, + entity.Position, + null, + entity.Color, + entity.Angle, + entity.Origin, + 1, + SpriteEffects.None, + 1); + } + + _spriteBatch.End(); + } + } +} diff --git a/SpacePew/Minimap.cs b/SpacePew/Minimap.cs new file mode 100644 index 0000000..3c030ca --- /dev/null +++ b/SpacePew/Minimap.cs @@ -0,0 +1,111 @@ +using System; + +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using SpacePew.Extensions; +using SpacePew.Models; + +namespace SpacePew +{ + /// + /// This is a game component that implements IUpdateable. + /// + public class Minimap : GameComponent, IDrawable + { + private const int MinimapWidth = 160; + + private int _minimapModifier; + + private readonly MainGame _game; + private SpriteBatch _spriteBatch; + private int _screenWidth; + private int _screenHeight; + private Texture2D _miniPlayer; + + public Minimap(MainGame game) + : base(game) + { + _game = game; + } + + /// + /// Allows the game component to perform any initialization it needs to before starting + /// to run. This is where it can query for any required services and load content. + /// + public override void Initialize() + { + _spriteBatch = new SpriteBatch(_game.GraphicsDevice); + + _screenWidth = _game.GraphicsDevice.PresentationParameters.BackBufferWidth; + _screenHeight = _game.GraphicsDevice.PresentationParameters.BackBufferHeight; + + _miniPlayer = TextureManager.LoadTexture("bullet"); + + base.Initialize(); + } + + public void Draw(GameTime gameTime) + { + if (_game.NetworkClient.LocalPlayer != null) + { + _minimapModifier = _game.Level.Texture.Width / MinimapWidth; + + _spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend); + + int minimapHeight = _game.Level.Texture.Height / _minimapModifier > _screenHeight ? + _screenHeight - 20 : + _game.Level.Texture.Height / _screenHeight; + + if (minimapHeight > _screenHeight) + minimapHeight = _screenHeight - 20; + + var rect = new Rectangle(10, _screenHeight - minimapHeight - 10, + _game.Level.Texture.Width / _minimapModifier, + minimapHeight); + + + //Skriv ut spelarpluppen ver hela ytan i svart fr att rensa + _spriteBatch.Draw(_miniPlayer, rect, Color.Black); + _spriteBatch.Draw(_game.Level.DeformedTexture, rect, Color.White); + _spriteBatch.Draw(_game.Level.IndestructibleTexture, rect, Color.White); + + float xScale = _game.Level.Texture.Width / (float)rect.Width; + float yScale = _game.Level.Texture.Height / (float)rect.Height; + float centerX = _screenWidth / 2; + float centerY = _screenHeight / 2; + + foreach (Player player in _game.NetworkClient.Players) + { + var miniMapPosition = new Vector2(rect.X - 1 + (player.Position.X + centerX) / xScale, rect.Y - 1 + (player.Position.Y + centerY) / yScale); + + _spriteBatch.Draw(_miniPlayer, miniMapPosition, player.Color); + } + + _spriteBatch.End(); + } + } + + public int DrawOrder + { + get { return 2; } + } + + public bool Visible + { + get { return true; } + } + + + event EventHandler IDrawable.DrawOrderChanged + { + add { } + remove { } + } + + event EventHandler IDrawable.VisibleChanged + { + add { } + remove { } + } + } +} \ No newline at end of file diff --git a/SpacePew/Models/EntityBase.cs b/SpacePew/Models/EntityBase.cs new file mode 100644 index 0000000..1d90988 --- /dev/null +++ b/SpacePew/Models/EntityBase.cs @@ -0,0 +1,197 @@ +using System; + +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework; + +namespace SpacePew.Models +{ + public abstract class EntityBase : IEntity + { + public const float OneRound = (float)Math.PI * 2; + public const float VelocityModifier = .1f; + public const float GravityModifier = 100f; + + public Rectangle BoundingRectangle + { + get + { + return new Rectangle((int)this.Position.X - (int)this.Origin.X, (int)this.Position.Y - (int)this.Origin.Y, this.Texture.Width, this.Texture.Height); + } + } + + private Color[] _textureData; + public Color[] GetTextureData() + { + if (_textureData == null) + { + this._textureData = new Color[this.Texture.Width * this.Texture.Height]; + this.Texture.GetData(this._textureData); + } + + return _textureData; + } + + // These should be settings in the start menu GUI later on + + public bool IsCollisionWith(IEntity entity) + { + // never collide with oneself + if (ReferenceEquals(entity, this)) + return false; + + return entity.Collide(this); + } + + public virtual bool Collide(IEntity entity) + { + Matrix transform = Matrix.CreateTranslation(new Vector3(this.Position - this.Origin, 0.0f)); + + Matrix entityTransform = + Matrix.CreateTranslation(new Vector3(-entity.Origin, 0.0f)) * + Matrix.CreateRotationZ(entity.Angle) * + Matrix.CreateTranslation(new Vector3(entity.Position, 0.0f)); + + Rectangle entityRectangle = CalculateBoundingRectangle( + new Rectangle(0, 0, entity.Texture.Width, entity.Texture.Height), + entityTransform); + + if (entityRectangle.Intersects(this.BoundingRectangle)) + { + if (IntersectPixels(transform, this.Texture.Width, + this.Texture.Height, this.GetTextureData(), + entityTransform, entity.Texture.Width, + entity.Texture.Height, entity.GetTextureData())) + { + return true; + } + } + + return false; + } + + private static bool IntersectPixels(Matrix transformA, int widthA, int heightA, Color[] dataA, + Matrix transformB, int widthB, int heightB, Color[] dataB) + { + Matrix transformAtoB = transformA * Matrix.Invert(transformB); + + Vector2 stepX = Vector2.TransformNormal(Vector2.UnitX, transformAtoB); + Vector2 stepY = Vector2.TransformNormal(Vector2.UnitY, transformAtoB); + + Vector2 yPosInB = Vector2.Transform(Vector2.Zero, transformAtoB); + + for (int yA = 0; yA < heightA; yA++) + { + Vector2 posInB = yPosInB; + + for (int xA = 0; xA < widthA; xA++) + { + var xB = (int)Math.Round(posInB.X); + var yB = (int)Math.Round(posInB.Y); + + if (0 <= xB && xB < widthB && + 0 <= yB && yB < heightB) + { + Color colorA = dataA[xA + yA * widthA]; + Color colorB = dataB[xB + yB * widthB]; + + if (colorA.A != 0 && colorB.A != 0) + { + return true; + } + } + + posInB += stepX; + } + + yPosInB += stepY; + } + + return false; + } + + private static Rectangle CalculateBoundingRectangle(Rectangle rectangle, Matrix transform) + { + var leftTop = new Vector2(rectangle.Left, rectangle.Top); + var rightTop = new Vector2(rectangle.Right, rectangle.Top); + var leftBottom = new Vector2(rectangle.Left, rectangle.Bottom); + var rightBottom = new Vector2(rectangle.Right, rectangle.Bottom); + + Vector2.Transform(ref leftTop, ref transform, out leftTop); + Vector2.Transform(ref rightTop, ref transform, out rightTop); + Vector2.Transform(ref leftBottom, ref transform, out leftBottom); + Vector2.Transform(ref rightBottom, ref transform, out rightBottom); + + Vector2 min = Vector2.Min(Vector2.Min(leftTop, rightTop), Vector2.Min(leftBottom, rightBottom)); + Vector2 max = Vector2.Max(Vector2.Max(leftTop, rightTop), Vector2.Max(leftBottom, rightBottom)); + + return new Rectangle((int)min.X, (int)min.Y, (int)(max.X - min.X), (int)(max.Y - min.Y)); + } + + #region IEntity Members + + public virtual string Owner + { + get; + set; + } + + public abstract int Health { get; set; } + public abstract string TextureName { get; } + + public virtual void CollideWithLevel(Level level) { } + + public Texture2D Texture { get; set; } + public virtual Color Color { get; set; } + public Vector2 Position { get; set; } + public Vector2 Velocity { get; set; } + + public virtual Vector2 Origin + { + get + { + return new Vector2(this.Texture.Width / 2, this.Texture.Height / 2); + } + } + + private float _angle; + public float Angle + { + get + { + return _angle; + } + set + { + _angle = value; + + if (_angle > OneRound) + { + _angle -= OneRound; + } + else if (_angle < 0) + { + _angle += OneRound; + } + } + } + + public virtual void Created() { } + + public virtual void ApplyGravity(GameTime time) + { + float timeSeconds = time.ElapsedGameTime.Milliseconds * .001f; + Velocity = new Vector2( + Velocity.X, + Velocity.Y + (timeSeconds * GravityModifier)); + } + + public virtual void Update(GameTime time) + { + ApplyGravity(time); + + float timeSeconds = time.ElapsedGameTime.Milliseconds * .001f; + Position += Velocity * timeSeconds; + } + #endregion + } +} diff --git a/SpacePew/Models/Explosion.cs b/SpacePew/Models/Explosion.cs new file mode 100644 index 0000000..b749afc --- /dev/null +++ b/SpacePew/Models/Explosion.cs @@ -0,0 +1,28 @@ +namespace SpacePew.Models +{ + public class Explosion : EntityBase + { + public Explosion() + { + _health = 10; + } + + private int _health; + public override int Health + { + get + { + return _health; + } + set + { + _health = value; + } + } + + public override string TextureName + { + get { return "explosion_small"; } + } + } +} \ No newline at end of file diff --git a/SpacePew/Models/IEntity.cs b/SpacePew/Models/IEntity.cs new file mode 100644 index 0000000..21443c4 --- /dev/null +++ b/SpacePew/Models/IEntity.cs @@ -0,0 +1,28 @@ +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework; + +namespace SpacePew.Models +{ + public interface IEntity + { + string TextureName { get; } + Texture2D Texture { get; set; } + Color[] GetTextureData(); + Color Color { get; set; } + + string Owner { get; set; } + + int Health { get; set; } + + Vector2 Origin { get; } + Vector2 Position { get; set; } + Vector2 Velocity { get; set; } + float Angle { get; set; } + + bool Collide(IEntity entity); + void CollideWithLevel(Level level); + void ApplyGravity(GameTime time); + void Update(GameTime time); + void Created(); + } +} diff --git a/SpacePew/Models/IKillable.cs b/SpacePew/Models/IKillable.cs new file mode 100644 index 0000000..bc842d5 --- /dev/null +++ b/SpacePew/Models/IKillable.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SpacePew.Models +{ + public interface IKillable + { + void Kill(); + } +} diff --git a/SpacePew/Models/Level.cs b/SpacePew/Models/Level.cs new file mode 100644 index 0000000..397763b --- /dev/null +++ b/SpacePew/Models/Level.cs @@ -0,0 +1,301 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Threading; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework; +using System.Collections; +using Microsoft.Xna.Framework.Media; + +namespace SpacePew.Models +{ + public class Tile + { + public Point Position { get; set; } + public Texture2D Texture { get; set; } + public Tile(Texture2D texure, Point position) + { + Texture = texure; + Position = position; + } + } + + public class TiledTexture : List + { + public int TileWidth { get; set; } + public int TileHeight { get; set; } + public int Width { get; set; } + public int Height { get; set; } + public int XTiles { get; set; } + public int YTiles { get; set; } + public Vector2 Position { get; set; } + + public void GetData(Color[] textureData) + { + var buffer = new Color[TileWidth * TileHeight]; + for (var j = 0; j < XTiles; j++) + { + for (var i = 0; i < YTiles; i++) + { + var tile = this[i * XTiles + j]; + tile.Texture.GetData(buffer); + + for (var x = 0; x < TileWidth; x++) + { + for (var y = 0; y < TileHeight; y++) + { + var xpos = tile.Position.X + x; + var ypos = tile.Position.Y + y; + textureData[ypos * Width + xpos] = buffer[y * TileWidth + x]; + } + } + } + } + } + + public void SetData(Color[] textureData) + { + var buffer = new Color[TileWidth * TileHeight]; + for (var j = 0; j < XTiles; j++) + { + for (var i = 0; i < YTiles; i++) + { + var tile = this[i * XTiles + j]; + for (var x = 0; x < TileWidth; x++) + { + for (var y = 0; y < TileHeight; y++) + { + var xpos = tile.Position.X + x; + var ypos = tile.Position.Y + y; + buffer[y * TileWidth + x] = textureData[ypos * Width + xpos]; + } + } + + tile.Texture.SetData(buffer); + } + } + } + + public void SaveAsPng(Stream s, int width, int height) + { + throw new NotImplementedException("Har inte hunnit med.. borde gå att kopiera nån av Get/Set ovan och skapa upp en bild."); + } + } + + public class Level + { + public string Name { get; set; } + public string Description { get; set; } + public string FilePath { get; set; } + public byte[] OggVorbisSong { get; set; } + public TiledTexture Texture { get; set; } + public TiledTexture IndestructibleTexture { get; set; } + public TiledTexture DeformedTexture { get; set; } + private Color[] _deformedTextureData; + + public Queue Hits { get; set; } + + public bool[] CollisionData + { + get; + set; + } + + public bool[] IndestructibleCollisionData + { + get; + set; + } + + private int _width; + private int _height; + + public Level(GraphicsDevice device) + { + } + + public Level() + { } + + public void Initialize() + { + _width = Texture.Width; + _height = Texture.Height; + + Hits = new Queue(); + + var textureData = new Color[Texture.Width * Texture.Height]; + Texture.GetData(textureData); + + var indestructibleTextureData = new Color[IndestructibleTexture.Width * IndestructibleTexture.Height]; + IndestructibleTexture.GetData(indestructibleTextureData); + + CollisionData = new bool[Texture.Width * Texture.Height]; + + _deformedTextureData = new Color[DeformedTexture.Width * DeformedTexture.Height]; + for (int i = _deformedTextureData.Length - 1; i >= 0; i--) + { + _deformedTextureData[i] = textureData[i].A > 0 ? textureData[i] : Color.Transparent; + } + + DeformedTexture.SetData(_deformedTextureData); + + IndestructibleCollisionData = new bool[IndestructibleTexture.Width * IndestructibleTexture.Height]; + for (int i = 0; i < indestructibleTextureData.Length; i++) + { + if (indestructibleTextureData[i].A == 0) + { + IndestructibleCollisionData[i] = true; + } + } + } + + public void BuildLevelFromCollisionData() + { + for (int i = 0; i < CollisionData.Length; i++) + { + if (CollisionData[i]) + { + _deformedTextureData[i] = Color.Transparent; + } + } + + DeformedTexture.SetData(_deformedTextureData); + } + + public void BuildCollisionDataFromLevel() + { + for (int i = 0; i < _deformedTextureData.Length; i++) + { + if (_deformedTextureData[i] == Color.Transparent) + { + CollisionData[i] = true; + } + } + } + + /// + /// Returns the number of pixels of the entity that collides with the background + /// + /// + /// + /// + /// + public int Collide(IEntity entity, int centerX, int centerY) + { + int entityWidth = entity.Texture.Width; + int entityHeight = entity.Texture.Height; + + int posX = (int)entity.Position.X - (int)entity.Origin.X + centerX; + int posY = (int)entity.Position.Y - (int)entity.Origin.Y + centerY; + + if (posX < 1 || posY < 1 || posX > Texture.Width - entityWidth - 1 || posY > Texture.Height - entityHeight - 1) + return 1000000000; + + int hit = 0; + + Color[] data = entity.GetTextureData(); + + var player = entity as Player; + bool isLandingAngle = player != null && (MathHelper.ToDegrees(player.Angle) >= 345 || MathHelper.ToDegrees(player.Angle) <= 15) && player.Velocity.Y > 0; + + for (int y = 0; y < entityHeight; y++) + { + for (int x = 0; x < entityWidth; x++) + { + Color colorInPixel = data[(x - entity.Texture.Bounds.X) + (y - entity.Texture.Bounds.Y) * entity.Texture.Bounds.Width]; + if(colorInPixel.A != 0) + { + if (CollisionData[(posX + x) + (posY + y) * _width] == false) + { + if (isLandingAngle) + { + if (CollisionData[(posX + x) + (posY + y + 1) * _width] == false && + CollisionData[(posX + x + player.Texture.Width) + (posY + y + 1) * _width] == false) + { + if (player.Velocity.Y > 200f) + { + var yVelocity = (int)player.Velocity.Y; + SoundManager.Play("Audio/Waves/thump", player.Position); + player.Velocity = new Vector2(player.Velocity.X / 3, -player.Velocity.Y / 3); + return (yVelocity - 200) / 50; + } + + player.Land(); + return 0; + } + } + + entity.CollideWithLevel(this); + + CollisionData[(posX + x) + (posY + y) * _width] = true; + + Hits.Enqueue(new MapHit(entity)); + + hit++; + } + else if (IndestructibleCollisionData[(posX + x) + (posY + y) * _width] == false) + { + if (isLandingAngle) + { + if (IndestructibleCollisionData[(posX + x) + (posY + y + 1) * _width] == false && + IndestructibleCollisionData[(posX + x + player.Texture.Width) + (posY + y + 1) * _width] == false) + { + if (player.Velocity.Y > 200f) + { + var yVelocity = (int)player.Velocity.Y; + SoundManager.Play("Audio/Waves/thump", player.Position); + player.Velocity = new Vector2(player.Velocity.X / 3, -player.Velocity.Y / 3); + return (yVelocity - 200) / 50; + } + + player.Land(); + return 0; + } + } + + entity.CollideWithLevel(this); + + hit++; + } + } + } + } + + if (player != null) + { + return hit / 20; + } + + return hit; + } + + public void StopLevelSong() + { + _stopMusic = true; + } + + private bool _stopMusic; + public void PlayLevelSong() + { + using (var ms = new MemoryStream(this.OggVorbisSong)) + { + using (var vorbis = new NVorbis.NAudioSupport.VorbisWaveReader(ms)) + { + using (var waveOut = new NAudio.Wave.WaveOut()) + { + waveOut.Init(vorbis); + waveOut.Play(); + + while (!_stopMusic) + { + Thread.Sleep(100); + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SpacePew/Models/MapHit.cs b/SpacePew/Models/MapHit.cs new file mode 100644 index 0000000..97b360c --- /dev/null +++ b/SpacePew/Models/MapHit.cs @@ -0,0 +1,21 @@ +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework; + +namespace SpacePew.Models +{ + public class MapHit + { + public Texture2D Texture { get; private set; } + public Vector2 Position { get; private set; } + public Vector2 Origin { get; private set; } + public float Angle { get; private set; } + + public MapHit(IEntity entity) + { + Texture = entity.Texture; + Position = entity.Position; + Origin = entity.Origin; + Angle = entity.Angle; + } + } +} diff --git a/SpacePew/Models/Player.cs b/SpacePew/Models/Player.cs new file mode 100644 index 0000000..6938018 --- /dev/null +++ b/SpacePew/Models/Player.cs @@ -0,0 +1,295 @@ +using System; +using System.Collections.Generic; +using System.IO; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Input; +using Microsoft.Xna.Framework.Audio; +using SpacePew.Networking; +using SpacePew.Camera; +using SpacePew.Models.Projectiles; +using SpacePew.Models.Weapons; + +namespace SpacePew.Models +{ + public class Player : EntityBase, IFocusable + { + #region Constructors + + private SoundEffectInstance _thrustSound; + public Player() + { + _weapon = new Cannon(); + _projectile = new Bullet(); + + _secondaryWeapon = new ClusterLauncher(); + _secondaryProjectile = new ClusterBomb(); + + Health = 100; + + Fuel = 50000; + + _lastCollide = DateTime.Now; + + _thrustSound = SoundManager.GetSoundEffectInstance("Audio/Waves/engine"); + } + + #endregion + + private readonly Vector2 _up = new Vector2(0, -1); + private Matrix _rotationMatrix; + + private Vector2 _direction; + + private readonly IProjectile _projectile; + private readonly IProjectile _secondaryProjectile; + + private IWeapon _secondaryWeapon; + public IWeapon SecondaryWeapon + { + get { return _secondaryWeapon; } + set { _secondaryWeapon = value; } + } + + private IWeapon _weapon; + public IWeapon Weapon + { + get { return _weapon; } + set { _weapon = value; } + } + + public bool IsRemotePlayer { get; set; } + public bool Landed { get; set; } + public double Fuel { get; private set; } + + #region Input handling + + private bool _isThrusting; + public void HandleKeyboard(KeyboardState state) + { + if (!MainGame.IsKeyboardInUse) + { + if (state.IsKeyDown(Keys.Right)) + { + if (Landed) + { + Landed = false; + } + + this.MoveRight(); + } + + if (state.IsKeyDown(Keys.Left)) + { + if (Landed) + { + Landed = false; + } + + this.MoveLeft(); + } + + if (state.IsKeyDown(Keys.Up)) + { + if (Landed) + { + Landed = false; + } + + _isThrusting = true; + + this.Thrust(); + } + else + { + _isThrusting = false; + } + + if (state.IsKeyDown(Keys.Space)) + { + this.Fire(); + } + else + { + if (this.Weapon.Heat > 0) + { + this.Weapon.Heat -= 1; + } + } + + if (state.IsKeyDown(Keys.LeftControl)) + { + this._secondaryWeapon.Fire(this._secondaryProjectile, this); + } + else + { + if (this._secondaryWeapon.Heat > 0) + { + this._secondaryWeapon.Heat -= 1; + } + } + + if (state.IsKeyDown(Keys.R)) + { + this.Health = 0; + } + } + } + + private void Fire() + { + this._weapon.Fire(_projectile, this); + } + + private void MoveRight() + { + Angle += 0.1f; + } + + private void MoveLeft() + { + Angle -= 0.1f; + } + + private void Thrust() + { + Fuel -= 1; + + _rotationMatrix = Matrix.CreateRotationZ(Angle); + _direction = Vector2.Transform(_up, _rotationMatrix); + + Velocity += _direction / VelocityModifier; + } + + #endregion + + #region IEntity Members + + public override string Owner { get; set; } + public override sealed int Health { get; set; } + + public override void ApplyGravity(GameTime time) + { + if (!Landed) + { + base.ApplyGravity(time); + } + } + + public override Vector2 Origin + { + get { return new Vector2(Texture.Width / 2, Texture.Height / 2); } + } + + public override string TextureName + { + get { return "player"; } + } + + #endregion + + private DateTime _lastCollide; + public void CollideWith(IEntity entity) + { + var projectile = entity as IProjectile; + if (projectile != null) + { + this.Health -= projectile.Damage; + return; + } + var player = entity as Player; + if (player != null) + { + if (_lastCollide <= DateTime.Now.AddMilliseconds(-80)) + { + _lastCollide = DateTime.Now; + + if (Math.Abs(this.Velocity.Length()) > Math.Abs(entity.Velocity.Length())) + { + entity.Velocity += this.Velocity / 2; + this.Velocity /= 4; + } + else + { + this.Velocity += entity.Velocity / 2; + entity.Velocity /= 4; + } + } + + this.Landed = false; + player.Landed = false; + } + } + + public override void CollideWithLevel(Level level) + { + Velocity -= (Velocity / 300); + } + + public static Player CreatePlayer(Vector2 startPosition) + { + return CreatePlayer(startPosition, string.Empty); + } + + public static Player CreatePlayer(Vector2 startPosition, string name) + { + return EntityFactory.Instance.CreateEntity( + name, + startPosition, + new Vector2(), + 0 + ); + } + + public void Land() + { + if (!Landed) + { + this.Velocity = new Vector2(0, 0); + this.Position = new Vector2(this.Position.X, this.Position.Y - 1); // Need to adjust because per pixel collision + // sometimes can't catch up with frame rate + this.Angle = 0; + + Landed = true; + } + } + + public void Kill() + { + SoundManager.Play("Audio/Waves/explosion", this.Position); + this.Position = new Vector2(25, 25); + this.Velocity = new Vector2(0, 0); + this.Angle = 0; + this.Health = 100; + this.Landed = false; + } + + public override void Update(GameTime time) + { + if (_isThrusting) + { + if (_thrustSound.State != SoundState.Playing) + { + _thrustSound.Play(); + } + + this.Texture = TextureManager.LoadTexture("player_thrusting"); + } + else + { + _thrustSound.Pause(); + this.Texture = TextureManager.LoadTexture("player"); + } + + base.Update(time); + } + + #region IFocusable Members + + Vector2 IFocusable.Position + { + get { return this.Position; } + } + + #endregion + } +} diff --git a/SpacePew/Models/Projectiles/BouncingBullet.cs b/SpacePew/Models/Projectiles/BouncingBullet.cs new file mode 100644 index 0000000..1e66b20 --- /dev/null +++ b/SpacePew/Models/Projectiles/BouncingBullet.cs @@ -0,0 +1,18 @@ +namespace SpacePew.Models.Projectiles +{ + public sealed class BouncingBullet : Bullet + { + public BouncingBullet() + { + Health = 30; + } + + public override CollisionType CollisionType + { + get + { + return CollisionType.Bounce; + } + } + } +} diff --git a/SpacePew/Models/Projectiles/Bullet.cs b/SpacePew/Models/Projectiles/Bullet.cs new file mode 100644 index 0000000..2cd6353 --- /dev/null +++ b/SpacePew/Models/Projectiles/Bullet.cs @@ -0,0 +1,70 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; + +namespace SpacePew.Models.Projectiles +{ + public class Bullet : ProjectileBase + { + #region Constructors + + public Bullet() + { + this.Color = Color.White; + this.Velocity = new Vector2(); + this.Angle = 0; + this.Health = 15; + } + + public Bullet(Vector2 position) + : this() + { + this.Position = position; + } + + #endregion + + #region IEntity Members + + public override sealed int Health + { + get; + set; + } + + public override string TextureName + { + get { return "bullet"; } + } + + #endregion + + #region IProjectile Members + + public override string FireSoundAssetName + { + get { return "Audio/Waves/bullet_sound"; } + } + + public override string HitSoundAssetName + { + get { return "Audio/Waves/bullet_hit"; } + } + + public override int Damage + { + get { return 5; } + } + + public override float Speed + { + get { return 400f; } + } + + public override CollisionType CollisionType + { + get { return CollisionType.Explode; } + } + + #endregion + } +} \ No newline at end of file diff --git a/SpacePew/Models/Projectiles/ClusterBomb.cs b/SpacePew/Models/Projectiles/ClusterBomb.cs new file mode 100644 index 0000000..be8cdb3 --- /dev/null +++ b/SpacePew/Models/Projectiles/ClusterBomb.cs @@ -0,0 +1,93 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework; +using SpacePew.Models.Weapons; + +namespace SpacePew.Models.Projectiles +{ + class ClusterBomb : Bullet, IKillable + { + private const int FuseTime = 7000; //time in milliseconds before it explodes + private double _elapsed = 0; + readonly DateTime _startTick; + + public override int Damage + { + get { return 10; } + } + + public override float Speed + { + get { return 100; } + } + + public ClusterBomb() + { + _startTick = DateTime.Now; + } + + public override Color Color + { + get + { + var r = (byte)((_elapsed / FuseTime) * 255f); + var g = (byte)(128 + Math.Sin(_elapsed / 150f) * 127f); + var b = (byte)(255 - g); + return new Color(r, g, b); + } + } + + public override void Update(Microsoft.Xna.Framework.GameTime time) + { + _elapsed = (DateTime.Now - _startTick).TotalMilliseconds; + + if (_elapsed >= FuseTime) + { + this.Health = 0; + } + + base.Update(time); + } + + private void CreateCluster(float angle, string owner) + { + var entity = EntityFactory.Instance.CreateEntity( + typeof(Bullet), + owner, + Position, + Vector2.Zero, + angle); + + Matrix m = Matrix.CreateRotationZ(angle + (float)(WeaponBase.Randomizer.NextDouble() * .2f - .1f)); + Vector2 velocity = Vector2.Transform(-Vector2.UnitY, m); + + entity.Position += velocity * 10; + entity.Velocity = velocity * entity.Speed * (float)(WeaponBase.Randomizer.NextDouble() + 0.5f); + + //TODO.. fix + //FiredShots.Enqueue(entity); + } + + public override void ApplyGravity(GameTime time) + { + float timeSeconds = time.ElapsedGameTime.Milliseconds * .001f; + Velocity = new Vector2( + Velocity.X, + Velocity.Y + (timeSeconds * GravityModifier * 0.5f)); + } + + #region IKillable Members + + public void Kill() + { + //TODO: make sure the clusters are only created on the client that created the cluster, and then let the server send them to all klients + for (float i = 0; i < 45; i += .5f) + CreateCluster(i, this.Owner); + } + + #endregion + } +} diff --git a/SpacePew/Models/Projectiles/CollisionType.cs b/SpacePew/Models/Projectiles/CollisionType.cs new file mode 100644 index 0000000..8830058 --- /dev/null +++ b/SpacePew/Models/Projectiles/CollisionType.cs @@ -0,0 +1,8 @@ +namespace SpacePew.Models.Projectiles +{ + public enum CollisionType + { + Explode, + Bounce + } +} \ No newline at end of file diff --git a/SpacePew/Models/Projectiles/HomingBullet.cs b/SpacePew/Models/Projectiles/HomingBullet.cs new file mode 100644 index 0000000..6ffede2 --- /dev/null +++ b/SpacePew/Models/Projectiles/HomingBullet.cs @@ -0,0 +1,91 @@ +using System.Collections.Generic; +using System.Linq; + +using Microsoft.Xna.Framework; + +namespace SpacePew.Models.Projectiles +{ + public class HomingBullet : Bullet + { + public HomingBullet() + { + this.Color = Color.PowderBlue; + } + + public override float Speed + { + get + { + return 200f; + } + } + + public override int Damage + { + get + { + return 3; + } + } + + private Player _target; + + const float TimeIncrementSpeed = 5; + + public override void Update(GameTime time) + { + base.Update(time); + + if (_target == null) + { + GetTarget(); + } + + if (_target != null) + { + var delta = new Vector2(_target.Position.X - this.Position.X, _target.Position.Y - this.Position.Y); + + if (delta.Length() > TimeIncrementSpeed) + { + delta.Normalize(); + delta.X *= TimeIncrementSpeed; + delta.Y *= TimeIncrementSpeed; + } + + this.Position = new Vector2(Position.X + (int)delta.X, Position.Y + (int)delta.Y); + } + } + + private void GetTarget() + { + var players = EntityFactory.Instance.Entities.OfType().Where(player => player.Owner != this.Owner).ToList(); + + if (players.Count > 0) + { + _target = FindClosestPlayer(players, this.Position); + } + } + + private static Player FindClosestPlayer(IEnumerable list, Vector2 pointToCompare) + { + Player closestPlayer = list.ToList()[0]; + + float distance = float.PositiveInfinity; + foreach (var player in list) + { + float dx = pointToCompare.X - player.Position.X; + float dy = pointToCompare.Y - player.Position.Y; + + float d = dx * dx - dy * dy; + + if (d < distance) + { + distance = d; + closestPlayer = player; + } + } + + return closestPlayer; + } + } +} \ No newline at end of file diff --git a/SpacePew/Models/Projectiles/IProjectile.cs b/SpacePew/Models/Projectiles/IProjectile.cs new file mode 100644 index 0000000..1635c8c --- /dev/null +++ b/SpacePew/Models/Projectiles/IProjectile.cs @@ -0,0 +1,12 @@ +namespace SpacePew.Models.Projectiles +{ + public interface IProjectile : IEntity + { + string HitSoundAssetName { get; } + string FireSoundAssetName { get; } + + int Damage { get; } + float Speed { get; } + CollisionType CollisionType { get; } + } +} \ No newline at end of file diff --git a/SpacePew/Models/Projectiles/LongShot.cs b/SpacePew/Models/Projectiles/LongShot.cs new file mode 100644 index 0000000..0ac49c2 --- /dev/null +++ b/SpacePew/Models/Projectiles/LongShot.cs @@ -0,0 +1,29 @@ +using System; + +using Microsoft.Xna.Framework; + +namespace SpacePew.Models.Projectiles +{ + public class LongShot : Bullet + { + public override Vector2 Origin + { + get { return new Vector2(5, 12); } + } + + public override string TextureName + { + get { return "longshot"; } + } + + public override void ApplyGravity(GameTime time) + { + base.ApplyGravity(time); + + //Sätt rotationen till lika som riktningen som pilen åker + Vector2 vNormal = Velocity; + vNormal.Normalize(); + Angle = (vNormal.X > 0 ? 1f : -1f) * (float)(Math.Acos(Vector2.Dot(-Vector2.UnitY, vNormal))); + } + } +} diff --git a/SpacePew/Models/Projectiles/Missile.cs b/SpacePew/Models/Projectiles/Missile.cs new file mode 100644 index 0000000..903d716 --- /dev/null +++ b/SpacePew/Models/Projectiles/Missile.cs @@ -0,0 +1,75 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; + +namespace SpacePew.Models.Projectiles +{ + public sealed class Missile : ProjectileBase + { + #region Constructors + + public Missile() + { + this.Color = Color.Red; + this.Velocity = new Vector2(); + this.Angle = 0; + this.Health = 10; + } + + public Missile(Vector2 position) + : this() + { + this.Position = position; + } + + #endregion + + #region IEntity Members + + public override void CollideWithLevel(Level level) + { + // blow stuff + } + + public override int Health + { + get; + set; + } + + public override string TextureName + { + get { return "bullet"; } + } + + #endregion + + #region IProjectile Members + + public override string FireSoundAssetName + { + get { return "Audio/Waves/bullet_sound"; } + } + + public override string HitSoundAssetName + { + get { return "Audio/Waves/bullet_hit"; } + } + + public override int Damage + { + get { return 50; } + } + + public override float Speed + { + get { return 600f; } + } + + public override CollisionType CollisionType + { + get { return CollisionType.Explode; } + } + + #endregion + } +} diff --git a/SpacePew/Models/Projectiles/ProjectileBase.cs b/SpacePew/Models/Projectiles/ProjectileBase.cs new file mode 100644 index 0000000..8288fb8 --- /dev/null +++ b/SpacePew/Models/Projectiles/ProjectileBase.cs @@ -0,0 +1,48 @@ +namespace SpacePew.Models.Projectiles +{ + public abstract class ProjectileBase : EntityBase, IProjectile + { + #region IEntity Members + + public override bool Collide(IEntity entity) + { + bool collided = base.Collide(entity); + + if (collided) + { + SoundManager.Play(HitSoundAssetName, this.Position); + } + + return collided; + } + + public override void CollideWithLevel(Level level) + { + if (this.CollisionType == CollisionType.Explode) + { + // blow up somehow (particle system is there, but needs to trash the level a little more too) + } + else if (this.CollisionType == CollisionType.Bounce) + { + this.Velocity -= (this.Velocity * 1.9f); + } + } + + public override void Created() + { + SoundManager.Play(FireSoundAssetName, this.Position); + } + + #endregion + + #region IProjectile Members + + public abstract string HitSoundAssetName { get; } + public abstract string FireSoundAssetName { get; } + public abstract int Damage { get; } + public abstract float Speed { get; } + public abstract CollisionType CollisionType { get; } + + #endregion + } +} \ No newline at end of file diff --git a/SpacePew/Models/Weapons/Cannon.cs b/SpacePew/Models/Weapons/Cannon.cs new file mode 100644 index 0000000..5b983db --- /dev/null +++ b/SpacePew/Models/Weapons/Cannon.cs @@ -0,0 +1,20 @@ +namespace SpacePew.Models.Weapons +{ + public class Cannon : WeaponBase + { + public override float HeatGeneration + { + get { return 0.4f; } + } + + public override int Delay + { + get { return 35; } + } + + public override int Spread + { + get { return 0; } + } + } +} diff --git a/SpacePew/Models/Weapons/ClusterLauncher.cs b/SpacePew/Models/Weapons/ClusterLauncher.cs new file mode 100644 index 0000000..e24f162 --- /dev/null +++ b/SpacePew/Models/Weapons/ClusterLauncher.cs @@ -0,0 +1,20 @@ +namespace SpacePew.Models.Weapons +{ + public class ClusterLauncher : WeaponBase + { + public override float HeatGeneration + { + get { return 100f; } + } + + public override int Delay + { + get { return 0; } + } + + public override int Spread + { + get { return 0; } + } + } +} diff --git a/SpacePew/Models/Weapons/IWeapon.cs b/SpacePew/Models/Weapons/IWeapon.cs new file mode 100644 index 0000000..bac7854 --- /dev/null +++ b/SpacePew/Models/Weapons/IWeapon.cs @@ -0,0 +1,13 @@ +using SpacePew.Models.Projectiles; + +namespace SpacePew.Models.Weapons +{ + public interface IWeapon + { + int Delay { get; } + int Spread { get; } + float Heat { get; set; } + float HeatGeneration { get; } + void Fire(IProjectile projectile, Player player); + } +} \ No newline at end of file diff --git a/SpacePew/Models/Weapons/Launcher.cs b/SpacePew/Models/Weapons/Launcher.cs new file mode 100644 index 0000000..f3c4c53 --- /dev/null +++ b/SpacePew/Models/Weapons/Launcher.cs @@ -0,0 +1,20 @@ +namespace SpacePew.Models.Weapons +{ + public class Launcher : WeaponBase + { + public override float HeatGeneration + { + get { return 100f; } + } + + public override int Delay + { + get { return 200; } + } + + public override int Spread + { + get { return 0; } + } + } +} \ No newline at end of file diff --git a/SpacePew/Models/Weapons/SecondaryCannon.cs b/SpacePew/Models/Weapons/SecondaryCannon.cs new file mode 100644 index 0000000..db1668e --- /dev/null +++ b/SpacePew/Models/Weapons/SecondaryCannon.cs @@ -0,0 +1,24 @@ +namespace SpacePew.Models.Weapons +{ + /// + /// A slower version of the cannon, should be used for powerful projectiles like the homing bullets to even things out + /// + public class SecondaryCannon : Cannon + { + public override float HeatGeneration + { + get + { + return 1f; + } + } + + public override int Delay + { + get + { + return 80; + } + } + } +} \ No newline at end of file diff --git a/SpacePew/Models/Weapons/TriCannon.cs b/SpacePew/Models/Weapons/TriCannon.cs new file mode 100644 index 0000000..ee667a7 --- /dev/null +++ b/SpacePew/Models/Weapons/TriCannon.cs @@ -0,0 +1,64 @@ +using System; + +using Microsoft.Xna.Framework; +using SpacePew.Models.Projectiles; + +namespace SpacePew.Models.Weapons +{ + public class TriCannon : WeaponBase + { + public override float HeatGeneration + { + get { return 0.8f; } + } + + public override int Delay + { + get { return 40; } + } + + public override int Spread + { + get { return 3; } + } + + public override void Fire(IProjectile projectile, Player player) + { + if (Heat + this.HeatGeneration > MaxHeat) + return; + + Heat += 1f * this.HeatGeneration; + + if (_lastShot <= DateTime.Now.AddMilliseconds(-this.Delay - (Heat >= HeatStartAffectAt ? Heat : 0))) + { + float angle = player.Angle + (float)(Randomizer.Next(-Spread * 100, Spread * 100) / 9000.0); + + InternalFire(projectile, player, angle - 0.15f); + InternalFire(projectile, player, angle); + InternalFire(projectile, player, angle + 0.15f); + + _lastShot = DateTime.Now; + } + } + + private static void InternalFire(IProjectile projectile, IEntity player, float angle) + { + var entity = EntityFactory.Instance.CreateEntity( + projectile.GetType(), + player.Owner, + player.Position, + new Vector2(), + angle); + + Matrix m = Matrix.CreateRotationZ(angle); + Vector2 velocity = Vector2.Transform(-Vector2.UnitY, m); + + entity.Position += velocity * (player.Origin.Y + entity.Origin.Y); + entity.Velocity = velocity * projectile.Speed; + + entity.Velocity = player.Velocity + entity.Velocity; + + FiredShots.Enqueue(entity); + } + } +} \ No newline at end of file diff --git a/SpacePew/Models/Weapons/WeaponBase.cs b/SpacePew/Models/Weapons/WeaponBase.cs new file mode 100644 index 0000000..e0dfed5 --- /dev/null +++ b/SpacePew/Models/Weapons/WeaponBase.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections.Generic; + +using Microsoft.Xna.Framework; +using SpacePew.Models.Projectiles; + +namespace SpacePew.Models.Weapons +{ + public abstract class WeaponBase : IWeapon + { + protected const int MaxHeat = 100; + protected const int HeatStartAffectAt = MaxHeat / 2; + + static WeaponBase() + { + FiredShots = new Queue(); + } + + public static Queue FiredShots; + + protected DateTime _lastShot; + + private static Random _randomizer; + + public static Random Randomizer + { + get { return _randomizer ?? (_randomizer = new Random()); } + } + + private float _heat; + + protected WeaponBase() + { + _lastShot = DateTime.Now; + } + + public virtual float Heat + { + get { return _heat; } + set { _heat = value; } + } + + #region IWeapon Members + + public abstract float HeatGeneration { get; } + public abstract int Delay { get; } + public abstract int Spread { get; } + + public virtual void Fire(IProjectile projectile, Player player) + { + if (_heat + this.HeatGeneration > MaxHeat) + return; + + _heat += 1f * this.HeatGeneration; + + if (_lastShot <= DateTime.Now.AddMilliseconds(-this.Delay - (_heat >= HeatStartAffectAt ? _heat : 0))) + { + float angle = player.Angle + (float)(Randomizer.Next(-Spread * 100, Spread * 100) / 9000.0); + + var entity = EntityFactory.Instance.CreateEntity( + projectile.GetType(), + player.Owner, + player.Position, + new Vector2(), + angle); + + Matrix m = Matrix.CreateRotationZ(angle); + Vector2 velocity = Vector2.Transform(-Vector2.UnitY, m); + + entity.Position += velocity * (player.Origin.Y + entity.Origin.Y); + entity.Velocity = velocity * projectile.Speed; + + entity.Velocity = player.Velocity + entity.Velocity; + FiredShots.Enqueue(entity); + + _lastShot = DateTime.Now; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/SpacePew/Networking/NetworkMessage.cs b/SpacePew/Networking/NetworkMessage.cs new file mode 100644 index 0000000..86e7c1e --- /dev/null +++ b/SpacePew/Networking/NetworkMessage.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using SpacePew.Models; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; + +namespace SpacePew.Networking +{ + public class NetworkMessage + { + // TODO: Add SoundAssetName to make NetworkMessenger play custom sounds upon different messages + public string Message { get; set; } + public DateTime Sent { get; set; } + public Color Color { get; set; } + public bool IsChatMessage { get; set; } + } +} diff --git a/SpacePew/Networking/NetworkMessenger.cs b/SpacePew/Networking/NetworkMessenger.cs new file mode 100644 index 0000000..c743e4b --- /dev/null +++ b/SpacePew/Networking/NetworkMessenger.cs @@ -0,0 +1,374 @@ +using System; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.Linq; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Audio; +using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework.GamerServices; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +using Microsoft.Xna.Framework.Media; +using Microsoft.Xna.Framework.Net; +using Microsoft.Xna.Framework.Storage; +using SpacePew.Models; + + +namespace SpacePew.Networking +{ + /// + /// TODO: This is not really a network messenger yet, so we need to change the functionality a little (send all message over network in the loop down there) + /// + public class NetworkMessenger : Microsoft.Xna.Framework.GameComponent, IDrawable + { + private readonly MainGame _game; + private SpriteBatch _spriteBatch; + private SpriteFont _netFont; + private Rectangle _chatRectangle; + private Rectangle _textBounds; + private static UdpClient _client; + + private static List _messages; + + private const int DefaultMessageLifeTime = 10; + + public NetworkMessenger(MainGame game, UdpClient client) + : base(game) + { + _game = game; + _client = client; + _messages = new List(); + } + + /// + /// Allows the game component to perform any initialization it needs to before starting + /// to run. This is where it can query for any required services and load content. + /// + public override void Initialize() + { + _spriteBatch = new SpriteBatch(_game.GraphicsDevice); + _netFont = _game.Content.Load("Fonts\\Default"); + _chatRectangle = new Rectangle(300, 20, 300, _game.GraphicsDevice.Viewport.Height - 40); + _textBounds = new Rectangle(); + + base.Initialize(); + } + + public static void AddDeath(IEntity entity) + { + _client.SendDeath(entity); + } + + public static void DisplayMessage(NetworkMessage message) + { + _messages.Add(message); + } + + public static void SendMessage(NetworkMessage message) + { + _messages.Add(message); + _client.SendMessage(message); + + if (message.IsChatMessage) + { + SoundManager.Play("Audio/Waves/message", _client.LocalPlayer.Position); + } + } + + private string _chatMessage = string.Empty; + + private KeyboardState _oldKeyboardState; + private KeyboardState _currentKeyboardState; + + bool chatting = false; + + /// + /// Allows the game component to update itself. + /// + /// Provides a snapshot of timing values. + public override void Update(GameTime gameTime) + { + MainGame.IsKeyboardInUse = chatting; + + _oldKeyboardState = _currentKeyboardState; + + _currentKeyboardState = Keyboard.GetState(); + Keys[] pressedKeys = _currentKeyboardState.GetPressedKeys(); + + bool isShiftDown = pressedKeys.Any(KeyboardHelper.IsShift); + + foreach (Keys key in pressedKeys) + { + if (!_oldKeyboardState.IsKeyUp(key)) continue; + + if (key == Keys.T && !chatting) + { + chatting = true; + continue; + } + + if (!chatting) continue; + + switch (key) + { + case Keys.Back: + _chatMessage = _chatMessage.Remove(_chatMessage.Length - 1, 1); + break; + case Keys.Space: + _chatMessage = _chatMessage + " "; + break; + default: + if (key == Keys.Enter && chatting) + { + chatting = false; + SendMessage(new NetworkMessage() + { + Color = _client.LocalPlayer.Color, + Message = + string.Format("{0}: {1}", _client.LocalPlayer.Owner, + _chatMessage), + Sent = DateTime.Now, + IsChatMessage = true + }); + + _chatMessage = string.Empty; + } + else + { + if (isShiftDown) + { + _chatMessage += KeyboardHelper.ToPrintableString(key, KbModifiers.None).ToUpper(); + } + else + { + _chatMessage += KeyboardHelper.ToPrintableString(key, KbModifiers.None); + } + } + break; + } + } + + for (int i = _messages.Count - 1; i >= 0; i--) + { + if (_messages[i].Sent.AddSeconds(DefaultMessageLifeTime) <= DateTime.Now) + { + _messages.RemoveAt(i); + } + } + + base.Update(gameTime); + } + + public void Draw(GameTime gameTime) + { + _spriteBatch.Begin(); + + int yOffset = 0; + + if (chatting) + { + _spriteBatch.DrawString(_netFont, "Chat: " + _chatMessage, + new Vector2(300, _game.GraphicsDevice.Viewport.Height - 140), Color.White); + } + + foreach (var message in _messages) + { + DrawString(_spriteBatch, + _netFont, + message.Message, + _chatRectangle, + message.Color, + TextAlignment.TopLeft, + true, + new Vector2(0, (_messages.IndexOf(message) * 15) + yOffset), + out _textBounds); + + yOffset += _textBounds.Height; + } + + _spriteBatch.End(); + } + + public int DrawOrder + { + get { return 5; } + } + + public bool Visible + { + get { return true; } + } + + private enum TextAlignment + { + Top, + Left, + Middle, + Right, + Bottom, + TopLeft, + TopRight, + BottomLeft, + BottomRight + } + + private static void DrawString(SpriteBatch sb, SpriteFont fnt, string text, Rectangle r, + Color col, TextAlignment align, bool performWordWrap, Vector2 offsett, out Rectangle textBounds) + { + textBounds = r; + if (text == null) return; + if (text == string.Empty) return; + + var lines = new StringCollection(); + lines.AddRange(text.Split(new string[] { "\\n" }, StringSplitOptions.RemoveEmptyEntries)); + + Rectangle tmprect = ProcessLines(fnt, r, performWordWrap, lines); + + var pos = new Vector2(r.X, r.Y); + int aStyle = 0; + + switch (align) + { + case TextAlignment.Bottom: + pos.Y = r.Bottom - tmprect.Height; + aStyle = 1; + break; + case TextAlignment.BottomLeft: + pos.Y = r.Bottom - tmprect.Height; + aStyle = 0; + break; + case TextAlignment.BottomRight: + pos.Y = r.Bottom - tmprect.Height; + aStyle = 2; + break; + case TextAlignment.Left: + pos.Y = r.Y + ((r.Height / 2) - (tmprect.Height / 2)); + aStyle = 0; + break; + case TextAlignment.Middle: + pos.Y = r.Y + ((r.Height / 2) - (tmprect.Height / 2)); + aStyle = 1; + break; + case TextAlignment.Right: + pos.Y = r.Y + ((r.Height / 2) - (tmprect.Height / 2)); + aStyle = 2; + break; + case TextAlignment.Top: + aStyle = 1; + break; + case TextAlignment.TopLeft: + aStyle = 0; + break; + case TextAlignment.TopRight: + aStyle = 2; + break; + } + + foreach (string txt in lines) + { + Vector2 size = fnt.MeasureString(txt); + switch (aStyle) + { + case 0: + pos.X = r.X; + break; + case 1: + pos.X = r.X + ((r.Width / 2) - (size.X / 2)); + break; + case 2: + pos.X = r.Right - size.X; + break; + } + + sb.DrawString(fnt, txt, pos + offsett, col); + pos.Y += fnt.LineSpacing; + } + + textBounds = tmprect; + } + + private static Rectangle ProcessLines(SpriteFont fnt, Rectangle r, bool performWordWrap, StringCollection lines) + { + Rectangle bounds = r; + bounds.Width = 0; + bounds.Height = 0; + int index = 0; + float Width; + bool lineInserted = false; + while (index < lines.Count) + { + string linetext = lines[index]; + + Vector2 size = fnt.MeasureString(linetext); + + if (performWordWrap && size.X > r.Width) + { + string endspace = string.Empty; + if (linetext.EndsWith(" ")) + { + endspace = " "; + linetext = linetext.TrimEnd(); + } + + int i = linetext.LastIndexOf(" ", StringComparison.InvariantCulture); + if (i != -1) + { + string lastword = linetext.Substring(i + 1); + + if (index == lines.Count - 1) + { + lines.Add(lastword); + lineInserted = true; + } + else + { + if (lineInserted) + { + lines[index + 1] = lastword + endspace + lines[index + 1]; + } + else + { + lines.Insert(index + 1, lastword); + lineInserted = true; + } + } + + lines[index] = linetext.Substring(0, i + 1); + + } + else + { + lineInserted = false; + size = fnt.MeasureString(lines[index]); + if (size.X > bounds.Width) Width = size.X; + bounds.Height += fnt.LineSpacing; + index++; + } + } + else + { + lineInserted = false; + size = fnt.MeasureString(lines[index]); + if (size.X > bounds.Width) bounds.Width = (int)size.X; + bounds.Height += fnt.LineSpacing; + index++; + } + } + + return bounds; + } + + + event EventHandler IDrawable.DrawOrderChanged + { + add { } + remove { } + } + + event EventHandler IDrawable.VisibleChanged + { + add { } + remove { } + } + } +} \ No newline at end of file diff --git a/SpacePew/Networking/ScoreBoard.cs b/SpacePew/Networking/ScoreBoard.cs new file mode 100644 index 0000000..db63320 --- /dev/null +++ b/SpacePew/Networking/ScoreBoard.cs @@ -0,0 +1,135 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Audio; +using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework.GamerServices; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +using Microsoft.Xna.Framework.Media; +using Microsoft.Xna.Framework.Net; +using Microsoft.Xna.Framework.Storage; +using SpacePew.Models; + + +namespace SpacePew.Networking +{ + /// + /// This is a game component that implements IUpdateable. + /// + public class ScoreBoard : Microsoft.Xna.Framework.GameComponent, IDrawable + { + public static List CurrentScoreBoard { get; set; } + + private readonly MainGame _game; + private readonly UdpClient _client; + private Texture2D _scoreBoardTexture; + + private SpriteBatch _spriteBatch; + + private SpriteFont _scoreFont; + + public ScoreBoard(MainGame game, UdpClient client) + : base(game) + { + _game = game; + _client = client; + + CurrentScoreBoard = new List(); + } + + /// + /// Allows the game component to perform any initialization it needs to before starting + /// to run. This is where it can query for any required services and load content. + /// + public override void Initialize() + { + _spriteBatch = new SpriteBatch(_game.GraphicsDevice); + + _scoreFont = _game.Content.Load("Fonts\\Default"); + _scoreBoardTexture = _game.Content.Load("scoreboard"); + + base.Initialize(); + } + + bool requestedScoreBoard; + + /// + /// Allows the game component to update itself. + /// + /// Provides a snapshot of timing values. + public override void Update(GameTime gameTime) + { + if (Keyboard.GetState().IsKeyDown(Keys.Tab)) + { + if (!requestedScoreBoard) + { + _client.RequestScoreBoard(); + } + + requestedScoreBoard = true; + } + else + { + requestedScoreBoard = false; + } + + base.Update(gameTime); + } + + public void Draw(GameTime gameTime) + { + if (Keyboard.GetState().IsKeyDown(Keys.Tab)) + { + _spriteBatch.Begin(); + + _spriteBatch.Draw(_scoreBoardTexture, new Vector2(20, 20), Color.White); + + foreach (ScoreBoardItem item in CurrentScoreBoard) + { + Player player = ((List)_client.Players).Find(p => p.Owner == item.Name); + + if (player != null) + { + Color color = player.Color; + + int yOffset = (CurrentScoreBoard.IndexOf(item) * 15) + 70; + + _spriteBatch.DrawString(_scoreFont, item.Name, new Vector2(35, yOffset), color); + _spriteBatch.DrawString(_scoreFont, item.Kills.ToString(CultureInfo.InvariantCulture), new Vector2(185, yOffset), color); + _spriteBatch.DrawString(_scoreFont, item.Deaths.ToString(CultureInfo.InvariantCulture), new Vector2(243, yOffset), color); + _spriteBatch.DrawString(_scoreFont, (DateTime.Now - item.Joined).Minutes.ToString(CultureInfo.InvariantCulture), + new Vector2(314, yOffset), color); + _spriteBatch.DrawString(_scoreFont, item.Ping.ToString(CultureInfo.InvariantCulture), new Vector2(373, yOffset), color); + } + } + + _spriteBatch.End(); + } + } + + public int DrawOrder + { + get { return 5; } + } + + public bool Visible + { + get { return true; } + } + + event EventHandler IDrawable.DrawOrderChanged + { + add { } + remove { } + } + + event EventHandler IDrawable.VisibleChanged + { + add { } + remove { } + } + } +} \ No newline at end of file diff --git a/SpacePew/Networking/ScoreBoardItem.cs b/SpacePew/Networking/ScoreBoardItem.cs new file mode 100644 index 0000000..3a137c8 --- /dev/null +++ b/SpacePew/Networking/ScoreBoardItem.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SpacePew.Networking +{ + public class ScoreBoardItem + { + public string Name { get; set; } + public int Kills { get; set; } + public int Deaths { get; set; } + public DateTime Joined { get; set; } + public long Ping { get; set; } + } +} diff --git a/SpacePew/Networking/StreamingClient.cs b/SpacePew/Networking/StreamingClient.cs new file mode 100644 index 0000000..e6939c9 --- /dev/null +++ b/SpacePew/Networking/StreamingClient.cs @@ -0,0 +1,64 @@ +using System.Diagnostics; +using Lidgren.Network; +using System.IO; +using SpacePew.Common; + +namespace SpacePew.Networking +{ + public class StreamingClient + { + private FileStream _inputStream; + private int _sentOffset; + private int _chunkLen; + private byte[] _tmpBuffer; + private NetConnection _connection; + + public StreamingClient(NetConnection conn, string fileName) + { + _connection = conn; + _inputStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); + _chunkLen = _connection.Peer.Configuration.MaximumTransmissionUnit - 20; + _tmpBuffer = new byte[_chunkLen]; + _sentOffset = 0; + } + + public void Heartbeat() + { + if (_inputStream == null) + return; + + if (_connection.CanSendImmediately(NetDeliveryMethod.ReliableOrdered, 1)) + { + long remaining = _inputStream.Length - _sentOffset; + int sendBytes = (remaining > _chunkLen ? _chunkLen : (int)remaining); + + _inputStream.Read(_tmpBuffer, 0, sendBytes); + + NetOutgoingMessage message; + if (_sentOffset == 0) + { + message = _connection.Peer.CreateMessage(sendBytes + 8); + message.Write((int)UdpNetworkPacketType.LevelResponse); + message.Write((ulong)_inputStream.Length); + message.Write(Path.GetFileName(_inputStream.Name)); + + _connection.SendMessage(message, NetDeliveryMethod.ReliableOrdered, 1); + } + + message = _connection.Peer.CreateMessage(sendBytes + 8); + message.Write((int)UdpNetworkPacketType.LevelResponse); + message.Write(_tmpBuffer, 0, sendBytes); + + _connection.SendMessage(message, NetDeliveryMethod.ReliableOrdered, 1); + _sentOffset += sendBytes; + + if (remaining - sendBytes <= 0) + { + _inputStream.Close(); + _inputStream.Dispose(); + _inputStream = null; + } + } + } + } +} diff --git a/SpacePew/Networking/UdpBase.cs b/SpacePew/Networking/UdpBase.cs new file mode 100644 index 0000000..93e8c26 --- /dev/null +++ b/SpacePew/Networking/UdpBase.cs @@ -0,0 +1,62 @@ +using System.IO; +using System.IO.Compression; +using System.Runtime.Serialization.Formatters.Binary; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Lidgren.Network; +using SpacePew.Common; +using System.Net; + +namespace SpacePew.Networking +{ + public abstract class UdpBase + { + protected Color[] _playerColors = + { + Color.Red, + Color.Blue, + Color.Green, + Color.Yellow, + Color.Purple, + Color.White, + Color.Red, + Color.LightBlue, + Color.Orange, + Color.Gray + }; + + protected byte[] ObjectToByteArray(object obj) + { + if (obj == null) + return null; + + var memoryStream = new MemoryStream(); + var gZipStream = new GZipStream(memoryStream, CompressionMode.Compress); + var formatter = new BinaryFormatter(); + formatter.Serialize(gZipStream, obj); + + gZipStream.Close(); + memoryStream.Close(); + + return memoryStream.ToArray(); + } + + protected object ByteArrayToObject(byte[] bytes) + { + var memoryStream = new MemoryStream(); + var gzipStream = new GZipStream(memoryStream, CompressionMode.Decompress); + + var formatter = new BinaryFormatter(); + + memoryStream.Write(bytes, 0, bytes.Length); + memoryStream.Seek(0, SeekOrigin.Begin); + + var obj = formatter.Deserialize(gzipStream); + + gzipStream.Close(); + memoryStream.Close(); + + return obj; + } + } +} diff --git a/SpacePew/Networking/UdpClient.cs b/SpacePew/Networking/UdpClient.cs new file mode 100644 index 0000000..020685c --- /dev/null +++ b/SpacePew/Networking/UdpClient.cs @@ -0,0 +1,586 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Globalization; +using System.IO; +using System.Text; +using System.Threading; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; + +using SpacePew.Extensions; +using Lidgren.Network; +using System.Collections; +using SpacePew.Models; +using SpacePew.Common; +using System.Net; + +namespace SpacePew.Networking +{ + public class UdpClient : UdpBase + { + private string _playerName; + private readonly NetClient _client; + private Level _level; + + private readonly MainGame _game; + + private int _colorIndex; + + private IPEndPoint _masterServerEndpoint; + + private UdpClient() + { + + } + + public UdpClient(MainGame game) + { + _game = game; + _masterServerEndpoint = NetUtility.Resolve("spacepew.wodanaz.se", Constants.MasterServerPort); // TODO: Fixa upp masterserver någonstans + EntitiesToSend = new List(); + + var configuration = new NetPeerConfiguration("SpacePew"); + + configuration.EnableMessageType(NetIncomingMessageType.DiscoveryRequest); + configuration.EnableMessageType(NetIncomingMessageType.DiscoveryResponse); + configuration.EnableMessageType(NetIncomingMessageType.UnconnectedData); + configuration.EnableMessageType(NetIncomingMessageType.NatIntroductionSuccess); + + _client = new NetClient(configuration); + _client.Start(); + } + + public List EntitiesToSend { get; set; } + + public NetClient CurrentClient + { + get { return _client; } + } + + private Player _localPlayer; + public Player LocalPlayer + { + get + { + return _localPlayer; + } + set + { + _localPlayer = value; + } + } + + private readonly List _players = new List(); + public IList Players + { + get + { + return _players; + } + } + + public bool IsSessionAlive + { + get + { + return _client != null && _client.ConnectionStatus == NetConnectionStatus.Connected; + } + } + + public void JoinSession(string host, string playerName) + { + JoinSession(new IPEndPoint(System.Net.Dns.GetHostAddresses(host)[0], SpacePew.Common.Constants.GameServerPort), playerName); + } + + public void JoinSession(IPEndPoint endpoint, string playerName) + { + _playerName = playerName; + + var hailMessage = _client.CreateMessage(playerName); + _client.Connect(endpoint, hailMessage); + + while (_client.ServerConnection == null) + { + // wait + } + + System.Threading.Thread.Sleep(500); // TODO: nya lidgren är dumt i huvet, grotta i vad skiten sätter i någon tråd se'n + + System.Diagnostics.Trace.WriteLine("Got server connection..."); + WriteLevelRequest(); + WaitForLevel(); + WriteJoiningMessage(); + WaitForJoin(); + + if (_level.OggVorbisSong != null) + { + new Thread(_level.PlayLevelSong).Start(); + } + } + + public void ExitSession(string reason) + { + var message = _client.CreateMessage(); + + message.Write((int)UdpNetworkPacketType.PlayerDisconnecting); + message.Write(_playerName); + + _client.SendMessage(message, NetDeliveryMethod.ReliableOrdered); + + _client.Disconnect(reason); + } + + public void SendMessage(NetworkMessage message) + { + var netMessage = _client.CreateMessage(); + + netMessage.Write((int)UdpNetworkPacketType.MessageSent); + netMessage.Write(message.Color.ToVector3()); + netMessage.Write(message.Sent.ToString(CultureInfo.InvariantCulture)); + netMessage.Write(message.Message); + netMessage.Write(message.IsChatMessage); + + _client.SendMessage(netMessage, NetDeliveryMethod.UnreliableSequenced); + } + + public void RequestScoreBoard() + { + var message = _client.CreateMessage(); + + message.Write((int)UdpNetworkPacketType.RequestingScoreboard); + + _client.SendMessage(message, NetDeliveryMethod.UnreliableSequenced); + } + + private void ReadMessage(NetIncomingMessage netMessage) + { + var color = new Color(netMessage.ReadVector3()); + var sent = DateTime.Parse(netMessage.ReadString(), CultureInfo.InvariantCulture); + string message = netMessage.ReadString(); + bool isChatMessage = netMessage.ReadBoolean(); + + NetworkMessenger.DisplayMessage(new NetworkMessage() { Color = color, Sent = sent, Message = message, IsChatMessage = isChatMessage}); + } + + public void SendDeath(IEntity killedBy) + { + var message = _client.CreateMessage(); + + message.Write((int)UdpNetworkPacketType.PlayerDying); + message.Write(_playerName); + message.Write(killedBy.Owner); // TODO: server side score board + + _client.SendMessage(message, NetDeliveryMethod.ReliableUnordered); + } + + private void WriteLevelRequest() + { + Trace.WriteLine("WriteLevelRequest"); + var message = _client.CreateMessage(); + + message.Write((int)UdpNetworkPacketType.LevelRequest); + + _client.SendMessage(message, NetDeliveryMethod.ReliableUnordered); + System.Diagnostics.Trace.WriteLine("Sent level request..."); + } + + private void WriteJoiningMessage() + { + Trace.WriteLine("WriteJoiningMessage"); + + var message = _client.CreateMessage(); + + message.Write((int)UdpNetworkPacketType.PlayerJoining); + message.Write(_playerName); + + _client.SendMessage(message, NetDeliveryMethod.ReliableUnordered); + } + + private void WaitForJoin() + { + System.Diagnostics.Trace.WriteLine("WaitForJoin"); + bool hasAnswer = false; + while (!hasAnswer) // wait for answer + { + NetIncomingMessage message; + while ((message = _client.ReadMessage()) != null) + { + if (message.MessageType == NetIncomingMessageType.Data) + { + var packetType = (UdpNetworkPacketType)message.ReadInt32(); + if (packetType == UdpNetworkPacketType.PlayerJoined) + { + string owner = message.ReadString(); + + int colorIndex = message.ReadInt32(); + Color color = _playerColors[colorIndex]; + + _colorIndex = Array.IndexOf(_playerColors, color); + + Vector2 pos = message.ReadVector2(); + Vector2 velocity = message.ReadVector2(); + float angle = message.ReadFloat(); + int collisionSize = message.ReadInt32(); + var collisionData = message.ReadBytes(collisionSize); + + _level.CollisionData = (bool[])ByteArrayToObject(collisionData); + _level.BuildLevelFromCollisionData(); + + Player p = Player.CreatePlayer(pos, owner); + p.Color = color; + p.Position = pos; + p.Velocity = velocity; + p.Angle = angle; + + _localPlayer = p; + _players.Add(p); + + hasAnswer = true; + } + } + } + } + } + + public void Update() + { + NetIncomingMessage message; + + while ((message = _client.ReadMessage()) != null) + { + ReadBuffer(message); + } + + if (EntitiesToSend.Count > 0) + { + WriteServerShots(); + } + + WritePlayerUpdatePacket(); + } + + private void WriteServerShots() + { + SendEntities(EntitiesToSend); + } + + private void WritePlayerUpdatePacket() + { + var message = _client.CreateMessage(); + + message.Write((int)UdpNetworkPacketType.PlayerUpdate); + message.Write(_localPlayer.Owner); + message.Write(_colorIndex); + message.Write(_localPlayer.Position); + message.Write(_localPlayer.Velocity); + message.Write(_localPlayer.Angle); + message.Write(_localPlayer.Health); + + _client.SendMessage(message, NetDeliveryMethod.UnreliableSequenced); + } + + private void ReadBuffer(NetIncomingMessage message) + { + switch (message.MessageType) + { + case NetIncomingMessageType.Data: + { + var packetType = (UdpNetworkPacketType)message.ReadInt32(); + + switch (packetType) + { + case UdpNetworkPacketType.PlayerUpdate: + ReadPlayers(message); + break; + case UdpNetworkPacketType.EntitiesCreated: + ReadEntities(message); + break; + case UdpNetworkPacketType.MessageReceived: + ReadMessage(message); + break; + case UdpNetworkPacketType.PlayerDied: + ReadPlayerDied(message); + break; + case UdpNetworkPacketType.SendingScoreBoard: + ReadScoreBoard(message); + break; + case UdpNetworkPacketType.EntityCreated: + ReadEntity(message); + break; + case UdpNetworkPacketType.PlayerDisconnected: + RemovePlayer(message); + break; + case UdpNetworkPacketType.LevelResponse: + ReadLevel(message); + break; + } + } + break; + } + + _client.Recycle(message); + } + + private void WaitForLevel() + { + System.Diagnostics.Trace.WriteLine("WaitForLevel"); + while (_level == null) // wait for level + { + NetIncomingMessage message; + while ((message = _client.ReadMessage()) != null) + { + if (message.MessageType == NetIncomingMessageType.Data) + { + var packetType = (UdpNetworkPacketType)message.ReadInt32(); + if (packetType == UdpNetworkPacketType.LevelResponse) + { + ReadLevel(message); + } + } + } + } + } + + private static ulong _levelLength; + private static ulong _levelReceived; + private static FileStream _levelWriteStream; + private static int _levelTimeStarted; + string levelPath = string.Empty; + + private void ReadLevel(NetIncomingMessage message) + { + int chunkLen = message.LengthBytes; + if (_levelLength == 0) + { + _levelLength = message.ReadUInt64(); + string filename = message.ReadString(); + + var downloadLevelFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Downloads\\Levels\\"); + levelPath = Path.Combine(downloadLevelFolder, filename); + + _levelWriteStream = new FileStream(levelPath, FileMode.Create, FileAccess.Write, FileShare.None); + _levelTimeStarted = Environment.TickCount; + + return; + } + + byte[] all = message.ReadBytes(message.LengthBytes - 4); // offset for UdpNetworkPacketType + _levelReceived += (ulong)all.Length; + _levelWriteStream.Write(all, 0, all.Length); + + //int v = (int)(((float)_levelReceived / (float)_levelLength) * 100.0f); + //int passed = Environment.TickCount - _levelTimeStarted; + //double psec = (double)passed / 1000.0; + //double bps = (double)_levelReceived / psec; + + //var passedText = NetUtility.ToHumanReadable((long)bps) + " per second"; + + if (_levelReceived >= _levelLength) + { + Trace.WriteLine("Got level"); + _levelWriteStream.Flush(); + _levelWriteStream.Close(); + _levelWriteStream.Dispose(); + + _level = LevelLoader.LoadLevel(levelPath, _game.Content, _game.GraphicsDevice); + _game.Level = _level; + } + } + + private void RemovePlayer(NetIncomingMessage message) + { + string name = message.ReadString(); + + Player player = _players.Find(p => p.Owner == name); + if (player != null) + { + EntityFactory.Instance.RemoveEntity(player); + + NetworkMessenger.DisplayMessage(new NetworkMessage() + { + Color = player.Color, + Message = string.Format("{0} has left.", player.Owner), + Sent = DateTime.Now + }); + + _players.Remove(player); + } + } + + private void ReadScoreBoard(NetIncomingMessage message) + { + int count = message.ReadInt32(); + + var scoreBoard = new List(); + + for (int i = 0; i < count; i++) + { + var item = new ScoreBoardItem + { + Name = message.ReadString(), + Kills = message.ReadInt32(), + Deaths = message.ReadInt32(), + Joined = DateTime.Parse(message.ReadString(), CultureInfo.InvariantCulture), + Ping = message.ReadInt64() + }; + + scoreBoard.Add(item); + } + + ScoreBoard.CurrentScoreBoard = scoreBoard; + } + + private void ReadPlayerDied(NetIncomingMessage message) + { + string playerName = message.ReadString(); + + Player player = _players.Find(p => p.Owner == playerName); + + if (player != null) + { + _game.AddExplosion(player.Position, 1f); + player.Kill(); + } + } + + private void ReadEntities(NetIncomingMessage message) + { + int count = message.ReadInt32(); + for (int i = 0; i < count; i++) + { + string entityType = message.ReadString(); + string owner = message.ReadString(); + Vector2 pos = message.ReadVector2(); + Vector2 velocity = message.ReadVector2(); + float angle = message.ReadFloat(); + + EntityFactory.Instance.CreateEntity(Type.GetType(entityType), owner, pos, velocity, angle); + } + } + + private void ReadEntity(NetIncomingMessage message) + { + string entityType = message.ReadString(); + string owner = message.ReadString(); + Vector2 pos = message.ReadVector2(); + Vector2 velocity = message.ReadVector2(); + float angle = message.ReadFloat(); + + EntityFactory.Instance.CreateEntity(Type.GetType(entityType), owner, pos, velocity, angle); + } + + private void ReadPlayers(NetIncomingMessage message) + { + string owner = message.ReadString(); + + int colorIndex = message.ReadInt32(); + Color color = _playerColors[colorIndex]; + + Vector2 pos = message.ReadVector2(); + Vector2 velocity = message.ReadVector2(); + float angle = message.ReadFloat(); + + if (owner == LocalPlayer.Owner) + return; + + Player player = _players.Find(p => p.Owner == owner); + if (player == null) + { + Player p = Player.CreatePlayer(new Vector2(300, 280), owner); + + p.Position = pos; + p.Color = color; + p.Velocity = velocity; + p.Angle = angle; + p.Owner = owner; + + _players.Add(p); + + NetworkMessenger.DisplayMessage(new NetworkMessage() + { + Color = p.Color, + Message = string.Format("{0} has joined.", p.Owner), + Sent = DateTime.Now + }); + } + else + { + int index = _players.IndexOf(player); + player.Owner = owner; + player.Color = color; + player.Position = pos; + player.Velocity = velocity; + player.Angle = angle; + + _players[index] = player; + } + } + + public void SendEntities(List entities) + { + var message = _client.CreateMessage(); + + message.Write((int)UdpNetworkPacketType.EntitiesCreated); + message.Write(entities.Count); + + lock (EntitiesToSend) + { + for (int i = entities.Count - 1; i >= 0; i--) + { + message.Write(entities[i].GetType().ToString()); + message.Write(_localPlayer.Owner); + message.Write(entities[i].Position); + message.Write(entities[i].Velocity); + message.Write(entities[i].Angle); + } + } + + EntitiesToSend.Clear(); + + _client.SendMessage(message, NetDeliveryMethod.UnreliableSequenced); + } + + public void SendEntity(IEntity entity) + { + var message = _client.CreateMessage(); + + message.Write((int)UdpNetworkPacketType.EntityCreated); + message.Write(entity.GetType().ToString()); + message.Write(_localPlayer.Owner); + message.Write(entity.Position); + message.Write(entity.Velocity); + message.Write(entity.Angle); + + _client.SendMessage(message, NetDeliveryMethod.UnreliableSequenced); + } + + public void GetServerList() + { + var listRequest = _client.CreateMessage(); + listRequest.Write((byte)UdpNetworkPacketType.RequestHostList); + _client.SendUnconnectedMessage(listRequest, _masterServerEndpoint); + } + + public void RequestNATIntroduction(long hostid) + { + if (hostid == 0) + { + return; + } + + if (_masterServerEndpoint == null) + throw new Exception("Must connect to master server first!"); + + IPAddress mask; + var message = _client.CreateMessage(); + message.Write((byte)UdpNetworkPacketType.RequestIntroduction); + + message.Write(new IPEndPoint(NetUtility.GetMyAddress(out mask), _client.Port)); + message.Write(hostid); + message.Write(_playerName); + + _client.SendUnconnectedMessage(message, _masterServerEndpoint); + } + } +} diff --git a/SpacePew/Networking/UdpNetworkGui.cs b/SpacePew/Networking/UdpNetworkGui.cs new file mode 100644 index 0000000..8bf4b3e --- /dev/null +++ b/SpacePew/Networking/UdpNetworkGui.cs @@ -0,0 +1,361 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Audio; +using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework.GamerServices; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework.Input; +using Microsoft.Xna.Framework.Media; +using Microsoft.Xna.Framework.Net; +using Microsoft.Xna.Framework.Storage; +using System.Threading; +using SpacePew.Models; +#if WINDOWS +using TomShane.Neoforce.Controls; +using Lidgren.Network; +using System.Net; +using System.Diagnostics; +#endif + +namespace SpacePew.Networking +{ + /// + /// This is a game component that implements IUpdateable. + /// +#if WINDOWS + public class UdpNetworkGui : Microsoft.Xna.Framework.DrawableGameComponent + { + private MainGame _game; + + private UdpClient _client; + private UdpServer _server; + + private GraphicsDeviceManager _graphics; + + private Manager _manager; + private Window _window; + private TabControl _tabControl; + private TextBox _nameTextBox; + private TextBox _nameTextBox2; + private TextBox _ipTextBox; + private Label _nameLabel; + private Label _nameLabel2; + private ListBox _localGamesListBox; + + private Label _joinErrorLabel; + + private Label _ipLabel; + private Button _createButton; + private Button _joinButton; + private Button _refreshButton; + + public UdpNetworkGui(MainGame game, GraphicsDeviceManager graphics, UdpClient client, UdpServer server) + : base(game) + { + _game = game; + _graphics = graphics; + _client = client; + _server = server; + + _client.CurrentClient.Start(); + + _manager = new Manager(game, _graphics, "Default"); + _manager.Skin = new Skin(_manager, "Default"); + _manager.AutoCreateRenderTarget = true; + _manager.TargetFrames = 60; + _manager.LogUnhandledExceptions = false; + _manager.ShowSoftwareCursor = true; + } + + /// + /// Allows the game component to perform any initialization it needs to before starting + /// to run. This is where it can query for any required services and load content. + /// + public override void Initialize() + { + base.Initialize(); + + _window = new Window(_manager); + _window.Init(); + _window.Text = "Space, pew pew!"; + _window.Width = 480; + _window.Height = 200; + _window.Center(); + _window.CloseButtonVisible = false; + _window.Resizable = false; + _window.Visible = true; + + _tabControl = new TabControl(_manager); + _tabControl.Width = _window.Width; + _tabControl.Height = _window.Height; + _tabControl.Parent = _window; + + _nameLabel = new Label(_manager); + _nameLabel.Init(); + _nameLabel.Width = 100; + _nameLabel.Height = 24; + _nameLabel.Text = "Name"; + _nameLabel.Left = 10; + _nameLabel.Top = 10; + + _nameTextBox = new TextBox(_manager); + _nameTextBox.Init(); + _nameTextBox.Width = 140; + _nameTextBox.Height = 24; + _nameTextBox.Left = 50; + _nameTextBox.Top = 10; + + _nameLabel2 = new Label(_manager); + _nameLabel2.Init(); + _nameLabel2.Width = 100; + _nameLabel2.Height = 24; + _nameLabel2.Text = "Name"; + _nameLabel2.Left = 10; + _nameLabel2.Top = 10; + + _nameTextBox2 = new TextBox(_manager); + _nameTextBox2.Init(); + _nameTextBox2.Width = 140; + _nameTextBox2.Height = 24; + _nameTextBox2.Left = 50; + _nameTextBox2.Top = 10; + + _createButton = new Button(_manager); + _createButton.Init(); + _createButton.Text = "Create game"; + _createButton.Width = 140; + _createButton.Height = 24; + _createButton.Left = 50; + _createButton.Top = 40; + _createButton.Click += _createButton_Click; + + _ipLabel = new Label(_manager); + _ipLabel.Init(); + _ipLabel.Width = 100; + _ipLabel.Height = 24; + _ipLabel.Text = "Host"; + _ipLabel.Left = 10; + _ipLabel.Top = 40; + + _ipTextBox = new TextBox(_manager); + _ipTextBox.Init(); + _ipTextBox.Width = 140; + _ipTextBox.Height = 24; + _ipTextBox.Left = 50; + _ipTextBox.Top = 40; + + _joinErrorLabel = new Label(_manager); + _joinErrorLabel.Init(); + _joinErrorLabel.Width = 460; + _joinErrorLabel.Height = 24; + _joinErrorLabel.Left = 10; + _joinErrorLabel.Top = 110; + _joinErrorLabel.Text = string.Empty; + _joinErrorLabel.TextColor = Color.DarkRed; + + _joinButton = new Button(_manager); + _joinButton.Init(); + _joinButton.Text = "Join game"; + _joinButton.Width = 140; + _joinButton.Height = 24; + _joinButton.Left = 50; + _joinButton.Top = 70; + _joinButton.Anchor = Anchors.Bottom; + _joinButton.Click += _joinButton_Click; + + _localGamesListBox = new ListBox(_manager); + _localGamesListBox.Init(); + _localGamesListBox.Left = 200; + _localGamesListBox.Top = 10; + _localGamesListBox.Height = 84; + _localGamesListBox.Width = 254; + _localGamesListBox.ItemIndexChanged += new TomShane.Neoforce.Controls.EventHandler(_localGamesListBox_ItemIndexChanged); + + _refreshButton = new Button(_manager); + _refreshButton.Init(); + _refreshButton.Text = "Refresh"; + _refreshButton.Width = 140; + _refreshButton.Height = 24; + _refreshButton.Left = 314; + _refreshButton.Top = 104; + _refreshButton.Click += _refreshButton_Click; + + _nameTextBox.Click += ChangeTextBoxColor; + _nameTextBox2.Click += ChangeTextBoxColor; + _ipTextBox.Click += ChangeTextBoxColor; + + _tabControl.AddPage(); + _tabControl.AddPage(); + _tabControl.TabPages[0].Text = "Create"; + _tabControl.TabPages[0].Add(_nameLabel); + _tabControl.TabPages[0].Add(_nameTextBox); + _tabControl.TabPages[0].Add(_createButton); + + _tabControl.TabPages[1].Text = "Join"; + _tabControl.TabPages[1].Add(_nameLabel2); + _tabControl.TabPages[1].Add(_nameTextBox2); + _tabControl.TabPages[1].Add(_ipLabel); + _tabControl.TabPages[1].Add(_ipTextBox); + _tabControl.TabPages[1].Add(_joinButton); + _tabControl.TabPages[1].Add(_joinErrorLabel); + _tabControl.TabPages[1].Add(_localGamesListBox); + _tabControl.TabPages[1].Add(_refreshButton); + + _manager.Add(_window); + _manager.Initialize(); + + _client.CurrentClient.DiscoverLocalPeers(SpacePew.Common.Constants.GameServerPort); + } + + private void _refreshButton_Click(object sender, TomShane.Neoforce.Controls.EventArgs e) + { + _localGamesListBox.Items.Clear(); + _client.CurrentClient.DiscoverLocalPeers(SpacePew.Common.Constants.GameServerPort); + } + + private void ChangeTextBoxColor(object sender, TomShane.Neoforce.Controls.EventArgs e) + { + ((TomShane.Neoforce.Controls.Control)sender).Color = Color.TransparentBlack; + } + + private void _localGamesListBox_ItemIndexChanged(object sender, TomShane.Neoforce.Controls.EventArgs e) + { + _ipTextBox.Text = _localGamesListBox.Items[_localGamesListBox.ItemIndex].ToString(); + } + + private void _createButton_Click(object sender, TomShane.Neoforce.Controls.EventArgs e) + { + _nameTextBox.Color = string.IsNullOrEmpty(_nameTextBox.Text) ? Color.Pink : Color.TransparentBlack; + + if (_nameTextBox.Color == Color.Pink) + { + return; + } + + string levelPath = AppDomain.CurrentDomain.BaseDirectory + "\\Levels\\hippie.zip"; // TODO: Vlja + var level = LevelLoader.LoadLevel(levelPath, _game.Content, GraphicsDevice); + + _server.SetLevel(level); + + _window.Close(); + Trace.WriteLine("CreateSession()"); + _server.CreateSession(); + + new Thread(_server.Listen).Start(); + + _client.JoinSession("127.0.0.1", _nameTextBox.Text); + + _game.AddGameComponents(); + _game.Components.Remove(this); + } + + private void _joinButton_Click(object sender, TomShane.Neoforce.Controls.EventArgs e) + { + _ipTextBox.Color = string.IsNullOrEmpty(_ipTextBox.Text) ? Color.Pink : Color.TransparentBlack; + _nameTextBox2.Color = string.IsNullOrEmpty(_nameTextBox2.Text) ? Color.Pink : Color.TransparentBlack; + + if (_ipTextBox.Color == Color.Pink || _nameTextBox2.Color == Color.Pink) + { + return; + } + + var splits = _ipTextBox.Text.Split(' '); + if (splits.Count() > 1) + { + var host = Int64.Parse(splits[0]); + _client.RequestNATIntroduction(host); + } + else + { + try + { + _client.JoinSession(_ipTextBox.Text, _nameTextBox2.Text); + + _game.AddGameComponents(); + _game.Components.Remove(this); + } + catch (NetException ex) + { + _joinErrorLabel.Text = ex.Message; + return; + } + } + } + + private DateTime _lastUpdate = DateTime.Now.AddSeconds(-5); + private static Dictionary _hostList = new Dictionary(); + + /// + /// Allows the game component to update itself. + /// + /// Provides a snapshot of timing values. + public override void Update(GameTime gameTime) + { + _manager.Update(gameTime); + + if (_lastUpdate <= DateTime.Now.AddSeconds(-5)) + { + _lastUpdate = DateTime.Now; + _client.CurrentClient.DiscoverLocalPeers(SpacePew.Common.Constants.GameServerPort); + _client.GetServerList(); + } + NetIncomingMessage message; + while ((message = _client.CurrentClient.ReadMessage()) != null) + { + if (message.MessageType == NetIncomingMessageType.UnconnectedData) + { + var id = message.ReadInt64(); + var hostInternal = message.ReadIPEndPoint(); + var hostExternal = message.ReadIPEndPoint(); + + _hostList[id] = new IPEndPoint[] { hostInternal, hostExternal }; + + _localGamesListBox.Items.Clear(); + foreach (var kvp in _hostList) + { + _localGamesListBox.Items.Add(kvp.Key.ToString() + " (" + kvp.Value[1] + ")"); + } + } + else if (message.MessageType == NetIncomingMessageType.DiscoveryResponse) + { + IPEndPoint ep = message.ReadIPEndPoint(); + if (!_localGamesListBox.Items.Contains(ep.Address.ToString())) + { + _localGamesListBox.Items.Add(ep.Address.ToString()); + } + } + else if (message.MessageType == NetIncomingMessageType.NatIntroductionSuccess) + { + try + { + _client.JoinSession(message.SenderEndPoint, _nameTextBox2.Text); + + _game.AddGameComponents(); + _game.Components.Remove(this); + } + catch (NetException ex) + { + _joinErrorLabel.Text = ex.Message; + return; + } + } + } + + base.Update(gameTime); + } + + public override void Draw(GameTime gameTime) + { + _manager.BeginDraw(gameTime); + + GraphicsDevice.Clear(Color.Black); + + _manager.EndDraw(); + + base.Draw(gameTime); + } + } +#endif +} \ No newline at end of file diff --git a/SpacePew/Networking/UdpServer.cs b/SpacePew/Networking/UdpServer.cs new file mode 100644 index 0000000..7bc5beb --- /dev/null +++ b/SpacePew/Networking/UdpServer.cs @@ -0,0 +1,405 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Runtime.Serialization.Formatters.Binary; +using System.Text; +using Microsoft.Xna.Framework; + +using SpacePew.Extensions; + +using Lidgren.Network; +using System.Net; +using Microsoft.Xna.Framework.Graphics; +using System.Net.NetworkInformation; +using SpacePew.Models; +using SpacePew.Common; + +namespace SpacePew.Networking +{ + public class UdpServer : UdpBase + { + private NetPeerConfiguration _configuration; + private NetServer _server; + private Level _level; + + private readonly List _scoreBoard; + private readonly List _players; + + private readonly Vector2 _defaultPosition = new Vector2(300, 280); + + private IPEndPoint _masterServerEndpoint; + + public UdpServer() + : base() + { + _masterServerEndpoint = NetUtility.Resolve("spacepew.wodanaz.se", Constants.MasterServerPort); // TODO: Fixa upp masterserver någonstans + _scoreBoard = new List(); + _players = new List(); + } + + public void CreateSession() + { + if (_server == null) + { + _configuration = new NetPeerConfiguration("SpacePew") + { + MaximumConnections = 16, + Port = SpacePew.Common.Constants.GameServerPort + }; + + _configuration.EnableMessageType(NetIncomingMessageType.DiscoveryRequest); + _configuration.EnableMessageType(NetIncomingMessageType.DiscoveryResponse); + _configuration.EnableMessageType(NetIncomingMessageType.NatIntroductionSuccess); + + _server = new NetServer(_configuration); + _server.Start(); + } + } + + public void SetLevel(Level level) + { + _level = level; + } + + public void Shutdown() + { + if (_server != null && _server.Status == NetPeerStatus.Running) + { + _server.Shutdown("Quitting"); + } + } + + public void Listen() + { + + System.Diagnostics.Trace.WriteLine("Server.Listen()"); + while (_server.Status == NetPeerStatus.Running) + { + NetIncomingMessage message; + while ((message = _server.ReadMessage()) != null) + { + ReadBuffer(message, message.SenderConnection); + } + + if (NetTime.Now > lastRegistered + 60) + { + RegisterWithMasterServer(); + } + + StreamLevelToClients(); + } + } + + private void StreamLevelToClients() + { + foreach (var conn in _server.Connections) + { + var client = conn.Tag as StreamingClient; + if (client != null) + client.Heartbeat(); + } + } + + float lastRegistered = -60.0f; + private void RegisterWithMasterServer() + { + IPAddress mask; + IPAddress localAddress = NetUtility.GetMyAddress(out mask); + var message = _server.CreateMessage(); + message.Write((byte)UdpNetworkPacketType.RegisterHost); + message.Write(_server.UniqueIdentifier); + message.Write(new IPEndPoint(localAddress, Constants.GameServerPort)); + + _server.SendUnconnectedMessage(message, _masterServerEndpoint); + + lastRegistered = (float)NetTime.Now; + } + + private void ReadBuffer(NetIncomingMessage message, NetConnection sender) + { + switch (message.MessageType) + { + case NetIncomingMessageType.Data: + { + var packetType = (UdpNetworkPacketType)message.ReadInt32(); + switch (packetType) + { + case UdpNetworkPacketType.PlayerUpdate: + WritePlayerUpdate(message, sender); + break; + case UdpNetworkPacketType.EntitiesCreated: + WriteEntities(message, sender); + break; + case UdpNetworkPacketType.MessageSent: + WriteMessage(message, sender); + break; + case UdpNetworkPacketType.EntityCreated: + WriteEntity(message, sender); + break; + case UdpNetworkPacketType.PlayerDying: + WritePlayerDied(message, sender); + break; + case UdpNetworkPacketType.RequestingScoreboard: + WriteScoreBoard(sender); + break; + case UdpNetworkPacketType.PlayerJoining: + { + string name = message.ReadString(); + _players.Add(name); + sender.Tag = name; + _scoreBoard.Add(new ScoreBoardItem() { Name = name, Joined = DateTime.Now }); + + WritePlayerJoinedPacket(sender, name); + break; + } + case UdpNetworkPacketType.PlayerDisconnecting: + { + string name = message.ReadString(); + + WritePlayerDisconnectedPacket(sender, name); + break; + } + case UdpNetworkPacketType.LevelRequest: + { + WriteLevelResponse(message); + break; + } + } + } + break; + case NetIncomingMessageType.ConnectionApproval: + AuthorizeConnection(sender); + break; + case NetIncomingMessageType.DiscoveryRequest: + WriteDiscoveryResponse(sender); + break; + case NetIncomingMessageType.StatusChanged: + { + var status = (NetConnectionStatus)message.ReadByte(); + var msg = message.ReadString(); + break; + } + } + + _server.Recycle(message); + } + + private void WriteLevelResponse(NetIncomingMessage message) + { + message.SenderConnection.Tag = new StreamingClient(message.SenderConnection, _level.FilePath); + } + + private void WriteDiscoveryResponse(NetConnection sender) + { + if (sender == null) + return; + + var message = _server.CreateMessage(); + + // TODO: Skicka med lite stats + _server.SendDiscoveryResponse(message, sender.RemoteEndPoint); + } + + private void WritePlayerDisconnectedPacket(NetConnection sender, string name) + { + var message = _server.CreateMessage(); + + message.Write((int)UdpNetworkPacketType.PlayerDisconnected); + message.Write(name); + + _server.SendToAll(message, sender, NetDeliveryMethod.ReliableUnordered, 0); + + _players.Remove(name); + } + + private void WriteScoreBoard(NetConnection sender) + { + var message = _server.CreateMessage(); + + message.Write((int)UdpNetworkPacketType.SendingScoreBoard); + + int count = _scoreBoard.Count; + + message.Write(count); + + var ping = new Ping(); + + foreach (var item in _scoreBoard) + { + message.Write(item.Name); + message.Write(item.Kills); + message.Write(item.Deaths); + message.Write(item.Joined.ToString(CultureInfo.InvariantCulture)); + + //TODO: Fixa riktig ping + //NetConnection connection = _server.Connections.Find(s => s.Tag.ToString() == item.Name); + + //long pingTime = ping.Send(connection.RemoteEndpoint.Address).RoundtripTime; + const long pinglong = 14; + message.Write(pinglong); + } + + _server.SendMessage(message, sender, NetDeliveryMethod.UnreliableSequenced); + } + + private void WriteMessage(NetIncomingMessage incomingMessage, NetConnection sender) + { + Vector3 colorVector = incomingMessage.ReadVector3(); + string dateString = incomingMessage.ReadString(); + string message = incomingMessage.ReadString(); + bool isChatMessage = incomingMessage.ReadBoolean(); + + var outgoingMessage = _server.CreateMessage(); + + outgoingMessage.Write((int)UdpNetworkPacketType.MessageReceived); + outgoingMessage.Write(colorVector); + outgoingMessage.Write(dateString); + outgoingMessage.Write(message); + outgoingMessage.Write(isChatMessage); + + _server.SendToAll(outgoingMessage, sender, NetDeliveryMethod.UnreliableSequenced, 1); + } + + private void WritePlayerDied(NetIncomingMessage incomingMessage, NetConnection sender) + { + string playerName = incomingMessage.ReadString(); + string killedBy = incomingMessage.ReadString(); + + if (playerName != killedBy) + { + AddKillScore(killedBy); + } + + AddDeathScore(playerName); + + var message = _server.CreateMessage(); + + message.Write((int)UdpNetworkPacketType.PlayerDied); + message.Write(playerName); + + _server.SendToAll(message, sender, NetDeliveryMethod.ReliableUnordered, 0); + } + + private void AddKillScore(string name) + { + ScoreBoardItem item = _scoreBoard.Find(i => i.Name == name); + item.Kills++; + _scoreBoard[_scoreBoard.IndexOf(item)] = item; + } + + private void AddDeathScore(string name) + { + ScoreBoardItem item = _scoreBoard.Find(i => i.Name == name); + item.Deaths++; + _scoreBoard[_scoreBoard.IndexOf(item)] = item; + } + + private void WriteEntities(NetIncomingMessage incomingMessage, NetConnection sender) + { + int count = incomingMessage.ReadInt32(); + + var message = _server.CreateMessage(); + + message.Write((int)UdpNetworkPacketType.EntitiesCreated); + message.Write(count); + + for (int i = 0; i < count; i++) + { + message.Write(incomingMessage.ReadString()); + message.Write(incomingMessage.ReadString()); + message.Write(incomingMessage.ReadVector2()); + message.Write(incomingMessage.ReadVector2()); + message.Write(incomingMessage.ReadFloat()); + } + + _server.SendToAll(message, sender, NetDeliveryMethod.UnreliableSequenced, 1); + } + + private void AuthorizeConnection(NetConnection sender) + { + string name = Encoding.ASCII.GetString(sender.RemoteHailMessage.Data); + if (!string.IsNullOrEmpty(name) && !_players.Contains(name)) + { + sender.Approve(); + } + else + { + sender.Deny("A player with that name is already playing."); + } + } + + private void WritePlayerJoinedPacket(NetConnection sender, string name) + { + System.Diagnostics.Trace.WriteLine("In WritePlayerJoined()..."); + + var message = _server.CreateMessage(); + + message.Write((int)UdpNetworkPacketType.PlayerJoined); + + message.Write(name); + message.Write(_server.Connections.IndexOf(sender)); + message.Write(_defaultPosition); // TODO: positions should be stored on the level somehow + message.Write(Vector2.Zero); + message.Write(0f); + + _level.BuildCollisionDataFromLevel(); + + byte[] collisionData = ObjectToByteArray(_level.CollisionData); + message.Write(collisionData.Length); + message.Write(collisionData); + + _server.SendMessage(message, sender, NetDeliveryMethod.ReliableUnordered); + System.Diagnostics.Trace.WriteLine("Sent joined..."); + } + + private void WriteEntity(NetIncomingMessage message, NetConnection sender) + { + string entityType = message.ReadString(); + string owner = message.ReadString(); + Vector2 pos = message.ReadVector2(); + Vector2 velocity = message.ReadVector2(); + float angle = message.ReadFloat(); + + WriteEntityPacket(sender, entityType, owner, ref pos, ref velocity, angle); + } + + private void WriteEntityPacket(NetConnection connectionToExclude, string entityType, string owner, ref Vector2 pos, ref Vector2 velocity, float angle) + { + var message = _server.CreateMessage(); + + message.Write((int)UdpNetworkPacketType.EntityCreated); + message.Write(entityType); + message.Write(owner); + message.Write(pos); + message.Write(velocity); + message.Write(angle); + + _server.SendToAll(message, connectionToExclude, NetDeliveryMethod.UnreliableSequenced, 1); + } + + private void WritePlayerUpdate(NetIncomingMessage message, NetConnection sender) + { + string owner = message.ReadString(); + int colorIndex = message.ReadInt32(); + Vector2 pos = message.ReadVector2(); + Vector2 velocity = message.ReadVector2(); + float angle = message.ReadFloat(); + + WritePlayerUpdatePacket(sender, owner, colorIndex, ref pos, ref velocity, angle); + } + + private void WritePlayerUpdatePacket(NetConnection connectionToExclude, string owner, int colorIndex, ref Vector2 pos, ref Vector2 velocity, float angle) + { + var message = _server.CreateMessage(); + + message.Write((int)UdpNetworkPacketType.PlayerUpdate); + message.Write(owner); + message.Write(colorIndex); + message.Write(pos); + message.Write(velocity); + message.Write(angle); + + _server.SendToAll(message, connectionToExclude, NetDeliveryMethod.UnreliableSequenced, 1); + } + } +} \ No newline at end of file diff --git a/SpacePew/ParticleSystem/ExplosionParticleSystem.cs b/SpacePew/ParticleSystem/ExplosionParticleSystem.cs new file mode 100644 index 0000000..fd7b2ed --- /dev/null +++ b/SpacePew/ParticleSystem/ExplosionParticleSystem.cs @@ -0,0 +1,46 @@ +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using SpacePew.Camera; + +namespace SpacePew.ParticleSystem +{ + public class ExplosionParticleSystem : ParticleSystem + { + public ExplosionParticleSystem(MainGame game, int howManyEffects, ICamera2D camera) : base(game, howManyEffects, camera) { } + + protected override void InitializeConstants() + { + _textureFilename = "ParticleTextures\\explosion"; + + _minInitialSpeed = 40; + _maxInitialSpeed = 500; + + _minAcceleration = 0; + _maxAcceleration = 0; + + _minLifetime = .5f; + _maxLifetime = 1.0f; + + _minScale = .3f; + _maxScale = 1.0f; + + _minNumParticles = 20; + _maxNumParticles = 25; + + _minRotationSpeed = -MathHelper.PiOver4; + _maxRotationSpeed = MathHelper.PiOver4; + + _blendState = BlendState.Additive; + + DrawOrder = AdditiveDrawOrder; + } + + protected override void InitializeParticle(Particle p, Vector2 where) + { + base.InitializeParticle(p, where); + + p.Acceleration = -p.Velocity / p.Lifetime; + } + } +} \ No newline at end of file diff --git a/SpacePew/ParticleSystem/ExplosionSmokeParticleSystem.cs b/SpacePew/ParticleSystem/ExplosionSmokeParticleSystem.cs new file mode 100644 index 0000000..2a4d99e --- /dev/null +++ b/SpacePew/ParticleSystem/ExplosionSmokeParticleSystem.cs @@ -0,0 +1,41 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using SpacePew.Camera; + +namespace SpacePew.ParticleSystem +{ + public class ExplosionSmokeParticleSystem : ParticleSystem + { + public ExplosionSmokeParticleSystem(MainGame game, int howManyEffects, ICamera2D camera) + : base(game, howManyEffects, camera) + { + } + + protected override void InitializeConstants() + { + _textureFilename = "ParticleTextures\\smoke"; + + _minInitialSpeed = 20; + _maxInitialSpeed = 200; + + _minAcceleration = -10; + _maxAcceleration = -50; + + _minLifetime = 1.0f; + _maxLifetime = 2.5f; + + _minScale = 1.0f; + _maxScale = 2.0f; + + _minNumParticles = 10; + _maxNumParticles = 20; + + _minRotationSpeed = -MathHelper.PiOver4; + _maxRotationSpeed = MathHelper.PiOver4; + + _blendState = BlendState.AlphaBlend; + + DrawOrder = AlphaBlendDrawOrder; + } + } +} diff --git a/SpacePew/ParticleSystem/Particle.cs b/SpacePew/ParticleSystem/Particle.cs new file mode 100644 index 0000000..e4f0fe4 --- /dev/null +++ b/SpacePew/ParticleSystem/Particle.cs @@ -0,0 +1,55 @@ +using System; + +using Microsoft.Xna.Framework; + +namespace SpacePew.ParticleSystem +{ + public class Particle + { + private static readonly Random _random = new Random(); + private float RandomBetween(float min, float max) + { + return min + (float)_random.NextDouble() * (max - min); + } + + public Vector2 Position; + public Vector2 Velocity; + public Vector2 Acceleration; + + public float Scale { get; set; } + + public float Lifetime { get; private set; } + public float TimeSinceStart { get; private set; } + public float Rotation { get; private set; } + public float RotationSpeed { get; private set; } + + public bool Active + { + get { return TimeSinceStart < Lifetime; } + } + + public void Initialize(Vector2 position, Vector2 velocity, Vector2 acceleration, float lifetime, float scale, float rotationSpeed) + { + this.Position = position; + this.Velocity = velocity;// *this.Scale; + this.Acceleration = acceleration; + this.Lifetime = lifetime * this.Scale; + this.Scale = scale * this.Scale; + this.RotationSpeed = rotationSpeed; + + this.TimeSinceStart = 0.0f; + + this.Rotation = RandomBetween(0, MathHelper.TwoPi); + } + + public void Update(float dt) + { + Velocity += Acceleration * dt; + Position += Velocity * dt; + + Rotation += RotationSpeed * dt; + + TimeSinceStart += dt; + } + } +} \ No newline at end of file diff --git a/SpacePew/ParticleSystem/ParticleSystem.cs b/SpacePew/ParticleSystem/ParticleSystem.cs new file mode 100644 index 0000000..15839bc --- /dev/null +++ b/SpacePew/ParticleSystem/ParticleSystem.cs @@ -0,0 +1,194 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Microsoft.Xna.Framework.Graphics; +using Microsoft.Xna.Framework; +using SpacePew.Camera; + +namespace SpacePew.ParticleSystem +{ + public abstract class ParticleSystem : DrawableGameComponent + { + private static readonly Random _random = new Random(); + protected Random Random + { + get { return _random; } + } + + protected float RandomBetween(float min, float max) + { + return min + (float)_random.NextDouble() * (max - min); + } + + public const int AlphaBlendDrawOrder = 100; + public const int AdditiveDrawOrder = 200; + + private readonly MainGame _game; + private readonly int _howManyEffects; + + private Texture2D _texture; + private Vector2 _origin; + + private Particle[] _particles; + + private Queue _freeParticles; + + public int FreeParticleCount + { + get { return _freeParticles.Count; } + } + + protected int _minNumParticles; + protected int _maxNumParticles; + + protected string _textureFilename; + + protected float _minInitialSpeed; + protected float _maxInitialSpeed; + + protected float _minAcceleration; + protected float _maxAcceleration; + + protected float _minRotationSpeed; + protected float _maxRotationSpeed; + + protected float _minLifetime; + protected float _maxLifetime; + + protected float _minScale; + protected float _maxScale; + + protected BlendState _blendState; + + protected ICamera2D _camera; + + protected ParticleSystem(MainGame game, int howManyEffects, ICamera2D camera) + : base(game) + { + this._game = game; + this._howManyEffects = howManyEffects; + this._camera = camera; + } + + public override void Initialize() + { + InitializeConstants(); + + _particles = new Particle[_howManyEffects * _maxNumParticles]; + _freeParticles = new Queue(_howManyEffects * _maxNumParticles); + + for (int i = 0; i < _particles.Length; i++) + { + _particles[i] = new Particle(); + _freeParticles.Enqueue(_particles[i]); + } + + base.Initialize(); + } + + protected abstract void InitializeConstants(); + + protected override void LoadContent() + { + if (string.IsNullOrEmpty(_textureFilename)) + { + throw new ArgumentNullException("textureFilename"); + } + + _texture = _game.Content.Load(_textureFilename); + + _origin.X = _texture.Width / 2; + _origin.Y = _texture.Height / 2; + + base.LoadContent(); + } + + public void AddParticles(Vector2 where, float scale) + { + int numParticles = Random.Next(_minNumParticles, _maxNumParticles); + + for (int i = 0; i < numParticles && _freeParticles.Count > 0; i++) + { + Particle p = _freeParticles.Dequeue(); + p.Scale = scale; + InitializeParticle(p, where); + } + } + + protected virtual void InitializeParticle(Particle p, Vector2 where) + { + Vector2 direction = PickRandomDirection(); + + float velocity = + RandomBetween(_minInitialSpeed, _maxInitialSpeed); + float acceleration = + RandomBetween(_minAcceleration, _maxAcceleration); + float lifetime = + RandomBetween(_minLifetime, _maxLifetime); + float scale = + RandomBetween(_minScale, _maxScale); + float rotationSpeed = + RandomBetween(_minRotationSpeed, _maxRotationSpeed); + + p.Initialize( + where, velocity * direction, acceleration * direction, + lifetime, scale, rotationSpeed); + } + + protected virtual Vector2 PickRandomDirection() + { + float angle = RandomBetween(0, MathHelper.TwoPi); + return new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle)); + } + + public override void Update(GameTime gameTime) + { + var dt = (float)gameTime.ElapsedGameTime.TotalSeconds; + + foreach (var p in _particles.Where(p => p.Active)) + { + p.Update(dt); + + if (!p.Active) + { + _freeParticles.Enqueue(p); + } + } + + base.Update(gameTime); + } + + public override void Draw(GameTime gameTime) + { + _game.SpriteBatch.Begin(SpriteSortMode.Deferred, _blendState, null, null, null, null, _camera.Transform); + + foreach (Particle p in _particles) + { + if (!p.Active) + continue; + + float normalizedLifetime = p.TimeSinceStart / p.Lifetime; + + float alpha = 4 * normalizedLifetime * (1 - normalizedLifetime); + var color = new Color(new Vector4(1, 1, 1, alpha)); + + float scale = p.Scale * (.75f + .25f * normalizedLifetime); + + _game.SpriteBatch.Draw(_texture, + p.Position, + null, + color, + p.Rotation, + _origin, + scale, + SpriteEffects.None, + 0.0f); + } + + _game.SpriteBatch.End(); + + base.Draw(gameTime); + } + } +} diff --git a/SpacePew/ParticleSystem/SmokePlumeParticleSystem.cs b/SpacePew/ParticleSystem/SmokePlumeParticleSystem.cs new file mode 100644 index 0000000..98d4a35 --- /dev/null +++ b/SpacePew/ParticleSystem/SmokePlumeParticleSystem.cs @@ -0,0 +1,61 @@ +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using SpacePew.Camera; + +namespace SpacePew.ParticleSystem +{ + public class SmokePlumeParticleSystem : ParticleSystem + { + public SmokePlumeParticleSystem(MainGame game, int howManyEffects, ICamera2D camera) + : base(game, howManyEffects, camera) + { + } + + protected override void InitializeConstants() + { + _textureFilename = "ParticleTextures\\smoke"; + + _minInitialSpeed = 20; + _maxInitialSpeed = 100; + + _minAcceleration = 0; + _maxAcceleration = 0; + + _minLifetime = 5.0f; + _maxLifetime = 7.0f; + + _minScale = .5f; + _maxScale = 1.0f; + + _minNumParticles = 7; + _maxNumParticles = 15; + + _minRotationSpeed = -MathHelper.PiOver4 / 2.0f; + _maxRotationSpeed = MathHelper.PiOver4 / 2.0f; + + _blendState = BlendState.AlphaBlend; + + DrawOrder = AlphaBlendDrawOrder; + } + + protected override Vector2 PickRandomDirection() + { + float radians = RandomBetween( + MathHelper.ToRadians(80), MathHelper.ToRadians(100)); + + Vector2 direction = Vector2.Zero; + + direction.X = (float)Math.Cos(radians); + direction.Y = -(float)Math.Sin(radians); + return direction; + } + + protected override void InitializeParticle(Particle p, Vector2 where) + { + base.InitializeParticle(p, where); + + p.Acceleration.X += RandomBetween(10, 50); + } + } +} diff --git a/SpacePew/Program.cs b/SpacePew/Program.cs new file mode 100644 index 0000000..5027f4f --- /dev/null +++ b/SpacePew/Program.cs @@ -0,0 +1,26 @@ +#region Using Statements +using System; +using System.Collections.Generic; +using System.Linq; +#endregion + +namespace SpacePew +{ +#if WINDOWS || LINUX + /// + /// The main class. + /// + public static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + using (var game = new MainGame()) + game.Run(); + } + } +#endif +} diff --git a/SpacePew/Properties/AssemblyInfo.cs b/SpacePew/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..83abbf7 --- /dev/null +++ b/SpacePew/Properties/AssemblyInfo.cs @@ -0,0 +1,33 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("SpacePew")] +[assembly: AssemblyProduct("SpacePew")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyCompany("")] + +[assembly: AssemblyCopyright("Copyright © 2009")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("1588cda1-b2dd-4e65-bd68-1dcdcc35901d")] + + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("1.0.0.0")] diff --git a/SpacePew/SoundManager.cs b/SpacePew/SoundManager.cs new file mode 100644 index 0000000..982b3bd --- /dev/null +++ b/SpacePew/SoundManager.cs @@ -0,0 +1,41 @@ +using System.Collections.Generic; +using System.Diagnostics; +using Microsoft.Xna.Framework.Audio; +using Microsoft.Xna.Framework; + +namespace SpacePew +{ + public static class SoundManager + { + private static MainGame _game; + + public static void Initialize(MainGame game) + { + _game = game; + } + + public static SoundEffectInstance GetSoundEffectInstance(string assetName) + { + var soundEffect = _game.Content.Load(assetName); + var soundEffectInstance = soundEffect.CreateInstance(); + + return soundEffectInstance; + } + + private static int _playCalled = 0; + public static void Play(string assetName, Vector2 position) + { + Debug.Print("Play called: " + ++_playCalled); + + var soundEffect = _game.Content.Load(assetName); + var soundEffectInstance = soundEffect.CreateInstance(); + var emitter = new AudioEmitter(); + var listener = new AudioListener(); + emitter.Position = new Vector3(position, 0); + listener.Position = new Vector3(_game.NetworkClient.LocalPlayer.Position, 0); + + soundEffectInstance.Apply3D(listener, emitter); + soundEffectInstance.Play(); + } + } +} diff --git a/SpacePew/SpacePew.csproj b/SpacePew/SpacePew.csproj new file mode 100644 index 0000000..6b869d2 --- /dev/null +++ b/SpacePew/SpacePew.csproj @@ -0,0 +1,236 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {1C82F1B3-6F3C-47EC-901A-E656D037F862} + WinExe + Properties + SpacePew + SpacePew + 512 + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + v4.5.1 + + + + + x86 + true + full + false + bin\Windows\Debug\ + DEBUG;TRACE;WINDOWS + prompt + 4 + false + + + x86 + pdbonly + true + bin\Windows\Release\ + TRACE;WINDOWS + prompt + 4 + false + + + Icon.ico + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + ..\Library\ICSharpCode.SharpZipLib.dll + + + False + C:\Program Files (x86)\MonoGame\v3.0\Assemblies\Windows\MonoGame.Framework.dll + + + ..\Library\NAudio.dll + + + ..\Library\NVorbis.dll + + + ..\Library\NVorbis.NAudioSupport.dll + + + False + C:\Program Files (x86)\MonoGame\v3.0\Assemblies\Windows\SharpDX.dll + + + False + C:\Program Files (x86)\MonoGame\v3.0\Assemblies\Windows\SharpDX.Direct3D11.dll + + + False + C:\Program Files (x86)\MonoGame\v3.0\Assemblies\Windows\SharpDX.MediaFoundation.dll + + + False + C:\Program Files (x86)\MonoGame\v3.0\Assemblies\Windows\SharpDX.XAudio2.dll + + + + + + + + + SDL.dll + Always + + + PreserveNewest + + + + + + + + {49ba1c69-6104-41ac-a5d8-b54fa9f696e8} + Lidgren.Network + + + {ac5f1cd8-aa8e-4db5-814f-86c214175841} + TomShane.Neoforce.Controls + + + {ba98d4ca-718b-4e50-ad4d-f48e8ca67624} + SpacePew.Common + + + {944baed2-53a4-47e9-ae89-7f6c5843de94} + SpacePew.Content + + + + + False + Microsoft .NET Framework 4 %28x86 and x64%29 + true + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + false + + + False + Windows Installer 4.5 + true + + + + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + + + + + + + \ No newline at end of file diff --git a/SpacePew/TextureManager.cs b/SpacePew/TextureManager.cs new file mode 100644 index 0000000..3239954 --- /dev/null +++ b/SpacePew/TextureManager.cs @@ -0,0 +1,29 @@ +using System.Collections.Generic; + +using Microsoft.Xna.Framework.Graphics; + +namespace SpacePew +{ + public static class TextureManager + { + private static MainGame _game; + + static readonly Dictionary Textures = new Dictionary(); + + public static void Initialize(MainGame game) + { + _game = game; + } + + public static Texture2D LoadTexture(string assetName) + { + if (!Textures.ContainsKey(assetName)) + { + var texture = _game.Content.Load(assetName); + Textures.Add(assetName, texture); + } + + return Textures[assetName]; + } + } +} diff --git a/SpacePew/app.config b/SpacePew/app.config new file mode 100644 index 0000000..884f984 --- /dev/null +++ b/SpacePew/app.config @@ -0,0 +1,3 @@ + + +

    NL8@J3858@-$Ze(v6zEDQ23Hw7FuQPJ~fqJUXiCg-xDMI35 z)(}~xxnVLrZr0AYPUPJJU(y6Pkw@08)9SqJ-5~9e(1rDz+dkfi)emKOD#!!)SX5Om zog#vGK+`bQeSXza2>pizqPq>bK8k^B`tvf+t;oKf9{Exm)5)aP$!NaYY^>o&Pwnp0 zZ+X=E!fTl{YgGawr(^c`;_*cf_xf0k+-670+Lm2hJv%Rq?*&yLG%~ z?8!YHz4KFRclY40hlGE)Mxa>ri9krOJD#k3$Z=c!s;?T)E1UZCV}8@McL&qa`nv;G zdOmGokxDiYm;N9_*T50+d9u5o^>JBA_%x1Y!K#G2&lm|5Uz_+~P5QKew?1k?Gxz;A z+N)g8m!r+9+yc5BvrC1E5O|B*!A{T&dL60o!%hQr^bKSGlgDo{9NY{^ioRCuJ260T1qw%%u+mVX&UpBdkX5dx*5;gO;!D4@c z!=Sb^vkO0wKJ!CAk@cQCX58qxsuxm1em0E7-itq)SnngufN6#NfE}(LA!Sy>rF%R( zYfa@PLJu_3fVRi)1+QO?fmb*I75N8I|$m8mdvf%rNl@G^Mb zIs&+C1a}Z-QY3mk5V6$$)25T(Y2+m(NzF@(P$(~S>6vau8vojy6NYjm;d7BNqnF++ z8(~sV%4|yl;*WiHUkhxzmB2$$rsFGkEYZ+%X**L_MhsYLgy$MdI}xWpWiZI z>kz1uYLkB15HtP4b!_!JBCQW2=6-Xe^A1S=$bQ%MR@NqYvuV3@9n~=WU6om(e6mww zVBrr`b#?1U=^NDHoWE|U!(`1v2%|7dj2M|_A{_R+4}su<>cOjA>wL8bNYNF{Oq5~F z{7{zAU=gAxS5cp;BL{}k{obrvlIyX$Ocq6@E?eA(DgBVg@4#FTU>?!MpO6MM& zvn#$rLA7hL8jg%M{-MvDn&o>fGa|=Q;biEi+r;_MPqWhT1}=oBs<(YETWO<&rreL+ zX~_%GottRu1JJv;&FasZ*gMfx1Mu3ZZq?tm38_5HBEvZ+oN9)IMcW(6{ue#hXC?M2 zyetw~iJVD|)RfueKBxKJ+>ag93A!{O{%jL2-RyTgOTZz*X&j;m$#}DM7w;dBx<32& zx%lfFI5BXJldb*;SBHP=&fi+5AT)&~Lsl(woYug5F~!FoE|D_b?a7~+dOBLbR>V1B zadr`QKuYLXwfp=eG0L)r@0`e(EE-6rX%Ti=!l5LGdA z7DG1{dJ)W5yP8*ieVftAZ|BoR7xO+ew72n*OPaULKf=vGWYv=VIHHkKdEl%V>L6;W zRu#h@rlf}s<2I5)BHC3s2vO?ZaZ59m^HF(l?gAEMpSvF^tYYuusT_94o|W`Ovfr3O zE1Wk~h(^XiW_Ef`Afo9WbcEQlI*T-or1Yx6Q&dYDbL#EK)>x^H8I}mW`oOPslfp;v zWI`yJGiax|1zZRyZy+prB@$Zp)cQELzmR`1#|4{h=F7d~LxdbA9kkGeUKU~pyUznS zb_3W(U^iveJ)kd7�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 + /// This is the main type for your game + /// + public class MainGame : Game + { + public static int CenterX; + public static int CenterY; + + public UdpServer NetworkServer { get; private set; } + public UdpClient NetworkClient { get; private set; } + + private Level _level; + public Level Level + { + get { return _level; } + set { _level = value; } + } + + private SpriteBatch _spriteBatch; + public SpriteBatch SpriteBatch + { + get + { + return _spriteBatch; + } + } + + readonly GraphicsDeviceManager _graphics; + readonly EntityFactory _entityFactory; + + Hud _hud; + Minimap _minimap; + + private readonly UdpNetworkGui _udpClientGui; + + private KeyboardState _currentKeyboardState; + private GamePadState _currentGamePadState; + + private Texture2D _backgroundTexture; + + private ExplosionParticleSystem _explosion; + private ExplosionSmokeParticleSystem _smoke; + private SmokePlumeParticleSystem _smokePlume; + + private NetworkMessenger _networkMessenger; + + private Song _gameSong; + public Song GameSong + { + get { return _gameSong; } + } + + private ICamera2D _camera; + + private readonly Random _randomizer; + + public static bool IsKeyboardInUse; + + public void AddGameComponents() + { + _hud = new Hud(this); + Components.Add(_hud); + + _minimap = new Minimap(this); + Components.Add(_minimap); + + _camera = new Camera2D(this) + { + Focus = NetworkClient.LocalPlayer + }; + + Components.Add((IGameComponent)_camera); + + _explosion = new ExplosionParticleSystem(this, 1, _camera); + Components.Add(_explosion); + + _smoke = new ExplosionSmokeParticleSystem(this, 2, _camera); + Components.Add(_smoke); + + _smokePlume = new SmokePlumeParticleSystem(this, 9, _camera); + Components.Add(_smokePlume); + + _networkMessenger = new NetworkMessenger(this, NetworkClient); + Components.Add(_networkMessenger); + + Components.Add(new ScoreBoard(this, NetworkClient)); + } + + public void AddExplosion(Vector2 position, float size) + { + _explosion.AddParticles(position, size); + _smoke.AddParticles(position, size); + } + + public MainGame() + { + Trace.Listeners.Add(new TextWriterTraceListener("debug.log")); + Trace.AutoFlush = true; + Trace.Indent(); + + Trace.WriteLine(string.Empty); + Trace.WriteLine(DateTime.Now); + Trace.WriteLine("------------------------------------------------------------------------------------------------------------------"); + + Window.Title = "Space, pew pew!"; + Content.RootDirectory = "Content"; + + NetworkServer = new UdpServer(); + NetworkClient = new UdpClient(this); + + _graphics = new GraphicsDeviceManager(this); + _entityFactory = new EntityFactory(this); + + SoundManager.Initialize(this); + TextureManager.Initialize(this); + + IsMouseVisible = true; + + _graphics.CreateDevice(); + + Cursor.Hide(); + + _graphics.PreferredBackBufferWidth = 1366; + _graphics.PreferredBackBufferHeight = 768; + + //var screen = Screen.AllScreens.First(e => e.Primary); + + //Window.IsBorderless = true; + //Window.Position = new Point(screen.Bounds.X, screen.Bounds.Y); + //_graphics.PreferredBackBufferWidth = screen.Bounds.Width; + //_graphics.PreferredBackBufferHeight = screen.Bounds.Height; + + _graphics.ApplyChanges(); + + CenterX = _graphics.PreferredBackBufferWidth / 2; + CenterY = _graphics.PreferredBackBufferHeight / 2; + + _randomizer = new Random(); + + _udpClientGui = new UdpNetworkGui(this, _graphics, (UdpClient)NetworkClient, (UdpServer)NetworkServer); + Components.Add(_udpClientGui); + } + + ///

  • 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 z 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 literal 0 HcmV?d00001 diff --git a/SpacePew.Content/SpacePew.ContentContent/Audio/Waves/thump.wav b/SpacePew.Content/SpacePew.ContentContent/Audio/Waves/thump.wav new file mode 100644 index 0000000000000000000000000000000000000000..e99db928a756f161747eae949305f4bbedf7daf9 GIT binary patch literal 16346 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 literal 0 HcmV?d00001 diff --git a/SpacePew.Content/SpacePew.ContentContent/Fonts/ConsoleFont.spritefont b/SpacePew.Content/SpacePew.ContentContent/Fonts/ConsoleFont.spritefont new file mode 100644 index 0000000..4e06676 --- /dev/null +++ b/SpacePew.Content/SpacePew.ContentContent/Fonts/ConsoleFont.spritefont @@ -0,0 +1,60 @@ + + + + + + + Kootenay + + + 14 + + + 0 + + + true + + + + + + + + + + + + ~ + + + + diff --git a/SpacePew.Content/SpacePew.ContentContent/Fonts/Default.spritefont b/SpacePew.Content/SpacePew.ContentContent/Fonts/Default.spritefont new file mode 100644 index 0000000..88af8a4 --- /dev/null +++ b/SpacePew.Content/SpacePew.ContentContent/Fonts/Default.spritefont @@ -0,0 +1,66 @@ + + + + + + + Tahoma + + + 8 + + + 1 + + + false + + + + + + ? + + + + + + · + + + + + + + + + \ No newline at end of file diff --git a/SpacePew.Content/SpacePew.ContentContent/Fonts/NetFont.spritefont b/SpacePew.Content/SpacePew.ContentContent/Fonts/NetFont.spritefont new file mode 100644 index 0000000..105adff --- /dev/null +++ b/SpacePew.Content/SpacePew.ContentContent/Fonts/NetFont.spritefont @@ -0,0 +1,60 @@ + + + + + + + Kootenay + + + 10 + + + 0 + + + true + + + + + + + + + + + + ~ + + + + diff --git a/SpacePew.Content/SpacePew.ContentContent/Fonts/ScoreBoardFont.spritefont b/SpacePew.Content/SpacePew.ContentContent/Fonts/ScoreBoardFont.spritefont new file mode 100644 index 0000000..0adaa85 --- /dev/null +++ b/SpacePew.Content/SpacePew.ContentContent/Fonts/ScoreBoardFont.spritefont @@ -0,0 +1,60 @@ + + + + + + + Kootenay + + + 9 + + + 0 + + + true + + + + + + + + + + + + ~ + + + + diff --git a/SpacePew.Content/SpacePew.ContentContent/ParticleTextures/explosion.png b/SpacePew.Content/SpacePew.ContentContent/ParticleTextures/explosion.png new file mode 100644 index 0000000000000000000000000000000000000000..9714bf168f52761088969355715a81272451fc14 GIT binary patch literal 102248 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