Added DataModel ignored files to source control

This commit is contained in:
CaptainSegis 2017-04-15 03:12:22 -05:00
parent da7fc1c126
commit e4a2e7ff36
29 changed files with 2451 additions and 0 deletions

@ -0,0 +1,15 @@
Namespace DataModel
''' <summary>
''' An interface for objects that implement a datamodel.
''' </summary>
Public Interface IDataModelContainer
''' <summary>
''' Gets and/or sets the data model.
''' </summary>
ReadOnly Property DataModel As Json.JsonDataModel
End Interface
End Namespace

@ -0,0 +1,22 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.ContentPack
<DataContract>
Public Class ContentPackModel
<DataMember>
Public Name As String
<DataMember>
Public Version As String
<DataMember>
Public Author As String
<DataMember>
Public Description As String
End Class
End Namespace

@ -0,0 +1,49 @@
Namespace DataModel.Json
Class EntityPropertyExtension
Private _entityModel As Game.EntityModel
Public Sub New(ByVal entityModel As Game.EntityModel)
_entityModel = entityModel
End Sub
Private Property _PropertyValue(ByVal propertyName As String) As String
Get
For Each p As Game.EntityModel.PropertyDataModel In _entityModel.Properties
If p.Name = propertyName Then
Return p.Value
End If
Next
Return ""
End Get
Set(value As String)
For Each p As Game.EntityModel.PropertyDataModel In _entityModel.Properties
If p.Name = propertyName Then
p.Value = value
End If
Next
End Set
End Property
#Region "Converters"
Private Function Bool(ByVal s As String) As Boolean
Return Boolean.Parse(s)
End Function
#End Region
#Region "Floor"
Public ReadOnly Property HasIce() As Boolean
Get
Return Bool(_PropertyValue("HasIce"))
End Get
End Property
#End Region
End Class
End Namespace

