public override void ControlHandle(Key k) { switch (k) { case Key.Left: if (option > 0) { option--; } break; case Key.Right: if (option < 1) { option++; } break; case Key.Circle: switch (option) { case 0: // Yes Seven.Reset(); break; case 1: // No Seven.Quit(); break; } break; } }
private void ParseResult(string[] right) { for (int i = 0; i < right.Length; i++) { var str = right[i]; if (str.Length == One.Length && str.All(b => One.Contains(b))) { ResultArray[i] = 1; } if (str.Length == Four.Length && str.All(b => Four.Contains(b))) { ResultArray[i] = 4; } if (str.Length == Seven.Length && str.All(b => Seven.Contains(b))) { ResultArray[i] = 7; } if (str.Length == Eight.Length && str.All(b => Eight.Contains(b))) { ResultArray[i] = 8; } //Part 2 //6 parts - 0,6,9 if (str.Length == Zero.Length && str.All(b => Zero.Contains(b))) { ResultArray[i] = 0; } if (str.Length == Six.Length && str.All(b => Six.Contains(b))) { ResultArray[i] = 6; } if (str.Length == Nine.Length && str.All(b => Nine.Contains(b))) { ResultArray[i] = 9; } //5 parts - 2,3,5 if (str.Length == Two.Length && str.All(b => Two.Contains(b))) { ResultArray[i] = 2; } if (str.Length == Three.Length && str.All(b => Three.Contains(b))) { ResultArray[i] = 3; } if (str.Length == Five.Length && str.All(b => Five.Contains(b))) { ResultArray[i] = 5; } } if (ResultArray.Any(a => a < 0)) { throw new Exception(); } //Part 2 ResultNumber = Convert.ToInt32(ResultArray[0].ToString() + ResultArray[1].ToString() + ResultArray[2].ToString() + ResultArray[3].ToString()); }
public FieldState(Seven seven, string formationId) : this(seven) { Random = new Random(); Lua = Seven.GetLua(); Lua[typeof(FieldState).Name] = this; }
public void Should_ParseInputAndComputeCorrectMaxSignal() { var input = "3,31,3,32,1002,32,10,32,1001,31,-2,31,1007,31,0,33," + "1002,33,7,33,1,33,31,31,1,32,31,31,4,31,99,0,0,0"; var expected = "65210"; _streamReader = StreamHelper.GetStream(input); var result = new Seven().Run(_streamReader); Assert.Equal(expected, result); }
public TryOutNumbers(Color color) { zero = new Zero(color); one = new One(color); two = new Two(color); three = new Three(color); four = new Four(color); five = new Five(color); six = new Six(color); seven = new Seven(color); eight = new Eight(color); nine = new Nine(color); }
/// <summary> /// Use first set of persian characters in unicode ( '\u0660', '\u0661', ... , '\u0669' ) /// </summary> public void UseFirstNumerics() { Zero.SetData('\u0660'); One.SetData('\u0661'); Two.SetData('\u0662'); Three.SetData('\u0663'); Four.SetData('\u0664'); Five.SetData('\u0665'); Six.SetData('\u0666'); Seven.SetData('\u0667'); Eight.SetData('\u0668'); Nine.SetData('\u0669'); }
/// <summary> /// Use second set of persian characters in unicode ( '\u06F0', '\u06F1', ... , '\u06F9' ) /// </summary> public void UseSecondNumerics() { Zero.SetData('\u06F0'); One.SetData('\u06F1'); Two.SetData('\u06F2'); Three.SetData('\u06F3'); Four.SetData('\u06F4'); Five.SetData('\u06F5'); Six.SetData('\u06F6'); Seven.SetData('\u06F7'); Eight.SetData('\u06F8'); Nine.SetData('\u06F9'); }
public List <int> GetList(List <int> answer) { One?.GetList(answer); answer.Add(value); Two?.GetList(answer); Three?.GetList(answer); Four?.GetList(answer); Five?.GetList(answer); Six?.GetList(answer); Seven?.GetList(answer); Eight?.GetList(answer); Nine?.GetList(answer); O?.GetList(answer); return(answer); }
public BattleState(Seven seven, string formationId) : this(seven) { _turnQueue = new Queue<Ally>(); _battleIcons = new Queue<BattleIcon>(); EventQueue = new PriorityQueue(); Random = new Random(); Lua = Seven.GetLua(); Lua.DoString(Resource.GetTextFromResource("lua.scripts.battle", typeof(Seven).Assembly)); Lua[typeof(BattleState).Name] = this; DeadEnemies = new List<Enemy>(); CombatantClocks = new ClockCollection(); _formation = seven.Data.GetFormation(formationId); }
public BattleState(Seven seven, string formationId) : this(seven) { _turnQueue = new Queue <Ally>(); _battleIcons = new Queue <BattleIcon>(); EventQueue = new PriorityQueue(); Random = new Random(); Lua = Seven.GetLua(); Lua.DoString(Resource.GetTextFromResource("lua.scripts.battle", typeof(Seven).Assembly)); Lua[typeof(BattleState).Name] = this; DeadEnemies = new List <Enemy>(); CombatantClocks = new ClockCollection(); _formation = seven.Data.GetFormation(formationId); }
private void Go_Click(object sender, EventArgs e) { //1 Label label4 = new Label { AutoSize = true, Font = new System.Drawing.Font("Arial Narrow", 15.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))), Location = new System.Drawing.Point(12, 50), Name = "label3", Size = new System.Drawing.Size(108, 22), TabIndex = 0, Text = "Сумма:" }; this.Controls.Add(label4); double[] words = UtilsW.StrToArray <double>(input.Text); Seven logic = new Seven(words); label2.Text = Convert.ToString(logic.ProductOfN()); }
public static float[,] getControlPointsFor(int start) { switch (start) { case (-1): return(Null.getInstance().getControlPoints()); case 0: return(Zero.getInstance().getControlPoints()); case 1: return(One.getInstance().getControlPoints()); case 2: return(Two.getInstance().getControlPoints()); case 3: return(Three.getInstance().getControlPoints()); case 4: return(Four.getInstance().getControlPoints()); case 5: return(Five.getInstance().getControlPoints()); case 6: return(Six.getInstance().getControlPoints()); case 7: return(Seven.getInstance().getControlPoints()); case 8: return(Eight.getInstance().getControlPoints()); case 9: return(Nine.getInstance().getControlPoints()); default: throw new ArgumentException("Unsupported number requested"); } }
static void Main(string[] args) { Seven s = new Seven(); s.Start(); }
protected State(Seven seven) : base(seven) { Seven = seven; }
private BattleState(Seven seven) : base(seven) { }
public InitialState(Seven seven) : base(seven) { }
public Prompt(Seven seven) : base(265, 200, 270, 150) { Visible = false; Seven = seven; }
public MenuState(Seven seven) : base(seven) { }
public void Advance() { //advance the program by one cycle //check if reached end of memory; if (pc >= 4095) { Debug.WriteLine("ERR: reached end of memory"); } else if (currentInstruction == "0000") { Debug.WriteLine("ERR: empty opcode"); } //parse current instruction and set it to a variable currentInstruction = String.Format("{0:X2}", memory[pc]) + String.Format("{0:X2}", memory[pc + 1]); byteInstruction = memory[pc]; Debug.WriteLine("Instruction as byte: " + byteInstruction); //parse x x = Convert.ToInt16(Convert.ToString(currentInstruction[1]), 16); //parsy y y = Convert.ToInt16(Convert.ToString(currentInstruction[2]), 16); //parse n n = Convert.ToInt16(Convert.ToString(currentInstruction[3]), 16); //parse kk kk = Convert.ToInt16(currentInstruction.Substring(2), 16); //parse nnn nnn = Convert.ToInt16(currentInstruction.Substring(1), 16); Debug.WriteLine($"\npc={pc}"); Debug.WriteLine($"The current instruction is:{currentInstruction} "); //set drawflag to false by default drawFlag = false; //switch for all possible instructions //TODO: replace this switch (currentInstruction) { case "00E0": Debug.WriteLine("00E0"); if (!usedInstructions.Contains("00E0")) { usedInstructions.Add("00E0"); } Instructions.clr(this); return; case "00EE": Debug.WriteLine("00EE"); if (!usedInstructions.Contains("00EE")) { usedInstructions.Add("00EE"); } Instructions.ret(this); return; case var dummy when One_addr.IsMatch(dummy): Debug.WriteLine("1nnn"); if (!usedInstructions.Contains("1nnn")) { usedInstructions.Add("1nnn"); } Instructions.jmp(this); return; case var dummy when Two_addr.IsMatch(dummy): Debug.WriteLine("2nnn"); if (!usedInstructions.Contains("2nnn")) { usedInstructions.Add("2nnn"); } Instructions.call(this); return; case var dummy when Three.IsMatch(dummy): Debug.WriteLine("3xkk"); if (!usedInstructions.Contains("3xkk")) { usedInstructions.Add("3xkk"); } Instructions.skp_if_kk(this); return; case var dummy when Four.IsMatch(dummy): Debug.WriteLine("4xkk"); if (!usedInstructions.Contains("4xkk")) { usedInstructions.Add("4xkk"); } Instructions.skp_not_kk(this); return; case var dummy when Five.IsMatch(dummy): Debug.WriteLine("5xy0"); if (!usedInstructions.Contains("5xy0")) { usedInstructions.Add("5xy0"); } Instructions.skp_if_x_y(this); return; case var dummy when Six.IsMatch(dummy): Debug.WriteLine("6xkk"); if (!usedInstructions.Contains("6xkk")) { usedInstructions.Add("6xkk"); } Instructions.ld_vx_kk(this); return; case var dummy when Seven.IsMatch(dummy): Debug.WriteLine("7xkk"); if (!usedInstructions.Contains("7xkk")) { usedInstructions.Add("7xkk"); } Instructions.add_vx_kk(this); return; case var dummy when Eight_load.IsMatch(dummy): Debug.WriteLine("8xy0"); if (!usedInstructions.Contains("8xy0")) { usedInstructions.Add("8xy0"); } Instructions.ld_vx_vy(this); return; case var dummy when Eight_or.IsMatch(dummy): Debug.WriteLine("8xy1"); if (!usedInstructions.Contains("8xy1")) { usedInstructions.Add("8xy1"); } Instructions.or_vx_vy(this); return; case var dummy when Eight_and.IsMatch(dummy): Debug.WriteLine("8xy2"); if (!usedInstructions.Contains("8xy2")) { usedInstructions.Add("8xy2"); } Instructions.and_vx_vy(this); return; case var dummy when Eight_xor.IsMatch(dummy): Debug.WriteLine("8xy3"); if (!usedInstructions.Contains("8xy3")) { usedInstructions.Add("8xy3"); } Instructions.xor_vx_vy(this); return; case var dummy when Eight_add.IsMatch(dummy): Debug.WriteLine("8xy4"); if (!usedInstructions.Contains("8xy4")) { usedInstructions.Add("8xy4"); } Instructions.add_vx_vy(this); return; case var dummy when Eight_sub.IsMatch(dummy): Debug.WriteLine("8xy5"); if (!usedInstructions.Contains("8xy5")) { usedInstructions.Add("8xy5"); } Instructions.sub_vx_vy(this); return; case var dummy when Eight_shr.IsMatch(dummy): Debug.WriteLine("8xy6"); if (!usedInstructions.Contains("8xy6")) { usedInstructions.Add("8xy6"); } Instructions.shr_vx_vy(this); return; case var dummy when Eight_subn.IsMatch(dummy): Debug.WriteLine("8xy7"); Instructions.subn_vy_vx(this); return; case var dummy when Eight_shl.IsMatch(dummy): Debug.WriteLine("8xyE"); if (!usedInstructions.Contains("8xyE")) { usedInstructions.Add("8xyE"); } Instructions.shl_vx_vy(this); return; case var dummy when Nine.IsMatch(dummy): Debug.WriteLine("9xy0"); if (!usedInstructions.Contains("9xy0")) { usedInstructions.Add("9xy0"); } Instructions.skp_not_equal(this); return; case var dummy when A_addr.IsMatch(dummy): if (!usedInstructions.Contains("Annn")) { usedInstructions.Add("Annn"); } Debug.WriteLine($"Annn where nnn = {currentInstruction.Substring(1, 3)}"); Instructions.ld_i_nnn(this); return; case var dummy when B_addr.IsMatch(dummy): Debug.WriteLine("Bnnn"); if (!usedInstructions.Contains("Bnnn")) { usedInstructions.Add("Bnnn"); } Instructions.jmp_v0_nnn(this); return; case var dummy when C_addr.IsMatch(dummy): Debug.WriteLine("Cxkk"); if (!usedInstructions.Contains("Cxkk")) { usedInstructions.Add("Cxkk"); } Instructions.ld_vx_rand(this); return; #region draw_func //huomionarvoista: // optimoinnin vuoksi voisi olla fiksua keksiä tapa vähentää type conversioneita // huom. mahdolliset bugit jotka mainittu edellisissä kommenteissa case var dummy when D_addr.IsMatch(dummy): stopwatch.Start(); Debug.WriteLine("Dxyn"); if (!usedInstructions.Contains("Dxyn")) { usedInstructions.Add("Dxyn"); } Instructions.drw(this); stopwatch.Stop(); Debug.WriteLine($"draw function elapsed ms = {stopwatch.ElapsedMilliseconds}"); stopwatch.Reset(); break; #endregion case var dummy when E_skp.IsMatch(dummy): Debug.WriteLine("Ex9E"); if (!usedInstructions.Contains("Ex9E")) { usedInstructions.Add("Ex9E"); } Instructions.skp_vx(this); return; case var dummy when E_sknp.IsMatch(dummy): Debug.WriteLine("ExA1"); if (!usedInstructions.Contains("ExA1")) { usedInstructions.Add("ExA1"); } Instructions.sknp_vx(this); return; case var dummy when F_load_from_dt.IsMatch(dummy): Debug.WriteLine("Fx07"); if (!usedInstructions.Contains("Fx07")) { usedInstructions.Add("Fx07"); } Instructions.ld_vx_dt(this); Debug.WriteLine($"registers[{x}] = {registers[x]}"); return; case var dummy when F_load_key.IsMatch(dummy): Debug.WriteLine("Fx0A"); if (!usedInstructions.Contains("Fx0A")) { usedInstructions.Add("Fx0"); } Instructions.ld_vx_key(this); return; case var dummy when F_load_to_dt.IsMatch(dummy): Debug.WriteLine("Fx15"); if (!usedInstructions.Contains("Fx15")) { usedInstructions.Add("Fx15"); } Instructions.ld_dt_vx(this); Debug.WriteLine($"delayTimer has been set to {delayTimer}"); return; case var dummy when F_load_to_st.IsMatch(dummy): Debug.WriteLine("Fx18"); if (!usedInstructions.Contains("Annn")) { usedInstructions.Add("Annn"); } Instructions.ld_st_vx(this); return; case var dummy when Add_i_vx.IsMatch(dummy): Debug.WriteLine("Fx1E"); if (!usedInstructions.Contains("Fx1E")) { usedInstructions.Add("Fx1E"); } Instructions.add_i_vx(this); return; case var dummy when Load_f_vx.IsMatch(dummy): Debug.WriteLine("Fx29"); if (!usedInstructions.Contains("Fx29")) { usedInstructions.Add("Fx29"); } Instructions.ld_f_vx(this); return; case var dummy when Load_b_vx.IsMatch(dummy): Debug.WriteLine("Fx33"); if (!usedInstructions.Contains("Fx33")) { usedInstructions.Add("Fx33"); } Instructions.ld_bcd(this); return; case var dummy when Load_i_vx.IsMatch(dummy): Debug.WriteLine("Fx55"); if (!usedInstructions.Contains("Fx55")) { usedInstructions.Add("Fx55"); } Instructions.ld_i_vx(this); return; case var dummy when Load_vx_i.IsMatch(dummy): Debug.WriteLine("Fx65"); if (!usedInstructions.Contains("Fx65")) { usedInstructions.Add("Fx65"); } Instructions.ld_vx_i(this); return; default: Debug.WriteLine("Unknown instruction"); pc += 2; return; } }
/*Functionality Added to make the calculator work with Keyboard NumberPad * When the correct Key is detected it will fire off the corresponding button press*/ private void Window_KeyDownPreview(object sender, KeyEventArgs e) { switch (e.Key) { case Key.NumPad0: Zero.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.NumPad1: One.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.NumPad2: Two.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.NumPad3: Three.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.NumPad4: Four.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.NumPad5: Five.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.NumPad6: Six.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.NumPad7: Seven.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.NumPad8: Eight.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.NumPad9: Nine.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.Add: Plus.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.Subtract: Minus.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.Multiply: Multiply.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.Divide: Divide.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.Enter: Equals.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; } }
void ReleaseDesignerOutlets() { if (Clear != null) { Clear.Dispose(); Clear = null; } if (Decimal != null) { Decimal.Dispose(); Decimal = null; } if (Divise != null) { Divise.Dispose(); Divise = null; } if (Eight != null) { Eight.Dispose(); Eight = null; } if (Equals != null) { Equals.Dispose(); Equals = null; } if (Five != null) { Five.Dispose(); Five = null; } if (Four != null) { Four.Dispose(); Four = null; } if (Minus != null) { Minus.Dispose(); Minus = null; } if (Multiply != null) { Multiply.Dispose(); Multiply = null; } if (Nine != null) { Nine.Dispose(); Nine = null; } if (One != null) { One.Dispose(); One = null; } if (Plus != null) { Plus.Dispose(); Plus = null; } if (ResultField != null) { ResultField.Dispose(); ResultField = null; } if (Seven != null) { Seven.Dispose(); Seven = null; } if (Six != null) { Six.Dispose(); Six = null; } if (Three != null) { Three.Dispose(); Three = null; } if (ToggleSign != null) { ToggleSign.Dispose(); ToggleSign = null; } if (Two != null) { Two.Dispose(); Two = null; } if (Zero != null) { Zero.Dispose(); Zero = null; } }
public LossState(Seven seven) : base(seven) { }
internal PostBattleState(Seven seven, int exp, int ap, int gil, List<IInventoryItem> items) : base(seven) { Exp = exp; AP = ap; Gil = gil; Items = new List<Inventory.Record>(); LevelUp = new LevelUp[Party.PARTY_SIZE]; MateriaLevelUp = new MateriaLevelUp[Party.PARTY_SIZE]; Exp_multiplier = new int[] { 100, 100, 100 }; Gil_multiplier = 100; for (int i = 0; i < 3; i++) { if (Party[i] != null) { foreach (MateriaOrb m in Party[i].Materia) { if (m != null) { if (m.Name == "gilplus") { switch (m.Level) { case 0: Gil_multiplier += 50; break; case 1: Gil_multiplier += 100; break; case 2: Gil_multiplier += 200; break; } } if (m.Name == "expplus") { switch (m.Level) { case 0: Exp_multiplier[i] += 50; break; case 1: Exp_multiplier[i] += 75; break; case 2: Exp_multiplier[i] += 100; break; } } } } } } CollectItems(items); _state = State.BeforeGainExp; }
// ReSharper disable once UnusedParameter.Local public Seven(Seven seven) { }
public void Should_ComputeCorrectMaxSignal(int expected, int[] data) { var result = new Seven().ComputeMaxSignal(data); Assert.Equal(expected, result); }
//OFF /************************************************************* * Obsługa przycisków *************************************************************/ private void Window_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.D1 || e.Key == Key.NumPad1) { One.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } else if (e.Key == Key.D2 || e.Key == Key.NumPad2) { Two.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } else if (e.Key == Key.D3 || e.Key == Key.NumPad3) { Three.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } else if (e.Key == Key.D4 || e.Key == Key.NumPad4) { Four.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } else if (e.Key == Key.D5 || e.Key == Key.NumPad5) { Five.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } else if (e.Key == Key.D6 || e.Key == Key.NumPad6) { Six.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } else if (e.Key == Key.D7 || e.Key == Key.NumPad7) { Seven.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } else if (e.Key == Key.D8 || e.Key == Key.NumPad8) { if (Keyboard.IsKeyDown(Key.LeftShift)) { Star.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } else { Eight.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } } else if (e.Key == Key.D9 || e.Key == Key.NumPad9) { Nine.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } else if (e.Key == Key.D0 || e.Key == Key.NumPad0) { Zero.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } /**********************************************************/ /*else if (e.Key == Key.Enter) * { * Equals.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); * }*/ else if (e.Key == Key.OemComma || e.Key == Key.OemPeriod || e.Key == Key.Decimal) { Dot.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } else if (e.Key == Key.OemMinus || e.Key == Key.Subtract) { Minus.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } else if (e.Key == Key.OemPlus || e.Key == Key.Add) { Plus.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } else if (e.Key == Key.Delete) { AC.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } else if (e.Key == Key.Back) { C.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } else if (e.Key == Key.Divide || e.Key == Key.OemBackslash || e.Key == Key.OemQuestion || e.Key == Key.Oem5) { Slash.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } else if (e.Key == Key.Multiply) { Star.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } else if (e.Key == Key.P) { MP.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } else if (e.Key == Key.Escape) { Application.Current.Shutdown(); } Console.WriteLine(e.Key.ToString()); }
private FieldState(Seven seven) : base(seven) { }
internal PostBattleState(Seven seven, int exp, int ap, int gil, List <IInventoryItem> items) : base(seven) { Exp = exp; AP = ap; Gil = gil; Items = new List <Inventory.Record>(); LevelUp = new LevelUp[Party.PARTY_SIZE]; MateriaLevelUp = new MateriaLevelUp[Party.PARTY_SIZE]; Exp_multiplier = new int[] { 100, 100, 100 }; Gil_multiplier = 100; for (int i = 0; i < 3; i++) { if (Party[i] != null) { foreach (MateriaOrb m in Party[i].Materia) { if (m != null) { if (m.Name == "gilplus") { switch (m.Level) { case 0: Gil_multiplier += 50; break; case 1: Gil_multiplier += 100; break; case 2: Gil_multiplier += 200; break; } } if (m.Name == "expplus") { switch (m.Level) { case 0: Exp_multiplier[i] += 50; break; case 1: Exp_multiplier[i] += 75; break; case 2: Exp_multiplier[i] += 100; break; } } } } } } CollectItems(items); _state = State.BeforeGainExp; }
public void Should_ComputeCorrectSignal(int expected, int[] phaseSettings, int[] data) { var result = new Seven().ComputeSignal(phaseSettings.Select(IntCodeValue.FromInt).ToArray(), data); Assert.Equal(expected, result); }
private void CheckEventQueue() { lock (EventQueue) { // Dequeue next ability if none is in progress if (ActiveAbility == null) { if (EventQueue.Count > 0) { BattleEvent activeEvent = EventQueue.Dequeue(); if (activeEvent != null) { activeEvent.Begin(); ActiveAbility = activeEvent; #if DEBUG Console.WriteLine("Event has begun:" + ActiveAbility.ToString()); #endif } } } // If the current ability is done, clear it if (ActiveAbility != null) { bool isDone = ActiveAbility.RunIteration(); if (isDone) { #if DEBUG Console.WriteLine("Event has completed:" + ActiveAbility.ToString()); #endif // if (ActiveAbility.Performer is Ally) // { // LastPartyAction = (AbilityState)ActiveAbility.Clone(); // } if (ActiveAbility == _victoryEvent) { int exp = 0; int ap = 0; int gil = 0; List <IInventoryItem> items = new List <IInventoryItem>(); foreach (Enemy enemy in DeadEnemies) { exp += enemy.Exp; ap += enemy.AP; gil += enemy.Gil; IInventoryItem item = enemy.WinItem(); if (item != null) { items.Add(item); } } Seven.EndBattle(exp, ap, gil, items); } if (ActiveAbility == _lossEvent) { Seven.LoseGame(); } ActiveAbility = null; CheckForDeadEnemies(); // We need to prune all events from a source who cannot act. // We must do the whole queue at once. We can't just look at // the head of the queue. // Example. You attack with a character -- an event goes in the // queue, possibly behind many other events. Then that ally is // paralyzed. Then that ally is attacked, and it reaches its // limit break. Then that character is cured by, say, one of // Aeris's limit breaks (all of these things went in the queue // before said ally's attack). Then you use that ally's limit // break immediately upon regaining control of it. // In theory, the attack event could still happen AFTER the limit // break. It needs to come out of the queue NOW if the ally // cannot act. EventQueue.PruneEvents(x => x.Source.CannotAct, "source cannot act"); } } } }