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(); }
private void RemoveTomatoPlant(TomatoPlant plant) { plant.OnGrowingRateChange -= CurPlant_OnGrowingRateChange; plant.OnReapFruit -= CurPlant_OnReapFruit; plant.OnRestRateChange -= CurPlant_OnRestRateChange; plant.OnFinish -= CurPlant_OnFinish; }
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(); }
private void OnSelfPlantFinish(TomatoPlant plant) { var minPlantIdx = GetMinPlantIdx(); if (minPlantIdx < 0 && curGrowPlantIdx == allPlants.Count - 1) { OnFinishAllPlant?.Invoke(this); } else { OnPlantFinish?.Invoke(plant); } }
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; }
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(); }
public TomatoFruit(TomatoPlant oriPlant) { plant = oriPlant; }