public static MenuTemplate MatchMenuTemplate(EntityManager entityManager, MultiSlotPredictedState plateState) { foreach (var menuTemplate in menuTemplates.Values) { if (IsMatch(entityManager, menuTemplate, plateState)) { return(menuTemplate); } } return(MenuTemplate.Null); }
private static bool IsMatch(EntityManager entityManager, MenuTemplate menuTemplate, MultiSlotPredictedState plateState) { if (plateState.Value.Count() != menuTemplate.MaterialCount()) { return(false); } if (plateState.Value.Count() == 1) { return(HasMaterial(entityManager, menuTemplate, plateState.Value.FilledIn1)); } if (plateState.Value.Count() == 2) { return(HasMaterial(entityManager, menuTemplate, plateState.Value.FilledIn1) && HasMaterial(entityManager, menuTemplate, plateState.Value.FilledIn2)); } if (plateState.Value.Count() == 3) { return(HasMaterial(entityManager, menuTemplate, plateState.Value.FilledIn1) && HasMaterial(entityManager, menuTemplate, plateState.Value.FilledIn2) && HasMaterial(entityManager, menuTemplate, plateState.Value.FilledIn3)); } if (plateState.Value.Count() == 4) { return(HasMaterial(entityManager, menuTemplate, plateState.Value.FilledIn1) && HasMaterial(entityManager, menuTemplate, plateState.Value.FilledIn2) && HasMaterial(entityManager, menuTemplate, plateState.Value.FilledIn3) && HasMaterial(entityManager, menuTemplate, plateState.Value.FilledIn4)); } return(true); }