public static bool TryParse(string value, out ConditionStatus result) { result = default(ConditionStatus); if (value == "provisional") { result = ConditionStatus.Provisional; } else if (value == "working") { result = ConditionStatus.Working; } else if (value == "confirmed") { result = ConditionStatus.Confirmed; } else if (value == "refuted") { result = ConditionStatus.Refuted; } else { return(false); } return(true); }
//call this whenever your condition has been changed! protected void UpdateSatisfaction(bool satisfied, bool invokeEvent) { if (Status == ConditionStatus.Unknown) { Status = satisfied ? ConditionStatus.Satisfied : ConditionStatus.Unsatisfied; } else if (satisfied && Status == ConditionStatus.Unsatisfied) { Status = ConditionStatus.Satisfied; } else if (!satisfied && Status == ConditionStatus.Satisfied) { Status = ConditionStatus.Unsatisfied; } else { invokeEvent = false; } if (invokeEvent) { if (Status == ConditionStatus.Satisfied) { onSatisfied.Invoke(); } else { onUnsatisfied.Invoke(); } } }
/// <summary> /// 異常状態を解除する /// </summary> /// <param name="status">Status.</param> public void Remove_c_status(ConditionStatus status) { if (CheckFlag(status)) { conditionStatus &= ~status; } }
/// <summary> /// 異常状態を設定する /// </summary> /// <param name="newStatus">New status.</param> public void Set_c_Status(ConditionStatus newStatus) { if (CheckFlag(newStatus)) { return; } conditionStatus |= newStatus; }
private void BuildParamList( ) { if (this.ConditionStatus == ConditionStatus.Default) { paramList.Clear(); ParamNameIndex = 0; this.BuildParamList(paramList, this.ConditionList); this.ConditionStatus = ConditionStatus.BuildParam; } }
public bool SetCondition(string type, ConditionStatus status, string reason, string message) { if (this.Conditions == null) { this.Conditions = new List <MobileDeviceCondition>(); } var currentCondition = this.Conditions.FirstOrDefault(c => c.Type == type); if (currentCondition == null) { this.Conditions.Add( new MobileDeviceCondition() { Type = type, Status = status, Reason = reason, Message = message, LastHeartbeatTime = DateTimeOffset.Now, LastTransitionTime = DateTimeOffset.Now, }); return(true); } else if (currentCondition.Status != status || currentCondition.Reason != reason || currentCondition.Message != message) { currentCondition.LastHeartbeatTime = DateTimeOffset.Now; currentCondition.LastTransitionTime = DateTimeOffset.Now; currentCondition.Status = status; currentCondition.Reason = reason; currentCondition.Message = message; return(true); } else if (currentCondition.LastHeartbeatTime.AddMinutes(5) < DateTimeOffset.Now) { currentCondition.LastHeartbeatTime = DateTimeOffset.Now; return(true); } else { return(false); } }
public Condition ReplaceItem(string fieldName, object val) { if (!this.ConditionList.Any()) { return(this); } foreach (var cond in ConditionList) { this.ReplaceItem(cond.ConditionItems, fieldName, val); this.ReplaceItem(cond.ConditionList, fieldName, val); } this.ConditionStatus = ConditionStatus.Default; return(this); }
/// <summary> /// 状態の時間をカウント /// </summary> /// <param name="c_status">状態</param> /// <param name="time">効果時間</param> public IEnumerator StatusCounter(ConditionStatus c_status, float time) { float startTime = Time.time; while (true) { if (CheckFlag(c_status)) { if ((Time.time - startTime) >= time) { Remove_c_status(c_status); yield break; } yield return(new WaitForSeconds(COROUTINE_WAIT_TIME)); } else { yield break; } } }
/// <summary> /// /// </summary> /// <param name="fieldName"></param> /// <returns></returns> public Condition RemoveItem(params string[] fieldNames) { if (!this.ConditionList.Any()) { return(this); } if (fieldNames == null || !fieldNames.Any()) { return(this); } foreach (var cond in ConditionList) { this.RemoveItem(cond.ConditionItems, fieldNames); this.RemoveItem(cond.ConditionList, fieldNames); } this.ConditionStatus = ConditionStatus.Default; return(this); }
public static string ToString(ConditionStatus value) { if (value == ConditionStatus.Provisional) { return("provisional"); } else if (value == ConditionStatus.Working) { return("working"); } else if (value == ConditionStatus.Confirmed) { return("confirmed"); } else if (value == ConditionStatus.Refuted) { return("refuted"); } else { throw new ArgumentException("Unrecognized ConditionStatus value: " + value.ToString()); } }
/// <summary> /// Asynchronously sets a device condition. /// </summary> /// <param name="client"> /// A client which provides access to the Kubernetes cluster. /// </param> /// <param name="device"> /// The device for which to set the status. /// </param> /// <param name="type"> /// The name of the condition. /// </param> /// <param name="status"> /// The status of the condition. /// </param> /// <param name="reason"> /// A machine-readable reason for the condition status. /// </param> /// <param name="message"> /// A human-readable reason for the condition status. /// </param> /// <param name="cancellationToken"> /// A <see cref="CancellationToken"/> which can be used to cancel the asynchronous operation. /// </param> /// <returns> /// A <see cref="Task"/> which represents the asynchronous operation. /// </returns> public static async Task SetDeviceConditionAsync(this NamespacedKubernetesClient <MobileDevice> client, MobileDevice device, string type, ConditionStatus status, string reason, string message, CancellationToken cancellationToken) { Requires.NotNull(device, nameof(device)); Requires.NotNull(type, nameof(type)); bool hasStatus = device.Status != null; bool hasConditions = device.Status?.Conditions != null; if (device.Status == null) { device.Status = new MobileDeviceStatus(); } if (device.Status.SetCondition(type, status, reason, message)) { var patch = new JsonPatchDocument <MobileDevice>(); if (!hasStatus) { patch.Add(p => p.Status, device.Status); } else if (!hasConditions) { patch.Add(p => p.Status.Conditions, device.Status.Conditions); } else { patch.Replace(p => p.Status.Conditions, device.Status.Conditions); } await client.PatchStatusAsync(device, patch, cancellationToken).ConfigureAwait(false); } }
/// <summary> /// 異常状態を与える /// </summary> /// <param name="target">Target</param> /// <param name="sc">Skill Script</param> /// <param name="a_time">エフェクトを出す時間</param> /// <param name="effect">エフェクトのpath</param> /// <param name="e_time">Damageを与える時間</param> /// <returns></returns> public IEnumerator StatusMagic(GameObject target, Skill skill, float a_time, string effect, float e_time, ConditionStatus status) { if (skill.s_range > 0) { CreateRange(); GameObject.FindGameObjectWithTag("Range").GetComponent <SphereCollider>().radius = skill.s_range; } float timer = 0; bool useMagic = false; while (true) { timer += Time.deltaTime; if (timer >= a_time && !useMagic) { GameObject effectObj = Instantiate(Resources.Load(effect), target.transform.position, Quaternion.identity) as GameObject; effectObj.transform.parent = this.transform; useMagic = true; } if (timer >= e_time) { try { if (skill.s_range > 0) { foreach (var r_target in GameObject.FindGameObjectWithTag("Range").GetComponent <RangeDetect>().targets) { // TODO: Player / Enemy を判断できるように if (r_target.layer != LayerMask.NameToLayer("Enemy")) { continue; } EnemyBase eb = r_target.GetComponent <EnemyBase>(); eb.Set_c_Status(status); eb.StartCoroutine(eb.StatusCounter(status, skill.s_effectTime)); } } else { if (target.layer == LayerMask.NameToLayer("Enemy")) { EnemyBase eb = target.GetComponent <EnemyBase>(); eb.Set_c_Status(status); eb.StartCoroutine(eb.StatusCounter(status, skill.s_effectTime)); } } if (GameObject.FindGameObjectWithTag("Range")) { DeleteRange(); } StartCoroutine(SkillRecast(skill, skill.s_recast)); yield break; } catch (MissingReferenceException) { yield break; } } yield return(new WaitForEndOfFrame()); } }
/// <summary> /// 状態を確認する /// </summary> /// <param name="newStatus">New status.</param> public bool CheckFlag(ConditionStatus newStatus) { return((conditionStatus & newStatus) == newStatus); }
/// <summary> /// 異常状態を設定し、カウントする /// </summary> /// <param name="c_status">C status.</param> /// <param name="time">Time.</param> public void SetCondition(ConditionStatus c_status, float time) { Set_c_Status(c_status); StartCoroutine(StatusCounter(c_status, time)); }
public static bool TryParse(string value, out ConditionStatus result) { result = default(ConditionStatus); if( value=="provisional") result = ConditionStatus.Provisional; else if( value=="working") result = ConditionStatus.Working; else if( value=="confirmed") result = ConditionStatus.Confirmed; else if( value=="refuted") result = ConditionStatus.Refuted; else return false; return true; }
public static string ToString(ConditionStatus value) { if( value==ConditionStatus.Provisional ) return "provisional"; else if( value==ConditionStatus.Working ) return "working"; else if( value==ConditionStatus.Confirmed ) return "confirmed"; else if( value==ConditionStatus.Refuted ) return "refuted"; else throw new ArgumentException("Unrecognized ConditionStatus value: " + value.ToString()); }