@ -0,0 +1,210 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.Game
''' <summary>
''' The data model of an item.
''' </summary>
<DataContract>
Public Class ItemModel
Inherits JsonDataModel
<DataMember>
Public Name As String
<DataMember>
Public PluralName As String
<DataMember>
Public Price As Integer
<DataMember>
Public Id As Integer
<DataMember>
Public Texture As TextureSourceModel
<DataMember>
Public Description As String
<DataMember>
Public ScriptBinding As String
<DataMember>
Public InventoryDefinition As InventoryDefinitionModel
<DataMember>
Public Usage As ItemUsageModel
<DataMember>
Public Classification As ItemClassificationModel
<DataMember>
Public Berry As BerryModel
<DataMember>
Public Megastone As MegastoneModel
<DataMember>
Public Plate As PlateModel
<DataMember>
Public TechnicalMachine As TechnicalMachineModel
<DataContract>
Public Class TechnicalMachineModel
<DataMember>
Public MoveId As Integer
<DataMember>
Public IsTM As Boolean
End Class
<DataContract>
Public Class PlateModel
<DataMember(Name:="Type")>
Private TypeStr As String
Public Property Type() As Element
Get
Return New Element(TypeStr)
End Get
Set(value As Element)
TypeStr = value.ToString()
End Set
End Property
End Class
<DataContract>
Public Class MegastoneModel
<DataMember>
Public MegaPokemonNumber As Integer
End Class
<DataContract>
Public Class BerryModel
Inherits JsonDataModel
<DataMember>
Public PhaseTime As Integer
<DataMember>
Public Size As String
<DataMember>
Public Firmness As String
<DataMember>
Public MinBerries As Integer
<DataMember>
Public MaxBerries As Integer
<DataMember(Name:="Flavour")>
Private FlavourStr As String
Public Property Flavour() As Items.Berry.Flavours
Get
Return ConvertStringToEnum(Of Items.Berry.Flavours)(FlavourStr)
End Get
Set(value As Items.Berry.Flavours)
FlavourStr = value.ToString()
End Set
End Property
<DataMember(Name:="Type")>
Private TypeStr As String
Public Property Type() As Element
Get
Return New Element(TypeStr)
End Get
Set(value As Element)
TypeStr = value.ToString()
End Set
End Property
<DataMember>
Public Power As Integer
End Class
<DataContract>
Public Class ItemClassificationModel
<DataMember>
Public IsBall As Boolean
<DataMember>
Public IsBerry As Boolean
<DataMember>
Public IsHealingItem As Boolean
<DataMember>
Public IsMail As Boolean
<DataMember>
Public IsMegastone As Boolean
<DataMember>
Public IsPlate As Boolean
End Class
<DataContract>
Public Class ItemUsageModel
<DataMember>
Public InBattle As Boolean
<DataMember>
Public Overworld As Boolean
<DataMember>
Public Trade As Boolean
<DataMember>
Public Held As Boolean
<DataMember>
Public Toss As Boolean
End Class
<DataContract>
Public Class InventoryDefinitionModel
Inherits JsonDataModel
<DataMember(Name:="Type")>
Private TypeStr As String
Public Property Type() As Item.ItemTypes
Get
Return ConvertStringToEnum(Of Item.ItemTypes)(TypeStr)
End Get
Set(value As Item.ItemTypes)
TypeStr = value.ToString()
End Set
End Property
<DataMember>
Public MaxStack As Integer
<DataMember>
Public SortValue As Integer
End Class
End Class
End Namespace

@ -0,0 +1,16 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.Game
<DataContract>
Public Class MainMenuMapModel
<DataMember>
Public Mapfile As String
<DataMember>
Public Offset As Vector3Model
End Class
End Namespace

@ -0,0 +1,375 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.Game
<DataContract>
Class MapModel
Inherits JsonDataModel
<DataMember(Order:=0)>
Public Name As String
<DataMember(Order:=1)>
Public Region As String
<DataMember(Order:=2)>
Public Song As String
<DataMember(Order:=3)>
Public CanTeleport As Boolean
<DataMember(Order:=4)>
Public CanDig As Boolean
<DataMember(Order:=5)>
Public CanFly As Boolean
<DataMember(Order:=6)>
Public MapScriptBinding As String
<DataMember(Order:=7)>
Public EnvironmentType As Integer
<DataMember(Order:=8)>
Public WeatherType As Integer
<DataMember(Order:=9)>
Public LightType As Integer
<DataMember(Order:=10)>
Public RideType As Integer
<DataMember(Order:=11)>
Public IsDark As Boolean
<DataMember(Name:="Terrain", Order:=12)>
Private TerrainStr As String
Public Property Terrain() As Terrain.TerrainTypes
Get
Return ConvertStringToEnum(Of Terrain.TerrainTypes)(TerrainStr)
End Get
Set(value As Terrain.TerrainTypes)
TerrainStr = value.ToString()
End Set
End Property
<DataMember(Order:=13)>
Public IsSafariZone As Boolean
<DataMember(Order:=14)>
Public IsBugCatchingContest As Boolean
<DataMember(Order:=15)>
Public AllowedRadioChannels As Decimal()
<DataMember(Order:=16)>
Public BattleMapData As BattleMapDataModel
<DataMember(Order:=17)>
Public WildPokemonFloor As Boolean
<DataMember(Order:=18)>
Public ShowOverworldPokemon As Boolean
<DataMember(Order:=19)>
Public HiddenAbilityChance As Integer
<DataMember(Order:=20)>
Public Entities As EntityFieldModel()
<DataMember(Order:=21)>
Public NPCs As NPCModel()
<DataMember(Order:=22)>
Public OffsetMaps As OffsetMapModel()
<DataMember(Order:=23)>
Public Shaders As ShaderModel()
<DataMember(Order:=24)>
Public Backdrops As BackdropModel()
<DataMember(Order:=25)>
Public Structures As StructureModel()
<DataContract>
Class BattleMapDataModel
<DataMember>
Public BattleMapfile As String
<DataMember>
Public StartPosition As Vector3Model
End Class
<DataContract>
Class EntityFieldModel
<DataMember(Order:=0)>
Public Placing As EntityFieldPositioningModel()
<DataMember(Order:=1)>
Public Entity As EntityModel
Public Class EntityFieldPositioningModel
<DataMember(Order:=0)>
Public Position As Vector3Model
<DataMember(Order:=1)>
Public Size As Vector3Model
<DataMember(Order:=2)>
Public Fill As Boolean
<DataMember(Order:=3)>
Public Steps As Vector3Model
End Class
End Class
End Class
<DataContract>
Class EntityModel
Inherits JsonDataModel
<DataMember(Order:=0)>
Public Id As Integer
<DataMember(Order:=1)>
Public Rotation As Vector3Model
<DataMember(Order:=2)>
Public TakeFullRotation As Boolean
<DataMember(Order:=3)>
Public Scale As Vector3Model
<DataMember(Order:=4)>
Public RenderMode As EntityRenderModeModel
<DataMember(Order:=5)>
Public Collision As Boolean
<DataMember(Order:=9)>
Public IsFloor As Boolean
<DataMember(Order:=10)>
Public SeasonConfiguration As EntitySeasonConfigurationModel
<DataMember(Order:=11)>
Public Properties As PropertyDataModel()
<DataContract>
Public Class EntitySeasonConfigurationModel
Inherits JsonDataModel
<DataMember>
Public TexturePath As String
<DataMember(Name:="ActiveSeasons")>
Private ActiveSeasonsStr As String()
Public Property ActiveSeasons() As World.Seasons()
Get
Return ConvertStringArrayToEnumArray(Of World.Seasons)(ActiveSeasonsStr)
End Get
Set(value As World.Seasons())
ActiveSeasonsStr = ConvertEnumArrayToStringArray(value)
End Set
End Property
End Class
<DataContract>
Public Class PropertyDataModel
<DataMember(Order:=0)>
Public Name As String
<DataMember(Order:=1)>
Public Value As String
End Class
End Class
<DataContract>
Public Class NPCModel
Inherits JsonDataModel
<DataMember>
Public Id As Integer
<DataMember>
Public Position As Vector3Model
<DataMember>
Public Skin As String
<DataMember>
Public Name As String
<DataMember>
Public Facing As Integer
'TODO: Add enum
<DataMember>
Public Movement As String
<DataMember>
Public MoveRectangles As RectangleModel()
<DataMember>
Public SightDistance As Integer
<DataMember>
Public IsTrainer As Boolean
<DataMember>
Public ScriptBinding As String
End Class
<DataContract>
Public Class OffsetMapModel
<DataMember>
Public Offset As Vector3Model
<DataMember>
Public MapFile As String
End Class
<DataContract>
Class EntityRenderModeModel
Inherits JsonDataModel
<DataMember(Name:="RenderMethod", Order:=0)>
Private RenderMethodStr As String
Public Property RenderMethod() As GameModes.Maps.EntityRenderMode
Get
Return ConvertStringToEnum(Of GameModes.Maps.EntityRenderMode)(RenderMethodStr)
End Get
Set(value As GameModes.Maps.EntityRenderMode)
RenderMethodStr = value.ToString()
End Set
End Property
#Region "PrimitiveRenderMode"
<DataMember(Order:=1)>
Public Textures As TextureSourceModel()
<DataMember(Order:=2)>
Public TextureIndex As Integer()
<DataMember(Order:=3)>
Public PrimitiveModelId As Integer
<DataMember(Order:=4)>
Public RenderBackfaces As Boolean
#End Region
#Region "ModelRenderMode"
<DataMember(Order:=5)>
Public ModelPath As String
#End Region
<DataMember(Order:=6)>
Public Visible As Boolean
<DataMember(Order:=7)>
Public Opacity As Decimal
<DataMember(Order:=8)>
Public Shader As Vector3Model
<DataMember(Order:=9)>
Public ObstructCamera As Boolean
End Class
<DataContract>
Public Class ShaderModel
Inherits JsonDataModel
<DataMember>
Public Size As Vector3Model
<DataMember>
Public Shader As Vector3Model
<DataMember>
Public Position As Vector3Model
<DataMember>
Public StopOnContact As Boolean
<DataMember(Name:="Daytimes")>
Private DaytimesStr As String()
Public Property Daytimes() As World.DayTime()
Get
Return ConvertStringArrayToEnumArray(Of World.DayTime)(DaytimesStr)
End Get
Set(value As World.DayTime())
DaytimesStr = ConvertEnumArrayToStringArray(value)
End Set
End Property
End Class
<DataContract>
Public Class BackdropModel
<DataMember>
Public Size As Vector2Model
<DataMember>
Public Position As Vector3Model
<DataMember>
Public Rotation As Vector3Model
<DataMember>
Public Type As String
<DataMember>
Public Texture As TextureSourceModel
<DataMember>
Public Trigger As String
End Class
<DataContract>
Public Class StructureModel
<DataMember>
Public Offset As Vector3Model
<DataMember>
Public MapFile As String
<DataMember>
Public AddNPCs As Boolean
End Class
End Namespace

@ -0,0 +1,27 @@
Namespace DataModel.Json.Game
''' <summary>
''' A data model for a primitive model.
''' </summary>
Public Class PrimitiveModel
Inherits JsonDataModel
Public Vertices As VertexPositionNormalTextureModel()
End Class
''' <summary>
''' A data model for a <see cref="VertexPositionNormalTexture"/>.
''' </summary>
Public Class VertexPositionNormalTextureModel
Inherits JsonDataModel
Public Position As Vector3Model
Public Normal As Vector3Model
Public TextureCoordinate As Vector2Model
End Class
End Namespace

@ -0,0 +1,128 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.Game
''' <summary>
''' The data model for a trainer definition.
''' </summary>
<DataContract>
Public Class TrainerModel
Inherits JsonDataModel
<DataMember>
Public Name As String
<DataMember>
Public [Class] As String
<DataMember>
Public Money As Integer
<DataMember>
Public Messages As TrainerMessagesModel
<DataMember>
Public Songs As TrainerMusicModel
<DataMember>
Public Skin As String
<DataMember>
Public Region As String
<DataMember>
Public Pokemon As TrainerPokemonModel()
<DataMember>
Public Items As Integer()
<DataMember(Name:="Gender")>
Private GenderStr As String
Public Property Gender As Pokemon.Genders
Get
Return ConvertStringToEnum(Of Pokemon.Genders)(GenderStr)
End Get
Set(value As Pokemon.Genders)
GenderStr = value.ToString()
End Set
End Property
<DataMember>
Public AI As Integer
<DataMember>
Public Intro As TrainerIntroSequenceModel
''' <summary>
''' The data model for a trainer VS intro.
''' </summary>
<DataContract>
Public Class TrainerIntroSequenceModel
<DataMember>
Public VSType As String
<DataMember>
Public BarType As String
End Class
''' <summary>
''' The data model for a trainer's Pokémon data.
''' </summary>
<DataContract>
Public Class TrainerPokemonModel
<DataMember>
Public HasFullData As Boolean
<DataMember>
Public Level As Integer
<DataMember>
Public Number As Integer
<DataMember>
Public Data As PlayerData.PokemonDataModel
End Class
''' <summary>
''' The data model for a trainer's messages.
''' </summary>
<DataContract>
Public Class TrainerMessagesModel
<DataMember>
Public Intro As String
<DataMember>
Public Outro As String
<DataMember>
Public Defeat As String
End Class
''' <summary>
''' The data model for a trainer's music model
''' </summary>
<DataContract>
Public Class TrainerMusicModel
<DataMember>
Public Intro As String
<DataMember>
Public Defeat As String
<DataMember>
Public Battle As String
End Class
End Class
End Namespace

