123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380 |
- using System;
- using System.Collections.Generic;
- namespace MaidStatus
- {
- public class ParametersPack
- {
- public ParametersPack()
- {
- this.dataPacks = new Dictionary<ParametersPack.StatusType, int>();
- }
- public ParametersPack(ParametersPack src)
- {
- this.dataPacks = new Dictionary<ParametersPack.StatusType, int>(src.dataPacks);
- }
- public static ParametersPack operator +(ParametersPack a, ParametersPack b)
- {
- ParametersPack parametersPack = new ParametersPack();
- foreach (KeyValuePair<ParametersPack.StatusType, int> keyValuePair in a.dataPacks)
- {
- parametersPack.Add(keyValuePair.Key, keyValuePair.Value);
- if (b.dataPacks.ContainsKey(keyValuePair.Key))
- {
- parametersPack.Add(keyValuePair.Key, b.dataPacks[keyValuePair.Key]);
- }
- }
- foreach (KeyValuePair<ParametersPack.StatusType, int> keyValuePair2 in b.dataPacks)
- {
- if (!parametersPack.dataPacks.ContainsKey(keyValuePair2.Key))
- {
- parametersPack.Add(keyValuePair2.Key, keyValuePair2.Value);
- }
- }
- return parametersPack;
- }
- public static ParametersPack.StatusType NameToStatusType(string statusName)
- {
- ParametersPack.StatusType result = ParametersPack.StatusType.体力;
- try
- {
- result = (ParametersPack.StatusType)Enum.Parse(typeof(ParametersPack.StatusType), statusName);
- }
- catch (Exception e)
- {
- NDebug.AssertParseError("StatusType", e);
- }
- return result;
- }
- public Dictionary<ParametersPack.StatusType, int> dataPacks { get; private set; }
- public void Parse(string texts, char separator = ',')
- {
- if (string.IsNullOrEmpty(texts))
- {
- return;
- }
- string[] array = texts.Split(new char[]
- {
- separator
- });
- foreach (string text in array)
- {
- string text2 = text.Replace("\u3000", string.Empty).Replace(" ", string.Empty).Replace("+", "+").Replace("ー", "-").Replace("=", "=");
- bool flag = text2.IndexOf('=') != -1;
- bool flag2 = text2.IndexOf('-') != -1;
- string[] array3 = null;
- if (flag)
- {
- array3 = text2.Split(new char[]
- {
- '='
- });
- }
- else if (flag2)
- {
- array3 = text2.Split(new char[]
- {
- '-'
- });
- }
- else
- {
- array3 = text2.Split(new char[]
- {
- '+'
- });
- }
- NDebug.Assert(array3.Length == 2, text2 + "\ntoken count error : " + array3.Length);
- ParametersPack.StatusType targetStatus = ParametersPack.NameToStatusType(array3[0]);
- int num = 0;
- try
- {
- num = int.Parse(array3[1]);
- }
- catch (Exception)
- {
- NDebug.Assert("intのパースに失敗しました\n" + array3[1], false);
- }
- if (flag)
- {
- this.Set(targetStatus, num);
- }
- else
- {
- if (flag2)
- {
- num *= -1;
- }
- this.Add(targetStatus, num);
- }
- }
- }
- public void Clear()
- {
- this.dataPacks.Clear();
- }
- public void Set(ParametersPack.StatusType targetStatus, int setNum)
- {
- this.dataPacks[targetStatus] = setNum;
- }
- public void Add(ParametersPack.StatusType targetStatus, int addNum)
- {
- if (!this.dataPacks.ContainsKey(targetStatus))
- {
- this.dataPacks.Add(targetStatus, 0);
- }
- Dictionary<ParametersPack.StatusType, int> dataPacks;
- (dataPacks = this.dataPacks)[targetStatus] = dataPacks[targetStatus] + addNum;
- if (this.dataPacks[targetStatus] == 0)
- {
- this.dataPacks.Remove(targetStatus);
- }
- }
- public void ApplyAddBonusStatus(BonusStatus bonusStatus)
- {
- if (this.dataPacks == null || this.dataPacks.Count <= 0)
- {
- return;
- }
- Dictionary<ParametersPack.StatusType, Action<int>> dictionary = new Dictionary<ParametersPack.StatusType, Action<int>>();
- dictionary.Add(ParametersPack.StatusType.興奮, delegate(int addNum)
- {
- bonusStatus.excite += addNum;
- });
- dictionary.Add(ParametersPack.StatusType.官能, delegate(int addNum)
- {
- bonusStatus.sensual += addNum;
- });
- dictionary.Add(ParametersPack.StatusType.理性, delegate(int addNum)
- {
- bonusStatus.reason += addNum;
- });
- dictionary.Add(ParametersPack.StatusType.体力, delegate(int addNum)
- {
- bonusStatus.hp += addNum;
- });
- dictionary.Add(ParametersPack.StatusType.精神, delegate(int addNum)
- {
- bonusStatus.mind += addNum;
- });
- dictionary.Add(ParametersPack.StatusType.接待, delegate(int addNum)
- {
- bonusStatus.reception += addNum;
- });
- dictionary.Add(ParametersPack.StatusType.お世話, delegate(int addNum)
- {
- bonusStatus.care += addNum;
- });
- dictionary.Add(ParametersPack.StatusType.可憐, delegate(int addNum)
- {
- bonusStatus.lovely += addNum;
- });
- dictionary.Add(ParametersPack.StatusType.気品, delegate(int addNum)
- {
- bonusStatus.elegance += addNum;
- });
- dictionary.Add(ParametersPack.StatusType.料理, delegate(int addNum)
- {
- bonusStatus.cooking += addNum;
- });
- dictionary.Add(ParametersPack.StatusType.ボ\u30FCカル, delegate(int addNum)
- {
- bonusStatus.vocal += addNum;
- });
- dictionary.Add(ParametersPack.StatusType.ダンス, delegate(int addNum)
- {
- bonusStatus.dance += addNum;
- });
- dictionary.Add(ParametersPack.StatusType.AP, delegate(int addNum)
- {
- bonusStatus.appealPoint += addNum;
- });
- dictionary.Add(ParametersPack.StatusType.魅惑, delegate(int addNum)
- {
- bonusStatus.charm += addNum;
- });
- dictionary.Add(ParametersPack.StatusType.淫欲, delegate(int addNum)
- {
- bonusStatus.inyoku += addNum;
- });
- dictionary.Add(ParametersPack.StatusType.M性, delegate(int addNum)
- {
- bonusStatus.mvalue += addNum;
- });
- dictionary.Add(ParametersPack.StatusType.変態, delegate(int addNum)
- {
- bonusStatus.hentai += addNum;
- });
- dictionary.Add(ParametersPack.StatusType.奉仕, delegate(int addNum)
- {
- bonusStatus.housi += addNum;
- });
- dictionary.Add(ParametersPack.StatusType.指導, delegate(int addNum)
- {
- bonusStatus.teachRate += addNum;
- });
- foreach (KeyValuePair<ParametersPack.StatusType, int> keyValuePair in this.dataPacks)
- {
- if (dictionary.ContainsKey(keyValuePair.Key))
- {
- dictionary[keyValuePair.Key](keyValuePair.Value);
- }
- else
- {
- NDebug.Assert("ボーナスステータスの適用に[" + keyValuePair.Key.ToString() + "]が指定されていますが未対応です", false);
- }
- }
- }
- public bool GreaterThanOrEqualToStatus(Status status)
- {
- if (this.dataPacks == null || this.dataPacks.Count <= 0)
- {
- return true;
- }
- Dictionary<ParametersPack.StatusType, int> dictionary = this.CreateCurrentStatusDic(status);
- foreach (KeyValuePair<ParametersPack.StatusType, int> keyValuePair in this.dataPacks)
- {
- NDebug.Assert(dictionary.ContainsKey(keyValuePair.Key), "ParametersPack:" + keyValuePair.Key.ToString() + "はステータスに存在しません");
- if (keyValuePair.Value > dictionary[keyValuePair.Key])
- {
- return false;
- }
- }
- return true;
- }
- public List<KeyValuePair<string, bool>> CreateConditionTextAndStaturResults(Status status)
- {
- List<KeyValuePair<string, bool>> list = new List<KeyValuePair<string, bool>>();
- Dictionary<ParametersPack.StatusType, int> dictionary = this.CreateCurrentStatusDic(status);
- foreach (KeyValuePair<ParametersPack.StatusType, int> keyValuePair in this.dataPacks)
- {
- string str = keyValuePair.Key.ToString();
- bool value = keyValuePair.Value <= dictionary[keyValuePair.Key];
- list.Add(new KeyValuePair<string, bool>(str + " " + keyValuePair.Value.ToString(), value));
- }
- return list;
- }
- private Dictionary<ParametersPack.StatusType, int> CreateCurrentStatusDic(Status status)
- {
- return new Dictionary<ParametersPack.StatusType, int>
- {
- {
- ParametersPack.StatusType.興奮,
- status.currentExcite
- },
- {
- ParametersPack.StatusType.官能,
- status.currentSensual
- },
- {
- ParametersPack.StatusType.理性,
- status.maxReason
- },
- {
- ParametersPack.StatusType.体力,
- status.maxHp
- },
- {
- ParametersPack.StatusType.精神,
- status.maxMind
- },
- {
- ParametersPack.StatusType.接待,
- status.reception
- },
- {
- ParametersPack.StatusType.お世話,
- status.care
- },
- {
- ParametersPack.StatusType.可憐,
- status.lovely
- },
- {
- ParametersPack.StatusType.気品,
- status.elegance
- },
- {
- ParametersPack.StatusType.魅惑,
- status.charm
- },
- {
- ParametersPack.StatusType.料理,
- status.cooking
- },
- {
- ParametersPack.StatusType.ボ\u30FCカル,
- status.vocal
- },
- {
- ParametersPack.StatusType.ダンス,
- status.dance
- },
- {
- ParametersPack.StatusType.AP,
- status.appealPoint
- },
- {
- ParametersPack.StatusType.淫欲,
- status.inyoku
- },
- {
- ParametersPack.StatusType.M性,
- status.mvalue
- },
- {
- ParametersPack.StatusType.変態,
- status.hentai
- },
- {
- ParametersPack.StatusType.奉仕,
- status.housi
- },
- {
- ParametersPack.StatusType.指導,
- status.teachRate
- },
- {
- ParametersPack.StatusType.経験人数,
- status.sexPlayNumberOfPeople
- }
- };
- }
- public enum StatusType
- {
- 興奮,
- 官能,
- 理性,
- 体力,
- 精神,
- 接待,
- お世話,
- 可憐,
- 気品,
- 魅惑,
- 料理,
- ボ\u30FCカル,
- ダンス,
- AP,
- 淫欲,
- M性,
- 変態,
- 奉仕,
- 指導,
- 経験人数
- }
- }
- }
|