예제 #1
0
 public void SetItemValue(object obj)
 {
     m_data = obj as BatteryData;
     if (IsInvoking("Refresh"))
     {
         CancelInvoke("Refresh");
     }
     if (m_data != null)
     {
         itemId = baseID + m_data.batteryType;
         if (m_data.dur > 0)
         {
             InvokeRepeating("Refresh", 0, 1);
         }
         else
         {
             this.Refresh();
         }
     }
     else
     {
         lblLeftTime.text  = "--:--:--";
         openBtn.isEnabled = false;
         lblMoneyNum.text  = "642000";
         lblLeftNum.text   = "x10";
     }
 }
 //监听炮台是否被选择,选中进行更新
 public void OnHospitalSelected(bool isOn)
 {
     if (isOn)
     {
         BatterySelectedData = HospitalData;
     }
 }
 public void OnMaskFactorySelected(bool isOn)
 {
     if (isOn)
     {
         BatterySelectedData = MaskFactoryData;
     }
 }
        private void Charge(ref BatteryData info)
        {
            if (info.charge > BatteryData.ChargeTarget * info.capacity)
            {
                return;
            }
            info.status = BatteryStatus.Charge;
            var dQ = BatteryData.ChargeRate * DeltaTime;

            if (info.charge / info.capacity < 0.05f)
            {
                dQ *= 0.1f;
            }
            else if (info.charge / info.capacity > 0.55f)
            {
                dQ *= (2 * (1 - info.charge / info.capacity));
            }
            if (info.charge < info.capacity)
            {
                info.totalCharge += dQ;
            }
            info.charge += dQ;
            info.charge  = math.clamp(info.charge, 0, info.capacity);

            if ((int)(info.totalDischarge / info.capacity) <= info.cycles ||
                (int)(info.totalCharge / info.capacity) <= info.cycles)
            {
                return;
            }
            info.cycles++;
            SetCap(ref info);
        }
예제 #5
0
        public void UpdateBattery(BatteryData battery)
        {
            if (battery.Percentage == 0)
            {
                BatteryImage = "";
                return;
            }

            Battery = battery.Percentage;
            if (battery.Status == BatteryStatus.Charging)
            {
                BatteryImage = "BatteryCharging.png";
                return;
            }

            if (battery.Percentage >= 0 && battery.Percentage < 26)
            {
                BatteryImage = "BatteryQuart.png";
            }
            else if (battery.Percentage >= 26 && battery.Percentage < 51)
            {
                BatteryImage = "BatteryHalf.png";
            }
            else if (battery.Percentage >= 51 && battery.Percentage < 76)
            {
                BatteryImage = "BatteryThreeQuarts.png";
            }
            else if (battery.Percentage >= 76)
            {
                BatteryImage = "BatteryFull.png";
            }
        }
 public void OnPowerStationSelected(bool isOn)
 {
     if (isOn)
     {
         BatterySelectedData = PowerStationData;
     }
 }
예제 #7
0
    // ----------------------------------------------------------------
    //  Serializing
    // ----------------------------------------------------------------
    override public PropData ToData()
    {
        BatteryData data = new BatteryData {
            pos        = pos,
            travelMind = new TravelMindData(travelMind),
        };

        return(data);
    }
예제 #8
0
    void InitData()
    {
        for (int i = 0; i < batteryItems.Length; i++)
        {
            BatteryData bData = new BatteryData();
            bData.batteryType = i + 1;
            if (m_data != null)
            {
                bData.buildingId  = int.Parse(m_data.config.ID);
                bData.buildingPid = m_data.RTData.id;
                BaseBuildingData bbData = Core.Data.BuildingManager.GetConfigByBuildLv(m_data.config.id, bData.batteryType);
                if (bbData != null)
                {
                    bData.moneyNum       = (int)bbData.GetCoin;
                    bData.moneyType      = 1;
                    bData.needBatteryNum = bbData.OpenProduceCostItemNum;
                    if (bbData.OpenProduceCostItem == m_data.RTData.openType + baseItem)
                    {
                        Debug.Log("  need stone Num == " + bbData.ForceGainCost);
                        needStoneNum = bbData.ForceGainCost;
                    }
                }
                if (bData.batteryType == m_data.RTData.openType)
                {
                    bData.canOpen = false;

                    if (bData.dur >= 0)
                    {
                        bData.dur = m_data.RTData.dur;
                    }
                }
                else
                {
                    bData.canOpen = false;
                    bData.dur     = -1;
                }

                if (m_data.RTData.openType != 0)
                {
                    if (m_data.RTData.dur >= 0)
                    {
                        needStone = true;
                    }
                    else
                    {
                        needStone = false;
                    }
                }
                else
                {
                    bData.canOpen = true;
                    needStone     = false;
                }
            }
            batteryItems [i].SetItemValue((object)bData);
        }
    }