@ -0,0 +1,33 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.GameJolt
''' <summary>
''' An entry of the GameJolt ban list.
''' </summary>
<DataContract>
Public Class BanListEntryModel
<DataMember(Order:=0)>
Public GameJoltId As String 'For future compatibility, we use string instead of int.
<DataMember(Order:=1)>
Public BanReason As Integer
End Class
''' <summary>
''' An entry of the GameJolt ban reason list.
''' </summary>
<DataContract>
Public Class BanReasonEntryModel
<DataMember(Order:=0)>
Public Id As Integer
<DataMember(Order:=1)>
Public Reason As String
End Class
End Namespace

@ -0,0 +1,29 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.GameJolt
<DataContract>
Public Class DataStorageResponseModel
Inherits JsonDataModel
<DataMember>
Public response As DataStorageModel
<DataContract>
Public Class DataStorageModel
<DataMember>
Public success As String
<DataMember>
Public data As String
<DataMember>
Public message As String
End Class
End Class
End Namespace

@ -0,0 +1,64 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.GameJolt
<DataContract>
Public Class UserDataResponseModel
Inherits JsonDataModel
<DataMember>
Public response As UserDataCollectionModel
<DataContract>
Public Class UserDataCollectionModel
<DataMember>
Public success As String
<DataMember>
Public users As UserDataModel()
<DataContract>
Public Class UserDataModel
<DataMember>
Public message As String
<DataMember>
Public id As String
<DataMember>
Public type As String
<DataMember>
Public username As String
<DataMember>
Public avatar_url As String
<DataMember>
Public signed_up As String
<DataMember>
Public last_logged_in As String
<DataMember>
Public status As String
<DataMember>
Public developer_name As String
<DataMember>
Public developer_website As String
<DataMember>
Public developer_description As String
End Class
End Class
End Class
End Namespace

