Skip to content

Commit 948df7e

Browse files
committed
redid internal effect parameter storage to simplify loading/unloading.
writing to JSON now - not fully ready so reads still go off the old Magic file format.
1 parent 954c31b commit 948df7e

23 files changed

+220
-110
lines changed

3DGame/app.config

+15-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,16 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8"?>
22
<configuration>
3-
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/></startup></configuration>
3+
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" /></startup>
4+
<runtime>
5+
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
6+
<dependentAssembly>
7+
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
8+
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
9+
</dependentAssembly>
10+
<dependentAssembly>
11+
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
12+
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
13+
</dependentAssembly>
14+
</assemblyBinding>
15+
</runtime>
16+
</configuration>

GameObject/AbilityLogic/AbilityEffect.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public float GetDuration(int Level)
2727
public AbilityAnimation Animation;
2828
public EffectTarget Target;
2929

30-
internal string[] _rawparams;
30+
// internal string[] _rawparams;
3131

3232
public enum EffectTarget
3333
{
@@ -62,7 +62,7 @@ public static AbilityEffect CreateEffect(string type,string[] parameters)
6262

6363
return ef;
6464
}
65-
public abstract string[] GetParamValues();
66-
public abstract void SetParamValues(string[] Values);
65+
public virtual string[] ParamValues { get; set; }
66+
//public abstract void SetParamValues(string[] Values);
6767
}
6868
}

GameObject/AbilityLogic/AbilitySelector.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public static AbilitySelector CreateEffect(string type, string[] parameters)
4343

4444
return ef;
4545
}
46-
public abstract string[] GetParamValues();
47-
public abstract void SetParamValues(string[] Values);
46+
public string[] ParamValues { get; set; }
47+
public abstract void SetParamValues(string[] Values,bool DeleteThis);
4848
}
4949
}

GameObject/AbilityLogic/AbilityVFX.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ public static AbilityVFX CreateEffect(string type, string[] parameters)
4545
return ef;
4646
}
4747

48-
public abstract string[] GetParamValues();
49-
public abstract void SetParamValues(string[] Values);
48+
public virtual string[] ParamValues { get; set; }
5049
}
5150
}

GameObject/AbilityLogic/GameEffects/Effect_damage_bmd_full.cs

+8-15
Original file line numberDiff line numberDiff line change
@@ -14,35 +14,28 @@ public override List<string> GetParams(int Level)
1414
{
1515
List<string> p = new List<string>
1616
{
17-
Utility.GetGrowth(_rawparams[0], Level).ToString(),
17+
Utility.GetGrowth(ParamValues[0], Level).ToString(),
1818

19-
Utility.GetGrowth(_rawparams[1], Level).ToString(),
20-
Utility.GetGrowth(_rawparams[2], Level).ToString()
19+
Utility.GetGrowth(ParamValues[1], Level).ToString(),
20+
Utility.GetGrowth(ParamValues[2], Level).ToString()
2121
};
2222
return p;
2323
}
2424
public Effect_damage_bmd_full(string[] parameters)
2525
{
26-
SetParamValues(parameters);
26+
this.ParamValues = parameters;
2727
}
28-
public override void SetParamValues(string[] parameters)
29-
{
30-
this._rawparams = parameters;
31-
}
32-
public override void Apply(Actor Source, Actor Target,int Level)
28+
public override void Apply(Actor Source, Actor Target, int Level)
3329
{
3430
float dmg = 0;
3531
List<string> Params = GetParams(Level);
3632
//thisis all a test; normally it shoudl calculate m_atk*int * param /100f(for %), (simplify with a GetBMD call), then just m_atk, then the fixie at the end
3733
dmg += Source.CalculateStat("p_atk") * ((float)(int.Parse(Params[0]))) / 100f; //because %
3834
dmg += int.Parse(Params[2]); //because %
39-
Target.Hit(Source,dmg, true, 0); //#TODO: extra magic type param
40-
base.Apply(Source, Target,Level);
35+
Target.Hit(Source, dmg, true, 0); //#TODO: extra magic type param
36+
base.Apply(Source, Target, Level);
4137
}
4238

43-
public override string[] GetParamValues()
44-
{
45-
return _rawparams;
46-
}
39+
4740
}
4841
}

