Example #1
0
        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");
        }
Example #2
0
    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;
        }
    }
Example #3
0
    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);
    }
Example #4
0
        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);
        }
Example #5
0
 private static bool SetHigh()
 {
     waterLevelMax = waterHistory[currentTime()];
     waterState    = WaterState.ok;
     Console.WriteLine(" Max level: {0}", waterLevelMax);
     return(true);
 }
Example #6
0
 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;
 }
Example #7
0
    // Use this for initialization
    void Start()
    {
        mLanding       = GetComponent <Landing>();
        mWeightManager = GetComponent <WeightManager>();
        mWaterState    = GetComponent <WaterState>();
        mMoveManager   = GetComponent <MoveManager>();

        mHighestPosition = transform.position;          //最高地点を更新
        mBeforePosition  = transform.position;
    }
Example #8
0
    // Start is called before the first frame update
    void Start()
    {
        waterController = GetComponentInParent <WaterController>();

        meshRend = GetComponent <MeshRenderer>();

        //initialAlpha = meshRend.material.color.a;

        previousState = waterController.waterState;
    }
Example #9
0
 private void Update()
 {
     if (waterState == WaterState.Boiling)
     {
         secondsBoiling += Time.deltaTime;
         if (secondsBoiling >= secondsToBoil)
         {
             waterState = WaterState.Ready;
         }
     }
 }
Example #10
0
        // 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;
            }
        }
Example #11
0
 public void Frost()
 {
     if (State == WaterState.LIQUID)
     {
         Console.WriteLine("Превращаем жидкость в лед");
         State = WaterState.SOLID;
     }
     else if (State == WaterState.GAS)
     {
         Console.WriteLine("Превращаем водяной пар в жидкость");
         State = WaterState.LIQUID;
     }
 }
Example #12
0
 public void Dehydrate()
 {
     waterLevel -= cropAsset.dehydrateSpeed;
     if (waterLevel <= dehydrateThreshold)
     {
         if (waterLevel <= 0)
         {
             cropState = CropState.Dead;
             deadCrop  = true;
         }
         waterState = WaterState.Dry;
     }
 }
Example #13
0
 public void SetWaterLevel(float waterAmount)
 {
     waterLevel += waterAmount;
     if (waterLevel > dehydrateThreshold)
     {
         waterState = WaterState.Wet;
     }
     if (waterLevel > waterLevelMax)
     {
         waterLevel = waterLevelMax;
     }
     Debug.Log(waterLevel);
 }
Example #14
0
 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;
     }
 }
Example #15
0
    // 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;
    }
Example #16
0
    // 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);
    }
Example #18
0
 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("Понижаем температуру льда");
     }
 }
Example #19
0
 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");
     }
 }
Example #20
0
 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("Повышаем температуру водяного пара");
     }
 }
Example #21
0
 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("Повышаем температуру водяного пара");
     }
 }
Example #22
0
 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;
     }
 }
Example #23
0
    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);
        }
    }
Example #25
0
 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;
         }
     }
 }
Example #26
0
        //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();
        }
Example #27
0
 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");
     }
 }
Example #28
0
 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");
     }
 }
Example #29
0
        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>();
 }
Example #31
0
 //For when water tank runs dry and one has reset the system
 private static bool SetRefilled()
 {
     waterState = WaterState.ok;
     return(true);
 }
Example #32
0
 public Water(WaterState ws)
 {
     State = ws;
 }
Example #33
0
 public void ToDeposition()
 {
     state = WaterState.Solid;
 }