@ -0,0 +1,26 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.GameJolt
<DataContract>
Public Class VerifyUserResponseModel
Inherits JsonDataModel
<DataMember>
Public response As VerifyUserModel
<DataContract>
Public Class VerifyUserModel
<DataMember>
Public success As String
<DataMember>
Public message As String
End Class
End Class
End Namespace

@ -0,0 +1,31 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.GameModeData
''' <summary>
''' The data model for a badge.
''' </summary>
<DataContract>
Public Class BadgeModel
Inherits JsonDataModel
<DataMember>
Public Index As Integer
<DataMember>
Public Name As String
<DataMember>
Public Texture As TextureSourceModel
<DataMember>
Public Region As String
'TODO: Add enum
<DataMember>
Public HM As String
End Class
End Namespace

@ -0,0 +1,27 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.GameModeData
<DataContract>
Public Class ContactModel
Inherits JsonDataModel
<DataMember>
Public Id As Integer
<DataMember>
Public Name As String
<DataMember>
Public Skin As String
<DataMember>
Public Location As String
<DataMember>
Public Removable As Boolean
End Class
End Namespace

@ -0,0 +1,74 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.GameModeData
''' <summary>
''' The data model of a GameMode config file.
''' </summary>
<DataContract>
Public Class GameModeModel
Inherits JsonDataModel
<DataMember(Order:=0)>
Public Name As String
<DataMember(Order:=1)>
Public Description As String
<DataMember(Order:=2)>
Public Version As String
<DataMember(Order:=3)>
Public Author As String
#Region "Paths"
<DataMember(Order:=4)>
Public MapPath As String
<DataMember(Order:=5)>
Public ScriptPath As String
<DataMember(Order:=6)>
Public PokeFilePath As String
<DataMember(Order:=7)>
Public ContentPath As String
<DataMember(Order:=8)>
Public DataPath As String
#End Region
<DataMember(Order:=9)>
Public StartConfiguration As GameModeStartConfigurationModel
<DataMember(Order:=10)>
Public Gamerules As List(Of GameRuleModel)
<DataContract>
Public Class GameRuleModel
<DataMember>
Public Name As String
<DataMember>
Public Value As String
End Class
<DataContract>
Public Class GameModeStartConfigurationModel
<DataMember>
Public Map As String
<DataMember>
Public Script As String
End Class
End Class
End Namespace

@ -0,0 +1,78 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.GameModeData
''' <summary>
''' The data model for a Pokémon interaction.
''' </summary>
<DataContract>
Public Class InteractionModel
Inherits JsonDataModel
<DataMember>
Public MapFiles As String()
<DataMember>
Public PokemonIDs As Integer()
<DataMember(Name:="Daytimes")>
Private DaytimesStr As String()
Public Property Daytimes() As World.DayTime()
Get
Return ConvertStringArrayToEnumArray(Of World.DayTime)(DaytimesStr)
End Get
Set(value As World.DayTime())
DaytimesStr = ConvertEnumArrayToStringArray(value)
End Set
End Property
<DataMember(Name:="Weathers")>
Private WeathersStr As String()
Public Property Weathers() As World.Weathers()
Get
Return ConvertStringArrayToEnumArray(Of World.Weathers)(WeathersStr)
End Get
Set(value As World.Weathers())
WeathersStr = ConvertEnumArrayToStringArray(value)
End Set
End Property
<DataMember(Name:="Seasons")>
Private SeasonsStr As String()
Public Property Seasons() As World.Seasons()
Get
Return ConvertStringArrayToEnumArray(Of World.Seasons)(SeasonsStr)
End Get
Set(value As World.Seasons())
SeasonsStr = ConvertEnumArrayToStringArray(value)
End Set
End Property
<DataMember(Name:="Types")>
Private TypesStr As String()
Public Property Types() As Element.Types()
Get
Return ConvertStringArrayToEnumArray(Of Element.Types)(TypesStr)
End Get
Set(value As Element.Types())
TypesStr = ConvertEnumArrayToStringArray(value)
End Set
End Property
<DataMember>
Public Probability As Integer
<DataMember>
Public Emoji As String
<DataMember>
Public Message As String
End Class
End Namespace

@ -0,0 +1,24 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.GameModeData
<DataContract>
Public Class PokedexModel
Inherits JsonDataModel
<DataMember>
Public Name As String
<DataMember>
Public UnlockRegister As String
<DataMember>
Public PokemonNumbers As RangeModel()
<DataMember>
Public IncludeExternalPokemon As Boolean
End Class
End Namespace

@ -0,0 +1,62 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.GameModeData
''' <summary>
''' The data model of a Pokégear channel.
''' </summary>
<DataContract>
Public Class ChannelModel
Inherits JsonDataModel
<DataMember>
Public ListenRange As RangeModel
<DataMember>
Public OverwriteRange As RangeModel
<DataMember>
Public Name As String
<DataMember>
Public Region As String
<DataMember(Name:="Daytimes")>
Private DaytimesStr As String()
Public Property Daytimes() As World.DayTime()
Get
Return ConvertStringArrayToEnumArray(Of World.DayTime)(DaytimesStr)
End Get
Set(value As World.DayTime())
DaytimesStr = ConvertEnumArrayToStringArray(value)
End Set
End Property
<DataMember>
Public CardRequirements As String()
<DataMember>
Public Music As String
<DataMember>
Public Content As String
'TODO: Add enum
<DataMember>
Public ContentType As Integer '0=Text/1=Script/2=Special
<DataMember>
Public CanBeOverwritten As Boolean
'TODO: Add enum
<DataMember>
Public Activation As Integer '0=Alawys/1=LevelChannel
<DataMember>
Public ActivationRegister As String '0=no register
End Class
End Namespace