예제 #9
0
 private void QuitToMainMenu()
 {
     SimManager.SimStatus = SimulationStatus.Paused;
     SimManager.ClearObjects();
     BatteryData.Reset();
     DroneData.Reset();
     HubData.Reset();
     NFZData.Reset();
     StartCoroutine(LoadMainMenu());
 }
예제 #10
0
        private void Battery_BatteryInfoChanged(object sender, BatteryInfoChangedEventArgs e)
        {
            BatteryData data = BatteryStatus;

            data.ChargeLevel  = e.ChargeLevel;
            data.BatteryState = e.State.ToString();
            data.PowerSource  = e.PowerSource.ToString();
            data.TimeStamp    = DateTime.UtcNow;
            data.SendNotification();
        }
예제 #11
0
 /// <summary>
 /// constructor
 /// </summary>
 public BatteryService(IotNode parent) : base("Battery", parent)
 {
     BatteryStatus = new BatteryData {
         Id                = nameof(BatteryStatus),
         ChargeLevel       = Battery.ChargeLevel,
         BatteryState      = Battery.State.ToString(),
         PowerSource       = Battery.PowerSource.ToString(),
         EnergySaverStatus = Battery.EnergySaverStatus.ToString(),
         TimeStamp         = DateTime.UtcNow
     };
     // Register for battery changes, be sure to unsubscribe when needed
     Battery.BatteryInfoChanged += Battery_BatteryInfoChanged;
 }
    public void BuildBattery(GameObject batteryPrefab, BatteryData data)
    {
        //print(transform.position);
        batteryData = data;
        position    = new Vector3(transform.position.x, transform.position.y, transform.position.z - 1);
        Vector3 positionHP = new Vector3(transform.position.x, transform.position.y, transform.position.z - 2);

        BatteryOnMaps = GameObject.Instantiate(batteryPrefab, position, Quaternion.identity);
        BatterySlider = BatteryOnMaps.GetComponentInChildren <Slider>();
        GameObject effect = GameObject.Instantiate(BuildEffect, position, Quaternion.identity);

        GameObject.Destroy(effect, 1);
    }
예제 #13
0
 void UpdateDisplay(ReactorData reactorData, BatteryData batteryData)
 {
     panel.WriteText($"Реакторы: {(reactorData.status ? "вкл" : "выкл")}\n");
     panel.WriteText($"Кол-во реакторов:  {reactorData.count}\n", true);
     panel.WriteText($"Мощность:  {reactorData.power} МВт\n", true);
     panel.WriteText($"U в реакторах:        {reactorData.uraniumAmount:0.##} кг\n", true);
     panel.WriteText($"Авто-режим:       {(autoMode ? "вкл" : "выкл")}\n", true);
     panel.WriteText("-----------------------\n", true);
     panel.WriteText($"Заряд: {batteryData.percentage}%\n", true);
     panel.WriteText($"Кол-во:  {batteryData.count}\n", true);
     panel.WriteText($"Статус: {(batteryData.isCharging ? "зарядка" : "разрядка")}\n", true);
     panel.WriteText($"{(batteryData.isCharging ? "Эффективность заряда:" : "Эффективность разряда: ")}     { batteryData.powerRate}%\n", true);
 }
 // Start is called before the first frame update
 void Start()
 {
     BatterySelectedData = HospitalData;
     lastTime            = Time.time;
     //设置资源初始文本
     moneyText.text    = "" + money;
     waterText.text    = "" + water;
     electricText.text = "" + electric;
     //设置屏幕上相应炮台资源文本
     setBatteryText(HospitalData);
     setBatteryText(PowerStationData);
     setBatteryText(MaskFactoryData);
 }
