public override void Act(Queue <Message> messages) { try { while (messages.Count > 0) { Message message = messages.Dequeue(); Console.WriteLine($"\t{message.Format()}"); message.Parse(out string action, out string parameters); for (int i = 0; i < States.Length; i++) { if (States[i] == TerrainState.GettingWater) { States[i] = TerrainState.Water; } } switch (action) { case "move": if (_turns == 4) { States[4] = TerrainState.Fire; // at some point, start a fire } if (_turns == 20) { States[7] = TerrainState.Fire; } if (_turns == 50) { States[9] = TerrainState.Fire; } if (parameters == "right") { PatrolPosition++; } else if (parameters == "left") { PatrolPosition--; } UpdateVisualField(message.Sender); _turns++; break; case "get-water": if (States[PatrolPosition] == TerrainState.Water) { States[PatrolPosition] = TerrainState.GettingWater; Send(message.Sender, "got-water"); } UpdateVisualField(message.Sender); break; case "drop-water": if (States[PatrolPosition] == TerrainState.Fire) { States[PatrolPosition] = TerrainState.Normal; Send(message.Sender, "fire-out"); UpdateVisualField(message.Sender); } break; default: break; } _formGui.UpdateTerrainGUI(); } } catch (Exception ex) { Console.WriteLine(ex.Message); //Console.WriteLine(ex.ToString()); // for debugging } }
public override void Act(ActressMas.Message message) { try { if (_turns == 0) { Thread.Sleep(Utils.Delay); } Console.WriteLine("\t[{1} -> {0}]: {2}", this.Name, message.Sender, message.Content); string action; string parameters; Utils.ParseMessage(message.Content, out action, out parameters); for (int i = 0; i < States.Length; i++) { if (States[i] == TerrainState.GettingWater) { States[i] = TerrainState.Water; } } switch (action) { case "move": if (_turns == 4) { States[4] = TerrainState.Fire; // at some point, start a fire } if (_turns == 20) { States[7] = TerrainState.Fire; } if (_turns == 50) { States[9] = TerrainState.Fire; } if (parameters == "right") { PatrolPosition++; } else if (parameters == "left") { PatrolPosition--; } UpdateVisualField(message.Sender); _turns++; break; case "get-water": if (States[PatrolPosition] == TerrainState.Water) { States[PatrolPosition] = TerrainState.GettingWater; Send(message.Sender, "got-water"); } UpdateVisualField(message.Sender); break; case "drop-water": if (States[PatrolPosition] == TerrainState.Fire) { States[PatrolPosition] = TerrainState.Normal; Send(message.Sender, "fire-out"); UpdateVisualField(message.Sender); } break; default: break; } _formGui.UpdateTerrainGUI(); } catch (Exception ex) { Console.WriteLine(ex.Message); //Console.WriteLine(ex.ToString()); // for debugging } }