public void SetMode(CircleMode mode) { _mode = mode; var color = new Color(); switch (_mode) { case CircleMode.STATIC: _label.Hide(); color = GameSettings.Instance().ColorSchemes[GameSettings.Instance().Theme].CircleStatic; break; case CircleMode.LIMITED: _currentOrbits = _numOrbits; _label.Text = _currentOrbits.ToString(); _label.Show(); color = GameSettings.Instance().ColorSchemes[GameSettings.Instance().Theme].CircleLimited; break; default: break; } (_sprite.Material as ShaderMaterial).SetShaderParam("color", color); }
// Start is called before the first frame update void Start() { mode = CircleMode.NONE; gameObject.GetComponent <Image>().fillAmount = 0.0f; releaseSpeed = 1.0f / releaseMaxTime; }
// Update is called once per frame void Update() { if (Input.GetMouseButtonDown(0)) { mode = CircleMode.CIRCLE_FILL; elaspedTime = 0.0f; } if (Input.GetMouseButtonUp(0)) { mode = CircleMode.CIRCLE_RELEASE; elaspedTime = 0.0f; } if (mode == CircleMode.CIRCLE_FILL) { if (Input.GetMouseButton(0)) { elaspedTime += Time.deltaTime; if (elaspedTime > fillMaxTime) { elaspedTime = fillMaxTime; } float fillRate = elaspedTime / fillMaxTime; gameObject.GetComponent <Image>().fillAmount = fillRate; } } if (mode == CircleMode.CIRCLE_RELEASE) { gameObject.GetComponent <Image>().fillAmount -= releaseSpeed * Time.deltaTime; if (gameObject.GetComponent <Image>().fillAmount < 0.0f) { gameObject.GetComponent <Image>().fillAmount = 0.0f; } } }
public virtual void LoadFrom(MyReader mr) { bool isRect = mr.LoadBool(); if (isRect && ShowShape is CircleMode) { ShowShape = new RectangleMode(); } else if (!isRect && ShowShape is RectangleMode) { ShowShape = new CircleMode(); } ShowShape.X = mr.LoadInt(); ShowShape.Y = mr.LoadInt(); ShowShape.Width = mr.LoadInt(); ShowShape.Height = mr.LoadInt(); ShowShape.Angle = mr.LoadDouble(); mr.LoadLineEnd(); foreach (var item in uis) { item.LoadFrom(mr); } mr.LoadLineEnd(); }