@ -0,0 +1,18 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.GameModeData
<DataContract>
Public Class RoamingRegionModel
Inherits JsonDataModel
<DataMember>
Public Region As String
<DataMember>
Public MapFiles As String()
End Class
End Namespace

@ -0,0 +1,29 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.GameModeData
<DataContract>
Public Class SmashRockDefinitionModel
Inherits JsonDataModel
<DataMember>
Public MapFile As String
<DataMember>
Public Items As SmashRockItemModel()
<DataContract>
Public Class SmashRockItemModel
<DataMember>
Public Id As Integer
<DataMember>
Public Probability As Integer
End Class
End Class
End Namespace

@ -0,0 +1,65 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.GameModeData
''' <summary>
''' The data model for a region map.
''' </summary>
<DataContract>
Public Class RegionmapModel
<DataMember>
Public RegionName As String
<DataMember>
Public Places As MapPlaceModel()
End Class
''' <summary>
''' The data model for a place on the region map.
''' </summary>
<DataContract>
Public Class MapPlaceModel
<DataMember>
Public PlaceType As String
<DataMember>
Public Name As String
<DataMember>
Public Mapfiles As String()
<DataMember>
Public Position As Vector2Model
<DataMember>
Public Direction As String
<DataMember>
Public RouteType As String
<DataMember>
Public Size As String
<DataMember>
Public FlyTarget As FlyTargetModel
''' <summary>
''' The data model for a fly target.
''' </summary>
<DataContract>
Public Class FlyTargetModel
<DataMember>
Public Mapfile As String
<DataMember>
Public Position As Vector3Model
End Class
End Class
End Namespace

@ -0,0 +1,244 @@
Imports System.Runtime.Serialization.Json
Imports System.Runtime.Serialization
Namespace DataModel.Json
''' <summary>
''' The base data model class.
''' </summary>
<DataContract>
Public MustInherit Class JsonDataModel
Protected Sub New()
'Empty constructor.
End Sub
''' <summary>
''' Creates a data model of a specific type.
''' </summary>
''' <typeparam name="T">The return type of the data model.</typeparam>
''' <param name="input">The Json input string.</param>
''' <returns></returns>
Public Shared Function FromString(Of T)(ByVal input As String) As T
'We create a new Json serializer of the given type and a corresponding memory stream here.
Dim serializer As New DataContractJsonSerializer(GetType(T))
Dim memStream As New MemoryStream()
'Create StreamWriter to the memory stream, which writes the input string to the stream.
Dim sw As New StreamWriter(memStream)
sw.Write(input)
sw.Flush()
'Reset the stream's position to the beginning:
memStream.Position = 0
Try
'Create and return the object:
Dim returnObj As T = CType(serializer.ReadObject(memStream), T)
Return returnObj
Catch ex As Exception
'Exception occurs while loading the object due to malformed Json.
'Throw exception and move up to handler class.
Throw New JsonDataLoadException(input, GetType(T))
End Try
End Function
''' <summary>
''' Converts a string representation of an enum member into the enum type.
''' </summary>
''' <typeparam name="TEnum">The enum type.</typeparam>
''' <param name="enumMember">The string representation of the enum member.</param>
''' <returns></returns>
Protected Function ConvertStringToEnum(Of TEnum)(ByVal enumMember As String) As TEnum
Dim names As String() = [Enum].GetNames(GetType(TEnum))
Dim index As Integer = 0
If names.Contains(enumMember) Then
index = Array.IndexOf(names, enumMember)
End If
Return CType([Enum].Parse(GetType(TEnum), names(index)), TEnum)
End Function
Protected Function ConvertStringArrayToEnumArray(Of TEnum)(ByVal enumMemberArray As String()) As TEnum()
Dim enumArr As TEnum() = New TEnum(enumMemberArray.Length - 1) {}
For i = 0 To enumMemberArray.Length - 1
enumArr(i) = ConvertStringToEnum(Of TEnum)(enumMemberArray(i))
Next
Return enumArr
End Function
Protected Function ConvertEnumArrayToStringArray(Of TEnum)(ByVal enumArray As TEnum()) As String()
Dim stringArr As String() = New String(enumArray.Length - 1) {}
For i = 0 To enumArray.Length - 1
stringArr(i) = enumArray(i).ToString()
Next
Return stringArr
End Function
''' <summary>
''' Returns the Json representation of this object.
''' </summary>
''' <returns></returns>
Public Overrides Function ToString() As String
'We create a new Json serializer of the given type and a corresponding memory stream here.
Dim serializer As New DataContractJsonSerializer(Me.GetType())
Dim memStream As New MemoryStream()
'Write the data to the stream.
serializer.WriteObject(memStream, Me)
'Reset the stream's position to the beginning:
memStream.Position = 0
'Create stream reader, read string and return it.
Dim sr As New StreamReader(memStream)
Dim returnJson As String = sr.ReadToEnd()
Return returnJson
End Function
''' <summary>
''' Returns the Json representation of this object in multiline format.
''' </summary>
''' <param name="spaces">The spaces to use for outlining.</param>
''' <returns></returns>
Public Overloads Function ToString(ByVal spaces As String) As String
Return JsonFormatter.FormatMultiline(ToString(), spaces)
End Function
End Class
''' <summary>
''' An exception thrown when an error occurs while loading Json data.
''' </summary>
Public Class JsonDataLoadException
Inherits Exception
Public Sub New(ByVal jsonData As String, ByVal targetType As Type)
MyBase.New("An exception occured trying to read Json data into an internal format. Please check that the input data is correct.")
Data.Add("Target type", targetType.Name)
Data.Add("Json data", jsonData)
End Sub
End Class
#Region "Data type model definitions"
''' <summary>
''' The data model for a RGB color (no alpha).
''' </summary>
<DataContract>
Public Class RGBColorModel
<DataMember(Order:=0)>
Public Red As Byte
<DataMember(Order:=1)>
Public Green As Byte
<DataMember(Order:=2)>
Public Blue As Byte
Public Function GetColor() As Color
Return New Color(Red, Green, Blue)
End Function
End Class
''' <summary>
''' The data model for a rectangle definition.
''' </summary>
<DataContract>
Public Class RectangleModel
<DataMember(Order:=0)>
Public X As Integer
<DataMember(Order:=1)>
Public Y As Integer
<DataMember(Order:=2)>
Public Width As Integer
<DataMember(Order:=3)>
Public Height As Integer
Public Function GetRectangle() As Rectangle
Return New Rectangle(X, Y, Width, Height)
End Function
End Class
''' <summary>
''' The data model for a Vector 3 definition.
''' </summary>
<DataContract>
Public Class Vector3Model
<DataMember(Order:=0)>
Public X As Decimal
<DataMember(Order:=1)>
Public Y As Decimal
<DataMember(Order:=2)>
Public Z As Decimal
Public Function ToVector3() As Vector3
Return New Vector3(X, Y, Z)
End Function
End Class
''' <summary>
''' The data model for a Vector 2 definition.
''' </summary>
<DataContract>
Public Class Vector2Model
<DataMember(Order:=0)>
Public X As Decimal
<DataMember(Order:=1)>
Public Y As Decimal
Public Function ToVector2() As Vector2
Return New Vector2(X, Y)
End Function
End Class
''' <summary>
''' The data model for a range.
''' </summary>
<DataContract>
Public Class RangeModel
<DataMember(Order:=0)>
Public Min As Decimal
<DataMember(Order:=1)>
Public Max As Decimal
End Class
''' <summary>
''' The data model for a texture source, with source file and rectangle.
''' </summary>
<DataContract>
Public Class TextureSourceModel
<DataMember(Order:=0)>
Public Source As String
<DataMember(Order:=1)>
Public Rectangle As RectangleModel
End Class
#End Region
End Namespace

