Пример #1
0
        public void ExcessSow(int addCount)
        {
            if (addCount <= 0)
            {
                throw new Exception("TomatoSeed excessSow fail, addCount is " + addCount);
            }
            unexpectTomatoCount += addCount;
            var plants = new List <TomatoPlant>();

            if (state != TOMATO_SEED_STATE.Sowed ||
                state != TOMATO_SEED_STATE.Excess)
            {
                throw new Exception("TomatoSeed excessSow fail, state is " + state);
            }
            state = TOMATO_SEED_STATE.Excess;
            for (int i = 0; i < addCount; i++)
            {
                var plant = new TomatoPlant(this);
                plant.OnFinish += OnSelfPlantFinish;
                plants.Add(plant);
            }
            allPlants.AddRange(plants);

            var curPlant = SelectNextPlant();

            curPlant.StartGrow();
        }
Пример #2
0
 private void RemoveTomatoPlant(TomatoPlant plant)
 {
     plant.OnGrowingRateChange -= CurPlant_OnGrowingRateChange;
     plant.OnReapFruit         -= CurPlant_OnReapFruit;
     plant.OnRestRateChange    -= CurPlant_OnRestRateChange;
     plant.OnFinish            -= CurPlant_OnFinish;
 }
Пример #3
0
        private void CurPlant_OnFinish(TomatoPlant plant)
        {
            if (curPlant != plant)
            {
                throw new Exception("CurPlant_OnFinish fail, curPlant not match finishPlant.");
            }
            RemoveTomatoPlant(plant);

            if (plant.Seed.RemainTomatoCount > 0)
            {
                var selectPlant = plant.Seed.SelectNextPlant();
                SetTomatoPlant(selectPlant);
                TomatoMgr.TomatoMgrPuase = true;
                var result = MessageBox.Show(this, Properties.Resources.PlantFinishTipContent, Properties.Resources.PlantFinishTipCation,
                                             MessageBoxButton.YesNo);
                TomatoMgr.TomatoMgrPuase = false;
                if (result == MessageBoxResult.Yes)
                {
                    selectPlant.StartGrow();
                    SwitchDoingView();
                }
                else
                {
                    SwitchPauseView();
                }
            }

            RefreshShowTomatoCount();
        }
Пример #4
0
        private void OnSelfPlantFinish(TomatoPlant plant)
        {
            var minPlantIdx = GetMinPlantIdx();

            if (minPlantIdx < 0 && curGrowPlantIdx == allPlants.Count - 1)
            {
                OnFinishAllPlant?.Invoke(this);
            }
            else
            {
                OnPlantFinish?.Invoke(plant);
            }
        }
Пример #5
0
        public void SetTomatoPlant(TomatoPlant plant)
        {
            if (curPlant != null && curPlant.State != TOMATO_PLANT_STATE.Finish &&
                curPlant.State != TOMATO_PLANT_STATE.Giveup)
            {
                throw new Exception("SetToMatoPlant fail, curPlant.State is " + curPlant.State);
            }
            curPlant = plant;

            plantTitle.Content = curPlant.Seed.Title;

            RefreshShowGrowingTime();
            RefreshShowTomatoCount();

            curPlant.OnGrowingRateChange += CurPlant_OnGrowingRateChange;
            curPlant.OnReapFruit         += CurPlant_OnReapFruit;
            curPlant.OnRestRateChange    += CurPlant_OnRestRateChange;
            curPlant.OnFinish            += CurPlant_OnFinish;
        }
Пример #6
0
        public void Sow()
        {
            var plants = new List <TomatoPlant>();

            if (state != TOMATO_SEED_STATE.Ready)
            {
                throw new Exception("TomatoSeed sow fail, state is " + state);
            }
            state = TOMATO_SEED_STATE.Sowed;
            for (int i = 0; i < expectTomatoCount; i++)
            {
                var plant = new TomatoPlant(this);
                plant.OnFinish += OnSelfPlantFinish;
                plants.Add(plant);
            }
            allPlants.AddRange(plants);

            var curPlant = SelectNextPlant();

            curPlant.StartGrow();
        }
Пример #7
0
 public TomatoFruit(TomatoPlant oriPlant)
 {
     plant = oriPlant;
 }