public Water(int amount, double temperature, double?proportion = null) { Temperature = temperature; ProportionFirstState = proportion; Amount = amount; State = temperature <= 0 ? WaterState.Ice : temperature > 100 ? WaterState.Gas : WaterState.Fluid; if (Temperature != 100 && Temperature != 0) { return; } if (proportion == null) { throw new ArgumentException("When temperature is 0 or 100, you must provide a value for proportion"); } if (ProportionFirstState == 1) { return; } if (ProportionFirstState == 0) { State = temperature == 0 ? WaterState.Fluid : WaterState.Gas; } else { State = temperature == 0 ? WaterState.IceAndFluid : WaterState.FluidAndGas; } //if ((temperature == 0.0 || temperature == 100) && part == null) throw new ArgumentException("When temperature is 0 or 100, you must provide a value for proportion"); }
private void Update() { if (crop.HasCrop()) { if (crop.state == CropState.Planted) { bool isDone = crop.Grow(Time.deltaTime); if (isDone) { UpdateSprite(); } else { WaterState state = crop.Dry(Time.deltaTime); if (state == WaterState.Dry) { waterIndicator.SetActive(true); } else if (state == WaterState.Dead) { UpdateSprite(); waterIndicator.SetActive(false); } } } } if (addPlant) { temp = null; } }
void UpdateWaterFloatLanding() { bool prevIsWaterFloatLanding = IsWaterFloatLanding; bool waterFloat = false; // 水中で無く、水面に浮かぶ重さである場合 if (!WaterStt.IsInWater && (WeightMng.WeightLv == WeightManager.Weight.light)) { // 水面に浮かぶオブジェクトの上に積まれていればtrue List <Transform> underPileObjs = Pile.GetPileBoxList(Vector3.down); // 自身が積まれているオブジェクト // Debug.LogWarning(name + " " + underPileObjs.Count); foreach (var underPileObj in underPileObjs) { // 水面に浮かぶオブジェクトが見つかればtrue WaterState underPileWaterStt = underPileObj.GetComponent <WaterState>(); if (underPileWaterStt && underPileWaterStt.IsWaterSurface) { waterFloat = true; break; } } } IsWaterFloatLanding = waterFloat; // // 値変化時 // if (prevIsWaterFloatLanding != IsWaterFloatLanding) { // IsWaterFloatLandingTrueChange = true; // } // Debug.LogWarning("UpdateWaterFloatLanding:" + IsWaterFloatLanding); }
public Water(double amount, double temperature, double?proportion = null) { Amount = amount; Temperature = temperature; State = ActualState(temperature); // It will work for all values other than 0 and 100, // and terminates the constructor at this point if (Temperature != 100 && Temperature != 0) { return; } // Only 0 and 100 temperatures will go here // If proportion is specified, this code will be skipped // and no exception message will be displayed if (proportion == null) { throw new ArgumentException ("When temperature is 0 or 100, you must provide " + "a value for proportion"); } ProportionFirstState = proportion.Value; State = SetProportionState(temperature); }
private static bool SetHigh() { waterLevelMax = waterHistory[currentTime()]; waterState = WaterState.ok; Console.WriteLine(" Max level: {0}", waterLevelMax); return(true); }
public ElectricKettle(double MaxWaterVolume, uint TimeInSecBowl) { if (MaxWaterVolume <= 0.9 || TimeInSecBowl <= 10.0) { BowlTime = TimeInSecBowl; } this.MaxWaterVolume = MaxWaterVolume; Temperature = (double)WaterState.Typical; WaterState = WaterState.Typical; }
// Use this for initialization void Start() { mLanding = GetComponent <Landing>(); mWeightManager = GetComponent <WeightManager>(); mWaterState = GetComponent <WaterState>(); mMoveManager = GetComponent <MoveManager>(); mHighestPosition = transform.position; //最高地点を更新 mBeforePosition = transform.position; }
// Start is called before the first frame update void Start() { waterController = GetComponentInParent <WaterController>(); meshRend = GetComponent <MeshRenderer>(); //initialAlpha = meshRend.material.color.a; previousState = waterController.waterState; }
private void Update() { if (waterState == WaterState.Boiling) { secondsBoiling += Time.deltaTime; if (secondsBoiling >= secondsToBoil) { waterState = WaterState.Ready; } } }
// ACT UPON DATA static void water(int waterLevelGoal) { // //the watering happens in steps, taking into account the delay between watering and the moisture level increasing. int waterInterval = 10; // seconds int waitInterval = 2; lock (waterPumpAccess) { int waterLevelInitial = waterHistory [currentTime()]; Console.WriteLine("Watering for level " + waterLevelGoal); DateTime start = DateTime.Now; for (int i = 0; i < 20; i++) { // water and wait waterPump.High(); System.Threading.Thread.Sleep(1000 * waterInterval); waterPump.Low(); System.Threading.Thread.Sleep(1000 * waitInterval); // Check to see if waterLevel is within an appropriate range Console.WriteLine(waterHistory [currentTime()] - waterLevelInitial); //if two minutes have passed and the waterLevel has not risen more than 5, whatever 5 means, pump is either broken, or the water is empty, or the battery is out if (waterHistory [DateTime.Now.Hour * 60 + DateTime.Now.Minute] - waterLevelInitial < 10) { //send alarm waterState = WaterState.dry; Console.WriteLine("Dry"); return; } if (waterHistory [currentTime()] > waterLevelGoal - acceptableMarginOfError) { if (waterHistory [currentTime()] > waterLevelGoal) { waterInterval--; } Console.WriteLine("Watering complete " + DateTime.Now); waterState = WaterState.ok; return; } if (!executionLed.Value) { return; } } //increase the amount of watering since the loop finished without reaching the waterLevelGoal return; } }
public void Frost() { if (State == WaterState.LIQUID) { Console.WriteLine("Превращаем жидкость в лед"); State = WaterState.SOLID; } else if (State == WaterState.GAS) { Console.WriteLine("Превращаем водяной пар в жидкость"); State = WaterState.LIQUID; } }
public void Dehydrate() { waterLevel -= cropAsset.dehydrateSpeed; if (waterLevel <= dehydrateThreshold) { if (waterLevel <= 0) { cropState = CropState.Dead; deadCrop = true; } waterState = WaterState.Dry; } }
public void SetWaterLevel(float waterAmount) { waterLevel += waterAmount; if (waterLevel > dehydrateThreshold) { waterState = WaterState.Wet; } if (waterLevel > waterLevelMax) { waterLevel = waterLevelMax; } Debug.Log(waterLevel); }
public void Frost() { if (State == WaterState.LIQUID) { Console.WriteLine("Transforming the liquid into ice"); State = WaterState.SOLID; } else if (State == WaterState.GAS) { Console.WriteLine("We convert steam to liquid"); State = WaterState.LIQUID; } }
// Update is called once per frame void Update() { if (previousState != waterController.waterState) { stateChangeProgress = 0; } if (stateChangeProgress < 1) { stateChangeProgress += Time.deltaTime * stateChangeSpeed; } else { stateChangeProgress = 1; } if (waterController.waterState == WaterState.Frozen) { //meshRend.material.color = meshRend.material.color + new Color(0, 0, 0, alphaChange); meshRend.material.Lerp(waterMat, iceMat, stateChangeProgress); /*meshRend.material.SetFloat("_LightContribution", Mathf.Lerp(waterMat.GetFloat("_LightContribution"), iceMat.GetFloat("_LightContribution"), stateChangeProgress)); * meshRend.material.SetFloat("_ShadowStrength", Mathf.Lerp(waterMat.GetFloat("_ShadowStrength"), iceMat.GetFloat("_ShadowStrength"), stateChangeProgress)); * meshRend.material.SetFloat("_WaterClearness", Mathf.Lerp(waterMat.GetFloat("_WaterClearness"), iceMat.GetFloat("_WaterClearness"), stateChangeProgress)); * meshRend.material.SetColor("_ColorShallow", Color.Lerp(waterMat.GetColor("_ColorShallow"), iceMat.GetColor("_ColorShallow"), stateChangeProgress)); * meshRend.material.SetColor("_ColorDeep", Color.Lerp(waterMat.GetColor("_ColorDeep"), iceMat.GetColor("_ColorDeep"), stateChangeProgress)); */ meshRend.material.SetFloat("_WaveSpeed", iceMat.GetFloat("_WaveSpeed")); //meshRend.material.SetFloat("_WaveSpeed", Mathf.Lerp(waterMat.GetFloat("_WaveSpeed"), iceMat.GetFloat("_WaveSpeed"), stateChangeProgress * 5)); } else { //meshRend.material.color = new Color(meshRend.material.color.r, meshRend.material.color.g, meshRend.material.color.b, initialAlpha); /*meshRend.material.SetFloat("_LightContribution", Mathf.Lerp(iceMat.GetFloat("_LightContribution"), waterMat.GetFloat("_LightContribution"), stateChangeProgress)); * meshRend.material.SetFloat("_ShadowStrength", Mathf.Lerp(iceMat.GetFloat("_ShadowStrength"), waterMat.GetFloat("_ShadowStrength"), stateChangeProgress)); * meshRend.material.SetFloat("_WaterClearness", Mathf.Lerp(iceMat.GetFloat("_WaterClearness"), waterMat.GetFloat("_WaterClearness"), stateChangeProgress)); * meshRend.material.SetColor("_ColorShallow", Color.Lerp(iceMat.GetColor("_ColorShallow"), waterMat.GetColor("_ColorShallow"), stateChangeProgress)); * meshRend.material.SetColor("_ColorDeep", Color.Lerp(iceMat.GetColor("_ColorDeep"), waterMat.GetColor("_ColorDeep"), stateChangeProgress)); * //meshRend.material.SetFloat("_WaveSpeed", Mathf.Lerp(iceMat.GetFloat("_WaveSpeed"), waterMat.GetFloat("_WaveSpeed"), stateChangeProgress * 5)); */ meshRend.material.Lerp(iceMat, waterMat, stateChangeProgress); meshRend.material.SetFloat("_WaveSpeed", waterMat.GetFloat("_WaveSpeed")); } previousState = waterController.waterState; }
// Update is called once per frame void Update() { Tile left, right, up; up = Grid.Get(_tile.x, _tile.y + 1); left = Grid.Get(_tile.x - 1, _tile.y); right = Grid.Get(_tile.x + 1, _tile.y); // If the water is between two bricks (in a tube) if (left != null && right != null && left.CurrentState == Tile.TileState.Brick && right.CurrentState == Tile.TileState.Brick) { // If the level on top is higher or equal, water is falling if (_tile.CurrentWaterLevel <= up.CurrentWaterLevel) { // then update current state to falling if (CurrentWaterState != WaterState.Falling) { CurrentWaterState = WaterState.Falling; } // else, update to flowing (water is flowing down the tube) } else { if (CurrentWaterState != WaterState.Flowing) { CurrentWaterState = WaterState.Flowing; } } } // If there's no water left and right, else if ((left == null || left.CurrentWaterLevel == 0.0f) && (right == null || right.CurrentWaterLevel == 0.0f)) { // then update current state to falling if (CurrentWaterState != WaterState.Falling) { CurrentWaterState = WaterState.Falling; } } // Else, water is flowing else { if (CurrentWaterState != WaterState.Flowing) { CurrentWaterState = WaterState.Flowing; } } }
public bool CanMeasureWater(int x, int y, int z) { if (z == 0) { return(true); } if (x + y < z) { return(false); } HashSet <WaterState> State = new HashSet <WaterState>(); Queue <WaterState> Handle = new Queue <WaterState>(); WaterState water = new WaterState(0, 0); Handle.Enqueue(water); State.Add(water); while (Handle.Count > 0) { WaterState nowWater = Handle.Dequeue(); int remain_x = nowWater.x; int remain_y = nowWater.y; if (remain_x + remain_y == z || remain_x == z || remain_y == z) { return(true); } // foreach(WaterState ret in State){ // if (ret.x == nowWater.x && ret.y == nowWater.y) continue; // } //State.Add(nowWater); // 第一个水壶装满 AddState(new WaterState(x, remain_y), State, Handle); // 第二个水壶装满 AddState(new WaterState(remain_x, y), State, Handle); // 第一个水壶倒空 AddState(new WaterState(0, remain_y), State, Handle); // 第二个水壶倒空 AddState(new WaterState(remain_x, 0), State, Handle); // 从第一个水壶向第二个水壶倒水,直到装满或者倒空 int CanMove = Math.Min(remain_x, y - remain_y); AddState(new WaterState(remain_x - CanMove, remain_y + CanMove), State, Handle); // 从第二个水壶向第一个水壶倒水,直到装满或者倒空 CanMove = Math.Min(remain_y, x - remain_x); AddState(new WaterState(remain_x + CanMove, remain_y - CanMove), State, Handle); } return(false); }
public void Frost() { if (State == WaterState.Liquid) { Console.WriteLine("Превращаем жидкость в лед"); State = WaterState.Solid; } else if (State == WaterState.Gas) { Console.WriteLine("Превращаем водяной пар в жидкость"); State = WaterState.Liquid; } else if (State == WaterState.Solid) { Console.WriteLine("Понижаем температуру льда"); } }
public void Heat() { if (State == WaterState.SOLID) { Console.WriteLine("Transforming ice into liquid"); State = WaterState.LIQUID; } else if (State == WaterState.LIQUID) { Console.WriteLine("Transforming liquid into vapor"); State = WaterState.GAS; } else if (State == WaterState.GAS) { Console.WriteLine("Increase the temperature of water vapor"); } }
public void Head() { if (State == WaterState.SOLID) { Console.WriteLine("Превращаем лед в жидкость"); State = WaterState.LIQUID; } else if (State == WaterState.LIQUID) { Console.WriteLine("Превращаем жидкость в пар"); State = WaterState.GAS; } else if (State == WaterState.GAS) { Console.WriteLine("Повышаем температуру водяного пара"); } }
public void Heat() { if (State == WaterState.Solid) { Console.WriteLine("Превращаем лед в жидкость"); State = WaterState.Liquid; } else if (State == WaterState.Liquid) { Console.WriteLine("Превращаем жидкость в пар"); State = WaterState.Gas; } else if (State == WaterState.Gas) { Console.WriteLine("Повышаем температуру водяного пара"); } }
public void ToFreeze() { switch (state) { case WaterState.Liquid: state = WaterState.Solid; break; case WaterState.Solid: state = WaterState.Solid; break; case WaterState.Gas: state = WaterState.Liquid; break; case WaterState.Plasma: state = WaterState.Gas; break; } }
void OnMouseDown() { if (controller.pickedMug != null) { return; } Debug.Log("Clicked the kettle"); if (IsReady) { // do the pick up thing? } else if (waterState == WaterState.Cold) { waterState = WaterState.Boiling; GetComponent <AudioSource>().Play(); GetComponentInChildren <ParticleSystem>().Play(); } }
public void AddState(WaterState water, HashSet <WaterState> State, Queue <WaterState> Handle) { bool flag = false; foreach (WaterState ret in State) { if (ret.x == water.x && ret.y == water.y) { flag = false; } else { flag = true; } } if (flag) { State.Add(water); Handle.Enqueue(water); } }
public void FillUp(double Water) { if (CurrentVolumeWater + Water > MaxWaterVolume) { throw new Exception("Too much water"); } else { CurrentVolumeWater += Water; if (Water >= CurrentVolumeWater && WaterState >= WaterState.Hot) { Temperature = (double)WaterState.Hot; WaterState = WaterState.Hot; } else { Temperature = (double)WaterState.Typical; WaterState = WaterState.Typical; } } }
//SCHEDULER public static void Main() { Server srv = new Server(SetHigh, SetLow, SetRefilled, SetNewWaterFreq, 8080); Thread thread = new Thread(new ThreadStart(srv.listen)); thread.Start(); Console.CancelKeyPress += (object sender, ConsoleCancelEventArgs e) => { e.Cancel = true; executionLed.Low(); }; /// SCHEDULER /// while (executionLed.Value) { getState(); if (waterState == WaterState.ok && waterLevelMax != 0 && DateTime.Now.Day == waterTime.Day && DateTime.Now.Minute > waterTime.Minute && DateTime.Now.Hour == waterTime.Hour && waterHistory[DateTime.Now.Hour * 60 + DateTime.Now.Minute] < waterLevelMax - acceptableMarginOfError) { waterState = WaterState.busy; new Thread(() => water(waterLevelMax)).Start(); waterTime = waterTime.AddDays(waterFreq); } else if (waterState == WaterState.ok && averageMoist() < waterLevelMin - acceptableMarginOfError && waterLevelMax != 0) { waterState = WaterState.busy; new Thread(() => water(waterLevelMin)).Start(); } // Sleep one hour System.Threading.Thread.Sleep(1000); } executionLed.Dispose(); waterPump.Low(); }
public void Heat() { if (State) { if (Temperature < 50.0) { if (CurrentVolumeWater <= 0.9) { throw new Exception("Can't heat little water"); } Temperature = (double)WaterState.Hot; WaterState = WaterState.Hot; } else { Console.WriteLine("Water inside is hot"); } } else { throw new Exception("Kettle if OFF"); } }
public void Boil() { if (State) { if (Temperature != 100.0) { if (CurrentVolumeWater <= 0.9) { throw new Exception("Can't boil little water"); } Temperature = (double)WaterState.Boiled; WaterState = WaterState.Boiled; } else { Console.WriteLine("Water inside is boiled"); } } else { throw new Exception("Kettle if OFF"); } }
private double DoStateChangeAsMuchAsPossible(double calories) { if (calories <= 0) { return(0); } if (Temperature != 0 && Temperature != 100) { throw new ArgumentException("Cannot do state change when temperature is not 0 or 100."); } var isMeltingIce = Temperature == 0; var stateChangeENvergyPerGram = isMeltingIce ? CaloriesMeltIcePerGram : CaloriesEvaporateWaterPerGram; var caloriesNeeded = stateChangeENvergyPerGram * Amount; if (calories >= caloriesNeeded) { State = isMeltingIce ? WaterState.Fluid : WaterState.Gas; } ProportionFirstState = 1 - calories / caloriesNeeded; State = isMeltingIce ? WaterState.IceAndFluid : WaterState.FluidAndGas; return(0); }
void Start() { _waterState = GetComponent<WaterState>(); }
//For when water tank runs dry and one has reset the system private static bool SetRefilled() { waterState = WaterState.ok; return(true); }
public Water(WaterState ws) { State = ws; }
public void ToDeposition() { state = WaterState.Solid; }