@ -0,0 +1,88 @@
Namespace DataModel.Json
''' <summary>
''' A class to handle Json formatting.
''' </summary>
Public Class JsonFormatter
''' <summary>
''' Sanitizes unformatted Json.
''' </summary>
''' <param name="json">The unformatted Json.</param>
''' <param name="space">The characters which are used to indent.</param>
''' <returns></returns>
Public Shared Function FormatMultiline(ByVal json As String, ByVal space As String) As String
If json.Contains(vbNewLine) = True Then
'The input Json already contains new lines.
Return json
End If
Dim sb As New Text.StringBuilder()
Dim isString As Boolean = False
Dim isEscaped As Boolean = False
Dim indentLevel As Integer = 0
For Each c As Char In json
If isString = True Then
Select Case c
Case """"c
If isEscaped = False Then
isString = False
Else
isEscaped = False
End If
sb.Append(c)
Case "\"c
If isEscaped = False Then
isEscaped = True
Else
isEscaped = False
sb.Append(c)
sb.Append(c)
End If
Case Else
If isEscaped = False Then
sb.Append(c)
Else
isEscaped = False
End If
End Select
Else
Select Case c
Case "}"c, "]"c
indentLevel -= 1
sb.AppendLine()
AppendIndent(sb, indentLevel, space)
sb.Append(c)
Case "{"c, "["c
indentLevel += 1
sb.Append(c)
sb.AppendLine()
AppendIndent(sb, indentLevel, space)
Case ","c
sb.Append(c)
sb.AppendLine()
AppendIndent(sb, indentLevel, space)
Case """"c
sb.Append(c)
isString = True
Case Else
sb.Append(c)
End Select
End If
Next
Return sb.ToString()
End Function
Private Shared Sub AppendIndent(ByRef sb As Text.StringBuilder, ByVal level As Integer, ByVal space As String)
If level > 0 Then
For i = 1 To level
sb.Append(space)
Next
End If
End Sub
End Class
End Namespace

@ -0,0 +1,30 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.Localization
''' <summary>
''' The data model for localization files containing <see cref="TokenModel"/>.
''' </summary>
<DataContract>
Public Class LocalizationModel
Inherits JsonDataModel
<DataMember>
Public Property Tokens As List(Of TokenModel)
End Class
<DataContract>
Public Class TokenModel
Inherits JsonDataModel
<DataMember>
Public Property Id As String
<DataMember>
Public Property Val As String
End Class
End Namespace

@ -0,0 +1,24 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.Network
<DataContract>
Public Class PackageModel
Inherits JsonDataModel
<DataMember(Order:=0)>
Public ProtocolVersion As String
<DataMember(Order:=1)>
Public PackageType As Integer
<DataMember(Order:=2)>
Public Origin As Integer
<DataMember(Order:=3)>
Public Data As List(Of String)
End Class
End Namespace