예제 #15
0
        public static void ParseCore(ref Message msg)
        {
            var bodies = msg.Bodies;

            foreach (var body in bodies)
            {
                var core = body.CoreMsg;
                if (core == null)
                {
                    return;
                }
                var buffer = Unpooled.WrappedBuffer(core);
                switch (body.IdType)
                {
                case IdType.HeartBeat:
                    var heartBeatType     = EnumUtil.ToEnum <HeartBeatType>(buffer.ReadInt());
                    var keepAliveDuration = buffer.ReadInt();
                    var hb = new HeartBeatInfo();
                    hb.HeartBeatType     = heartBeatType;
                    hb.KeepAliveDuration = keepAliveDuration;
                    body.HeartBeatInfo   = hb;
                    break;

                case IdType.BatteryInfo:
                    var voltage = buffer.ReadFloat();
                    var temp    = buffer.ReadFloat();
                    var capa    = buffer.ReadFloat();
                    var battery = new BatteryData();
                    battery.voltage     = voltage;
                    battery.batteryTemp = temp;
                    battery.capacity    = capa;
                    body.BatteryData    = battery;
                    break;

                case IdType.SensorData:
                    var sensorValues = new List <double>();
                    do
                    {
                        var value = buffer.ReadFloat();
                        sensorValues.Add(value);
                    } while (buffer.ReadableBytes > 0);
                    var sensor = new SensorData();
                    sensor.UnparsedData = sensorValues;
                    body.SensorData     = sensor;
                    break;

                default:
                    break;
                }
            }
        }
 private void AddPropSprites()
 {
     foreach (PropData propData in myRD.allPropDatas)
     {
         // -- Batteries --
         if (propData.GetType() == typeof(BatteryData))
         {
             BatteryData pd = propData as BatteryData;
             AddSpriteRenderer("Battery", rh.s_battery, go_props, pd.pos, BatteryIconSize, 10, Color.white);
         }
         // -- Grounds --
         else if (propData.GetType() == typeof(GroundData))
         {
             GroundData pd = propData as GroundData;
             groundDatas.Add(pd);                                                                                  // also add it to my ref list!
             srs_grounds.Add(AddSpriteRenderer("Ground", rh.s_ground, go_props, pd.pos, pd.size, 1, Color.white)); //WHY POSITION? why not center?
         }
         // -- DispGrounds --
         else if (propData.GetType() == typeof(DispGroundData))
         {
             DispGroundData pd    = propData as DispGroundData;
             Color          color = DispGround.GetBodyColor(pd);
             color = new Color(color.r, color.g, color.b, color.a * 0.6f); // alpha it out a bit, to taste.
             AddSpriteRenderer("DispGround", rh.s_ground, go_props, pd.pos, pd.size, 1, color);
         }
         // -- Gems --
         else if (propData.GetType() == typeof(GemData))
         {
             GemData pd     = propData as GemData;
             Sprite  sprite = rh.GetGemSprite(pd.type);
             AddSpriteRenderer("Gem", sprite, go_props, pd.pos, GemIconSize, 10, Color.white);
         }
         // -- Snacks --
         else if (propData.GetType() == typeof(SnackData))
         {
             SnackData pd    = propData as SnackData;
             Color     color = PlayerBody.GetBodyColorNeutral(PlayerTypeHelper.TypeFromString(pd.playerType));
             AddSpriteRenderer("Snack", rh.s_snack, go_props, pd.pos, SnackIconSize, 10, color);
         }
         // -- Spikes --
         else if (propData.GetType() == typeof(SpikesData))
         {
             SpikesData     spikesData = propData as SpikesData;
             Color          color      = Colors.Spikes(myRD.WorldIndex);// new Color(0.7f,0.1f,0f, 0.6f);
             SpriteRenderer newSprite  = AddSpriteRenderer("Spikes", rh.s_spikes, go_props, spikesData.pos, Vector2.one, 0, color);
             newSprite.drawMode = SpriteDrawMode.Tiled;
             newSprite.size     = spikesData.size;
             newSprite.transform.localEulerAngles = new Vector3(0, 0, spikesData.rotation);
         }
     }
 }
