예제 #1
0
    private Effect getEffectForAspect(Aspects.Secondary aspect)
    {
        switch (aspect)
        {
        case Aspects.Secondary.NONE:
            return(EffectNone);

        case Aspects.Secondary.VOID:
            return(EffectVoid);

        case Aspects.Secondary.SEDUCTIVE:
            return(EffectSeductive);

        case Aspects.Secondary.FIRE:
            return(EffectFire);

        case Aspects.Secondary.WATER:
            return(EffectWater);

        case Aspects.Secondary.SLIME:
            return(EffectSlime);

        case Aspects.Secondary.DECAY:
            return(EffectDecay);

        case Aspects.Secondary.BEAST:
            return(EffectBeastly);

        case Aspects.Secondary.UNKNOWN:
            return(null);

        default:
            throw new ArgumentException("Unrecognized Secondary aspect enum value: " + aspect);
        }
    }
 public void setBodyParts(BodyPart[] parts, Aspects.Secondary type)
 {
     foreach (BodyPart part in parts)
     {
         setBodyPart(part, type);
     }
 }
 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);
 }
예제 #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>();
    }
예제 #5
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>();
    }
 public AudioClip[] getClips(Aspects.Secondary type)
 {
     if (clips.ContainsKey(type))
     {
         return(clips[type]);
     }
     else
     {
         return(new AudioClip[0]);
     }
 }
예제 #7
0
 public GuessState getGuessState(Aspects.Secondary aspect)
 {
     if (secondaryGuesses.ContainsKey(aspect))
     {
         return(secondaryGuesses[aspect]);
     }
     else
     {
         return(GuessState.UNKNOWN);
     }
 }
예제 #8
0
 public Sprite getSprite(Aspects.Secondary type, BodyPart bodyPart)
 {
     if (sprites.ContainsKey(type))
     {
         return(sprites[type][bodyPart]);
     }
     else
     {
         Debug.Log("No sprites for player type " + type);
         return(sprites[Aspects.Secondary.NONE][bodyPart]);
     }
 }
예제 #9
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;
    }
예제 #10
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;
    }
예제 #11
0
    public bool hasMultipleSecondaryGuesses()
    {
        Aspects.Secondary guess = Aspects.Secondary.UNKNOWN;
        foreach (Aspects.Secondary aspect in secondaryGuesses.Keys)
        {
            if (secondaryGuesses[aspect] == GuessState.HAS)
            {
                if (guess == Aspects.Secondary.UNKNOWN)
                {
                    guess = aspect;
                }
                else
                {
                    // Multiple aspects guessed
                    return(true);
                }
            }
        }

        return(false);
    }
예제 #12
0
    public Aspects.Secondary getSecondaryGuess()
    {
        Aspects.Secondary guess = Aspects.Secondary.UNKNOWN;
        foreach (Aspects.Secondary aspect in secondaryGuesses.Keys)
        {
            if (secondaryGuesses[aspect] == GuessState.HAS)
            {
                if (guess == Aspects.Secondary.UNKNOWN)
                {
                    guess = aspect;
                }
                else
                {
                    // Multiple aspects guessed; invalid
                    return(Aspects.Secondary.UNKNOWN);
                }
            }
        }

        return(guess);
    }
예제 #13
0
 public void playSound(Aspects.Secondary type)
 {
     AudioClip[] sounds = PlayerSoundEffects.instance().getClips(type);
     player.playSound(sounds);
 }
예제 #14
0
    private void initAspect(IngredientType ingredient, GameObject lineItemInstance, String childName, Aspects.Secondary 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);
        });
    }
예제 #15
0
 private void add(IngredientType type, Aspects.Primary primary, Aspects.Secondary secondary)
 {
     ingredients.Add(type, new IngredientData(type, primary, secondary));
 }
예제 #16
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);
    }
예제 #17
0
 public void setGuessState(Aspects.Secondary aspect, GuessState state)
 {
     secondaryGuesses[aspect] = state;
 }
예제 #18
0
 public IngredientData(IngredientType type, Aspects.Primary primary, Aspects.Secondary secondary)
 {
     this.type = type;
     this.primary = primary;
     this.secondary = secondary;
 }
    public void setBodyPart(BodyPart part, Aspects.Secondary type)
    {
        Transform partTransform = bodyPartToTransform(part);

        partTransform.GetComponent <SpriteRenderer>().sprite = PlayerSprites.instance().getSprite(type, part);
    }