@ -0,0 +1,93 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.PlayerData
''' <summary>
''' The data model for the keyboard save file.
''' </summary>
<DataContract>
Public Class KeyboardSave
Inherits JsonDataModel
<DataMember>
Public ForwardMove As String
<DataMember>
Public LeftMove As String
<DataMember>
Public BackwardMove As String
<DataMember>
Public RightMove As String
<DataMember>
Public Inventory As String
<DataMember>
Public Chat As String
<DataMember>
Public Special As String
<DataMember>
Public MuteMusic As String
<DataMember>
Public Up As String
<DataMember>
Public Down As String
<DataMember>
Public Left As String
<DataMember>
Public Right As String
<DataMember>
Public CameraLock As String
<DataMember>
Public GUIControl As String
<DataMember>
Public ScreenShot As String
<DataMember>
Public DebugControl As String
<DataMember>
Public Lighting As String
<DataMember>
Public PerspectiveSwitch As String
<DataMember>
Public FullScreen As String
<DataMember>
Public Enter1 As String
<DataMember>
Public Enter2 As String
<DataMember>
Public Back1 As String
<DataMember>
Public Back2 As String
<DataMember>
Public Escape As String
<DataMember>
Public OnlineStatus As String
<DataMember>
Public Sprinting As String
End Class
End Namespace

@ -0,0 +1,86 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.PlayerData
''' <summary>
''' The data model for the options save file.
''' </summary>
<DataContract>
Public Class OptionsModel
Inherits JsonDataModel
<DataMember>
Public Music As Integer
<DataMember>
Public Sound As Integer
<DataMember>
Public Muted As Boolean
<DataMember>
Public RenderDistance As Integer
<DataMember>
Public ShowDebug As Integer
<DataMember>
Public ShowBoundingBoxes As Boolean
<DataMember>
Public ShowDebugConsole As Boolean
<DataMember>
Public ShowGUI As Boolean
<DataMember>
Public GraphicStyle As Integer
<DataMember>
Public LoadOffsetMaps As Integer
<DataMember>
Public Language As String
<DataMember>
Public ViewBobbing As Boolean
<DataMember>
Public GamePadEnabled As Boolean
<DataMember>
Public LightingEnabled As Boolean
<DataMember>
Public StartedOfflineGame As Boolean
<DataMember>
Public PreferMultiSampling As Boolean
<DataMember>
Public ContentPacks As String()
<DataMember>
Public WindowSize As WindowSizeModel
<DataMember>
Public ForceMusic As Boolean
<DataMember>
Public MaxOffsetLevel As Integer
<DataContract>
Public Class WindowSizeModel
<DataMember(Order:=0)>
Public Width As Integer
<DataMember(Order:=1)>
Public Height As Integer
End Class
End Class
End Namespace

