// // win lose feedback // private BattleResult GetResult() { if (Player.HP <= 0) { return(BattleResult.Lose); } if (!Targets.Any() || Targets.All(t => t.HP <= 0)) { return(BattleResult.Win); } return(BattleResult.Continue); }
private void addToNextGenForFollowUp(RunItem <PositionData, ActionData, CheckPointType> item) { //var category = PositionCategorizer.Categorize(item.Position); var area = AreaGuide.PositionAreaId(item.Position.Data); //item.PreSolution.CategoryPath.Add(category); item.Position.CategoryPath.Add(area); if (item.HasMoved && !Fingerprints.ContainsKey(item.Position.Data.Fingerprint) && !(Targets.All(t => t.ReachTarget(item.Position) || t.IsOptional) && CancelCriteria == CancelCriteria.TargetsReached) && !(CancelCriteria == CancelCriteria.MaxSteps && item.Position.Depth >= TargetOptCenterParams.MaxSearchDepth)) { //item.Score = item.Position.Data.NextCheckPoint.Score(item.Position.Data); item.PreSolution.Score = AreaGuide.Score(item.Position.Data) + random.NextDouble() * 0.00001; var nextGen = CheckPoints.FirstOrDefault(ng => ng.CategoryNr == area); if (nextGen == null) { nextGen = new LocalCheckPoint(); nextGen.CategoryNr = area; CheckPoints.Add(nextGen); } //if (nextGen.Positions.All(rI => AreaGuide.CanOvercome(item.Position.Data, rI.Position.Data))) { nextGen.Positions.SortedInsert(item.PreSolution, TargetOptCenterParams.NextGenerationSize, (c) => c.Score); Fingerprints.Add(item.Position.Data.Fingerprint, item); } } else { } }
public override async Task <bool> IsCompleteAsync() { var values = await GetProgressValuesAsync(); return(Targets.All(target => values.Contains(target))); }