GameObject/AbilityLogic/GameEffects/Effect_dot_mwp.cs

+5-12
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,7 @@ public class Effect_dot_mwp : AbilityEffect
1212
public override string EffectType { get { return "Effect_dot_mwp"; } }
1313
public Effect_dot_mwp(string[] parameters)
1414
{
15-
SetParamValues(parameters);
16-
}
17-
public override void SetParamValues(string[] parameters)
18-
{
19-
this._rawparams = parameters;
15+
this.ParamValues = parameters;
2016
}
2117
public override void Apply(Actor Source, Actor Target, int Level)
2218
{
@@ -26,16 +22,13 @@ public override List<string> GetParams(int Level)
2622
{
2723
List<string> p = new List<string>
2824
{
29-
Utility.GetGrowth(_rawparams[0], Level).ToString(),
25+
Utility.GetGrowth(ParamValues[0], Level).ToString(),
3026

31-
Utility.GetGrowth(_rawparams[1], Level).ToString(),
32-
((float)Utility.GetGrowth(_rawparams[2], Level) / 10f).ToString()
27+
Utility.GetGrowth(ParamValues[1], Level).ToString(),
28+
((float)Utility.GetGrowth(ParamValues[2], Level) / 10f).ToString()
3329
};
3430
return p;
3531
}
36-
public override string[] GetParamValues()
37-
{
38-
return _rawparams;
39-
}
32+
4033
}
4134
}

GameObject/AbilityLogic/ITimedEffect.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public interface ITimedEffect
1616
float BaseTime { get; set; }
1717
float DeltaTime { get; set; }
1818
string EffectType { get; }
19-
string[] GetParamValues();
20-
void SetParamValues(string[] Values);
19+
string[] ParamValues { get; set; }
20+
//void SetParamValues(string[] Values,bool DeleteThis);
2121
}
2222
}

GameObject/AbilityLogic/VisualEffects/VFX_animate.cs

+14-11
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,22 @@ public override void Apply(Actor Source, Actor Target, int Level)
2121
}
2222
public VFX_animate(string[] parameters)
2323
{
24-
SetParamValues(parameters);
24+
this.ParamValues = parameters;
2525
}
26-
public override void SetParamValues(string[] parameters)
26+
public override string[] ParamValues
2727
{
28-
this._rawparams = parameters;
29-
parameters[0] = parameters[0].Split(',')[0];
30-
parameters[1] = parameters[1].Split(',')[0];
31-
this.AnimationName = parameters[0];
32-
this.Target = Utility.GetInt(parameters[1]);
33-
}
34-
public override string[] GetParamValues()
35-
{
36-
return _rawparams;
28+
set
29+
{
30+
this._rawparams = value;
31+
_rawparams[0] = value[0].Split(',')[0];
32+
_rawparams[1] = value[1].Split(',')[0];
33+
this.AnimationName = _rawparams[0];
34+
this.Target = Utility.GetInt(_rawparams[1]);
35+
}
36+
get
37+
{
38+
return _rawparams;
39+
}
3740
}
3841
}
3942
}

GameObject/AbilityLogic/VisualEffects/VFX_charge_ball.cs

+14-11
Original file line numberDiff line numberDiff line change
@@ -39,19 +39,22 @@ public override void Apply(Actor Source, Actor Target, int Level)
3939

4040
public VFX_charge_ball(string[] parameters)
4141
{
42-
SetParamValues(parameters);
42+
this.ParamValues = parameters;
4343
}
44-
public override void SetParamValues(string[] parameters)
44+
public override string[] ParamValues
4545
{
46-
this._rawparams = (string[])parameters.Clone();
47-
parameters[0] = parameters[0].Split(',')[0];
48-
parameters[1] = parameters[1].Split(',')[0];
49-
this.Colour = Utility.GetColor(parameters[0]);
50-
this.Size = Utility.GetFloat(parameters[1]);
51-
}
52-
public override string[] GetParamValues()
53-
{
54-
return _rawparams;
46+
set
47+
{
48+
this._rawparams = (string[])value.Clone();
49+
_rawparams[0] = _rawparams[0].Split(',')[0];
50+
_rawparams[1] = _rawparams[1].Split(',')[0];
51+
this.Colour = Utility.GetColor(_rawparams[0]);
52+
this.Size = Utility.GetFloat(_rawparams[1]);
53+
}
54+
get
55+
{
56+
return _rawparams;
57+
}
5558
}
5659
}
5760
}