예제 #17
0
 public void UpdateBattery(BatteryData battery)
 {
     if (battery.Status == 0)
     {
         Device.BeginInvokeOnMainThread(delegate {
             BatteryStatus.Text = "A carregar..." + " - " + battery.Percentage + "%";
         });
     }
     else
     {
         Device.BeginInvokeOnMainThread(delegate {
             BatteryStatus.Text = "Não está a carregar." + " - " + battery.Percentage + "%";
         });
     }
 }
        private void Discharge(ref BatteryData info)
        {
            var dQ = info.DeltaEnergy / BatteryData.DischargeVoltage;

            info.charge -= dQ;
            if (info.charge > 0.1f)
            {
                info.totalDischarge += dQ;
            }
            else
            {
                info.status = BatteryStatus.Dead;
                DronesToDrop.Enqueue(info.drone);
            }
        }
예제 #19
0
 public SBattery(BatteryData data)
 {
     count            = BatteryData.Count;
     uid              = data.UID;
     status           = data.status;
     capacity         = data.capacity;
     charge           = data.charge;
     cycles           = data.cycles;
     drone            = data.drone;
     hub              = data.hub;
     designCycles     = BatteryData.designCycles;
     designCapacity   = BatteryData.designCapacity;
     chargeTarget     = BatteryData.chargeTarget;
     chargeRate       = data.chargeRate;
     chargeVoltage    = data.chargeVoltage;
     dischargeVoltage = data.dischargeVoltage;
 }
예제 #20
0
        /// <summary>
        /// Creates Battery-object from rawData.
        /// </summary>
        /// <param name="rawData"></param>
        /// <exception cref="NullReferenceException">Throws exception if rawData is null.</exception>
        /// <returns>Battery</returns>
        private BatteryData CreateBatteryObject(byte[] rawData)
        {
            if (rawData != null)
            {
                var           batteryPercentage = rawData[1];
                BatteryStatus status            = BatteryStatus.NotCharging;

                if (rawData[2] == 1)
                {
                    status = BatteryStatus.Charging;
                }

                var battery = new BatteryData
                {
                    RawData    = rawData,
                    Percentage = batteryPercentage,
                    Status     = status
                };
                return(battery);
            }
            throw new NullReferenceException("Rawdata of battery is null!");
        }
예제 #21
0
        void Main(string arg)
        {
            ReactorData reactorData = GetReactorData();
            BatteryData batteryData = GetBatteryData();

            if (arg == "auto")
            {
                autoMode = !autoMode;
            }
            if (autoMode)
            {
                if (batteryData.percentage < 10 && reactorData.status == false)
                {
                    SwitchReactors(true);
                }
                if (batteryData.percentage > 90 && reactorData.status == true)
                {
                    SwitchReactors(false);
                }
            }
            UpdateDisplay(reactorData, batteryData);
        }
예제 #22
0
 public Battery(SBattery data)
 {
     _Data = new BatteryData(data);
 }
 private void UpdateBattery(BatteryData data)
 {
     BatteryLife.Text = (data.BatteryLife.HasValue ? data.BatteryLife.Value.ToString() : "-") + " %";
     BatteryLifeTime.Text = data.BatteryLifeTime.HasValue ? data.BatteryLifeTime.Value.ToString() : "-";
     BatteryStatus.Text = data.BatteryState.ToString();
 }
