void Update() { if (wait_frames > 0) { wait_frames--; return; } if (requested != null) { for (int i = 0; i < 512; i++) { if (Input.GetKeyDown((KeyCode)i)) { if (requested_primary) requested.primary = (KeyCode)i; else requested.secondary = (KeyCode)i; requested = null; Settings.SaveSettings(); break; } } } if (t > -1f && !leaving) t -= Time.deltaTime * TitleScene.line_speed / 2f; else if (leaving && t < 1f) { if (t < 0f) t = 0f; t += Time.deltaTime * TitleScene.line_speed / 2f; } if (t_bottom > -1f) t_bottom -= Time.deltaTime * TitleScene.line_speed * 2f; if (!leaving) { if (ret >= 0f && ret < 1f) ret += Time.deltaTime * TitleScene.button_speed; if (fs >= 0f && fs < 1f) fs += Time.deltaTime * TitleScene.button_speed; if (quality >= 0f && quality < 1f) quality += Time.deltaTime * TitleScene.button_speed; if (restart >= 0f && restart < 1f) restart += Time.deltaTime * TitleScene.button_speed; if (camera_pos >= 0f && camera_pos < 1f) camera_pos += Time.deltaTime * TitleScene.button_speed; if (mute_pos >= 0f && mute_pos < 1f) mute_pos += Time.deltaTime * TitleScene.button_speed; if (frames >= 0f && frames < 1f) frames += Time.deltaTime * TitleScene.button_speed; } else { ret -= Time.deltaTime * TitleScene.button_speed; fs -= Time.deltaTime * TitleScene.button_speed; quality -= Time.deltaTime * TitleScene.button_speed; restart -= Time.deltaTime * TitleScene.button_speed; camera_pos -= Time.deltaTime * TitleScene.button_speed; mute_pos -= Time.deltaTime * TitleScene.button_speed; frames -= Time.deltaTime * TitleScene.button_speed; } }
void KeySelector(Rect r, Settings.KeyControl k) { Rect label = new Rect(r.x, r.y, r.width / 3, r.height); Rect primary = new Rect(r.x + label.width, r.y, r.width / 3, r.height); Rect secondary = new Rect(primary.x + primary.width, r.y, r.width / 3, r.height); bool l = true, p = true, s = true; // Line! Vector2 line_end = new Vector2(0, label.y); if (t > 0f) { if (key_control_id % 2 == 0) { line_end.x = Mathf.Lerp(Screen.width, label.x, 1f - t); if (!leaving) Utilities.DrawLine(new Vector2(Screen.width, label.y), line_end, 5f, TitleScene.line_color); } else { line_end.x = Mathf.Lerp(0, secondary.x + secondary.width, 1f - t); if (!leaving) Utilities.DrawLine(new Vector2(0f, label.y), line_end, 5f, TitleScene.line_color); } } else if (t > -1f) { if (key_control_id % 2 == 0) { line_end.x = Mathf.Lerp(Screen.width, label.x, -t); if (!leaving) Utilities.DrawLine(new Vector2(label.x, label.y), line_end, 5f, TitleScene.line_color); } else { line_end.x = Mathf.Lerp(0, secondary.x + secondary.width, -t); if (!leaving) Utilities.DrawLine(new Vector2(secondary.x + secondary.width, label.y), line_end, 5f, TitleScene.line_color); } } key_control_id++; // Restrict them rects! if (t > 0f) { if (key_control_id % 2 == 0) { float w = Mathf.Max (0, Mathf.Min(label.width, line_end.x - label.x)); l = w >= label.width; label.width = w; w = Mathf.Max (0, Mathf.Min(primary.width, line_end.x - primary.x)); p = w >= primary.width; primary.width = w; w = Mathf.Max (0, Mathf.Min(secondary.width, line_end.x - secondary.x)); s = w >= secondary.width; secondary.width = w; } else { float w = Mathf.Max(0, Mathf.Min (secondary.width, secondary.x + secondary.width - line_end.x)); s = w >= secondary.width; secondary.x += secondary.width - w; secondary.width = w; w = Mathf.Max(0, Mathf.Min (primary.width, primary.x + primary.width - line_end.x)); p = w >= primary.width; primary.x += primary.width - w; primary.width = w; w = Mathf.Max(0, Mathf.Min (label.width, label.x + label.width - line_end.x)); l = w >= label.width; label.x += label.width - w; label.width = w; } } if (label.width > 0) GUI.Label(label, l ? k.name : "", key_selection); if (requested == null) { if (p) { if (GUI.Button(primary, k.primary.ToString(), key_selection)) { requested = k; requested_primary = true; } } else if (primary.width > 0) GUI.Box(primary, ""); if (s) { if (GUI.Button(secondary, k.secondary.ToString(), key_selection)) { requested = k; requested_primary = false; } } else if (secondary.width > 0) GUI.Box (secondary, ""); } else { GUI.Label(primary, (k == requested && requested_primary) ? "<Press any key>" : k.primary.ToString(), (k == requested && requested_primary) ? key_selected : key_selection); GUI.Label(secondary, (k == requested && !requested_primary) ? "<Press any key>" : k.secondary.ToString(), (k == requested && !requested_primary) ? key_selected : key_selection); } }
void Start() { requested = null; t_bottom = t = 1f; fs = ret = quality = restart = camera_pos = mute_pos = frames = -1f; }
void KeySelector(Rect r, Settings.KeyControl k) { Rect label = new Rect(r.x, r.y, r.width / 3, r.height); Rect primary = new Rect(r.x + label.width, r.y, r.width / 3, r.height); Rect secondary = new Rect(primary.x + primary.width, r.y, r.width / 3, r.height); bool l = true, p = true, s = true; // Line! Vector2 line_end = new Vector2(0, label.y); if (t > 0f) { if (key_control_id % 2 == 0) { line_end.x = Mathf.Lerp(Screen.width, label.x, 1f - t); if (!leaving) { Utilities.DrawLine(new Vector2(Screen.width, label.y), line_end, 5f, TitleScene.line_color); } } else { line_end.x = Mathf.Lerp(0, secondary.x + secondary.width, 1f - t); if (!leaving) { Utilities.DrawLine(new Vector2(0f, label.y), line_end, 5f, TitleScene.line_color); } } } else if (t > -1f) { if (key_control_id % 2 == 0) { line_end.x = Mathf.Lerp(Screen.width, label.x, -t); if (!leaving) { Utilities.DrawLine(new Vector2(label.x, label.y), line_end, 5f, TitleScene.line_color); } } else { line_end.x = Mathf.Lerp(0, secondary.x + secondary.width, -t); if (!leaving) { Utilities.DrawLine(new Vector2(secondary.x + secondary.width, label.y), line_end, 5f, TitleScene.line_color); } } } key_control_id++; // Restrict them rects! if (t > 0f) { if (key_control_id % 2 == 0) { float w = Mathf.Max(0, Mathf.Min(label.width, line_end.x - label.x)); l = w >= label.width; label.width = w; w = Mathf.Max(0, Mathf.Min(primary.width, line_end.x - primary.x)); p = w >= primary.width; primary.width = w; w = Mathf.Max(0, Mathf.Min(secondary.width, line_end.x - secondary.x)); s = w >= secondary.width; secondary.width = w; } else { float w = Mathf.Max(0, Mathf.Min(secondary.width, secondary.x + secondary.width - line_end.x)); s = w >= secondary.width; secondary.x += secondary.width - w; secondary.width = w; w = Mathf.Max(0, Mathf.Min(primary.width, primary.x + primary.width - line_end.x)); p = w >= primary.width; primary.x += primary.width - w; primary.width = w; w = Mathf.Max(0, Mathf.Min(label.width, label.x + label.width - line_end.x)); l = w >= label.width; label.x += label.width - w; label.width = w; } } if (label.width > 0) { GUI.Label(label, l ? k.name : "", key_selection); } if (requested == null) { if (p) { if (GUI.Button(primary, k.primary.ToString(), key_selection)) { requested = k; requested_primary = true; } } else if (primary.width > 0) { GUI.Box(primary, ""); } if (s) { if (GUI.Button(secondary, k.secondary.ToString(), key_selection)) { requested = k; requested_primary = false; } } else if (secondary.width > 0) { GUI.Box(secondary, ""); } } else { GUI.Label(primary, (k == requested && requested_primary) ? "<Press any key>" : k.primary.ToString(), (k == requested && requested_primary) ? key_selected : key_selection); GUI.Label(secondary, (k == requested && !requested_primary) ? "<Press any key>" : k.secondary.ToString(), (k == requested && !requested_primary) ? key_selected : key_selection); } }
void Update() { if (wait_frames > 0) { wait_frames--; return; } if (requested != null) { for (int i = 0; i < 512; i++) { if (Input.GetKeyDown((KeyCode)i)) { if (requested_primary) { requested.primary = (KeyCode)i; } else { requested.secondary = (KeyCode)i; } requested = null; Settings.SaveSettings(); break; } } } if (t > -1f && !leaving) { t -= Time.deltaTime * TitleScene.line_speed / 2f; } else if (leaving && t < 1f) { if (t < 0f) { t = 0f; } t += Time.deltaTime * TitleScene.line_speed / 2f; } if (t_bottom > -1f) { t_bottom -= Time.deltaTime * TitleScene.line_speed * 2f; } if (!leaving) { if (ret >= 0f && ret < 1f) { ret += Time.deltaTime * TitleScene.button_speed; } if (fs >= 0f && fs < 1f) { fs += Time.deltaTime * TitleScene.button_speed; } if (quality >= 0f && quality < 1f) { quality += Time.deltaTime * TitleScene.button_speed; } if (restart >= 0f && restart < 1f) { restart += Time.deltaTime * TitleScene.button_speed; } if (camera_pos >= 0f && camera_pos < 1f) { camera_pos += Time.deltaTime * TitleScene.button_speed; } if (mute_pos >= 0f && mute_pos < 1f) { mute_pos += Time.deltaTime * TitleScene.button_speed; } if (frames >= 0f && frames < 1f) { frames += Time.deltaTime * TitleScene.button_speed; } } else { ret -= Time.deltaTime * TitleScene.button_speed; fs -= Time.deltaTime * TitleScene.button_speed; quality -= Time.deltaTime * TitleScene.button_speed; restart -= Time.deltaTime * TitleScene.button_speed; camera_pos -= Time.deltaTime * TitleScene.button_speed; mute_pos -= Time.deltaTime * TitleScene.button_speed; frames -= Time.deltaTime * TitleScene.button_speed; } }