public override void NextStep(ref EnvironmentMessage message) { if ((_oldMessage != null) && (_oldMessage.ID != message.ID)) { _oldMessage = null; } else { _oldMessage = _newMessage; } _newMessage = message; if (message.Entity is AgentConfig) { agentConfig = (AgentConfig)message.Entity; _nextFigure = false; } else if (message.Entity is EnvironmentConfig) { environmentConfig = (EnvironmentConfig)_newMessage.Entity; _newMessage.Entity = agentConfig; if (_oldMessage != null) { if (_newMessage.Message == TypeMessege.NewAgent) { if ((_newMessage.Action == MsgAction.Approve) && (_oldMessage.Action == MsgAction.Invoke)) { _newMessage.Action = MsgAction.Commit; } else if ((_newMessage.Action == MsgAction.Approve) && (_oldMessage.Action == MsgAction.Commit)) { _newMessage = null; _oldMessage = null; } } } } else if ((message.Entity is SendPoint) || (message.Entity == null)) { switch (_newMessage.Message) { case TypeMessege.GetPoint: NextAction(); break; case TypeMessege.DeletePoint: CancelPoint(); break; } } message = _newMessage; }
public EnvironmentMessage Clone() { Object obj = null; if (_entity == null) { _entity = new SendPoint(0, new Point()); } else if (_entity is Point) { Point temp = (Point)_entity; obj = new Point(temp.X, temp.Y); } else if (_entity is SendPoint) { SendPoint temp = (SendPoint)_entity; obj = new SendPoint(temp.ID, new Point(temp.Point.X, temp.Point.Y)); } else if (_entity is AgentConfig) { AgentConfig temp = (AgentConfig)_entity; Purpose tempPurpose = new Purpose(temp.Purpose.Importance, temp.Purpose.Worship, new Point(((Point)(temp.Purpose.Entity)).X, ((Point)(temp.Purpose.Entity)).Y)); SortedList <TypeMessege, int> tempSortedList = new SortedList <TypeMessege, int>(); List <List <Point> > listConfig = new List <List <Point> >(); if (temp.ListConfig != null) { List <Point> tempConfig; foreach (List <Point> config in temp.ListConfig) { tempConfig = new List <Point>(); foreach (Point point in tempConfig) { tempConfig.Add(point); } listConfig.Add(tempConfig); } } if (temp.ResponceTime != null) { foreach (var i in temp.ResponceTime) { tempSortedList.Add(i.Key, i.Value); } } Point tempPoint = new Point(temp.StartPoint.X, temp.StartPoint.Y); obj = new AgentConfig(temp.Name, temp.Color, temp.SenseOfPurpose, tempPurpose, temp.Worship, temp.Temper, temp.LifeCircle, temp.Attempt, tempSortedList, tempPoint, temp.Length, listConfig); } else if (_entity is EnvironmentConfig) { EnvironmentConfig temp = (EnvironmentConfig)_entity; Point tempPoint = new Point(temp.OffsetXY.X, temp.OffsetXY.Y); SortedList <TypeMessege, int> tempSortedList = new SortedList <TypeMessege, int>(); if (tempSortedList != null) { foreach (var i in temp.Response) { tempSortedList.Add(i.Key, i.Value); } } obj = new EnvironmentConfig(temp.Height, temp.Width, tempPoint, tempSortedList); } return(new EnvironmentMessage(_id, _idOwner, _typeMessege, _action, obj)); }