예제 #24
0
    /*****************************************************************
    * DBからバッテリー情報を取得して表示
    *****************************************************************/
    private void UpdateBatteryInformation()
    {
        time_bat += Time.deltaTime;
        if (!DBAdapter.CheckWaitAnything() && time_bat > 1.0f)
        {
            time_bat = 0.0f;
            IEnumerator coroutine = DBAdapter.ReadBattery();
            StartCoroutine(coroutine);
        }

        if (DBAdapter.CheckReadBattery())
        {
            if (DBAdapter.CheckAbort())
            {
                DBAdapter.ConfirmAbort();
            }

            if (DBAdapter.CheckSuccess())
            {
                ServiceResponseDB responce = DBAdapter.GetResponce();
                DBAdapter.FinishReadData();

                BatteryData battery_data = JsonUtility.FromJson <BatteryData>(responce.values.tmsdb[0].etcdata);
                float       battery_per  = battery_data.battery * 100;
                Debug.Log("SmartPal Battery: " + battery_per + "[%]");
                mainSystem.MyConsole_Add("SmartPal Battery: " + battery_per + "[%]");

                if (!finish_battery_text)
                {
                    Battery_3DText = (GameObject)Instantiate(Resources.Load("TextMeshPro"));
                    Battery_3DText.transform.SetParent(transform, false);
                    Battery_3DText.transform.localPosition = new Vector3(0.0f, 1.5f, 0.0f);
                    TextMeshPro TMP = Battery_3DText.GetComponent <TextMeshPro>();
                    TMP.fontSize = 1.0f;
                    TMP.text     = "Battery: " + battery_per.ToString() + "[%]";

                    finish_battery_text = true;
                }
                else
                {
                    Battery_3DText.GetComponent <TextMeshPro>().text = "Battery: " + battery_per.ToString() + "[%]";
                }

                mainSystem.UpdateDatabaseInfoSmartPalBattery(battery_per);
            }
        }

        //カメラとSmartPalの距離が近づいたら表示
        if (Battery_3DText != null)
        {
            //if(CalcDistance(Camera.main.gameObject, transform.gameObject) < 2.0f) {
            if (CalcDistance(Camera.main.gameObject, transform.gameObject) < mainSystem.GetConfig().robot_battery_distance)
            {
                Battery_3DText.SetActive(true);
            }
            else
            {
                Battery_3DText.SetActive(false);
            }
        }
    }
        private static void SetCap(ref BatteryData info)
        {
            var x = info.cycles / (float)BatteryData.DesignCycles;

            info.capacity = (-0.7199f * math.pow(x, 3) + 0.7894f * math.pow(x, 2) - 0.3007f * x + 1) * BatteryData.DesignCapacity;
        }