GameObject/AbilityLogic/VisualEffects/VFX_throw_ball.cs

+14-12
Original file line numberDiff line numberDiff line change
@@ -37,20 +37,22 @@ public override void Apply(Actor Source, Actor Target, int Level)
3737
}
3838
public VFX_throw_ball(string[] parameters)
3939
{
40-
SetParamValues(parameters);
40+
this.ParamValues = parameters;
4141
}
42-
public override void SetParamValues(string[] parameters)
42+
public override string[] ParamValues
4343
{
44-
45-
this._rawparams = parameters;
46-
parameters[0] = parameters[0].Split(',')[0];
47-
parameters[1] = parameters[1].Split(',')[0];
48-
this.Colour = Utility.GetColor(parameters[0]);
49-
this.Size = Utility.GetFloat(parameters[1]);
50-
}
51-
public override string[] GetParamValues()
52-
{
53-
return _rawparams;
44+
set
45+
{
46+
this._rawparams = value;
47+
_rawparams[0] = _rawparams[0].Split(',')[0];
48+
_rawparams[1] = _rawparams[1].Split(',')[0];
49+
this.Colour = Utility.GetColor(_rawparams[0]);
50+
this.Size = Utility.GetFloat(_rawparams[1]);
51+
}
52+
get
53+
{
54+
return _rawparams;
55+
}
5456
}
5557
}
5658
}

GameObject/IO/MagicFileReader.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -517,7 +517,7 @@ public ITimedEffect ReadEffect()
517517
string[] eparams = new string[paramcount];
518518
for (int i = 0; i < paramcount; i++)
519519
eparams[i] = reader.ReadString();
520-
result.SetParamValues(eparams);
520+
result.ParamValues=eparams;
521521
return result;
522522

523523
}

GameObject/IO/MagicFileWriter.cs

+44-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Linq;
66
using System.Text;
77
using System.Threading.Tasks;
8+
using System.Text.Json;
89

