public Skill(PowerEnum engagedPower, string skillName, int skillPower, int skillSuccessRate) : base(skillName) { this.SuccessRate = skillSuccessRate; this.AttackPower = skillPower; this.AttackType = engagedPower; }
public void RefillActivatedSlot(PowerEnum powerType) { if (ActivatedSlot != null) { ActivatedSlot.Power = powerType; } }
public superheroes(string name, string surname, string heroName, PowerEnum power, string weakness) { Name = surname; Surname = surname; HeroName = heroName; Power = power; Weakness = weakness; }
/// <summary> /// Method to change slot's model /// </summary> /// <param name="power">Power type</param> /// <param name="name">Name of slot - not important at this time</param> /// <param name="obj">Object Transform of component which has SlotModelProvider component</param> public void ChangeModel(PowerEnum power, string name, Transform obj) { SlotModelProvider sm = obj.GetComponent <SlotModelProvider>(); if (sm != null && sm.models.Count > 0) { Model = sm.models.Where(m => m.power == power && m.name == name).First(); } }
/// <summary> /// Method to change slot's model /// </summary> /// <param name="power">Power type</param> /// <param name="obj">Object Transform of component which has SlotModelProvider component</param> public void ChangeModel(PowerEnum power, Transform obj) { SlotModelProvider sm = obj.GetComponent <SlotModelProvider>(); if (sm != null && sm.models.Count > 0) { Model = sm.models.Where(m => m.power == power).First(); } usingCooldownCounter = 0; IsUsing = false; }
/// <summary> /// モード設定の1ブロックの文字列から設定を抽出 /// </summary> /// <param name="modeLines"></param> private Mode(List <string> modeLines) { Name = ApplicationUtil.ExtractModProperty(modeLines, "#mode"); Year = int.Parse(ApplicationUtil.ExtractModProperty(modeLines, "year")); Money = long.Parse(ApplicationUtil.ExtractModProperty(modeLines, "money")); Message = ApplicationUtil.ExtractModProperty(modeLines, "message").Replace(',', '\n'); MYear = int.Parse(ApplicationUtil.ExtractModProperty(modeLines, "myear")); DefautltCompositions = ApplicationUtil.ExtractModProperties(modeLines, "car").Select(value => { string[] arr = value.Split(","); int ck = int.Parse(arr[2]); //編成規格 bool isLinear = (ck & 32) > 0; bool isDiesel = (ck & 16) > 0; bool isElectric = (ck & 8) > 0; bool isSteam = (ck & 4) > 0; bool isNarrow = (ck & 1) > 0; bool isRegular = (ck & 2) > 0; bool isPendulum = (ck & 64) > 0; bool isFreeGauge = (ck & 128) > 0; RailTypeEnum railType = isLinear ? RailTypeEnum.LinearMotor : RailTypeEnum.Iron; CarGaugeEnum?carGauge = isLinear ? (CarGaugeEnum?)null : isNarrow ? CarGaugeEnum.Narrow : isRegular ? CarGaugeEnum.Regular : isFreeGauge ? CarGaugeEnum.FreeGauge : throw new ArgumentException("軌間が未定義です"); PowerEnum powerSource = isLinear ? PowerEnum.LinearMotor : isElectric ? PowerEnum.Electricity : isDiesel ? PowerEnum.Diesel : isSteam ? PowerEnum.Steam : throw new ArgumentException("動力源が未指定です"); return(new DefautltComposition { Name = arr[0], BestSpeed = int.Parse(arr[1]), CarCount = int.Parse(arr[3]), HeldUnits = int.Parse(arr[4]), Price = int.Parse(arr[5]), seat = LogicUtil.ConvertSeatModToInternalId(int.Parse(arr[6])), Gauge = carGauge, Power = powerSource, Tilt = isPendulum ? CarTiltEnum.Pendulum : CarTiltEnum.None, Type = railType }); }).ToList(); }
/// <summary> /// Create exact Power Command /// </summary> /// <returns>The power command.</returns> /// <param name="PowerType">Power type which we want</param> public ICommand CreatePowerCommand(PowerEnum PowerType){ switch(PowerType) { case PowerEnum.BubbleJump: return new BubbleJumpPowerCommand(_PowerUser); case PowerEnum.SugarBrick: return new SugarBrickPowerCommand(_PowerUser); case PowerEnum.CandySpitter: return new CandySpittingPowerCommand(_PowerUser); default: return new BubbleJumpPowerCommand(_PowerUser); //TODO } }
/// <summary> /// Add new slot with given power type. First of all, it's looking for already added slot with given powertype. /// If there is a none, it adds new, based on slot model. /// </summary> /// <param name="powerType">Power type</param> public void AddSlot(PowerEnum powerType) { var slot = FindSlotByPower(powerType); if (slot == null) { slot = ((GameObject)Instantiate(slotPrefab)).GetComponent <Slot>(); slot.transform.parent = this.transform; Slots.Add(slot); _addedNewSlot = true; slot.ChangeModel(powerType, transform); } slot.IsFull = true; }
/// <summary> /// Create exact Power Command /// </summary> /// <returns>The power command.</returns> /// <param name="PowerType">Power type which we want</param> public ICommand CreatePowerCommand(PowerEnum PowerType) { switch (PowerType) { case PowerEnum.BubbleJump: return(new BubbleJumpPowerCommand(_PowerUser)); case PowerEnum.SugarBrick: return(new SugarBrickPowerCommand(_PowerUser)); case PowerEnum.CandySpitter: return(new CandySpittingPowerCommand(_PowerUser)); default: return(new BubbleJumpPowerCommand(_PowerUser)); //TODO } }
public string PowerMapper(PowerEnum powerEnum) { switch (powerEnum) { case PowerEnum.None: return(VibrationIDFlag.VibrationPower.None); case PowerEnum.Weak: return(VibrationIDFlag.VibrationPower.Weak); case PowerEnum.Normal: return(VibrationIDFlag.VibrationPower.Normal); case PowerEnum.Strong: return(VibrationIDFlag.VibrationPower.Strong); } return(VibrationIDFlag.VibrationPower.None); }
/// <summary> /// 車両開発 /// </summary> /// <param name="name"></param> /// <param name="bestSpeed"></param> /// <param name="power"></param> /// <param name="gauge"></param> /// <param name="seat"></param> /// <param name="tilt"></param> public void DevelopVehicle(string name, int bestSpeed, PowerEnum power, CarGaugeEnum gauge, SeatEnum seat, CarTiltEnum tilt) { (bool can, _) = CheckCreateVehicle(name, bestSpeed, power, gauge, seat, tilt); if (!can) { throw new InvalidOperationException("車両を開発可能な技術が揃っていません"); } SpendMoney(CalcDevelopVehicleCost(bestSpeed, power, gauge, seat, tilt)); vehicles.Add(new Car { Name = name, bestSpeed = bestSpeed, power = power, gauge = gauge, seat = seat, carTilt = tilt, type = power == PowerEnum.LinearMotor ? RailTypeEnum.LinearMotor : RailTypeEnum.Iron, money = CalcPurchaseVehicleCost(bestSpeed, power, gauge, seat, tilt), }); }
public human(string name, string surname, string heroName, string weakness, PowerEnum power, string acquisition) //wAy = what are you : base(name, surname, heroName, power, weakness) { Acquisition = acquisition; }
void UsePower(PowerEnum PowerType) { ICommand PowerCommand = pcf.CreatePowerCommand(PowerType); PowerCommand.Execute(); }
public Mutant(string name, string surname, string heroName, string weakness, PowerEnum power, string withOrNotXmen) //wAy = what are you : base(name, surname, heroName, power, weakness) { WithOrNotXmen = withOrNotXmen; }
/// <summary> /// Method to change slot's model /// </summary> /// <param name="power">Power type</param> /// <param name="name">Name of slot - not important at this time</param> /// <param name="obj">Object Transform of component which has SlotModelProvider component</param> public void ChangeModel(PowerEnum power, string name, Transform obj) { SlotModelProvider sm = obj.GetComponent<SlotModelProvider>(); if (sm != null && sm.models.Count > 0) { Model = sm.models.Where(m => m.power == power && m.name == name).First(); } }
private Slot FindSlotByPower(PowerEnum powerType) { var slot = Slots.Where(s => s.Power == powerType).FirstOrDefault(); return(slot); }
public SpecialPower(PowerEnum attackType, string name, int price, int attackPower, int successRate) : base(attackType, name, attackPower, successRate) { this.Price = price; }
public Hit(int hitPower, PowerEnum hitType) : this(hitPower) { this.Type = hitType; }
/// <summary> /// 指定の車両が開発可能か /// </summary> /// <returns>開発可否 メッセージ</returns> public (bool CanCreateVehicle, string msg) CheckCreateVehicle(string Name, int BestSpeed, PowerEnum Power, CarGaugeEnum Gauge, SeatEnum Seat, CarTiltEnum tilt) { if (string.IsNullOrWhiteSpace(Name)) { return(false, "名無しの権兵衛です"); } if (Power == PowerEnum.LinearMotor) { if (genkaiLinear == 0) { return(false, "リニアは作れません"); } else if (BestSpeed > genkaiLinear) { return(false, "速すぎます"); } } if (Gauge == CarGaugeEnum.FreeGauge && !isDevelopedFreeGauge) { return(false, "フリーゲージは作れません"); } if (Power == PowerEnum.Steam) { if (!IsSteamAvailable()) { return(false, "時代遅れです"); } if (BestSpeed > genkaiJoki) { return(false, "速すぎます"); } } if (Power == PowerEnum.Electricity) { if (genkaiDenki == 0) { return(false, "電車は作れません"); } else if (BestSpeed > genkaiDenki) { return(false, "速すぎます"); } } if (Power == PowerEnum.Diesel) { if (genkaiKidosha == 0) { return(false, "ディーゼルは作れません"); } else if (BestSpeed > genkaiKidosha) { return(false, "速すぎます"); } } if (Seat == SeatEnum.Dual && !isDevelopedDualSeat) { return(false, "デュアル不可"); } if (Seat == SeatEnum.Convertible && !isDevelopedConvertibleCross) { return(false, "転換式クロス不可"); } if (Seat == SeatEnum.RetructableLong && !isDevelopedRetructableLong) { return(false, "収納式ロング不可"); } if (Seat == SeatEnum.Rich && !isDevelopedRichCross) { return(false, "豪華クロス不可"); } if (Seat == SeatEnum.DoubleDeckerRich && !isDevelopedRichCross) { return(false, "豪華クロス不可"); } switch (tilt) { case CarTiltEnum.Pendulum: if (!isDevelopedCarTiltPendulum) { return(false, "振り子式車体傾斜装置は未開発"); } break; case CarTiltEnum.SimpleMecha: case CarTiltEnum.HighMecha: if (!isDevelopedMachineTilt) { return(false, "機械式式車体傾斜装置は未開発"); } break; } return(true, ""); }
/// <summary> /// Add new slot with given power type. First of all, it's looking for already added slot with given powertype. /// If there is a none, it adds new, based on slot model. /// </summary> /// <param name="powerType">Power type</param> public void AddSlot(PowerEnum powerType) { var slot = FindSlotByPower(powerType); if (slot == null) { slot = ((GameObject)Instantiate(slotPrefab)).GetComponent<Slot>(); slot.transform.parent = this.transform; Slots.Add(slot); _addedNewSlot = true; slot.ChangeModel(powerType,transform); } slot.IsFull = true; }
/// <summary> /// 車両購入コスト計算 /// </summary> /// <param name="bestSpeed"></param> /// <param name="power"></param> /// <param name="gauge"></param> /// <param name="seat"></param> /// <param name="tilt"></param> /// <param name="genkaiLinear"></param> /// <param name="genkaiJoki"></param> /// <param name="genkaiDenki"></param> /// <param name="genkaiKidosha"></param> /// <returns></returns> public static int CalcPurchaseCarCost(int bestSpeed, PowerEnum power, CarGaugeEnum gauge, SeatEnum seat, CarTiltEnum tilt, int genkaiLinear, int genkaiJoki, int genkaiDenki, int genkaiKidosha) { // 8*速度^2 int cost = 8 * bestSpeed * bestSpeed; if (power == PowerEnum.LinearMotor) { cost = cost * 6 / 5 / genkaiLinear; } //リニア else { if (gauge == CarGaugeEnum.Regular || gauge == CarGaugeEnum.FreeGauge) { cost = cost * 3 / 2; } //標準軌orフリーゲージ if (power == PowerEnum.Steam) { cost = cost * 6 / 5 / genkaiJoki; } //蒸気 if (power == PowerEnum.Electricity) { cost /= genkaiDenki; } //電車 if (power == PowerEnum.Diesel) { cost /= genkaiKidosha; } //ディーゼル } switch (tilt) { case CarTiltEnum.Pendulum: cost = cost * 6 / 5; break; case CarTiltEnum.SimpleMecha: cost = cost * 11 / 10; break; case CarTiltEnum.HighMecha: cost = cost * 6 / 5; break; } cost += 500; //シート別 switch (seat) { case SeatEnum.None: case SeatEnum.Dual: cost += 100; break; case SeatEnum.RetructableLong: cost += 50; break; case SeatEnum.Long: case SeatEnum.Semi: case SeatEnum.Convertible: cost += 150; break; case SeatEnum.DoubleDeckerRotatable: case SeatEnum.DoubleDeckerRich: cost = cost * 4 / 3; break; } return(cost); }
/// <summary> /// Method to change slot's model /// </summary> /// <param name="power">Power type</param> /// <param name="obj">Object Transform of component which has SlotModelProvider component</param> public void ChangeModel(PowerEnum power, Transform obj) { SlotModelProvider sm = obj.GetComponent<SlotModelProvider>(); if (sm != null && sm.models.Count > 0) { Model = sm.models.Where(m => m.power == power).First(); } usingCooldownCounter = 0; IsUsing = false; }
private Slot FindSlotByPower(PowerEnum powerType) { var slot = Slots.Where(s => s.Power == powerType).FirstOrDefault(); return slot; }
public Alien(string name, string surname, string heroName, string weakness, PowerEnum power, PlanetEnum planet) //wAy = what are you : base(name, surname, heroName, power, weakness) { Weakness = weakness; Planet = planet; }
/// <summary> /// モード設定文字列からモードオブジェクト作成 /// </summary> /// <param name="modeLines"></param> /// <returns></returns> private static Mode CreateMode(List <string> modeLines) { Mode mode = new Mode(); //ゲーム設定 mode.Name = ExtractModProperty(modeLines, "#mode"); mode.Year = int.Parse(ExtractModProperty(modeLines, "year")); mode.Money = long.Parse(ExtractModProperty(modeLines, "money")); mode.Message = ExtractModProperty(modeLines, "message").Replace(',', '\n'); mode.MYear = int.Parse(ExtractModProperty(modeLines, "myear")); mode.genkaiJoki = ParseIntOrNull(ExtractModProperty(modeLines, "steam")) ?? 40; mode.genkaiDenki = ParseIntOrNull(ExtractModProperty(modeLines, "elect")); mode.genkaiKidosha = ParseIntOrNull(ExtractModProperty(modeLines, "diesel")); mode.genkaiLinear = ParseIntOrNull(ExtractModProperty(modeLines, "linear")); var tecno = ParseIntOrNull(ExtractModProperty(modeLines, "tecno")); if (tecno.HasValue) { int tecnoV = tecno.Value; if ((tecnoV & 256) > 0) //動的信号 { mode.isDevelopedDynamicSignal = true; mode.isDevelopedFreeGauge = true; mode.isDevelopedMachineTilt = true; mode.isDevelopedDualSeat = true; mode.isDevelopedRetructableLong = true; mode.isDevelopedRichCross = true; mode.isDevelopedCarTiltPendulum = true; mode.isDevelopedAutoGate = true; mode.isDevelopedConvertibleCross = true; mode.isDevelopedBlockingSignal = true; } else if ((tecnoV & 4) > 0) //フリーゲージトレイン { mode.isDevelopedFreeGauge = true; mode.isDevelopedMachineTilt = true; mode.isDevelopedDualSeat = true; mode.isDevelopedRetructableLong = true; mode.isDevelopedRichCross = true; mode.isDevelopedCarTiltPendulum = true; mode.isDevelopedAutoGate = true; mode.isDevelopedConvertibleCross = true; mode.isDevelopedBlockingSignal = true; } else if ((tecnoV & 512) > 0) //機械式車体傾斜装置 { mode.isDevelopedMachineTilt = true; mode.isDevelopedDualSeat = true; mode.isDevelopedRetructableLong = true; mode.isDevelopedRichCross = true; mode.isDevelopedCarTiltPendulum = true; mode.isDevelopedAutoGate = true; mode.isDevelopedConvertibleCross = true; mode.isDevelopedBlockingSignal = true; } else if ((tecnoV & 8) > 0) //デュアルシート { mode.isDevelopedDualSeat = true; mode.isDevelopedRetructableLong = true; mode.isDevelopedRichCross = true; mode.isDevelopedCarTiltPendulum = true; mode.isDevelopedAutoGate = true; mode.isDevelopedConvertibleCross = true; mode.isDevelopedBlockingSignal = true; } else if ((tecnoV & 32) > 0) //収納式ロングシート { mode.isDevelopedRetructableLong = true; mode.isDevelopedRichCross = true; mode.isDevelopedCarTiltPendulum = true; mode.isDevelopedAutoGate = true; mode.isDevelopedConvertibleCross = true; mode.isDevelopedBlockingSignal = true; } else if ((tecnoV & 16) > 0) //豪華クロスシート { mode.isDevelopedRichCross = true; mode.isDevelopedCarTiltPendulum = true; mode.isDevelopedAutoGate = true; mode.isDevelopedConvertibleCross = true; mode.isDevelopedBlockingSignal = true; } else if ((tecnoV & 1) > 0) //振り子式車体傾斜装置 { mode.isDevelopedCarTiltPendulum = true; mode.isDevelopedAutoGate = true; mode.isDevelopedConvertibleCross = true; mode.isDevelopedBlockingSignal = true; } else if ((tecnoV & 128) > 0) //自動改札機 { mode.isDevelopedAutoGate = true; mode.isDevelopedConvertibleCross = true; mode.isDevelopedBlockingSignal = true; } else if ((tecnoV & 64) > 0) //転換クロスシート { mode.isDevelopedConvertibleCross = true; mode.isDevelopedBlockingSignal = true; } else if ((tecnoV & 2) > 0) //閉塞信号 { mode.isDevelopedBlockingSignal = true; } } int[] people = ExtractModProperty(modeLines, "people")?.Split(",").Select(it => int.Parse(it)).Take(2).ToArray() ?? new int[] { 1, 1 }; if (people.Count() == 2) { mode.peopleNume = people[0]; mode.peopleDenom = people[1]; } //デフォルト編成 mode.DefautltCompositions = ExtractModProperties(modeLines, "car").Select(value => { string[] arr = value.Split(","); int ck = int.Parse(arr[2]); //編成規格 bool isLinear = (ck & 32) > 0; bool isDiesel = (ck & 16) > 0; bool isElectric = (ck & 8) > 0; bool isSteam = (ck & 4) > 0; bool isNarrow = (ck & 1) > 0; bool isRegular = (ck & 2) > 0; bool isPendulum = (ck & 64) > 0; bool isFreeGauge = (ck & 128) > 0; RailTypeEnum railType = isLinear ? RailTypeEnum.LinearMotor : RailTypeEnum.Iron; CarGaugeEnum?carGauge = isLinear ? (CarGaugeEnum?)null : isNarrow ? CarGaugeEnum.Narrow : isRegular ? CarGaugeEnum.Regular : isFreeGauge ? CarGaugeEnum.FreeGauge : throw new ArgumentException("軌間が未定義です"); PowerEnum powerSource = isLinear ? PowerEnum.LinearMotor : isElectric ? PowerEnum.Electricity : isDiesel ? PowerEnum.Diesel : isSteam ? PowerEnum.Steam : throw new ArgumentException("動力源が未指定です"); return(new DefautltComposition { Name = arr[0], BestSpeed = int.Parse(arr[1]), CarCount = int.Parse(arr[3]), HeldUnits = int.Parse(arr[4]), Price = int.Parse(arr[5]), seat = LogicUtil.ConvertSeatModToInternalId(int.Parse(arr[6])), Gauge = carGauge, Power = powerSource, Tilt = isPendulum ? CarTiltEnum.Pendulum : CarTiltEnum.None, Type = railType }); }).ToList(); //路線 List <LineDefaultSetting> lineDefaultSettings = new List <LineDefaultSetting>(); bool[] ltn = ExtractModProperty(modeLines, "ltn")?.Split(",").Select(flg => int.Parse(flg) != 0).ToArray() ?? new bool[0]; int[] lk = ExtractModProperty(modeLines, "lk")?.Split(",").Select(value => int.Parse(value)).ToArray() ?? new int[ltn.Length]; int[] lbs = ExtractModProperty(modeLines, "lbs")?.Split(",").Select(value => int.Parse(value)).ToArray() ?? new int[ltn.Length]; int[] las = ExtractModProperty(modeLines, "las")?.Split(",").Select(value => int.Parse(value)).ToArray() ?? new int[ltn.Length]; int[] lwe = ExtractModProperty(modeLines, "lwe")?.Split(",").Select(value => int.Parse(value)).ToArray() ?? Enumerable.Repeat(GameConstants.RetentionRateDefault, ltn.Length).ToArray(); int[] lts = ExtractModProperty(modeLines, "lts")?.Split(",").Select(value => int.Parse(value)).ToArray() ?? new int[ltn.Length]; int[] ulc = ExtractModProperty(modeLines, "ulc")?.Split(",").Select(value => int.Parse(value)).ToArray() ?? null; int[] ulcr = ExtractModProperty(modeLines, "ulcr")?.Split(",").Select(value => int.Parse(value)).ToArray() ?? new int[ltn.Length]; for (int i = 0; i < ltn.Length; i++) { LineDefaultSetting setting = new LineDefaultSetting(); setting.IsExist = ltn[i]; if (setting.IsExist) { if (i < lk.Length) { setting.Type = (lk[i] & 4) > 0 ? RailTypeEnum.LinearMotor : RailTypeEnum.Iron; setting.gauge = (lk[i] & 1) > 0 ? RailGaugeEnum.Regular : RailGaugeEnum.Narrow; setting.IsElectrified = (lk[i] & 2) > 0; } if (i < lbs.Length) { setting.bestSpeed = lbs[i]; } if (i < las.Length) { setting.LaneNum = las[i]; } if (i < lwe.Length) { setting.retentionRate = lwe[i]; } if (i < lts.Length) { setting.taihisen = (TaihisenEnum)lts[i]; } if (ulc != null) { setting.useComposition = mode.DefautltCompositions[ulc[i] - 1]; } if (i < ulcr.Length) { setting.runningPerDay = ulcr[i]; } } lineDefaultSettings.Add(setting); } mode.LineSettings = lineDefaultSettings; //運行系統 List <KeitoDefaultSetting> keitoDefaultSettings = new List <KeitoDefaultSetting>(); int[] udc = ExtractModProperty(modeLines, "udc")?.Split(",").Select(value => int.Parse(value)).ToArray() ?? new int[0]; int[] udcr = ExtractModProperty(modeLines, "udcr")?.Split(",").Select(value => int.Parse(value)).ToArray() ?? new int[udc.Length]; for (int i = 0; i < udc.Length; i++) { KeitoDefaultSetting setting = new KeitoDefaultSetting() { useComposition = mode.DefautltCompositions[udc[i] - 1], runningPerDay = udcr[i] }; keitoDefaultSettings.Add(setting); } mode.KeitoDefaultSettings = keitoDefaultSettings; //目標 mode.goalLineMake = (LineGoalTargetEnum?)ParseIntOrNull(ExtractModProperty(modeLines, "mmake")); mode.goalTechDevelop = ExtractModProperties(modeLines, "mtec").ToDictionary( value => (PowerEnum)(int.Parse(value.Split(",")[0]) - 1), value => int.Parse(value.Split(",")[1])); string[] mlbsValues = ExtractModProperty(modeLines, "mlbs")?.Split(",") ?? null; if (mlbsValues != null) { mode.goalLineBestSpeed = ((LineGoalTargetEnum?)ParseIntOrNull(mlbsValues[0]), int.Parse(mlbsValues[1])); } string[] mmanegeValues = ExtractModProperty(modeLines, "mmanage")?.Split(",") ?? null; if (mmanegeValues != null) { mode.goalLineManage = (LineGoalTargetEnum?)ParseIntOrNull(mmanegeValues[0]); } mode.goalMoney = ParseIntOrNull(ExtractModProperty(modeLines, "mmoney")); mode.gameoverYear = int.Parse(ExtractModProperty(modeLines, "myear")); return(mode); }