예제 #26
0
        private void AddPropImages()
        {
            int snackIndex = 0; // for determining which Snacks we gots!

            foreach (PropData propData in myRD.allPropDatas)
            {
                // -- Spikes --
                if (propData.GetType() == typeof(SpikesData))
                {
                    SpikesData spikesData = propData as SpikesData;
                    Color      color      = Colors.Spikes(myRD.WorldIndex);// new Color(0.7f,0.1f,0f, 0.6f);
                    Image      newObj     = AddImage("Spikes", rh.s_spikes, rt_props, spikesData.pos, spikesData.size, color);
                    newObj.transform.localEulerAngles = new Vector3(0, 0, spikesData.rotation);
                    newObj.type = Image.Type.Tiled;
                    newObj.transform.localScale     = Vector3.one / 100f; // kinda hacky-ish.
                    newObj.rectTransform.sizeDelta *= 100f;
                    newObj.transform.SetAsFirstSibling();                 // put spikes BEHIND everything else.
                }
                // -- Grounds --
                else if (propData.GetType() == typeof(GroundData))
                {
                    GroundData pd    = propData as GroundData;
                    Color      color = new Color255(100, 130, 90).ToColor();//Ground.GetBodyColor(pd, myRD.WorldIndex);
                    AddImage("Ground", rh.s_ground, rt_props, pd.pos, pd.size, color);
                }
                // -- DispGrounds --
                else if (propData.GetType() == typeof(DispGroundData))
                {
                    DispGroundData pd    = propData as DispGroundData;
                    Color          color = DispGround.GetBodyColor(pd);
                    color = new Color(color.r, color.g, color.b, color.a * 0.6f); // alpha it out a bit, to taste.
                    AddImage("DispGround", rh.s_ground, rt_props, pd.pos, pd.size, color);
                }
                // -- Batteries --
                else if (propData.GetType() == typeof(BatteryData))
                {
                    BatteryData pd = propData as BatteryData;
                    AddImage("Battery", rh.s_battery, rt_props, pd.pos, BatteryIconSize, Color.white);
                }
                // -- Gems --
                else if (propData.GetType() == typeof(GemData))
                {
                    GemData pd     = propData as GemData;
                    Sprite  sprite = rh.GetGemSprite(pd.type);
                    AddImage("Gem", sprite, rt_props, pd.pos, GemIconSize, Color.white);
                }
                // -- Snacks --
                else if (propData.GetType() == typeof(SnackData))
                {
                    SnackData pd = propData as SnackData;
                    Color     color;
                    bool      didEatSnack = SaveStorage.GetBool(SaveKeys.DidEatSnack(myRD, snackIndex));
                    if (didEatSnack)
                    {
                        color = new Color(0, 0, 0, 0.2f);
                    }
                    else
                    {
                        color = PlayerBody.GetBodyColorNeutral(PlayerTypeHelper.TypeFromString(pd.playerType));
                    }
                    AddImage("Snack", rh.s_snack, rt_props, pd.pos, SnackIconSize, color);
                    snackIndex++;
                }
            }
        }
 void setBatteryText(BatteryData bd)
 {
     bd.textMoney.text    = "" + bd.cost;
     bd.textWater.text    = "" + bd.costWater;
     bd.textElectric.text = "" + bd.costElectric;
 }
예제 #28
0
 public Battery(Drone drone, Hub hub)
 {
     _Data = new BatteryData();
     AssignDrone(drone);
     AssignHub(hub);
 }
예제 #29
0
 public static void OnBatteryUpdated(BatteryData battery)
 {
     Globals.HomePageViewModel.UpdateBattery(battery);
 }
예제 #30
0
    //刷新 方法   匹配  id
    void  Refresh()
    {
        for (int i = 0; i < batteryItems.Length; i++)
        {
            BatteryData bData = batteryItems [i].ReturnValue() as BatteryData;
            if (bData != null)
            {
                if (m_data.RTData.openType != 0)
                {
                    if (bData.batteryType == m_data.RTData.openType)
                    {
                        bData.fTime = m_data.fTime;
                        if (bData.dur >= 0)
                        {
                            bData.dur = m_data.RTData.dur;
                        }
                    }
                    else
                    {
                        bData.dur = -1;
                    }
                    bData.canOpen         = false;
                    btn_Collect.isEnabled = true;
//					batteryItems [i].SetItemValue (bData);
                }
                else
                {
                    bData.buildingId      = int.Parse(m_data.config.ID);
                    bData.buildingPid     = m_data.RTData.id;
                    bData.fTime           = new DateTime();
                    bData.dur             = -1;
                    bData.canOpen         = true;
                    btn_Collect.isEnabled = false;
                }
                batteryItems [i].SetItemValue(bData);
            }
            else
            {
                bData             = new BatteryData();
                bData.batteryType = (i + 1);
                bData.buildingId  = int.Parse(m_data.config.ID);
                bData.buildingPid = m_data.RTData.id;

                if (bData.batteryType == m_data.RTData.openType)
                {
                    if (bData.dur >= 0)
                    {
                        bData.dur = m_data.RTData.dur;
                    }
                    bData.fTime   = m_data.fTime;
                    bData.canOpen = false;
                }
                else
                {
                    bData.dur     = -1;
                    bData.canOpen = false;
                    bData.fTime   = new System.DateTime();
                }
                batteryItems [i].SetItemValue(bData);
            }
        }

        this.SetBtnLbl();
    }
예제 #31
0
 public void Initialize(Room _myRoom, BatteryData data)
 {
     base.InitializeAsProp(_myRoom, data);
 }