Beispiel #1
0
 /// <summary>
 /// Get a list of possible fish to get depending on the conditions
 /// </summary>
 /// <param name="isRaining">true if it's raining</param>
 /// <param name="hour">hour of the game</param>
 /// <param name="bait">bait used, can be null</param>
 /// <param name="list">lsit to be filled, need to be init but not cleared</param>
 public void GetPossibleFish(bool isRaining, int hour, Bait bait, BonusBait bonusBait, List <Fish> list)
 {
     list.Clear();
     foreach (Fish fish in _fish)
     {
         if (fish.CanBeFished(isRaining, bait, bonusBait, hour))
         {
             list.Add(fish);
         }
     }
 }
    private IEnumerator Fishing(bool isRainig, int hour, Bait bait, BonusBait bonusBait)
    {
        _beginEvent.Invoke();
        _fishing = true;
        _fishDatabase.GetPossibleFish(isRainig, hour, bait, bonusBait, _fishList);
        Debug.Assert(_fishList.Count != 0);
        yield return(0); //wait next frame

        _fish = RandomFish(bonusBait);
        float wait = _fish.GetWaitSecond();

        yield return(new WaitForSecondsRealtime(wait - (bonusBait != null?wait * bonusBait.BonusPercentWaitTime:0)));

        _hooking = true;
        _hookEvent.Invoke(_fish.Rarity);
        yield return(new WaitForSecondsRealtime(_fish.HookSecond));

        _failEvent.Invoke();
        _fish = null; _hooking = false; _fishing = false;
    }
    private Fish RandomFish(BonusBait bonusBait)
    {
        Fish.FishRarity rarity;
        if (bonusBait == null || !bonusBait.BonusForceRarity)
        {
            float rand = Random.Range(0, 1f);
            rarity = (rand < 0.1f ? Fish.FishRarity.LEGEND : rand < 0.25f ? Fish.FishRarity.EPIC : rand < 0.5f ? Fish.FishRarity.RARE : Fish.FishRarity.COMMUN);
        }
        else
        {
            rarity = bonusBait.BonusRarity;
        }
        List <Fish> possibleFish = _fishList.FindAll((Fish f) => { return(f.Rarity == rarity); });

        if (possibleFish.Count != 0)
        {
            return(possibleFish[Random.Range(0, possibleFish.Count)]);
        }
        else
        {
            return(_fishList[Random.Range(0, possibleFish.Count)]);
        }
    }
 /// <summary>
 /// Test if a fish can be fished depending of the conditions
 /// </summary>
 /// <param name="isRaining">true if it's raining</param>
 /// <param name="bait">bait used, can be null</param>
 /// <param name="hour">hour of the game</param>
 /// <returns>true if the fish can be fished</returns>
 public bool CanBeFished(bool isRaining, Bait bait, BonusBait bonusBait, int hour)
 {
     return(((bonusBait != null && bonusBait.BonusIgnoreHour) || IsGoodHour(hour)) && ((bonusBait != null && bonusBait.BonusIgnoreWeaher) || IsGoodWeather(isRaining)) && IsGoodBait(bait));
 }