Skip to content

Commit

Permalink
MonsterForm updates
Browse files Browse the repository at this point in the history
- combat effectiveness panel with various controls
- path settings panel
  • Loading branch information
KorGgenT committed Nov 29, 2019
1 parent fc470b7 commit dcf6f37
Show file tree
Hide file tree
Showing 9 changed files with 1,222 additions and 117 deletions.
1,117 changes: 1,014 additions & 103 deletions MonsterForm.Designer.cs

Large diffs are not rendered by default.

78 changes: 75 additions & 3 deletions MonsterForm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,44 @@ public MonsterForm()
loadColors();
mtypeBindingSource.Add(main_monster);
monsterNameStringsBindingSource.Add(main_monster.Name);
pathSettingsDataBindingSource.Add(main_monster.PathSettings);
volumeListbox.SelectedIndex = 0;
weightComboBox.SelectedIndex = 1;
colorComboBox.SelectedIndex = 0;
damageInstanceTypeComboBox.SelectedIndex = 0;
}

private void clipboardButton_Click(object sender, EventArgs e)
private List<string> ListDataUpdater( DataGridView info )
{
List<string> ret = null;
if( info.Rows.Count > 0)
{
ret = new List<string> { };
}
foreach(DataGridViewRow row in info.Rows)
{
string text = (string)row.Cells[0].Value;
if( text != null)
{
ret.Add(text);
}
}
return ret;
}
private void UpdateMonsterDataGrid()
{
main_monster.UpdateVolume((int)volumeUpDown.Value, volumeListbox.Text);
main_monster.UpdateWeight((int)weightUpDown.Value, weightComboBox.Text);

DefaultContractResolver contractResolver = new DefaultContractResolver
main_monster.Material = ListDataUpdater(materialDataGrid);
main_monster.Species = ListDataUpdater(speciesDataGrid);
main_monster.Categories = ListDataUpdater(categoriesDataGrid);
}

private void clipboardButton_Click(object sender, EventArgs e)
{
UpdateMonsterDataGrid();

IgnoreEmptyEnumerablesResolver contractResolver = new IgnoreEmptyEnumerablesResolver
{
NamingStrategy = new SnakeCaseNamingStrategy()
};
Expand All @@ -55,5 +82,50 @@ private void clipboardButton_Click(object sender, EventArgs e)
}
));
}

private void damageInstanceAddButton_Click(object sender, EventArgs e)
{
damageInstanceDataGrid.Rows.Add(
damageInstanceTypeComboBox.Text,
damageInstanceAmountUpDown.Value,
damageInstanceArmorPenetrationUpDown.Value,
damageInstanceArmorMultiplierUpDown.Value,
damageInstanceDamageMultiplierUpDown.Value
);
}

private void difficultyLabel_Click(object sender, EventArgs e)
{
UpdateMonsterDataGrid();
difficultyLabel.Text = "Calculated Difficulty (click to update): " + main_monster.Difficulty().ToString();
}
private void UpdateMeleeDamageRange()
{
int min_damage = main_monster.MeleeDice;
int max_damage = min_damage * main_monster.MeleeDiceSides;
min_damage += main_monster.MeleeCut;
max_damage += main_monster.MeleeCut;
meleeDamageRangeLabel.Text = min_damage.ToString() + " - " + max_damage.ToString();
meleeDamageRangeLabel.Refresh();
}
private void meleeDiceUpdown_ValueChanged(object sender, EventArgs e)
{
UpdateMeleeDamageRange();
}

private void meleeDiceSidesUpDown_ValueChanged(object sender, EventArgs e)
{
UpdateMeleeDamageRange();
}

private void bonusCutUpDown_ValueChanged(object sender, EventArgs e)
{
UpdateMeleeDamageRange();
}

