예제 #1
0
        public static MenuTemplate MatchMenuTemplate(EntityManager entityManager, MultiSlotPredictedState plateState)
        {
            foreach (var menuTemplate in menuTemplates.Values)
            {
                if (IsMatch(entityManager, menuTemplate, plateState))
                {
                    return(menuTemplate);
                }
            }

            return(MenuTemplate.Null);
        }
예제 #2
0
        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);
        }