@ -0,0 +1,449 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.PlayerData
''' <summary>
''' The data model of a Pokémon save.
''' </summary>
<DataContract>
Public Class PokemonDataModel
Inherits JsonDataModel
<DataMember>
Public ID As Integer
<DataMember>
Public Experience As Integer
<DataMember(Name:="Gender")>
Private GenderStr As String
Public Property Gender() As Pokemon.Genders
Get
Return ConvertStringToEnum(Of Pokemon.Genders)(GenderStr)
End Get
Set(value As Pokemon.Genders)
GenderStr = value.ToString()
End Set
End Property
<DataMember>
Public EggSteps As Integer
<DataMember>
Public Item As HeldItemModel
<DataMember>
Public Nickname As String
<DataMember>
Public Level As Integer
<DataMember>
Public OT As String
<DataMember>
Public Ability As Integer
<DataMember(Name:="Status")>
Private StatusStr As String
Public Property Status() As Pokemon.StatusProblems
Get
Return ConvertStringToEnum(Of Pokemon.StatusProblems)(StatusStr)
End Get
Set(value As Pokemon.StatusProblems)
StatusStr = value.ToString()
End Set
End Property
<DataMember(Name:="Nature")>
Public NatureStr As String
Public Property Nature() As Pokemon.Natures
Get
Return ConvertStringToEnum(Of Pokemon.Natures)(NatureStr)
End Get
Set(value As Pokemon.Natures)
NatureStr = value.ToString()
End Set
End Property
<DataMember>
Public CatchInfo As PokemonCatchInformationModel
<DataMember>
Public Friendship As Integer
<DataMember>
Public IsShiny As Boolean
<DataMember>
Public Moves As MoveModel()
<DataMember>
Public HP As Integer
<DataMember>
Public EV As StatDefinitionModel
<DataMember>
Public IV As StatDefinitionModel
<DataMember>
Public Data As String
<DataMember>
Public IDValue As String
''' <summary>
''' The data model for a Pokémon's stat definitions.
''' </summary>
<DataContract>
Public Class StatDefinitionModel
<DataMember(Order:=0)>
Public HP As Integer
<DataMember(Order:=1)>
Public Atk As Integer
<DataMember(Order:=2)>
Public Def As Integer
<DataMember(Order:=3)>
Public SpAtk As Integer
<DataMember(Order:=4)>
Public SpDef As Integer
<DataMember(Order:=5)>
Public Speed As Integer
End Class
''' <summary>
''' The data model for a move.
''' </summary>
<DataContract>
Public Class MoveModel
<DataMember>
Private ID As Integer
<DataMember>
Private CurrentPP As Integer
<DataMember>
Private MaxPP As Integer
End Class
''' <summary>
''' The data model for Pokémon catch information.
''' </summary>
<DataContract>
Public Class PokemonCatchInformationModel
<DataMember>
Public Location As String
<DataMember>
Public Trainer As String
<DataMember>
Public BallID As Integer
<DataMember>
Public Method As String
End Class
''' <summary>
''' The data model of a held item.
''' </summary>
<DataContract>
Public Class HeldItemModel
<DataMember>
Private ID As Integer
<DataMember>
Private Data As String
End Class
End Class
End Namespace
Namespace DataModel.Json.GameModeData
''' <summary>
''' The data model of a Pokémon definition.
''' </summary>
<DataContract>
Public Class PokemonDefinitionModel
Inherits JsonDataModel
<DataMember(Order:=0)>
Public Name As String
<DataMember(Order:=1)>
Public Number As Integer
<DataMember(Name:="ExperienceType", Order:=2)>
Private ExperienceTypeStr As String
Public Property ExperienceType() As Pokemon.ExperienceTypes
Get
Return ConvertStringToEnum(Of Pokemon.ExperienceTypes)(ExperienceTypeStr)
End Get
Set(value As Pokemon.ExperienceTypes)
ExperienceTypeStr = value.ToString()
End Set
End Property
<DataMember(Order:=3)>
Public BaseExperience As Integer
<DataMember(Name:="Type1", Order:=4)>
Private Type1Str As String
Public Property Type1() As Element
Get
Return New Element(Type1Str)
End Get
Set(value As Element)
Type1Str = value.ToString()
End Set
End Property
<DataMember(Name:="Type2", Order:=5)>
Private Type2Str As String
Public Property Type2() As Element
Get
Return New Element(Type2Str)
End Get
Set(value As Element)
Type2Str = value.ToString()
End Set
End Property
<DataMember(Order:=6)>
Public CatchRate As Integer
<DataMember(Order:=7)>
Public BaseFriendship As Integer
<DataMember(Name:="EggGroup1", Order:=8)>
Private EggGroup1Str As String
Public Property EggGroup1() As Pokemon.EggGroups
Get
Return ConvertStringToEnum(Of Pokemon.EggGroups)(EggGroup1Str)
End Get
Set(value As Pokemon.EggGroups)
EggGroup1Str = value.ToString()
End Set
End Property
<DataMember(Name:="EggGroup2", Order:=9)>
Private EggGroup2Str As String
Public Property EggGroup2() As Pokemon.EggGroups
Get
Return ConvertStringToEnum(Of Pokemon.EggGroups)(EggGroup2Str)
End Get
Set(value As Pokemon.EggGroups)
EggGroup2Str = value.ToString()
End Set
End Property
<DataMember(Order:=10)>
Public BaseEggSteps As Integer
<DataMember(Order:=11)>
Public EggPokemon As Integer
<DataMember(Order:=12)>
Public Devolution As Integer
<DataMember(Order:=13)>
Public CanBreed As Boolean
<DataMember(Order:=14)>
Public IsGenderless As Boolean
<DataMember(Order:=15)>
Public IsMale As Decimal
<DataMember(Order:=16)>
Public Abilities As Integer()
<DataMember(Name:="HiddenAbility", Order:=17)>
Public HiddenAbilityID As Integer
<DataMember(Order:=18)>
Public EggMoves As Integer()
<DataMember(Order:=19)>
Public Machines As Integer()
<DataMember(Order:=20)>
Public TutorMoves As Integer()
<DataMember(Order:=21)>
Public BaseStats As PlayerData.PokemonDataModel.StatDefinitionModel
<DataMember(Order:=22)>
Public RewardEV As PlayerData.PokemonDataModel.StatDefinitionModel
<DataMember(Order:=23)>
Public CanFly As Boolean
<DataMember(Order:=24)>
Public CanSwim As Boolean
<DataMember(Order:=25)>
Public PokedexEntry As PokedexEntryModel
<DataMember(Order:=26)>
Public Scale As Vector3Model
<DataMember(Order:=27)>
Public TradeValue As Integer
<DataMember(Order:=28)>
Public Moves As LevelUpMoveModel()
<DataMember(Order:=29)>
Public EvolutionConditions As EvolutionConditionModel()
<DataMember(Order:=30)>
Public Items As WildItemModel()
''' <summary>
''' The data model of a Pokédex entry.
''' </summary>
<DataContract>
Public Class PokedexEntryModel
<DataMember(Order:=0)>
Public Text As String
<DataMember(Order:=1)>
Public Species As String
<DataMember(Order:=2)>
Public Height As Decimal
<DataMember(Order:=3)>
Public Weight As Decimal
<DataMember(Order:=4)>
Public Color As RGBColorModel
Public Function GetPokedexEntry() As PokedexEntry
Return New PokedexEntry(Text, Species, Weight, Height, Color.GetColor())
End Function
End Class
''' <summary>
''' The data model of a move a Pokémon learns on level up.
''' </summary>
<DataContract>
Public Class LevelUpMoveModel
<DataMember(Order:=0)>
Public Level As Integer
<DataMember(Order:=1)>
Public ID As Integer
End Class
''' <summary>
''' The data model of an evolution condition.
''' </summary>
<DataContract>
Public Class EvolutionConditionModel
<DataMember>
Public Evolution As Integer
'TODO: Add enum (Type + Trigger)
<DataMember>
Public ConditionType As String
<DataMember>
Public Trigger As String
<DataMember>
Public Condition As String
End Class
''' <summary>
''' The data model of a held item on a wild Pokémon on encounter.
''' </summary>
<DataContract>
Public Class WildItemModel
<DataMember(Order:=0)>
Public Id As Integer
<DataMember(Order:=1)>
Public Chance As Integer
End Class
End Class
''' <summary>
''' The data model of a Battle Frontier Pokémon definition.
''' </summary>
<DataContract>
Public Class FrontierDataModel
Inherits JsonDataModel
<DataMember>
Public Level As Integer
<DataMember>
Public Pokemon As FrontierPokemonDataModel()
''' <summary>
''' The data model of a Pokémon definition for a Battle Frontier Pokémon definition.
''' </summary>
<DataContract>
Public Class FrontierPokemonDataModel
<DataMember>
Public Numbers As Integer()
<DataMember>
Public ResultNumber As Integer
<DataMember>
Public MoveIds As Integer()
<DataMember>
Public Stat1 As String
<DataMember>
Public Stat2 As String
<DataMember>
Public HeldItemId As Integer
End Class
End Class
End Namespace

@ -0,0 +1,35 @@
Imports System.Runtime.Serialization
Namespace DataModel.Json.PlayerData
''' <summary>
''' The data model for the server list save file.
''' </summary>
<DataContract>
Public Class ServerListModel
Inherits JsonDataModel
<DataMember>
Public Servers As ServerModel()
''' <summary>
''' The data model for a server.
''' </summary>
<DataContract>
Public Class ServerModel
<DataMember(Order:=0)>
Public ListName As String
<DataMember(Order:=1)>
Public IpAddress As String
<DataMember(Order:=2)>
Public Port As Integer
End Class
End Class
End Namespace