910
namespace GameObject.IO
1011
{
@@ -15,6 +16,7 @@ public class MagicFileWriter
1516
{
1617
FileStream stream;
1718
BinaryWriter writer;
19+
StreamWriter jsonwriter;
1820
public MagicFileWriter()
1921
{
2022

@@ -39,21 +41,61 @@ public void WriteAbilityFile(List<ModularAbility> Abilities, string FileName = "
3941
writer.Close();
4042
writer.Dispose();
4143
stream.Dispose();
44+
45+
string json = JsonSerializer.Serialize(Abilities, new JsonSerializerOptions { WriteIndented = true });
46+
stream = new FileStream("gamedata\\abilities.json", FileMode.OpenOrCreate);
47+
48+
jsonwriter = new StreamWriter(stream);
49+
jsonwriter.Write(json);
50+
jsonwriter.Close();
51+
jsonwriter.Dispose();
52+
stream.Close();
53+
54+
55+
4256
}
4357

4458
public void WriteClassFile(List<CharacterTemplate> Classes, string FileName = "")
4559
{
4660
WriteClassFileVersion1(Classes, FileName);
61+
62+
string json = JsonSerializer.Serialize(Classes, new JsonSerializerOptions { WriteIndented = true });
63+
stream = new FileStream("gamedata\\classes.json", FileMode.OpenOrCreate);
64+
65+
jsonwriter = new StreamWriter(stream);
66+
jsonwriter.Write(json);
67+
jsonwriter.Close();
68+
jsonwriter.Dispose();
69+
stream.Close();
70+
4771
}
4872

4973
public void WriteItemTypeDefinitionFile(List<ItemTypeDefinition> ItemTypeDefinitions, string FileName = "")
5074
{
5175
WriteItemTypeDefinitionFile1(ItemTypeDefinitions, FileName);
76+
77+
string json = JsonSerializer.Serialize(ItemTypeDefinitions, new JsonSerializerOptions { WriteIndented = true });
78+
stream = new FileStream("gamedata\\itemtypes.json", FileMode.OpenOrCreate);
79+
80+
jsonwriter = new StreamWriter(stream);
81+
jsonwriter.Write(json);
82+
jsonwriter.Close();
83+
jsonwriter.Dispose();
84+
stream.Close();
5285
}
5386

5487
public void WriteItemAddonDefinitionFile(List<ItemAddonEntry> Addons, string FileName ="")
5588
{
5689
WriteItemAddonDefinitionFile1(Addons, FileName);
90+
91+
string json = JsonSerializer.Serialize(Addons, new JsonSerializerOptions { WriteIndented = true });
92+
stream = new FileStream("gamedata\\itemaddons.json", FileMode.OpenOrCreate);
93+
94+
jsonwriter = new StreamWriter(stream);
95+
jsonwriter.Write(json);
96+
jsonwriter.Close();
97+
jsonwriter.Dispose();
98+
stream.Close();
5799
}
58100

59101
public void WriteClassFileVersion0(List<CharacterTemplate> Classes, string FileName = "")
@@ -321,8 +363,8 @@ void WriteEffect(ITimedEffect effect)
321363
writer.Write(effect.DeltaTime);
322364
writer.Write(effect.BaseDuration);
323365
writer.Write(effect.DeltaDuration);
324-
writer.Write(effect.GetParamValues().Length);
325-
foreach (string s in effect.GetParamValues())
366+
writer.Write(effect.ParamValues.Length);
367+
foreach (string s in effect.ParamValues)
326368
writer.Write(s);
327369
}
328370

GameObject/ModularAbility.cs

+6-6
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ public class ModularAbility : GUI.IActionIcon,Interfaces.IGameID
5555
/// <summary>
5656
/// All base values of this ability
5757
/// </summary>
58-
public Dictionary<string, float> BaseValues = new Dictionary<string, float>();
58+
public Dictionary<string, float> BaseValues { get; set; } = new Dictionary<string, float>();
5959
/// <summary>
6060
/// Value deltas
6161
/// </summary>
62-
public Dictionary<string, float> GrowthValues = new Dictionary<string, float>();
62+
public Dictionary<string, float> GrowthValues { get; set; } = new Dictionary<string, float>();
6363
//the below probably unused - stored in individual effects instead
6464
public Dictionary<string, int> ValueUnits = new Dictionary<string, int>(); //0 is raw, 1 is %, 2 is 1/10ths
6565
/// <summary>
@@ -80,7 +80,7 @@ public float GetValue(string ValueName)
8080
/// <summary>
8181
/// Effect timeline
8282
/// </summary>
83-
public List<ITimedEffect> Effects = new List<ITimedEffect>();
83+
public List<ITimedEffect> Effects { get; set; } = new List<ITimedEffect>();
8484
/// <summary>
8585
/// Description of the ability appearing in game interfaces, with formatting codes
8686
/// to display level-specific numbers.
@@ -180,10 +180,10 @@ public string GetEffectParam(int Effect, int Param, int Level=-1)
180180

181181
if (this.Effects.Count <= Effect)
182182
return "";
183-
if (this.Effects[Effect].GetParamValues().Length <= Param)
183+
if (this.Effects[Effect].ParamValues.Length <= Param)
184184
return "";
185-
string pbase= (this.Effects[Effect].GetParamValues())[Param].Split(new char[] { ',' })[0];
186-
string pdelta= (this.Effects[Effect].GetParamValues())[Param].Split(new char[] { ',' }).Length==2? (this.Effects[Effect].GetParamValues())[Param].Split(new char[] { ',' })[1]:"0";
185+
string pbase= (this.Effects[Effect].ParamValues)[Param].Split(new char[] { ',' })[0];
186+
string pdelta= (this.Effects[Effect].ParamValues)[Param].Split(new char[] { ',' }).Length==2? (this.Effects[Effect].ParamValues)[Param].Split(new char[] { ',' })[1]:"0";
187187
float.TryParse(pbase, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out float floatbase);
188188
float.TryParse(pdelta, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out float floatdelta);
189189
NumberFormatInfo dotdecimal = new NumberFormatInfo();

GameObject/app.config

+4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
77
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
88
</dependentAssembly>
9+
<dependentAssembly>
10+
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
11+
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
12+
</dependentAssembly>
913
</assemblyBinding>
1014
</runtime>
1115
</configuration>

0 commit comments

Comments
 (0)