public void showInfo(Vector3 location, Aspects.Primary primary, Aspects.Secondary secondary)
 {
     panel.transform.position = new Vector3(location.x, location.y, panel.transform.position.z);
     this.primary.sprite      = Aspects.instance().getNormalSprite(primary);
     this.secondary.sprite    = Aspects.instance().getNormalSprite(secondary);
     panel.SetActive(true);
 }
Example #2
0
    private Potion getBestMatch(Aspects.Primary primary1, Aspects.Primary primary2, Aspects.Primary primary3, MultiSet <Aspects.Secondary> secondaries)
    {
        MultiSet <Aspects.Primary> primaries = new MultiSet <Aspects.Primary>();

        primaries.Add(primary1);
        primaries.Add(primary2);
        primaries.Add(primary3);

        if (!potions.ContainsKey(primaries))
        {
            return(defaultPotion);
        }

        List <Potion> primaryMatches = potions[primaries];

        Potion bestMatch = null;

        foreach (Potion primaryMatch in primaryMatches)
        {
            bool match = (primaryMatch.getSecondaries().Except(secondaries).Count == 0);

            if (match && (bestMatch == null || bestMatch.getSecondaries().Count() < primaryMatch.getSecondaries().Count()))
            {
                bestMatch = primaryMatch;
            }
        }

        return(bestMatch);
    }
    public IngredientData(IngredientType type, Aspects.Primary primary, Aspects.Secondary secondary)
    {
        this.type = type;
        this.primary = primary;
        this.secondary = secondary;

        primaryGuesses = new Dictionary<Aspects.Primary, GuessState>();
        secondaryGuesses = new Dictionary<Aspects.Secondary, GuessState>();
    }
Example #4
0
    public IngredientData(IngredientType type, Aspects.Primary primary, Aspects.Secondary secondary)
    {
        this.type      = type;
        this.primary   = primary;
        this.secondary = secondary;

        primaryGuesses   = new Dictionary <Aspects.Primary, GuessState>();
        secondaryGuesses = new Dictionary <Aspects.Secondary, GuessState>();
    }
Example #5
0
 public GuessState getGuessState(Aspects.Primary aspect)
 {
     if (primaryGuesses.ContainsKey(aspect))
     {
         return(primaryGuesses[aspect]);
     }
     else
     {
         return(GuessState.UNKNOWN);
     }
 }
Example #6
0
    public Potion(Aspects.Primary primary1, Aspects.Primary primary2, Aspects.Primary primary3,
                  MultiSet <Aspects.Secondary> secondaries, PotionSlot slot, Aspects.Secondary type, Effect effect)
    {
        primaries = new MultiSet <Aspects.Primary>();
        primaries.Add(primary1);
        primaries.Add(primary2);
        primaries.Add(primary3);

        this.secondaries = new MultiSet <Aspects.Secondary>(secondaries);

        _slot   = slot;
        _type   = type;
        _effect = effect;
    }
Example #7
0
    public void add(Aspects.Primary primary1, Aspects.Primary primary2, Aspects.Primary primary3, MultiSet <Aspects.Secondary> secondaries, PotionSlot slot, Aspects.Secondary type, Effect effect)
    {
        Potion potion = new Potion(primary1, primary2, primary3, secondaries, slot, type, effect);
        MultiSet <Aspects.Primary> primaries = new MultiSet <Aspects.Primary>();

        primaries.Add(primary1);
        primaries.Add(primary2);
        primaries.Add(primary3);

        if (!potions.ContainsKey(primaries))
        {
            potions.Add(primaries, new List <Potion>());
        }

        potions[primaries].Add(potion);
    }
Example #8
0
    public bool hasMultiplePrimaryGuesses()
    {
        Aspects.Primary guess = Aspects.Primary.UNKNOWN;
        foreach (Aspects.Primary aspect in primaryGuesses.Keys)
        {
            if (primaryGuesses[aspect] == GuessState.HAS)
            {
                if (guess == Aspects.Primary.UNKNOWN)
                {
                    guess = aspect;
                }
                else
                {
                    // Multiple aspects guessed
                    return(true);
                }
            }
        }

        return(false);
    }
Example #9
0
    public Aspects.Primary getPrimaryGuess()
    {
        Aspects.Primary guess = Aspects.Primary.UNKNOWN;
        foreach (Aspects.Primary aspect in primaryGuesses.Keys)
        {
            if (primaryGuesses[aspect] == GuessState.HAS)
            {
                if (guess == Aspects.Primary.UNKNOWN)
                {
                    guess = aspect;
                }
                else
                {
                    // Multiple aspects guessed; invalid
                    return(Aspects.Primary.UNKNOWN);
                }
            }
        }

        return(guess);
    }
Example #10
0
    private void initAspect(IngredientType ingredient, GameObject lineItemInstance, String childName, Aspects.Primary aspect)
    {
        GameObject iconButton = lineItemInstance.transform.Find(childName).gameObject;

        iconButton.GetComponent <Image>().sprite = Aspects.instance().getGreyedSprite(aspect);

        IngredientData.GuessState currentGuess = Ingredients.instance().getIngredient(ingredient).getGuessState(aspect);
        switch (currentGuess)
        {
        case IngredientData.GuessState.UNKNOWN:
            iconButton.GetComponent <Image>().sprite = Aspects.instance().getGreyedSprite(aspect);
            break;

        case IngredientData.GuessState.HAS:
            iconButton.GetComponent <Image>().sprite = Aspects.instance().getNormalSprite(aspect);
            break;

        case IngredientData.GuessState.NOT_HAS:
            iconButton.GetComponent <Image>().sprite = Aspects.instance().getDisabledSprite(aspect);
            break;
        }

        iconButton.GetComponent <Button>().onClick.AddListener(() => {
            IngredientData data             = Ingredients.instance().getIngredient(ingredient);
            IngredientData.GuessState guess = data.getGuessState(aspect);

            IngredientData.GuessState next = IngredientData.GuessState.UNKNOWN;
            Image icon = iconButton.GetComponent <Image>();
            switch (guess)
            {
            case IngredientData.GuessState.UNKNOWN:
                next        = IngredientData.GuessState.HAS;
                icon.sprite = Aspects.instance().getNormalSprite(aspect);
                break;

            case IngredientData.GuessState.HAS:
                next        = IngredientData.GuessState.NOT_HAS;
                icon.sprite = Aspects.instance().getDisabledSprite(aspect);
                break;

            case IngredientData.GuessState.NOT_HAS:
                next        = IngredientData.GuessState.UNKNOWN;
                icon.sprite = Aspects.instance().getGreyedSprite(aspect);
                break;
            }

            data.setGuessState(aspect, next);
            updateWarningIcon(data, lineItemInstance);
        });
    }
Example #11
0
 private void add(IngredientType type, Aspects.Primary primary, Aspects.Secondary secondary)
 {
     ingredients.Add(type, new IngredientData(type, primary, secondary));
 }
 public IngredientData(IngredientType type, Aspects.Primary primary, Aspects.Secondary secondary)
 {
     this.type = type;
     this.primary = primary;
     this.secondary = secondary;
 }
Example #13
0
 public void setGuessState(Aspects.Primary aspect, GuessState state)
 {
     primaryGuesses[aspect] = state;
 }