private void meleeDamageRangeLabel_Click(object sender, EventArgs e)
{
UpdateMeleeDamageRange();
}
}
}
54 changes: 54 additions & 0 deletions MonsterForm.resx
Original file line number Diff line number Diff line change
Expand Up @@ -123,10 +123,64 @@
<metadata name="mtypeBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="Material.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Material.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="materialBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>428, 17</value>
</metadata>
<metadata name="species.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="species.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Categories.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Categories.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Type.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Amount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ArmorPenetration.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ArmorMultiplier.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="DamageMultiplier.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Type.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Amount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ArmorPenetration.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ArmorMultiplier.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="DamageMultiplier.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="mtypeBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="monsterNameStringsBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>182, 17</value>
</metadata>
<metadata name="pathSettingsDataBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>603, 17</value>
</metadata>
</root>
10 changes: 10 additions & 0 deletions Properties/DataSources/PathSettingsData.datasource
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="PathSettingsData" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>cdda_item_creator.PathSettingsData, cdda-item-creator, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>
2 changes: 2 additions & 0 deletions cdda-item-creator.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="custom_json.cs" />
<Compile Include="MonsterForm.cs">
<SubType>Form</SubType>
</Compile>
Expand Down Expand Up @@ -95,6 +96,7 @@
<None Include="Properties\DataSources\cdda_item_creator.spell.spell_type1.datasource" />
<None Include="Properties\DataSources\MonsterNameStrings.datasource" />
<None Include="Properties\DataSources\Mtype.datasource" />
<None Include="Properties\DataSources\PathSettingsData.datasource" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
Expand Down
Binary file modified cdda-item-creator.pdb
Binary file not shown.
44 changes: 44 additions & 0 deletions custom_json.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace cdda_item_creator
{
public class IgnoreEmptyEnumerablesResolver : DefaultContractResolver
{
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
JsonProperty property = base.CreateProperty(member, memberSerialization);

if (property.DeclaringType is IEnumerable)
{
property.ShouldSerialize = instance =>
{
IEnumerable enumer = instance
.GetType()
.GetProperty(property.PropertyName)
.GetValue(instance, null) as IEnumerable;

if (enumer != null)
{
// check to see if there is at least one item in the Enumerable
return enumer.GetEnumerator().MoveNext();
}
else
{
// if the enumerable is null, we defer the decision to NullValueHandling
return true;
}
};
}

return property;
}
}
}
30 changes: 22 additions & 8 deletions mtype.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,21 @@ class PathSettingsData
{
public int MaxDist { get; set; }
[DefaultValue(-1)]
public int MaxLength { get; set; }
public int MaxLength { get; set; } = -1;
[DefaultValue(-1)]
public int BashStrength { get; set; }
public int BashStrength { get; set; } = -1;
[DefaultValue(false)]
public bool AllowOpenDoors { get; set; }
[DefaultValue(false)]
public bool AvoidTraps { get; set; }
[DefaultValue(true)]
public bool AllowClimbStairs { get; set; }
public bool AllowClimbStairs { get; set; } = true;
}

class DamageUnit
{
public float amount;
public string Type;
public float Amount;
public int ArmorPenetration;
[DefaultValue(1.0f)]
public float ArmorMultiplier = 1.0f;
Expand Down Expand Up @@ -64,6 +65,9 @@ class Mtype
[DefaultValue("")]
public string Volume { get; set; } = "";
public string Color { get; set; }
public List<string> Material { get; set; }
public List<string> Species { get; set; }
public List<string> Categories { get; set; }
[DefaultValue("")]
public string Weight { get; set; } = "";
public int Speed { get; set; }
Expand All @@ -74,8 +78,8 @@ class Mtype
public float MountableWeightRatio { get; set; }
public int AttackCost { get; set; }
public int MeleeSkill { get; set; }
public int MeleeDice { get; set; }
public int MeleeDiceSides { get; set; }
public int MeleeDice { get; set; } = 1;
public int MeleeDiceSides { get; set; } = 1;
public int GrabStrength { get; set; }
public int Dodge { get; set; }
public int ArmorBash { get; set; }
Expand All @@ -94,15 +98,15 @@ class Mtype
public int MechStrBonus { get; set; }
[DefaultValue("")]
public string MechBattery { get; set; } = "";
public DamageInstance melee_damage;
public DamageInstance MeleeDamage;
public int MeleeCut { get; set; }
// mandatory json member
public string Harvest { get; set; } = "";
[DefaultValue("")]
public string BurnInto { get; set; } = "";
[DefaultValue(-1)]
public int BashSkill { get; set; } = -1;
public PathSettingsData PathSettings { get; set; }
public PathSettingsData PathSettings { get; set; } = new PathSettingsData { };

public void UpdateVolume( int num_part, string unit )
{
Expand All @@ -113,5 +117,15 @@ public void UpdateWeight( int num_part, string unit )
{
Weight = num_part.ToString() + " " + unit;
}

public int Difficulty()
{
int difficulty = (int)((MeleeSkill + 1) * MeleeDice * (MeleeCut + MeleeDiceSides) * 0.04 +
(Dodge + 1) * (3 + ArmorBash + ArmorCut) * 0.04 +
(Diff /* + special_attacks.size() + 8 * emit_fields.size() */));
difficulty = (int)( difficulty * (Hp + Speed - AttackCost + (Morale + Aggression) * 0.1) * 0.01 +
(VisionDay + 2 * VisionNight) * 0.01);
return difficulty;
}
}
}
4 changes: 1 addition & 3 deletions spell_form.cs
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ private void clipboard_button_Click(object sender, EventArgs e)
main_spell.AffectedBps = effected_body_part_listbox.CheckedItems.Cast<string>().ToList();
main_spell.EffectTargets = effect_filter_listbox.CheckedItems.Cast<string>().ToList();

main_spell.ExtraEffects = null;
if(additionalSpellGrid.Rows.Count > 0)
{
main_spell.ExtraEffects = new List<FakeSpell> { };
Expand All @@ -76,7 +75,6 @@ private void clipboard_button_Click(object sender, EventArgs e)
main_spell.ExtraEffects.Add(spell);
}

main_spell.LearnSpells = null;
if (spellsLearnedGrid.Rows.Count > 0)
{
main_spell.LearnSpells = new Dictionary<string, int> { };
Expand All @@ -87,7 +85,7 @@ private void clipboard_button_Click(object sender, EventArgs e)
}


DefaultContractResolver contractResolver = new DefaultContractResolver
IgnoreEmptyEnumerablesResolver contractResolver = new IgnoreEmptyEnumerablesResolver
{
NamingStrategy = new SnakeCaseNamingStrategy()
};
Expand Down

0 comments on commit dcf6f37

Please sign in to comment.