diff --git a/Icarus/Icarus.vbproj b/Icarus/Icarus.vbproj index ce431f1..d6248b1 100644 --- a/Icarus/Icarus.vbproj +++ b/Icarus/Icarus.vbproj @@ -87,6 +87,9 @@ ..\packages\Ionic.Zip.1.9.1.8\lib\Ionic.Zip.dll + + ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll + diff --git a/Icarus/ProjManager/ProjManagerVM.vb b/Icarus/ProjManager/ProjManagerVM.vb index e60b20a..446a1bb 100644 --- a/Icarus/ProjManager/ProjManagerVM.vb +++ b/Icarus/ProjManager/ProjManagerVM.vb @@ -2,6 +2,7 @@ Imports System.IO Imports EgtWPFLib5 Imports EgtUILib +Imports Newtonsoft.Json Public Class ProjManagerVM Inherits VMBase @@ -247,9 +248,37 @@ Public Class ProjManagerVM ''' Execute the Save. This method is invoked by the SaveCommand. ''' Public Sub Save() + If (Keyboard.Modifiers And ModifierKeys.Shift) = ModifierKeys.Shift Then + CreateJson() + End If Map.refSceneHostVM.SaveProject() End Sub + Private Function CreateJson() As Boolean + ' creo json + Dim LayerList As New List(Of JsonLayer) + For Each Layer In Map.refTFSEditorVM.LayerList + LayerList.Add(Layer.ConvertToJsonLayer()) + Next + Dim json As String = JsonConvert.SerializeObject(LayerList, Formatting.Indented) + Dim sProjName As String = "" + EgtGetCurrFilePath(sProjName) + If Not String.IsNullOrWhiteSpace(sProjName) Then + sProjName = Path.ChangeExtension(sProjName, ".json") + If File.Exists(sProjName) Then + Try + File.Delete(sProjName) + Catch ex As Exception + End Try + End If + Try + File.AppendAllText(sProjName, json) + Catch ex As Exception + EgtOutLog("Json writing error!") + End Try + End If + End Function + #End Region ' SaveCommand #Region "SaveAsCommand" @@ -385,7 +414,7 @@ Public Class ProjManagerVM Map.refSceneHostVM.SaveProject() End If EgtGetCurrFilePath(sCurrProject) - ' se modificato, chiedo se si vuole salvare + ' se modificato, chiedo se si vuole salvare Else If EgtGetModified() Then If MessageBox.Show(EgtMsg(MSG_TOPCOMMANDBAR + 11), "", MessageBoxButton.YesNo, MessageBoxImage.Question) = MessageBoxResult.Yes Then diff --git a/Icarus/TSFEditor/TFSEditorVM.vb b/Icarus/TSFEditor/TFSEditorVM.vb index b4d0cff..a4a37bd 100644 --- a/Icarus/TSFEditor/TFSEditorVM.vb +++ b/Icarus/TSFEditor/TFSEditorVM.vb @@ -962,4 +962,110 @@ Public Class TFSLayer Return If(dHours > 0, dHours.ToString("00") & ":", "") & If(dHours > 0, dMinutes.ToString("00"), dMinutes.ToString()) & ":" & dSeconds.ToString("00") End Function + Friend Function ConvertToJsonLayer() As JsonLayer + Return New JsonLayer(nIndex, dLength, dTMin, m_dTTrg, dTMax, dTCurr, m_dTWait, dFCurr, m_dFTrg, m_dFMax, m_dFCurr, dSpeed) + End Function + +End Class + +Public Class JsonLayer + Private m_nIndex As Integer + Public ReadOnly Property Index As Integer + Get + Return m_nIndex + End Get + End Property + + Private m_dLength As Double + Public ReadOnly Property Length As Double + Get + Return m_dLength + End Get + End Property + + Private m_dTMin As Double + Public ReadOnly Property TMin As Double + Get + Return m_dTMin + End Get + End Property + + Private m_dTTrg As Double + Public ReadOnly Property TTrg As Double + Get + Return m_dTTrg + End Get + End Property + + Private m_dTMax As Double + Public ReadOnly Property TMax As Double + Get + Return m_dTMax + End Get + End Property + + Private m_dTCurr As Double + Public ReadOnly Property TCurr As Double + Get + Return m_dTCurr + End Get + End Property + + Private m_dTWait As Double + Public ReadOnly Property TWait As Double + Get + Return m_dTWait + End Get + End Property + + Private m_dFMin As Double + Public ReadOnly Property FMin As Double + Get + Return m_dFMin + End Get + End Property + + Private m_dFTrg As Double + Public ReadOnly Property FTrg As Double + Get + Return m_dFTrg + End Get + End Property + + Private m_dFMax As Double + Public ReadOnly Property FMax As Double + Get + Return m_dFMax + End Get + End Property + + Private m_dFCurr As Double + Public ReadOnly Property FCurr As Double + Get + Return m_dFCurr + End Get + End Property + + Private m_dSpeed As Double + Public ReadOnly Property Speed As Double + Get + Return m_dSpeed + End Get + End Property + + Sub New(nIndex As Integer, dLength As Double, dTMin As Double, dTTrg As Double, dTMax As Double, dTCurr As Double, dTWait As Double, dFMin As Double, dFTrg As Double, dFMax As Double, dFCurr As Double, dSpeed As Double) + m_nIndex = nIndex + m_dLength = dLength + m_dTMin = dTMin + m_dTTrg = dTTrg + m_dTMax = dTMax + m_dTCurr = dTCurr + m_dTWait = dTWait + m_dFMin = dFMin + m_dFTrg = dFTrg + m_dFMax = dFMax + m_dFCurr = dFCurr + m_dSpeed = dSpeed + End Sub + End Class \ No newline at end of file diff --git a/Icarus/packages.config b/Icarus/packages.config index fdc9817..032fc75 100644 --- a/Icarus/packages.config +++ b/Icarus/packages.config @@ -1,4 +1,5 @@  + \ No newline at end of file