protected override void LogTeam(LogItem item) { CheckEnd(item.Time); PhaseTeamInfo pi = new PhaseTeamInfo(item) { When = item.Appear + item.Before + item.Wait + item.Work }; Info.Add(pi); }
protected override void OnStart(Random r, LogItem item) { base.OnStart(r, item); item.Reject = false; // на нет снятий :) }
private void AddItem(LogItem item) { Process.Add(item); UpdateNext(); }
// команда реально начала работать protected virtual void OnStart(Random r, LogItem item) { item.Wait = item.Time - item.Appear - item.Before; // отсечку можно вычислить только по факту TimeSpan dur = NextMoment(r, item.Team); item.Reject = Times.Max != TimeSpan.Zero && dur > Times.Max; if (item.Reject) dur = Times.Max; item.Work = dur; item.evt.Time += dur; item.evt.EType = EventType.End; AddItem(item); }
// команда появляется на этапе protected virtual void OnAppear(Random r, CPEvent evt) { CheckStart(evt.Time); var item = new LogItem(evt); item.Before = Scale(Times.Before, item.Team.Smartness); // !!! evt.EType = EventType.Start; evt.Time += item.Before; AddItem(item); }
protected virtual void LogTeam(LogItem item) { CheckEnd(item.Time); PhaseTeamInfo pi = new PhaseTeamInfo(item); Info.Add(pi); }
public void AddPhase(Phase p, LogItem item) { Info.Add(new TeamPhaseInfo(p, new BaseInfo(item), item.Before + item.After)); }