This commit is contained in:
dabreegster 2020-09-14 17:01:34 +00:00
parent 6287f7c596
commit 2de9c32034
43 changed files with 895 additions and 867 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,2 +1,2 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `BUILT_TIME_UTC` constant in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, BUILT_TIME_UTC"><title>game::pregame::built_info::BUILT_TIME_UTC - Rust</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc constant"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../game/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class='location'><a href='../../index.html'>game</a>::<wbr><a href='../index.html'>pregame</a>::<wbr><a href='index.html'>built_info</a></p><script>window.sidebarCurrent = {name: 'BUILT_TIME_UTC', ty: 'constant', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../../src/game/home/runner/work/abstreet/abstreet/target/debug/build/game-3c7487281029702d/out/built.rs.html#49' title='goto source code'>[src]</a></span><span class='in-band'>Constant <a href='../../index.html'>game</a>::<wbr><a href='../index.html'>pregame</a>::<wbr><a href='index.html'>built_info</a>::<wbr><a class="constant" href=''>BUILT_TIME_UTC</a></span></h1><pre class='rust const'>pub const BUILT_TIME_UTC: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a> = &quot;Mon, 14 Sep 2020 16:37:50 +0000&quot;;</pre><div class='docblock'><p>The built-time in RFC2822, UTC</p>
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `BUILT_TIME_UTC` constant in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, BUILT_TIME_UTC"><title>game::pregame::built_info::BUILT_TIME_UTC - Rust</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc constant"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../game/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class='location'><a href='../../index.html'>game</a>::<wbr><a href='../index.html'>pregame</a>::<wbr><a href='index.html'>built_info</a></p><script>window.sidebarCurrent = {name: 'BUILT_TIME_UTC', ty: 'constant', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../../src/game/home/runner/work/abstreet/abstreet/target/debug/build/game-3c7487281029702d/out/built.rs.html#49' title='goto source code'>[src]</a></span><span class='in-band'>Constant <a href='../../index.html'>game</a>::<wbr><a href='../index.html'>pregame</a>::<wbr><a href='index.html'>built_info</a>::<wbr><a class="constant" href=''>BUILT_TIME_UTC</a></span></h1><pre class='rust const'>pub const BUILT_TIME_UTC: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a> = &quot;Mon, 14 Sep 2020 16:59:09 +0000&quot;;</pre><div class='docblock'><p>The built-time in RFC2822, UTC</p>
</div></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../../";window.currentCrate = "game";</script><script src="../../../main.js"></script><script defer src="../../../search-index.js"></script></body></html>

View File

@ -1 +1 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `maybe_exit_sandbox` fn in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, maybe_exit_sandbox"><title>game::sandbox::maybe_exit_sandbox - Rust</title><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css"><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script src="../../storage.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="shortcut icon" href="../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc fn"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../game/index.html'><div class='logo-container'><img src='../../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class='location'><a href='../index.html'>game</a>::<wbr><a href='index.html'>sandbox</a></p><script>window.sidebarCurrent = {name: 'maybe_exit_sandbox', ty: 'fn', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../settings.html"><img src="../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../src/game/sandbox/mod.rs.html#243-272' title='goto source code'>[src]</a></span><span class='in-band'>Function <a href='../index.html'>game</a>::<wbr><a href='index.html'>sandbox</a>::<wbr><a class="fn" href=''>maybe_exit_sandbox</a></span></h1><pre class='rust fn'>pub fn maybe_exit_sandbox(ctx: &amp;mut EventCtx) -&gt; <a class="enum" href="../../game/game/enum.Transition.html" title="enum game::game::Transition">Transition</a></pre></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../";window.currentCrate = "game";</script><script src="../../main.js"></script><script defer src="../../search-index.js"></script></body></html>
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `maybe_exit_sandbox` fn in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, maybe_exit_sandbox"><title>game::sandbox::maybe_exit_sandbox - Rust</title><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css"><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script src="../../storage.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="shortcut icon" href="../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc fn"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../game/index.html'><div class='logo-container'><img src='../../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class='location'><a href='../index.html'>game</a>::<wbr><a href='index.html'>sandbox</a></p><script>window.sidebarCurrent = {name: 'maybe_exit_sandbox', ty: 'fn', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../settings.html"><img src="../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../src/game/sandbox/mod.rs.html#244-273' title='goto source code'>[src]</a></span><span class='in-band'>Function <a href='../index.html'>game</a>::<wbr><a href='index.html'>sandbox</a>::<wbr><a class="fn" href=''>maybe_exit_sandbox</a></span></h1><pre class='rust fn'>pub fn maybe_exit_sandbox(ctx: &amp;mut EventCtx) -&gt; <a class="enum" href="../../game/game/enum.Transition.html" title="enum game::game::Transition">Transition</a></pre></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../";window.currentCrate = "game";</script><script src="../../main.js"></script><script defer src="../../search-index.js"></script></body></html>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `sandbox` mod in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, sandbox"><title>game::sandbox - Rust</title><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css"><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script src="../../storage.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="shortcut icon" href="../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../game/index.html'><div class='logo-container'><img src='../../rust-logo.png' alt='logo'></div></a><p class='location'>Module sandbox</p><div class="sidebar-elems"><div class="block items"><ul><li><a href="#reexports">Re-exports</a></li><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#functions">Functions</a></li></ul></div><p class='location'><a href='../index.html'>game</a></p><script>window.sidebarCurrent = {name: 'sandbox', ty: 'mod', relpath: '../'};</script><script defer src="../sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../settings.html"><img src="../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../src/game/sandbox/mod.rs.html#1-517' title='goto source code'>[src]</a></span><span class='in-band'>Module <a href='../index.html'>game</a>::<wbr><a class="mod" href=''>sandbox</a></span></h1><h2 id='reexports' class='section-header'><a href="#reexports">Re-exports</a></h2>
<table><tr><td><code>pub use gameplay::<a class="fn" href="../../game/sandbox/gameplay/freeform/fn.spawn_agents_around.html" title="fn game::sandbox::gameplay::freeform::spawn_agents_around">spawn_agents_around</a>;</code></td></tr><tr><td><code>pub use gameplay::<a class="enum" href="../../game/sandbox/gameplay/enum.GameplayMode.html" title="enum game::sandbox::gameplay::GameplayMode">GameplayMode</a>;</code></td></tr><tr><td><code>pub use gameplay::<a class="struct" href="../../game/sandbox/gameplay/tutorial/struct.TutorialPointer.html" title="struct game::sandbox::gameplay::tutorial::TutorialPointer">TutorialPointer</a>;</code></td></tr><tr><td><code>pub use gameplay::<a class="struct" href="../../game/sandbox/gameplay/tutorial/struct.TutorialState.html" title="struct game::sandbox::gameplay::tutorial::TutorialState">TutorialState</a>;</code></td></tr><tr><td><code>pub use speed::<a class="struct" href="../../game/sandbox/speed/struct.TimeWarpScreen.html" title="struct game::sandbox::speed::TimeWarpScreen">TimeWarpScreen</a>;</code></td></tr><tr><td><code>pub use speed::<a class="struct" href="../../game/sandbox/speed/struct.SpeedControls.html" title="struct game::sandbox::speed::SpeedControls">SpeedControls</a>;</code></td></tr><tr><td><code>pub use speed::<a class="struct" href="../../game/sandbox/speed/struct.TimePanel.html" title="struct game::sandbox::speed::TimePanel">TimePanel</a>;</code></td></tr></table><h2 id='modules' class='section-header'><a href="#modules">Modules</a></h2>
<table><tr class='module-item'><td><a class="mod" href="dashboards/index.html" title='game::sandbox::dashboards mod'>dashboards</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="mod" href="gameplay/index.html" title='game::sandbox::gameplay mod'>gameplay</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="mod" href="misc_tools/index.html" title='game::sandbox::misc_tools mod'>misc_tools</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="mod" href="speed/index.html" title='game::sandbox::speed mod'>speed</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="mod" href="uber_turns/index.html" title='game::sandbox::uber_turns mod'>uber_turns</a></td><td class='docblock-short'></td></tr></table><h2 id='structs' class='section-header'><a href="#structs">Structs</a></h2>
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `sandbox` mod in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, sandbox"><title>game::sandbox - Rust</title><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css"><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script src="../../storage.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="shortcut icon" href="../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../game/index.html'><div class='logo-container'><img src='../../rust-logo.png' alt='logo'></div></a><p class='location'>Module sandbox</p><div class="sidebar-elems"><div class="block items"><ul><li><a href="#reexports">Re-exports</a></li><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#functions">Functions</a></li></ul></div><p class='location'><a href='../index.html'>game</a></p><script>window.sidebarCurrent = {name: 'sandbox', ty: 'mod', relpath: '../'};</script><script defer src="../sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../settings.html"><img src="../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../src/game/sandbox/mod.rs.html#1-518' title='goto source code'>[src]</a></span><span class='in-band'>Module <a href='../index.html'>game</a>::<wbr><a class="mod" href=''>sandbox</a></span></h1><h2 id='reexports' class='section-header'><a href="#reexports">Re-exports</a></h2>
<table><tr><td><code>pub use gameplay::<a class="fn" href="../../game/sandbox/gameplay/freeform/fn.spawn_agents_around.html" title="fn game::sandbox::gameplay::freeform::spawn_agents_around">spawn_agents_around</a>;</code></td></tr><tr><td><code>pub use gameplay::<a class="enum" href="../../game/sandbox/gameplay/enum.GameplayMode.html" title="enum game::sandbox::gameplay::GameplayMode">GameplayMode</a>;</code></td></tr><tr><td><code>pub use gameplay::<a class="struct" href="../../game/sandbox/gameplay/tutorial/struct.TutorialPointer.html" title="struct game::sandbox::gameplay::tutorial::TutorialPointer">TutorialPointer</a>;</code></td></tr><tr><td><code>pub use gameplay::<a class="struct" href="../../game/sandbox/gameplay/tutorial/struct.TutorialState.html" title="struct game::sandbox::gameplay::tutorial::TutorialState">TutorialState</a>;</code></td></tr><tr><td><code>pub use speed::<a class="struct" href="../../game/sandbox/speed/struct.SpeedControls.html" title="struct game::sandbox::speed::SpeedControls">SpeedControls</a>;</code></td></tr><tr><td><code>pub use speed::<a class="struct" href="../../game/sandbox/speed/struct.TimePanel.html" title="struct game::sandbox::speed::TimePanel">TimePanel</a>;</code></td></tr><tr><td><code>pub use time_warp::<a class="struct" href="../../game/sandbox/time_warp/struct.TimeWarpScreen.html" title="struct game::sandbox::time_warp::TimeWarpScreen">TimeWarpScreen</a>;</code></td></tr></table><h2 id='modules' class='section-header'><a href="#modules">Modules</a></h2>
<table><tr class='module-item'><td><a class="mod" href="dashboards/index.html" title='game::sandbox::dashboards mod'>dashboards</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="mod" href="gameplay/index.html" title='game::sandbox::gameplay mod'>gameplay</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="mod" href="misc_tools/index.html" title='game::sandbox::misc_tools mod'>misc_tools</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="mod" href="speed/index.html" title='game::sandbox::speed mod'>speed</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="mod" href="time_warp/index.html" title='game::sandbox::time_warp mod'>time_warp</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="mod" href="uber_turns/index.html" title='game::sandbox::uber_turns mod'>uber_turns</a></td><td class='docblock-short'></td></tr></table><h2 id='structs' class='section-header'><a href="#structs">Structs</a></h2>
<table><tr class='module-item'><td><a class="struct" href="struct.Actions.html" title='game::sandbox::Actions struct'>Actions</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="struct" href="struct.AgentMeter.html" title='game::sandbox::AgentMeter struct'>AgentMeter</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="struct" href="struct.BackToMainMenu.html" title='game::sandbox::BackToMainMenu struct'>BackToMainMenu</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="struct" href="struct.SandboxControls.html" title='game::sandbox::SandboxControls struct'>SandboxControls</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="struct" href="struct.SandboxMode.html" title='game::sandbox::SandboxMode struct'>SandboxMode</a></td><td class='docblock-short'></td></tr></table><h2 id='functions' class='section-header'><a href="#functions">Functions</a></h2>
<table><tr class='module-item'><td><a class="fn" href="fn.maybe_exit_sandbox.html" title='game::sandbox::maybe_exit_sandbox fn'>maybe_exit_sandbox</a></td><td class='docblock-short'></td></tr></table></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../";window.currentCrate = "game";</script><script src="../../main.js"></script><script defer src="../../search-index.js"></script></body></html>

View File

@ -1 +1 @@
initSidebarItems({"fn":[["maybe_exit_sandbox",""]],"mod":[["dashboards",""],["gameplay",""],["misc_tools",""],["speed",""],["uber_turns",""]],"struct":[["Actions",""],["AgentMeter",""],["BackToMainMenu",""],["SandboxControls",""],["SandboxMode",""]]});
initSidebarItems({"fn":[["maybe_exit_sandbox",""]],"mod":[["dashboards",""],["gameplay",""],["misc_tools",""],["speed",""],["time_warp",""],["uber_turns",""]],"struct":[["Actions",""],["AgentMeter",""],["BackToMainMenu",""],["SandboxControls",""],["SandboxMode",""]]});

View File

@ -1,20 +1,20 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `SpeedSetting` enum in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, SpeedSetting"><title>game::sandbox::speed::SpeedSetting - Rust</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc enum"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../game/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a><p class='location'>Enum SpeedSetting</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#variants">Variants</a><div class="sidebar-links"><a href="#variant.Fast">Fast</a><a href="#variant.Faster">Faster</a><a href="#variant.Fastest">Fastest</a><a href="#variant.Realtime">Realtime</a></div><a class="sidebar-title" href="#trait-implementations">Trait Implementations</a><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Copy">Copy</a><a href="#impl-PartialEq%3CSpeedSetting%3E">PartialEq&lt;SpeedSetting&gt;</a><a href="#impl-PartialOrd%3CSpeedSetting%3E">PartialOrd&lt;SpeedSetting&gt;</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><a class="sidebar-title" href="#synthetic-implementations">Auto Trait Implementations</a><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><a class="sidebar-title" href="#blanket-implementations">Blanket Implementations</a><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow&lt;T&gt;</a><a href="#impl-BorrowMut%3CT%3E">BorrowMut&lt;T&gt;</a><a href="#impl-Downcast">Downcast</a><a href="#impl-DowncastSync">DowncastSync</a><a href="#impl-From%3CT%3E">From&lt;T&gt;</a><a href="#impl-Into%3CU%3E">Into&lt;U&gt;</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom&lt;U&gt;</a><a href="#impl-TryInto%3CU%3E">TryInto&lt;U&gt;</a><a href="#impl-VZip%3CV%3E">VZip&lt;V&gt;</a></div></div><p class='location'><a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>speed</a></p><script>window.sidebarCurrent = {name: 'SpeedSetting', ty: 'enum', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#25-34' title='goto source code'>[src]</a></span><span class='in-band'>Enum <a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>speed</a>::<wbr><a class="enum" href=''>SpeedSetting</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><pre class='rust enum'>enum SpeedSetting {
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `SpeedSetting` enum in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, SpeedSetting"><title>game::sandbox::speed::SpeedSetting - Rust</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc enum"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../game/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a><p class='location'>Enum SpeedSetting</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#variants">Variants</a><div class="sidebar-links"><a href="#variant.Fast">Fast</a><a href="#variant.Faster">Faster</a><a href="#variant.Fastest">Fastest</a><a href="#variant.Realtime">Realtime</a></div><a class="sidebar-title" href="#trait-implementations">Trait Implementations</a><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Copy">Copy</a><a href="#impl-PartialEq%3CSpeedSetting%3E">PartialEq&lt;SpeedSetting&gt;</a><a href="#impl-PartialOrd%3CSpeedSetting%3E">PartialOrd&lt;SpeedSetting&gt;</a><a href="#impl-StructuralPartialEq">StructuralPartialEq</a></div><a class="sidebar-title" href="#synthetic-implementations">Auto Trait Implementations</a><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><a class="sidebar-title" href="#blanket-implementations">Blanket Implementations</a><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow&lt;T&gt;</a><a href="#impl-BorrowMut%3CT%3E">BorrowMut&lt;T&gt;</a><a href="#impl-Downcast">Downcast</a><a href="#impl-DowncastSync">DowncastSync</a><a href="#impl-From%3CT%3E">From&lt;T&gt;</a><a href="#impl-Into%3CU%3E">Into&lt;U&gt;</a><a href="#impl-ToOwned">ToOwned</a><a href="#impl-TryFrom%3CU%3E">TryFrom&lt;U&gt;</a><a href="#impl-TryInto%3CU%3E">TryInto&lt;U&gt;</a><a href="#impl-VZip%3CV%3E">VZip&lt;V&gt;</a></div></div><p class='location'><a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>speed</a></p><script>window.sidebarCurrent = {name: 'SpeedSetting', ty: 'enum', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#22-31' title='goto source code'>[src]</a></span><span class='in-band'>Enum <a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>speed</a>::<wbr><a class="enum" href=''>SpeedSetting</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><pre class='rust enum'>enum SpeedSetting {
Realtime,
Fast,
Faster,
Fastest,
}</pre></div><h2 id='variants' class='variants small-section-header'>
Variants<a href='#variants' class='anchor'></a></h2>
<div id="variant.Realtime" class="variant small-section-header"><a href="#variant.Realtime" class="anchor field"></a><code>Realtime</code></div><div id="variant.Fast" class="variant small-section-header"><a href="#variant.Fast" class="anchor field"></a><code>Fast</code></div><div id="variant.Faster" class="variant small-section-header"><a href="#variant.Faster" class="anchor field"></a><code>Faster</code></div><div id="variant.Fastest" class="variant small-section-header"><a href="#variant.Fastest" class="anchor field"></a><code>Fastest</code></div><h2 id='trait-implementations' class='small-section-header'>Trait Implementations<a href='#trait-implementations' class='anchor'></a></h2><div id='trait-implementations-list'><h3 id='impl-Clone' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a href='#impl-Clone' class='anchor'></a><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#24' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.clone' class="method hidden"><code>fn <a href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone' class='fnname'>clone</a>(&amp;self) -&gt; <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#24' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
<div id="variant.Realtime" class="variant small-section-header"><a href="#variant.Realtime" class="anchor field"></a><code>Realtime</code></div><div id="variant.Fast" class="variant small-section-header"><a href="#variant.Fast" class="anchor field"></a><code>Fast</code></div><div id="variant.Faster" class="variant small-section-header"><a href="#variant.Faster" class="anchor field"></a><code>Faster</code></div><div id="variant.Fastest" class="variant small-section-header"><a href="#variant.Fastest" class="anchor field"></a><code>Fastest</code></div><h2 id='trait-implementations' class='small-section-header'>Trait Implementations<a href='#trait-implementations' class='anchor'></a></h2><div id='trait-implementations-list'><h3 id='impl-Clone' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a href='#impl-Clone' class='anchor'></a><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#21' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.clone' class="method hidden"><code>fn <a href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone' class='fnname'>clone</a>(&amp;self) -&gt; <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#21' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
</div><h4 id='method.clone_from' class="method hidden"><code>fn <a href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from' class='fnname'>clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>Self)</code><span class='since' title='Stable since Rust version 1.0.0'>1.0.0</span><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/clone.rs.html#131-133' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
</div></div><h3 id='impl-Copy' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a href='#impl-Copy' class='anchor'></a><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#24' title='goto source code'>[src]</a></h3><div class='impl-items'></div><h3 id='impl-PartialEq%3CSpeedSetting%3E' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>&lt;<a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a>&gt; for <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a href='#impl-PartialEq%3CSpeedSetting%3E' class='anchor'></a><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#24' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.eq' class="method hidden"><code>fn <a href='https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq' class='fnname'>eq</a>(&amp;self, other: &amp;<a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#24' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
</div></div><h3 id='impl-Copy' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a href='#impl-Copy' class='anchor'></a><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#21' title='goto source code'>[src]</a></h3><div class='impl-items'></div><h3 id='impl-PartialEq%3CSpeedSetting%3E' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>&lt;<a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a>&gt; for <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a href='#impl-PartialEq%3CSpeedSetting%3E' class='anchor'></a><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#21' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.eq' class="method hidden"><code>fn <a href='https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq' class='fnname'>eq</a>(&amp;self, other: &amp;<a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#21' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used by <code>==</code>. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq">Read more</a></p>
</div><h4 id='method.ne' class="method hidden"><code><span class="docblock attributes">#[must_use]</span>fn <a href='https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne' class='fnname'>ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>Rhs) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code><span class='since' title='Stable since Rust version 1.0.0'>1.0.0</span><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#215-217' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>This method tests for <code>!=</code>.</p>
</div></div><h3 id='impl-PartialOrd%3CSpeedSetting%3E' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;<a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a>&gt; for <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a href='#impl-PartialOrd%3CSpeedSetting%3E' class='anchor'></a><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#24' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.partial_cmp' class="method hidden"><code>fn <a href='https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp' class='fnname'>partial_cmp</a>(&amp;self, other: &amp;<a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>&gt;</code><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#24' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
</div></div><h3 id='impl-PartialOrd%3CSpeedSetting%3E' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;<a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a>&gt; for <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a href='#impl-PartialOrd%3CSpeedSetting%3E' class='anchor'></a><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#21' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.partial_cmp' class="method hidden"><code>fn <a href='https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp' class='fnname'>partial_cmp</a>(&amp;self, other: &amp;<a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>&gt;</code><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#21' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></p>
</div><h4 id='method.lt' class="method hidden"><code><span class="docblock attributes">#[must_use]</span>fn <a href='https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt' class='fnname'>lt</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>Rhs) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code><span class='since' title='Stable since Rust version 1.0.0'>1.0.0</span><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#841-843' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code>&lt;</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></p>
</div><h4 id='method.le' class="method hidden"><code><span class="docblock attributes">#[must_use]</span>fn <a href='https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le' class='fnname'>le</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>Rhs) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code><span class='since' title='Stable since Rust version 1.0.0'>1.0.0</span><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#860-862' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>&lt;=</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></p>
</div><h4 id='method.gt' class="method hidden"><code><span class="docblock attributes">#[must_use]</span>fn <a href='https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt' class='fnname'>gt</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>Rhs) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code><span class='since' title='Stable since Rust version 1.0.0'>1.0.0</span><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#878-880' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>&gt;</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></p>
</div><h4 id='method.ge' class="method hidden"><code><span class="docblock attributes">#[must_use]</span>fn <a href='https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge' class='fnname'>ge</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>Rhs) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code><span class='since' title='Stable since Rust version 1.0.0'>1.0.0</span><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#897-899' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>&gt;=</code> operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></p>
</div></div><h3 id='impl-StructuralPartialEq' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a href='#impl-StructuralPartialEq' class='anchor'></a><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#24' title='goto source code'>[src]</a></h3><div class='impl-items'></div></div><h2 id='synthetic-implementations' class='small-section-header'>Auto Trait Implementations<a href='#synthetic-implementations' class='anchor'></a></h2><div id='synthetic-implementations-list'><h3 id='impl-RefUnwindSafe' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/std/panic/trait.RefUnwindSafe.html" title="trait std::panic::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a href='#impl-RefUnwindSafe' class='anchor'></a></h3><div class='impl-items'></div><h3 id='impl-Send' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a href='#impl-Send' class='anchor'></a></h3><div class='impl-items'></div><h3 id='impl-Sync' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a href='#impl-Sync' class='anchor'></a></h3><div class='impl-items'></div><h3 id='impl-Unpin' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a href='#impl-Unpin' class='anchor'></a></h3><div class='impl-items'></div><h3 id='impl-UnwindSafe' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/std/panic/trait.UnwindSafe.html" title="trait std::panic::UnwindSafe">UnwindSafe</a> for <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a href='#impl-UnwindSafe' class='anchor'></a></h3><div class='impl-items'></div></div><h2 id='blanket-implementations' class='small-section-header'>Blanket Implementations<a href='#blanket-implementations' class='anchor'></a></h2><div id='blanket-implementations-list'><h3 id='impl-Any' class='impl'><code class='in-band'>impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href='#impl-Any' class='anchor'></a><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/any.rs.html#108-112' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.type_id' class="method hidden"><code>fn <a href='https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id' class='fnname'>type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></code><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/any.rs.html#109-111' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
</div></div><h3 id='impl-StructuralPartialEq' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a href='#impl-StructuralPartialEq' class='anchor'></a><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#21' title='goto source code'>[src]</a></h3><div class='impl-items'></div></div><h2 id='synthetic-implementations' class='small-section-header'>Auto Trait Implementations<a href='#synthetic-implementations' class='anchor'></a></h2><div id='synthetic-implementations-list'><h3 id='impl-RefUnwindSafe' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/std/panic/trait.RefUnwindSafe.html" title="trait std::panic::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a href='#impl-RefUnwindSafe' class='anchor'></a></h3><div class='impl-items'></div><h3 id='impl-Send' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a href='#impl-Send' class='anchor'></a></h3><div class='impl-items'></div><h3 id='impl-Sync' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a href='#impl-Sync' class='anchor'></a></h3><div class='impl-items'></div><h3 id='impl-Unpin' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a href='#impl-Unpin' class='anchor'></a></h3><div class='impl-items'></div><h3 id='impl-UnwindSafe' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/std/panic/trait.UnwindSafe.html" title="trait std::panic::UnwindSafe">UnwindSafe</a> for <a class="enum" href="../../../game/sandbox/speed/enum.SpeedSetting.html" title="enum game::sandbox::speed::SpeedSetting">SpeedSetting</a></code><a href='#impl-UnwindSafe' class='anchor'></a></h3><div class='impl-items'></div></div><h2 id='blanket-implementations' class='small-section-header'>Blanket Implementations<a href='#blanket-implementations' class='anchor'></a></h2><div id='blanket-implementations-list'><h3 id='impl-Any' class='impl'><code class='in-band'>impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href='#impl-Any' class='anchor'></a><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/any.rs.html#108-112' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.type_id' class="method hidden"><code>fn <a href='https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id' class='fnname'>type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></code><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/any.rs.html#109-111' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
</div></div><h3 id='impl-Borrow%3CT%3E' class='impl'><code class='in-band'>impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href='#impl-Borrow%3CT%3E' class='anchor'></a><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213-217' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.borrow' class="method hidden"><code>fn <a href='https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow' class='fnname'>borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>T</code><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214-216' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
</div></div><h3 id='impl-BorrowMut%3CT%3E' class='impl'><code class='in-band'>impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href='#impl-BorrowMut%3CT%3E' class='anchor'></a><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220-224' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.borrow_mut' class="method hidden"><code>fn <a href='https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut' class='fnname'>borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut </a>T</code><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221-223' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
</div></div><h3 id='impl-Downcast' class='impl'><code class='in-band'>impl&lt;T&gt; Downcast for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a>,&nbsp;</span></code><a href='#impl-Downcast' class='anchor'></a></h3><div class='impl-items'><h4 id='method.into_any' class="method hidden"><code>fn <a href='#method.into_any' class='fnname'>into_any</a>(self: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;T&gt;) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> + 'static&gt;</code></h4><div class='docblock hidden'><p>Convert <code>Box&lt;dyn Trait&gt;</code> (where <code>Trait: Downcast</code>) to <code>Box&lt;dyn Any&gt;</code>. <code>Box&lt;dyn Any&gt;</code> can then be further <code>downcast</code> into <code>Box&lt;ConcreteType&gt;</code> where <code>ConcreteType</code> implements <code>Trait</code>. <a href="#tymethod.into_any">Read more</a></p>

View File

@ -1 +0,0 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `area_under_curve` fn in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, area_under_curve"><title>game::sandbox::speed::area_under_curve - Rust</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc fn"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../game/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class='location'><a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>speed</a></p><script>window.sidebarCurrent = {name: 'area_under_curve', ty: 'fn', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#753-774' title='goto source code'>[src]</a></span><span class='in-band'>Function <a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>speed</a>::<wbr><a class="fn" href=''>area_under_curve</a></span></h1><pre class='rust fn'>fn area_under_curve(raw: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="struct" href="../../../geom/time/struct.Time.html" title="struct geom::time::Time">Time</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>&gt;, width: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f64.html">f64</a>, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f64.html">f64</a>) -&gt; <a class="struct" href="../../../geom/polygon/struct.Polygon.html" title="struct geom::polygon::Polygon">Polygon</a></pre></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../../";window.currentCrate = "game";</script><script src="../../../main.js"></script><script defer src="../../../search-index.js"></script></body></html>

View File

@ -1 +0,0 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `build_jump_to_delay_button` fn in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, build_jump_to_delay_button"><title>game::sandbox::speed::build_jump_to_delay_button - Rust</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc fn"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../game/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class='location'><a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>speed</a></p><script>window.sidebarCurrent = {name: 'build_jump_to_delay_button', ty: 'fn', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#795-801' title='goto source code'>[src]</a></span><span class='in-band'>Function <a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>speed</a>::<wbr><a class="fn" href=''>build_jump_to_delay_button</a></span></h1><pre class='rust fn'>fn build_jump_to_delay_button(halt_limit: <a class="struct" href="../../../geom/duration/struct.Duration.html" title="struct geom::duration::Duration">Duration</a>, ctx: &amp;EventCtx) -&gt; Widget</pre></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../../";window.currentCrate = "game";</script><script src="../../../main.js"></script><script defer src="../../../search-index.js"></script></body></html>

View File

@ -1 +0,0 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `build_jump_to_delay_picker` fn in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, build_jump_to_delay_picker"><title>game::sandbox::speed::build_jump_to_delay_picker - Rust</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc fn"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../game/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class='location'><a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>speed</a></p><script>window.sidebarCurrent = {name: 'build_jump_to_delay_picker', ty: 'fn', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#803-822' title='goto source code'>[src]</a></span><span class='in-band'>Function <a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>speed</a>::<wbr><a class="fn" href=''>build_jump_to_delay_picker</a></span></h1><pre class='rust fn'>fn build_jump_to_delay_picker(halt_limit: <a class="struct" href="../../../geom/duration/struct.Duration.html" title="struct geom::duration::Duration">Duration</a>, ctx: &amp;EventCtx) -&gt; Widget</pre></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../../";window.currentCrate = "game";</script><script src="../../../main.js"></script><script defer src="../../../search-index.js"></script></body></html>

View File

@ -1 +0,0 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `build_jump_to_time_btn` fn in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, build_jump_to_time_btn"><title>game::sandbox::speed::build_jump_to_time_btn - Rust</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc fn"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../game/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class='location'><a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>speed</a></p><script>window.sidebarCurrent = {name: 'build_jump_to_time_btn', ty: 'fn', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#787-793' title='goto source code'>[src]</a></span><span class='in-band'>Function <a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>speed</a>::<wbr><a class="fn" href=''>build_jump_to_time_btn</a></span></h1><pre class='rust fn'>fn build_jump_to_time_btn(target: <a class="struct" href="../../../geom/time/struct.Time.html" title="struct geom::time::Time">Time</a>, ctx: &amp;EventCtx) -&gt; Widget</pre></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../../";window.currentCrate = "game";</script><script src="../../../main.js"></script><script defer src="../../../search-index.js"></script></body></html>

View File

@ -1 +0,0 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `compare_count` fn in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, compare_count"><title>game::sandbox::speed::compare_count - Rust</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc fn"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../game/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class='location'><a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>speed</a></p><script>window.sidebarCurrent = {name: 'compare_count', ty: 'fn', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#777-785' title='goto source code'>[src]</a></span><span class='in-band'>Function <a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>speed</a>::<wbr><a class="fn" href=''>compare_count</a></span></h1><pre class='rust fn'>fn compare_count(after: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, before: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></pre></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../../";window.currentCrate = "game";</script><script src="../../../main.js"></script><script defer src="../../../search-index.js"></script></body></html>

View File

@ -1,4 +1,3 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `speed` mod in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, speed"><title>game::sandbox::speed - Rust</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../game/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a><p class='location'>Module speed</p><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#functions">Functions</a></li></ul></div><p class='location'><a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a></p><script>window.sidebarCurrent = {name: 'speed', ty: 'mod', relpath: '../'};</script><script defer src="../sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#1-822' title='goto source code'>[src]</a></span><span class='in-band'>Module <a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a class="mod" href=''>speed</a></span></h1><h2 id='structs' class='section-header'><a href="#structs">Structs</a></h2>
<table><tr class='module-item'><td><a class="struct" href="struct.JumpToTime.html" title='game::sandbox::speed::JumpToTime struct'>JumpToTime</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="struct" href="struct.SpeedControls.html" title='game::sandbox::speed::SpeedControls struct'>SpeedControls</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="struct" href="struct.TimePanel.html" title='game::sandbox::speed::TimePanel struct'>TimePanel</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="struct" href="struct.TimeWarpScreen.html" title='game::sandbox::speed::TimeWarpScreen struct'>TimeWarpScreen</a></td><td class='docblock-short'></td></tr></table><h2 id='enums' class='section-header'><a href="#enums">Enums</a></h2>
<table><tr class='module-item'><td><a class="enum" href="enum.SpeedSetting.html" title='game::sandbox::speed::SpeedSetting enum'>SpeedSetting</a></td><td class='docblock-short'></td></tr></table><h2 id='functions' class='section-header'><a href="#functions">Functions</a></h2>
<table><tr class='module-item'><td><a class="fn" href="fn.area_under_curve.html" title='game::sandbox::speed::area_under_curve fn'>area_under_curve</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="fn" href="fn.build_jump_to_delay_button.html" title='game::sandbox::speed::build_jump_to_delay_button fn'>build_jump_to_delay_button</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="fn" href="fn.build_jump_to_delay_picker.html" title='game::sandbox::speed::build_jump_to_delay_picker fn'>build_jump_to_delay_picker</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="fn" href="fn.build_jump_to_time_btn.html" title='game::sandbox::speed::build_jump_to_time_btn fn'>build_jump_to_time_btn</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="fn" href="fn.compare_count.html" title='game::sandbox::speed::compare_count fn'>compare_count</a></td><td class='docblock-short'></td></tr></table></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../../";window.currentCrate = "game";</script><script src="../../../main.js"></script><script defer src="../../../search-index.js"></script></body></html>
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `speed` mod in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, speed"><title>game::sandbox::speed - Rust</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../game/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a><p class='location'>Module speed</p><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li></ul></div><p class='location'><a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a></p><script>window.sidebarCurrent = {name: 'speed', ty: 'mod', relpath: '../'};</script><script defer src="../sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../../src/game/sandbox/speed.rs.html#1-417' title='goto source code'>[src]</a></span><span class='in-band'>Module <a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a class="mod" href=''>speed</a></span></h1><h2 id='structs' class='section-header'><a href="#structs">Structs</a></h2>
<table><tr class='module-item'><td><a class="struct" href="struct.SpeedControls.html" title='game::sandbox::speed::SpeedControls struct'>SpeedControls</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="struct" href="struct.TimePanel.html" title='game::sandbox::speed::TimePanel struct'>TimePanel</a></td><td class='docblock-short'></td></tr></table><h2 id='enums' class='section-header'><a href="#enums">Enums</a></h2>
<table><tr class='module-item'><td><a class="enum" href="enum.SpeedSetting.html" title='game::sandbox::speed::SpeedSetting enum'>SpeedSetting</a></td><td class='docblock-short'></td></tr></table></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../../";window.currentCrate = "game";</script><script src="../../../main.js"></script><script defer src="../../../search-index.js"></script></body></html>

View File

@ -1 +1 @@
initSidebarItems({"enum":[["SpeedSetting",""]],"fn":[["area_under_curve",""],["build_jump_to_delay_button",""],["build_jump_to_delay_picker",""],["build_jump_to_time_btn",""],["compare_count",""]],"struct":[["JumpToTime",""],["SpeedControls",""],["TimePanel",""],["TimeWarpScreen",""]]});
initSidebarItems({"enum":[["SpeedSetting",""]],"struct":[["SpeedControls",""],["TimePanel",""]]});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `SandboxControls` struct in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, SandboxControls"><title>game::sandbox::SandboxControls - Rust</title><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css"><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script src="../../storage.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="shortcut icon" href="../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc struct"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../game/index.html'><div class='logo-container'><img src='../../rust-logo.png' alt='logo'></div></a><p class='location'>Struct SandboxControls</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#fields">Fields</a><div class="sidebar-links"><a href="#structfield.agent_meter">agent_meter</a><a href="#structfield.common">common</a><a href="#structfield.minimap">minimap</a><a href="#structfield.route_preview">route_preview</a><a href="#structfield.speed">speed</a><a href="#structfield.time_panel">time_panel</a><a href="#structfield.tool_panel">tool_panel</a></div><a class="sidebar-title" href="#synthetic-implementations">Auto Trait Implementations</a><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">!Send</a><a href="#impl-Sync">!Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><a class="sidebar-title" href="#blanket-implementations">Blanket Implementations</a><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow&lt;T&gt;</a><a href="#impl-BorrowMut%3CT%3E">BorrowMut&lt;T&gt;</a><a href="#impl-Downcast">Downcast</a><a href="#impl-From%3CT%3E">From&lt;T&gt;</a><a href="#impl-Into%3CU%3E">Into&lt;U&gt;</a><a href="#impl-TryFrom%3CU%3E">TryFrom&lt;U&gt;</a><a href="#impl-TryInto%3CU%3E">TryInto&lt;U&gt;</a><a href="#impl-VZip%3CV%3E">VZip&lt;V&gt;</a></div></div><p class='location'><a href='../index.html'>game</a>::<wbr><a href='index.html'>sandbox</a></p><script>window.sidebarCurrent = {name: 'SandboxControls', ty: 'struct', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../settings.html"><img src="../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../src/game/sandbox/mod.rs.html#40-48' title='goto source code'>[src]</a></span><span class='in-band'>Struct <a href='../index.html'>game</a>::<wbr><a href='index.html'>sandbox</a>::<wbr><a class="struct" href=''>SandboxControls</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><pre class='rust struct'>pub struct SandboxControls {
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `SandboxControls` struct in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, SandboxControls"><title>game::sandbox::SandboxControls - Rust</title><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css"><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script src="../../storage.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="shortcut icon" href="../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc struct"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../game/index.html'><div class='logo-container'><img src='../../rust-logo.png' alt='logo'></div></a><p class='location'>Struct SandboxControls</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#fields">Fields</a><div class="sidebar-links"><a href="#structfield.agent_meter">agent_meter</a><a href="#structfield.common">common</a><a href="#structfield.minimap">minimap</a><a href="#structfield.route_preview">route_preview</a><a href="#structfield.speed">speed</a><a href="#structfield.time_panel">time_panel</a><a href="#structfield.tool_panel">tool_panel</a></div><a class="sidebar-title" href="#synthetic-implementations">Auto Trait Implementations</a><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">!Send</a><a href="#impl-Sync">!Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><a class="sidebar-title" href="#blanket-implementations">Blanket Implementations</a><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow&lt;T&gt;</a><a href="#impl-BorrowMut%3CT%3E">BorrowMut&lt;T&gt;</a><a href="#impl-Downcast">Downcast</a><a href="#impl-From%3CT%3E">From&lt;T&gt;</a><a href="#impl-Into%3CU%3E">Into&lt;U&gt;</a><a href="#impl-TryFrom%3CU%3E">TryFrom&lt;U&gt;</a><a href="#impl-TryInto%3CU%3E">TryInto&lt;U&gt;</a><a href="#impl-VZip%3CV%3E">VZip&lt;V&gt;</a></div></div><p class='location'><a href='../index.html'>game</a>::<wbr><a href='index.html'>sandbox</a></p><script>window.sidebarCurrent = {name: 'SandboxControls', ty: 'struct', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../settings.html"><img src="../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../src/game/sandbox/mod.rs.html#41-49' title='goto source code'>[src]</a></span><span class='in-band'>Struct <a href='../index.html'>game</a>::<wbr><a href='index.html'>sandbox</a>::<wbr><a class="struct" href=''>SandboxControls</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><pre class='rust struct'>pub struct SandboxControls {
pub common: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../../game/common/struct.CommonState.html" title="struct game::common::CommonState">CommonState</a>&gt;,
route_preview: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../../game/sandbox/misc_tools/struct.RoutePreview.html" title="struct game::sandbox::misc_tools::RoutePreview">RoutePreview</a>&gt;,
tool_panel: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Panel&gt;,

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `area_under_curve` fn in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, area_under_curve"><title>game::sandbox::time_warp::area_under_curve - Rust</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc fn"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../game/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class='location'><a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>time_warp</a></p><script>window.sidebarCurrent = {name: 'area_under_curve', ty: 'fn', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../../src/game/sandbox/time_warp.rs.html#346-367' title='goto source code'>[src]</a></span><span class='in-band'>Function <a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>time_warp</a>::<wbr><a class="fn" href=''>area_under_curve</a></span></h1><pre class='rust fn'>fn area_under_curve(raw: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="struct" href="../../../geom/time/struct.Time.html" title="struct geom::time::Time">Time</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a>&gt;, width: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f64.html">f64</a>, height: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f64.html">f64</a>) -&gt; <a class="struct" href="../../../geom/polygon/struct.Polygon.html" title="struct geom::polygon::Polygon">Polygon</a></pre></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../../";window.currentCrate = "game";</script><script src="../../../main.js"></script><script defer src="../../../search-index.js"></script></body></html>

View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `build_jump_to_delay_button` fn in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, build_jump_to_delay_button"><title>game::sandbox::time_warp::build_jump_to_delay_button - Rust</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc fn"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../game/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class='location'><a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>time_warp</a></p><script>window.sidebarCurrent = {name: 'build_jump_to_delay_button', ty: 'fn', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../../src/game/sandbox/time_warp.rs.html#388-394' title='goto source code'>[src]</a></span><span class='in-band'>Function <a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>time_warp</a>::<wbr><a class="fn" href=''>build_jump_to_delay_button</a></span></h1><pre class='rust fn'>fn build_jump_to_delay_button(halt_limit: <a class="struct" href="../../../geom/duration/struct.Duration.html" title="struct geom::duration::Duration">Duration</a>, ctx: &amp;EventCtx) -&gt; Widget</pre></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../../";window.currentCrate = "game";</script><script src="../../../main.js"></script><script defer src="../../../search-index.js"></script></body></html>

View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `build_jump_to_delay_picker` fn in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, build_jump_to_delay_picker"><title>game::sandbox::time_warp::build_jump_to_delay_picker - Rust</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc fn"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../game/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class='location'><a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>time_warp</a></p><script>window.sidebarCurrent = {name: 'build_jump_to_delay_picker', ty: 'fn', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../../src/game/sandbox/time_warp.rs.html#396-415' title='goto source code'>[src]</a></span><span class='in-band'>Function <a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>time_warp</a>::<wbr><a class="fn" href=''>build_jump_to_delay_picker</a></span></h1><pre class='rust fn'>fn build_jump_to_delay_picker(halt_limit: <a class="struct" href="../../../geom/duration/struct.Duration.html" title="struct geom::duration::Duration">Duration</a>, ctx: &amp;EventCtx) -&gt; Widget</pre></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../../";window.currentCrate = "game";</script><script src="../../../main.js"></script><script defer src="../../../search-index.js"></script></body></html>

View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `build_jump_to_time_btn` fn in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, build_jump_to_time_btn"><title>game::sandbox::time_warp::build_jump_to_time_btn - Rust</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc fn"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../game/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class='location'><a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>time_warp</a></p><script>window.sidebarCurrent = {name: 'build_jump_to_time_btn', ty: 'fn', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../../src/game/sandbox/time_warp.rs.html#380-386' title='goto source code'>[src]</a></span><span class='in-band'>Function <a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>time_warp</a>::<wbr><a class="fn" href=''>build_jump_to_time_btn</a></span></h1><pre class='rust fn'>fn build_jump_to_time_btn(target: <a class="struct" href="../../../geom/time/struct.Time.html" title="struct geom::time::Time">Time</a>, ctx: &amp;EventCtx) -&gt; Widget</pre></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../../";window.currentCrate = "game";</script><script src="../../../main.js"></script><script defer src="../../../search-index.js"></script></body></html>

View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `compare_count` fn in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, compare_count"><title>game::sandbox::time_warp::compare_count - Rust</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc fn"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../game/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class='location'><a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>time_warp</a></p><script>window.sidebarCurrent = {name: 'compare_count', ty: 'fn', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../../src/game/sandbox/time_warp.rs.html#370-378' title='goto source code'>[src]</a></span><span class='in-band'>Function <a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a href='index.html'>time_warp</a>::<wbr><a class="fn" href=''>compare_count</a></span></h1><pre class='rust fn'>fn compare_count(after: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, before: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></pre></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../../";window.currentCrate = "game";</script><script src="../../../main.js"></script><script defer src="../../../search-index.js"></script></body></html>

View File

@ -0,0 +1,3 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `time_warp` mod in crate `game`."><meta name="keywords" content="rust, rustlang, rust-lang, time_warp"><title>game::sandbox::time_warp - Rust</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../game/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a><p class='location'>Module time_warp</p><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#functions">Functions</a></li></ul></div><p class='location'><a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a></p><script>window.sidebarCurrent = {name: 'time_warp', ty: 'mod', relpath: '../'};</script><script defer src="../sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../../src/game/sandbox/time_warp.rs.html#1-415' title='goto source code'>[src]</a></span><span class='in-band'>Module <a href='../../index.html'>game</a>::<wbr><a href='../index.html'>sandbox</a>::<wbr><a class="mod" href=''>time_warp</a></span></h1><h2 id='structs' class='section-header'><a href="#structs">Structs</a></h2>
<table><tr class='module-item'><td><a class="struct" href="struct.JumpToTime.html" title='game::sandbox::time_warp::JumpToTime struct'>JumpToTime</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="struct" href="struct.TimeWarpScreen.html" title='game::sandbox::time_warp::TimeWarpScreen struct'>TimeWarpScreen</a></td><td class='docblock-short'></td></tr></table><h2 id='functions' class='section-header'><a href="#functions">Functions</a></h2>
<table><tr class='module-item'><td><a class="fn" href="fn.area_under_curve.html" title='game::sandbox::time_warp::area_under_curve fn'>area_under_curve</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="fn" href="fn.build_jump_to_delay_button.html" title='game::sandbox::time_warp::build_jump_to_delay_button fn'>build_jump_to_delay_button</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="fn" href="fn.build_jump_to_delay_picker.html" title='game::sandbox::time_warp::build_jump_to_delay_picker fn'>build_jump_to_delay_picker</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="fn" href="fn.build_jump_to_time_btn.html" title='game::sandbox::time_warp::build_jump_to_time_btn fn'>build_jump_to_time_btn</a></td><td class='docblock-short'></td></tr><tr class='module-item'><td><a class="fn" href="fn.compare_count.html" title='game::sandbox::time_warp::compare_count fn'>compare_count</a></td><td class='docblock-short'></td></tr></table></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../../";window.currentCrate = "game";</script><script src="../../../main.js"></script><script defer src="../../../search-index.js"></script></body></html>

View File

@ -0,0 +1 @@
initSidebarItems({"fn":[["area_under_curve",""],["build_jump_to_delay_button",""],["build_jump_to_delay_picker",""],["build_jump_to_time_btn",""],["compare_count",""]],"struct":[["JumpToTime",""],["TimeWarpScreen",""]]});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -3,7 +3,7 @@ sourcesIndex["abstutil"] = {"name":"","files":["cli.rs","collections.rs","io.rs"
sourcesIndex["convert_osm"] = {"name":"","files":["clip.rs","extract.rs","lib.rs","parking.rs","reader.rs","split_ways.rs","srtm.rs","transit.rs"]};
sourcesIndex["dump_map"] = {"name":"","files":["dump_map.rs"]};
sourcesIndex["dump_scenario"] = {"name":"","files":["dump_scenario.rs"]};
sourcesIndex["game"] = {"name":"","dirs":[{"name":"common","files":["city_picker.rs","colors.rs","heatmap.rs","isochrone.rs","minimap.rs","mod.rs","navigate.rs","warp.rs"]},{"name":"debug","files":["floodfill.rs","mod.rs","objects.rs","polygons.rs","shared_row.rs"]},{"name":"devtools","files":["destinations.rs","kml.rs","mapping.rs","mod.rs","polygon.rs","scenario.rs","story.rs"]},{"name":"edit","dirs":[{"name":"traffic_signals","files":["edits.rs","mod.rs","picker.rs","preview.rs"]}],"files":["bulk.rs","cluster_traffic_signals.rs","lanes.rs","mod.rs","routes.rs","select.rs","stop_signs.rs","validate.rs","zones.rs"]},{"name":"info","files":["building.rs","bus.rs","debug.rs","intersection.rs","lane.rs","mod.rs","parking_lot.rs","person.rs","trip.rs"]},{"name":"layer","files":["elevation.rs","map.rs","mod.rs","pandemic.rs","parking.rs","population.rs","traffic.rs","transit.rs"]},{"name":"render","files":["area.rs","bike.rs","building.rs","bus_stop.rs","car.rs","intersection.rs","lane.rs","map.rs","mod.rs","parking_lot.rs","pedestrian.rs","road.rs","traffic_signal.rs","turn.rs"]},{"name":"sandbox","dirs":[{"name":"dashboards","files":["commuter.rs","misc.rs","mod.rs","parking_overhead.rs","summaries.rs","traffic_signals.rs","trip_table.rs"]},{"name":"gameplay","files":["commute.rs","fix_traffic_signals.rs","freeform.rs","mod.rs","play_scenario.rs","tutorial.rs"]}],"files":["misc_tools.rs","mod.rs","speed.rs","uber_turns.rs"]}],"files":["app.rs","challenges.rs","colors.rs","cutscene.rs","game.rs","helpers.rs","main.rs","options.rs","pregame.rs"]};
sourcesIndex["game"] = {"name":"","dirs":[{"name":"common","files":["city_picker.rs","colors.rs","heatmap.rs","isochrone.rs","minimap.rs","mod.rs","navigate.rs","warp.rs"]},{"name":"debug","files":["floodfill.rs","mod.rs","objects.rs","polygons.rs","shared_row.rs"]},{"name":"devtools","files":["destinations.rs","kml.rs","mapping.rs","mod.rs","polygon.rs","scenario.rs","story.rs"]},{"name":"edit","dirs":[{"name":"traffic_signals","files":["edits.rs","mod.rs","picker.rs","preview.rs"]}],"files":["bulk.rs","cluster_traffic_signals.rs","lanes.rs","mod.rs","routes.rs","select.rs","stop_signs.rs","validate.rs","zones.rs"]},{"name":"info","files":["building.rs","bus.rs","debug.rs","intersection.rs","lane.rs","mod.rs","parking_lot.rs","person.rs","trip.rs"]},{"name":"layer","files":["elevation.rs","map.rs","mod.rs","pandemic.rs","parking.rs","population.rs","traffic.rs","transit.rs"]},{"name":"render","files":["area.rs","bike.rs","building.rs","bus_stop.rs","car.rs","intersection.rs","lane.rs","map.rs","mod.rs","parking_lot.rs","pedestrian.rs","road.rs","traffic_signal.rs","turn.rs"]},{"name":"sandbox","dirs":[{"name":"dashboards","files":["commuter.rs","misc.rs","mod.rs","parking_overhead.rs","summaries.rs","traffic_signals.rs","trip_table.rs"]},{"name":"gameplay","files":["commute.rs","fix_traffic_signals.rs","freeform.rs","mod.rs","play_scenario.rs","tutorial.rs"]}],"files":["misc_tools.rs","mod.rs","speed.rs","time_warp.rs","uber_turns.rs"]}],"files":["app.rs","challenges.rs","colors.rs","cutscene.rs","game.rs","helpers.rs","main.rs","options.rs","pregame.rs"]};
sourcesIndex["geojson_to_osmosis"] = {"name":"","files":["geojson_to_osmosis.rs"]};
sourcesIndex["geom"] = {"name":"","files":["angle.rs","bounds.rs","circle.rs","distance.rs","duration.rs","find_closest.rs","gps.rs","lib.rs","line.rs","percent.rs","polygon.rs","polyline.rs","pt.rs","ring.rs","speed.rs","stats.rs","time.rs"]};
sourcesIndex["headless"] = {"name":"","files":["main.rs"]};

View File

@ -111,7 +111,7 @@
<span class="doccomment">/// The output of `rustdoc -V`</span>
<span class="kw">pub</span> <span class="kw">const</span> <span class="ident">RUSTDOC_VERSION</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;rustdoc 1.46.0 (04488afe3 2020-08-24)&quot;</span>;
<span class="doccomment">/// The built-time in RFC2822, UTC</span>
<span class="kw">pub</span> <span class="kw">const</span> <span class="ident">BUILT_TIME_UTC</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;Mon, 14 Sep 2020 16:37:50 +0000&quot;</span>;
<span class="kw">pub</span> <span class="kw">const</span> <span class="ident">BUILT_TIME_UTC</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;Mon, 14 Sep 2020 16:59:09 +0000&quot;</span>;
<span class="doccomment">/// The target architecture, given by `cfg!(target_arch)`.</span>
<span class="kw">pub</span> <span class="kw">const</span> <span class="ident">CFG_TARGET_ARCH</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;x86_64&quot;</span>;
<span class="doccomment">/// The endianness, given by `cfg!(target_endian)`.</span>

View File

@ -515,11 +515,13 @@
<span id="515">515</span>
<span id="516">516</span>
<span id="517">517</span>
<span id="518">518</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">mod</span> <span class="ident">dashboards</span>;
<span class="kw">pub</span> <span class="kw">mod</span> <span class="ident">gameplay</span>;
<span class="kw">mod</span> <span class="ident">misc_tools</span>;
<span class="kw">mod</span> <span class="ident">speed</span>;
<span class="kw">mod</span> <span class="ident">time_warp</span>;
<span class="kw">mod</span> <span class="ident">uber_turns</span>;
<span class="kw">use</span> <span class="self">self</span>::<span class="ident">misc_tools</span>::{<span class="ident">RoutePreview</span>, <span class="ident">TurnExplorer</span>};
@ -541,8 +543,8 @@
<span class="kw">use</span> <span class="ident">map_model</span>::<span class="ident">MapEdits</span>;
<span class="kw">use</span> <span class="ident">maplit</span>::<span class="ident">btreeset</span>;
<span class="kw">use</span> <span class="ident">sim</span>::<span class="ident">AgentType</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">speed</span>::<span class="ident">TimeWarpScreen</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">speed</span>::{<span class="ident">SpeedControls</span>, <span class="ident">TimePanel</span>};
<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">time_warp</span>::<span class="ident">TimeWarpScreen</span>;
<span class="kw">use</span> <span class="ident">widgetry</span>::{
<span class="ident">hotkey</span>, <span class="ident">lctrl</span>, <span class="ident">Btn</span>, <span class="ident">Choice</span>, <span class="ident">EventCtx</span>, <span class="ident">GfxCtx</span>, <span class="ident">HorizontalAlignment</span>, <span class="ident">Key</span>, <span class="ident">Line</span>, <span class="ident">Outcome</span>, <span class="ident">Panel</span>,
<span class="ident">Text</span>, <span class="ident">TextExt</span>, <span class="ident">UpdateType</span>, <span class="ident">VerticalAlignment</span>, <span class="ident">Widget</span>,

View File

@ -415,426 +415,18 @@
<span id="415">415</span>
<span id="416">416</span>
<span id="417">417</span>
<span id="418">418</span>
<span id="419">419</span>
<span id="420">420</span>
<span id="421">421</span>
<span id="422">422</span>
<span id="423">423</span>
<span id="424">424</span>
<span id="425">425</span>
<span id="426">426</span>
<span id="427">427</span>
<span id="428">428</span>
<span id="429">429</span>
<span id="430">430</span>
<span id="431">431</span>
<span id="432">432</span>
<span id="433">433</span>
<span id="434">434</span>
<span id="435">435</span>
<span id="436">436</span>
<span id="437">437</span>
<span id="438">438</span>
<span id="439">439</span>
<span id="440">440</span>
<span id="441">441</span>
<span id="442">442</span>
<span id="443">443</span>
<span id="444">444</span>
<span id="445">445</span>
<span id="446">446</span>
<span id="447">447</span>
<span id="448">448</span>
<span id="449">449</span>
<span id="450">450</span>
<span id="451">451</span>
<span id="452">452</span>
<span id="453">453</span>
<span id="454">454</span>
<span id="455">455</span>
<span id="456">456</span>
<span id="457">457</span>
<span id="458">458</span>
<span id="459">459</span>
<span id="460">460</span>
<span id="461">461</span>
<span id="462">462</span>
<span id="463">463</span>
<span id="464">464</span>
<span id="465">465</span>
<span id="466">466</span>
<span id="467">467</span>
<span id="468">468</span>
<span id="469">469</span>
<span id="470">470</span>
<span id="471">471</span>
<span id="472">472</span>
<span id="473">473</span>
<span id="474">474</span>
<span id="475">475</span>
<span id="476">476</span>
<span id="477">477</span>
<span id="478">478</span>
<span id="479">479</span>
<span id="480">480</span>
<span id="481">481</span>
<span id="482">482</span>
<span id="483">483</span>
<span id="484">484</span>
<span id="485">485</span>
<span id="486">486</span>
<span id="487">487</span>
<span id="488">488</span>
<span id="489">489</span>
<span id="490">490</span>
<span id="491">491</span>
<span id="492">492</span>
<span id="493">493</span>
<span id="494">494</span>
<span id="495">495</span>
<span id="496">496</span>
<span id="497">497</span>
<span id="498">498</span>
<span id="499">499</span>
<span id="500">500</span>
<span id="501">501</span>
<span id="502">502</span>
<span id="503">503</span>
<span id="504">504</span>
<span id="505">505</span>
<span id="506">506</span>
<span id="507">507</span>
<span id="508">508</span>
<span id="509">509</span>
<span id="510">510</span>
<span id="511">511</span>
<span id="512">512</span>
<span id="513">513</span>
<span id="514">514</span>
<span id="515">515</span>
<span id="516">516</span>
<span id="517">517</span>
<span id="518">518</span>
<span id="519">519</span>
<span id="520">520</span>
<span id="521">521</span>
<span id="522">522</span>
<span id="523">523</span>
<span id="524">524</span>
<span id="525">525</span>
<span id="526">526</span>
<span id="527">527</span>
<span id="528">528</span>
<span id="529">529</span>
<span id="530">530</span>
<span id="531">531</span>
<span id="532">532</span>
<span id="533">533</span>
<span id="534">534</span>
<span id="535">535</span>
<span id="536">536</span>
<span id="537">537</span>
<span id="538">538</span>
<span id="539">539</span>
<span id="540">540</span>
<span id="541">541</span>
<span id="542">542</span>
<span id="543">543</span>
<span id="544">544</span>
<span id="545">545</span>
<span id="546">546</span>
<span id="547">547</span>
<span id="548">548</span>
<span id="549">549</span>
<span id="550">550</span>
<span id="551">551</span>
<span id="552">552</span>
<span id="553">553</span>
<span id="554">554</span>
<span id="555">555</span>
<span id="556">556</span>
<span id="557">557</span>
<span id="558">558</span>
<span id="559">559</span>
<span id="560">560</span>
<span id="561">561</span>
<span id="562">562</span>
<span id="563">563</span>
<span id="564">564</span>
<span id="565">565</span>
<span id="566">566</span>
<span id="567">567</span>
<span id="568">568</span>
<span id="569">569</span>
<span id="570">570</span>
<span id="571">571</span>
<span id="572">572</span>
<span id="573">573</span>
<span id="574">574</span>
<span id="575">575</span>
<span id="576">576</span>
<span id="577">577</span>
<span id="578">578</span>
<span id="579">579</span>
<span id="580">580</span>
<span id="581">581</span>
<span id="582">582</span>
<span id="583">583</span>
<span id="584">584</span>
<span id="585">585</span>
<span id="586">586</span>
<span id="587">587</span>
<span id="588">588</span>
<span id="589">589</span>
<span id="590">590</span>
<span id="591">591</span>
<span id="592">592</span>
<span id="593">593</span>
<span id="594">594</span>
<span id="595">595</span>
<span id="596">596</span>
<span id="597">597</span>
<span id="598">598</span>
<span id="599">599</span>
<span id="600">600</span>
<span id="601">601</span>
<span id="602">602</span>
<span id="603">603</span>
<span id="604">604</span>
<span id="605">605</span>
<span id="606">606</span>
<span id="607">607</span>
<span id="608">608</span>
<span id="609">609</span>
<span id="610">610</span>
<span id="611">611</span>
<span id="612">612</span>
<span id="613">613</span>
<span id="614">614</span>
<span id="615">615</span>
<span id="616">616</span>
<span id="617">617</span>
<span id="618">618</span>
<span id="619">619</span>
<span id="620">620</span>
<span id="621">621</span>
<span id="622">622</span>
<span id="623">623</span>
<span id="624">624</span>
<span id="625">625</span>
<span id="626">626</span>
<span id="627">627</span>
<span id="628">628</span>
<span id="629">629</span>
<span id="630">630</span>
<span id="631">631</span>
<span id="632">632</span>
<span id="633">633</span>
<span id="634">634</span>
<span id="635">635</span>
<span id="636">636</span>
<span id="637">637</span>
<span id="638">638</span>
<span id="639">639</span>
<span id="640">640</span>
<span id="641">641</span>
<span id="642">642</span>
<span id="643">643</span>
<span id="644">644</span>
<span id="645">645</span>
<span id="646">646</span>
<span id="647">647</span>
<span id="648">648</span>
<span id="649">649</span>
<span id="650">650</span>
<span id="651">651</span>
<span id="652">652</span>
<span id="653">653</span>
<span id="654">654</span>
<span id="655">655</span>
<span id="656">656</span>
<span id="657">657</span>
<span id="658">658</span>
<span id="659">659</span>
<span id="660">660</span>
<span id="661">661</span>
<span id="662">662</span>
<span id="663">663</span>
<span id="664">664</span>
<span id="665">665</span>
<span id="666">666</span>
<span id="667">667</span>
<span id="668">668</span>
<span id="669">669</span>
<span id="670">670</span>
<span id="671">671</span>
<span id="672">672</span>
<span id="673">673</span>
<span id="674">674</span>
<span id="675">675</span>
<span id="676">676</span>
<span id="677">677</span>
<span id="678">678</span>
<span id="679">679</span>
<span id="680">680</span>
<span id="681">681</span>
<span id="682">682</span>
<span id="683">683</span>
<span id="684">684</span>
<span id="685">685</span>
<span id="686">686</span>
<span id="687">687</span>
<span id="688">688</span>
<span id="689">689</span>
<span id="690">690</span>
<span id="691">691</span>
<span id="692">692</span>
<span id="693">693</span>
<span id="694">694</span>
<span id="695">695</span>
<span id="696">696</span>
<span id="697">697</span>
<span id="698">698</span>
<span id="699">699</span>
<span id="700">700</span>
<span id="701">701</span>
<span id="702">702</span>
<span id="703">703</span>
<span id="704">704</span>
<span id="705">705</span>
<span id="706">706</span>
<span id="707">707</span>
<span id="708">708</span>
<span id="709">709</span>
<span id="710">710</span>
<span id="711">711</span>
<span id="712">712</span>
<span id="713">713</span>
<span id="714">714</span>
<span id="715">715</span>
<span id="716">716</span>
<span id="717">717</span>
<span id="718">718</span>
<span id="719">719</span>
<span id="720">720</span>
<span id="721">721</span>
<span id="722">722</span>
<span id="723">723</span>
<span id="724">724</span>
<span id="725">725</span>
<span id="726">726</span>
<span id="727">727</span>
<span id="728">728</span>
<span id="729">729</span>
<span id="730">730</span>
<span id="731">731</span>
<span id="732">732</span>
<span id="733">733</span>
<span id="734">734</span>
<span id="735">735</span>
<span id="736">736</span>
<span id="737">737</span>
<span id="738">738</span>
<span id="739">739</span>
<span id="740">740</span>
<span id="741">741</span>
<span id="742">742</span>
<span id="743">743</span>
<span id="744">744</span>
<span id="745">745</span>
<span id="746">746</span>
<span id="747">747</span>
<span id="748">748</span>
<span id="749">749</span>
<span id="750">750</span>
<span id="751">751</span>
<span id="752">752</span>
<span id="753">753</span>
<span id="754">754</span>
<span id="755">755</span>
<span id="756">756</span>
<span id="757">757</span>
<span id="758">758</span>
<span id="759">759</span>
<span id="760">760</span>
<span id="761">761</span>
<span id="762">762</span>
<span id="763">763</span>
<span id="764">764</span>
<span id="765">765</span>
<span id="766">766</span>
<span id="767">767</span>
<span id="768">768</span>
<span id="769">769</span>
<span id="770">770</span>
<span id="771">771</span>
<span id="772">772</span>
<span id="773">773</span>
<span id="774">774</span>
<span id="775">775</span>
<span id="776">776</span>
<span id="777">777</span>
<span id="778">778</span>
<span id="779">779</span>
<span id="780">780</span>
<span id="781">781</span>
<span id="782">782</span>
<span id="783">783</span>
<span id="784">784</span>
<span id="785">785</span>
<span id="786">786</span>
<span id="787">787</span>
<span id="788">788</span>
<span id="789">789</span>
<span id="790">790</span>
<span id="791">791</span>
<span id="792">792</span>
<span id="793">793</span>
<span id="794">794</span>
<span id="795">795</span>
<span id="796">796</span>
<span id="797">797</span>
<span id="798">798</span>
<span id="799">799</span>
<span id="800">800</span>
<span id="801">801</span>
<span id="802">802</span>
<span id="803">803</span>
<span id="804">804</span>
<span id="805">805</span>
<span id="806">806</span>
<span id="807">807</span>
<span id="808">808</span>
<span id="809">809</span>
<span id="810">810</span>
<span id="811">811</span>
<span id="812">812</span>
<span id="813">813</span>
<span id="814">814</span>
<span id="815">815</span>
<span id="816">816</span>
<span id="817">817</span>
<span id="818">818</span>
<span id="819">819</span>
<span id="820">820</span>
<span id="821">821</span>
<span id="822">822</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">app</span>::{<span class="ident">App</span>, <span class="ident">FindDelayedIntersections</span>, <span class="ident">ShowEverything</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">app</span>::<span class="ident">App</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">common</span>::<span class="ident">Warping</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">game</span>::{<span class="ident">DrawBaselayer</span>, <span class="ident">PopupMsg</span>, <span class="ident">State</span>, <span class="ident">Transition</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">game</span>::{<span class="ident">PopupMsg</span>, <span class="ident">Transition</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">helpers</span>::<span class="ident">ID</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">render</span>::<span class="ident">DrawOptions</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">sandbox</span>::{<span class="ident">GameplayMode</span>, <span class="ident">SandboxMode</span>};
<span class="kw">use</span> <span class="ident">abstutil</span>::<span class="ident">prettyprint_usize</span>;
<span class="kw">use</span> <span class="ident">geom</span>::{<span class="ident">Duration</span>, <span class="ident">Polygon</span>, <span class="ident">Pt2D</span>, <span class="ident">Ring</span>, <span class="ident">Time</span>};
<span class="kw">use</span> <span class="ident">instant</span>::<span class="ident">Instant</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">sandbox</span>::<span class="ident">time_warp</span>::<span class="ident">JumpToTime</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">sandbox</span>::{<span class="ident">GameplayMode</span>, <span class="ident">SandboxMode</span>, <span class="ident">TimeWarpScreen</span>};
<span class="kw">use</span> <span class="ident">geom</span>::{<span class="ident">Duration</span>, <span class="ident">Polygon</span>, <span class="ident">Time</span>};
<span class="kw">use</span> <span class="ident">sim</span>::<span class="ident">AlertLocation</span>;
<span class="kw">use</span> <span class="ident">widgetry</span>::{
<span class="ident">hotkey</span>, <span class="ident">AreaSlider</span>, <span class="ident">Btn</span>, <span class="ident">Checkbox</span>, <span class="ident">Choice</span>, <span class="ident">Color</span>, <span class="ident">EventCtx</span>, <span class="ident">GeomBatch</span>, <span class="ident">GfxCtx</span>,
<span class="ident">HorizontalAlignment</span>, <span class="ident">Key</span>, <span class="ident">Line</span>, <span class="ident">Outcome</span>, <span class="ident">Panel</span>, <span class="ident">PersistentSplit</span>, <span class="ident">RewriteColor</span>, <span class="ident">Text</span>,
<span class="ident">UpdateType</span>, <span class="ident">VerticalAlignment</span>, <span class="ident">Widget</span>,
<span class="ident">hotkey</span>, <span class="ident">Btn</span>, <span class="ident">Choice</span>, <span class="ident">Color</span>, <span class="ident">EventCtx</span>, <span class="ident">GeomBatch</span>, <span class="ident">GfxCtx</span>, <span class="ident">HorizontalAlignment</span>, <span class="ident">Key</span>, <span class="ident">Line</span>,
<span class="ident">Outcome</span>, <span class="ident">Panel</span>, <span class="ident">PersistentSplit</span>, <span class="ident">RewriteColor</span>, <span class="ident">Text</span>, <span class="ident">VerticalAlignment</span>, <span class="ident">Widget</span>,
};
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">SpeedControls</span> {
@ -1170,337 +762,6 @@
}
}
<span class="comment">// TODO Text entry would be great</span>
<span class="kw">struct</span> <span class="ident">JumpToTime</span> {
<span class="ident">panel</span>: <span class="ident">Panel</span>,
<span class="ident">target</span>: <span class="ident">Time</span>,
<span class="ident">halt_limit</span>: <span class="ident">Duration</span>,
<span class="ident">maybe_mode</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">GameplayMode</span><span class="op">&gt;</span>,
}
<span class="kw">impl</span> <span class="ident">JumpToTime</span> {
<span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">ctx</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">EventCtx</span>, <span class="ident">app</span>: <span class="kw-2">&amp;</span><span class="ident">App</span>, <span class="ident">maybe_mode</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">GameplayMode</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">JumpToTime</span> {
<span class="kw">let</span> <span class="ident">target</span> <span class="op">=</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">time</span>();
<span class="kw">let</span> <span class="ident">end_of_day</span> <span class="op">=</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">get_end_of_day</span>();
<span class="kw">let</span> <span class="ident">halt_limit</span> <span class="op">=</span> <span class="ident">app</span>.<span class="ident">opts</span>.<span class="ident">time_warp_halt_limit</span>;
<span class="ident">JumpToTime</span> {
<span class="ident">target</span>,
<span class="ident">halt_limit</span>,
<span class="ident">maybe_mode</span>,
<span class="ident">panel</span>: <span class="ident">Panel</span>::<span class="ident">new</span>(<span class="ident">Widget</span>::<span class="ident">col</span>(<span class="macro">vec</span><span class="macro">!</span>[
<span class="ident">Widget</span>::<span class="ident">row</span>(<span class="macro">vec</span><span class="macro">!</span>[
<span class="ident">Line</span>(<span class="string">&quot;Jump to what time?&quot;</span>).<span class="ident">small_heading</span>().<span class="ident">draw</span>(<span class="ident">ctx</span>),
<span class="ident">Btn</span>::<span class="ident">plaintext</span>(<span class="string">&quot;X&quot;</span>)
.<span class="ident">build</span>(<span class="ident">ctx</span>, <span class="string">&quot;close&quot;</span>, <span class="ident">hotkey</span>(<span class="ident">Key</span>::<span class="ident">Escape</span>))
.<span class="ident">align_right</span>(),
]),
<span class="ident">Checkbox</span>::<span class="ident">checkbox</span>(
<span class="ident">ctx</span>,
<span class="string">&quot;skip drawing (for faster simulations)&quot;</span>,
<span class="prelude-val">None</span>,
<span class="ident">app</span>.<span class="ident">opts</span>.<span class="ident">dont_draw_time_warp</span>,
)
.<span class="ident">margin_above</span>(<span class="number">30</span>)
.<span class="ident">named</span>(<span class="string">&quot;don&#39;t draw&quot;</span>),
<span class="ident">Widget</span>::<span class="ident">horiz_separator</span>(<span class="ident">ctx</span>, <span class="number">0.25</span>).<span class="ident">margin_above</span>(<span class="number">10</span>),
<span class="kw">if</span> <span class="ident">app</span>.<span class="ident">has_prebaked</span>().<span class="ident">is_some</span>() {
<span class="ident">Widget</span>::<span class="ident">draw_batch</span>(
<span class="ident">ctx</span>,
<span class="ident">GeomBatch</span>::<span class="ident">from</span>(<span class="macro">vec</span><span class="macro">!</span>[(
<span class="ident">Color</span>::<span class="ident">WHITE</span>.<span class="ident">alpha</span>(<span class="number">0.7</span>),
<span class="ident">area_under_curve</span>(
<span class="ident">app</span>.<span class="ident">prebaked</span>().<span class="ident">active_agents</span>(<span class="ident">end_of_day</span>),
<span class="comment">// TODO Auto fill width</span>
<span class="number">500.0</span>,
<span class="number">50.0</span>,
),
)]),
)
} <span class="kw">else</span> {
<span class="ident">Widget</span>::<span class="ident">nothing</span>()
},
<span class="comment">// TODO Auto-fill width?</span>
<span class="ident">AreaSlider</span>::<span class="ident">new</span>(
<span class="ident">ctx</span>,
<span class="number">0.25</span> <span class="op">*</span> <span class="ident">ctx</span>.<span class="ident">canvas</span>.<span class="ident">window_width</span>,
<span class="ident">target</span>.<span class="ident">to_percent</span>(<span class="ident">end_of_day</span>).<span class="ident">min</span>(<span class="number">1.0</span>),
)
.<span class="ident">named</span>(<span class="string">&quot;time slider&quot;</span>)
.<span class="ident">centered_horiz</span>()
<span class="comment">// EZGUI FIXME: margin_below having no effect here, so instead we add a margin_top</span>
<span class="comment">// to the subsequent element</span>
<span class="comment">//.margin_above(16).margin_below(16),</span>
.<span class="ident">margin_above</span>(<span class="number">16</span>),
<span class="ident">build_jump_to_time_btn</span>(<span class="ident">target</span>, <span class="ident">ctx</span>),
<span class="ident">Widget</span>::<span class="ident">horiz_separator</span>(<span class="ident">ctx</span>, <span class="number">0.25</span>).<span class="ident">margin_above</span>(<span class="number">16</span>),
<span class="ident">build_jump_to_delay_picker</span>(<span class="ident">halt_limit</span>, <span class="ident">ctx</span>).<span class="ident">margin_above</span>(<span class="number">16</span>),
<span class="ident">build_jump_to_delay_button</span>(<span class="ident">halt_limit</span>, <span class="ident">ctx</span>),
]))
.<span class="ident">build</span>(<span class="ident">ctx</span>),
}
}
}
<span class="kw">impl</span> <span class="ident">State</span> <span class="kw">for</span> <span class="ident">JumpToTime</span> {
<span class="kw">fn</span> <span class="ident">event</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">ctx</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">EventCtx</span>, <span class="ident">app</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">App</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Transition</span> {
<span class="kw">match</span> <span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">event</span>(<span class="ident">ctx</span>) {
<span class="ident">Outcome</span>::<span class="ident">Clicked</span>(<span class="ident">x</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="kw">match</span> <span class="ident">x</span>.<span class="ident">as_ref</span>() {
<span class="string">&quot;close&quot;</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Pop</span>;
}
<span class="string">&quot;jump to time&quot;</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">if</span> <span class="self">self</span>.<span class="ident">target</span> <span class="op">&lt;</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">time</span>() {
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">mode</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">maybe_mode</span>.<span class="ident">take</span>() {
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Multi</span>(<span class="macro">vec</span><span class="macro">!</span>[
<span class="ident">Transition</span>::<span class="ident">Replace</span>(<span class="ident">SandboxMode</span>::<span class="ident">new</span>(<span class="ident">ctx</span>, <span class="ident">app</span>, <span class="ident">mode</span>)),
<span class="ident">Transition</span>::<span class="ident">Push</span>(<span class="ident">TimeWarpScreen</span>::<span class="ident">new</span>(<span class="ident">ctx</span>, <span class="ident">app</span>, <span class="self">self</span>.<span class="ident">target</span>, <span class="prelude-val">None</span>)),
]);
} <span class="kw">else</span> {
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Replace</span>(<span class="ident">PopupMsg</span>::<span class="ident">new</span>(
<span class="ident">ctx</span>,
<span class="string">&quot;Error&quot;</span>,
<span class="macro">vec</span><span class="macro">!</span>[<span class="string">&quot;Sorry, you can&#39;t go rewind time from this mode.&quot;</span>],
));
}
}
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Replace</span>(<span class="ident">TimeWarpScreen</span>::<span class="ident">new</span>(<span class="ident">ctx</span>, <span class="ident">app</span>, <span class="self">self</span>.<span class="ident">target</span>, <span class="prelude-val">None</span>));
}
<span class="string">&quot;choose delay&quot;</span> <span class="op">=</span><span class="op">&gt;</span> <span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Keep</span>,
<span class="string">&quot;jump to delay&quot;</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">halt_limit</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">persistent_split_value</span>(<span class="string">&quot;choose delay&quot;</span>);
<span class="ident">app</span>.<span class="ident">opts</span>.<span class="ident">time_warp_halt_limit</span> <span class="op">=</span> <span class="ident">halt_limit</span>;
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Replace</span>(<span class="ident">TimeWarpScreen</span>::<span class="ident">new</span>(
<span class="ident">ctx</span>,
<span class="ident">app</span>,
<span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">get_end_of_day</span>(),
<span class="prelude-val">Some</span>(<span class="ident">halt_limit</span>),
));
}
<span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> <span class="macro">unreachable</span><span class="macro">!</span>(),
},
<span class="ident">Outcome</span>::<span class="ident">Changed</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="ident">app</span>.<span class="ident">opts</span>.<span class="ident">dont_draw_time_warp</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">is_checked</span>(<span class="string">&quot;don&#39;t draw&quot;</span>);
}
<span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> {}
}
<span class="kw">let</span> <span class="ident">target</span> <span class="op">=</span> <span class="ident">app</span>
.<span class="ident">primary</span>
.<span class="ident">sim</span>
.<span class="ident">get_end_of_day</span>()
.<span class="ident">percent_of</span>(<span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">area_slider</span>(<span class="string">&quot;time slider&quot;</span>).<span class="ident">get_percent</span>())
.<span class="ident">round_seconds</span>(<span class="number">600.0</span>);
<span class="kw">if</span> <span class="ident">target</span> <span class="op">!</span><span class="op">=</span> <span class="self">self</span>.<span class="ident">target</span> {
<span class="self">self</span>.<span class="ident">target</span> <span class="op">=</span> <span class="ident">target</span>;
<span class="self">self</span>.<span class="ident">panel</span>
.<span class="ident">replace</span>(<span class="ident">ctx</span>, <span class="string">&quot;jump to time&quot;</span>, <span class="ident">build_jump_to_time_btn</span>(<span class="ident">target</span>, <span class="ident">ctx</span>));
}
<span class="kw">let</span> <span class="ident">halt_limit</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">persistent_split_value</span>(<span class="string">&quot;choose delay&quot;</span>);
<span class="kw">if</span> <span class="ident">halt_limit</span> <span class="op">!</span><span class="op">=</span> <span class="self">self</span>.<span class="ident">halt_limit</span> {
<span class="self">self</span>.<span class="ident">halt_limit</span> <span class="op">=</span> <span class="ident">halt_limit</span>;
<span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">replace</span>(
<span class="ident">ctx</span>,
<span class="string">&quot;jump to delay&quot;</span>,
<span class="ident">build_jump_to_delay_button</span>(<span class="ident">halt_limit</span>, <span class="ident">ctx</span>),
);
}
<span class="kw">if</span> <span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">clicked_outside</span>(<span class="ident">ctx</span>) {
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Pop</span>;
}
<span class="ident">Transition</span>::<span class="ident">Keep</span>
}
<span class="kw">fn</span> <span class="ident">draw</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">g</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">GfxCtx</span>, <span class="ident">app</span>: <span class="kw-2">&amp;</span><span class="ident">App</span>) {
<span class="ident">State</span>::<span class="ident">grey_out_map</span>(<span class="ident">g</span>, <span class="ident">app</span>);
<span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">draw</span>(<span class="ident">g</span>);
}
}
<span class="comment">// Display a nicer screen for jumping forwards in time, allowing cancellation.</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">TimeWarpScreen</span> {
<span class="ident">target</span>: <span class="ident">Time</span>,
<span class="ident">wall_time_started</span>: <span class="ident">Instant</span>,
<span class="ident">sim_time_started</span>: <span class="ident">geom</span>::<span class="ident">Time</span>,
<span class="ident">halt_upon_delay</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Duration</span><span class="op">&gt;</span>,
<span class="ident">panel</span>: <span class="ident">Panel</span>,
}
<span class="kw">impl</span> <span class="ident">TimeWarpScreen</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(
<span class="ident">ctx</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">EventCtx</span>,
<span class="ident">app</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">App</span>,
<span class="ident">target</span>: <span class="ident">Time</span>,
<span class="kw-2">mut</span> <span class="ident">halt_upon_delay</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Duration</span><span class="op">&gt;</span>,
) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Box</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">State</span><span class="op">&gt;</span> {
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">halt_limit</span>) <span class="op">=</span> <span class="ident">halt_upon_delay</span> {
<span class="kw">if</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim_cb</span>.<span class="ident">is_none</span>() {
<span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim_cb</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">Box</span>::<span class="ident">new</span>(<span class="ident">FindDelayedIntersections</span> {
<span class="ident">halt_limit</span>,
<span class="ident">report_limit</span>: <span class="ident">halt_limit</span>,
<span class="ident">currently_delayed</span>: <span class="ident">Vec</span>::<span class="ident">new</span>(),
}));
<span class="comment">// TODO Can we get away with less frequently? Not sure about all the edge cases</span>
<span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">set_periodic_callback</span>(<span class="ident">Duration</span>::<span class="ident">minutes</span>(<span class="number">1</span>));
} <span class="kw">else</span> {
<span class="ident">halt_upon_delay</span> <span class="op">=</span> <span class="prelude-val">None</span>;
}
}
<span class="ident">Box</span>::<span class="ident">new</span>(<span class="ident">TimeWarpScreen</span> {
<span class="ident">target</span>,
<span class="ident">wall_time_started</span>: <span class="ident">Instant</span>::<span class="ident">now</span>(),
<span class="ident">sim_time_started</span>: <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">time</span>(),
<span class="ident">halt_upon_delay</span>,
<span class="ident">panel</span>: <span class="ident">Panel</span>::<span class="ident">new</span>(
<span class="ident">Widget</span>::<span class="ident">col</span>(<span class="macro">vec</span><span class="macro">!</span>[
<span class="ident">Text</span>::<span class="ident">new</span>().<span class="ident">draw</span>(<span class="ident">ctx</span>).<span class="ident">named</span>(<span class="string">&quot;text&quot;</span>),
<span class="ident">Btn</span>::<span class="ident">text_bg2</span>(<span class="string">&quot;stop now&quot;</span>)
.<span class="ident">build_def</span>(<span class="ident">ctx</span>, <span class="ident">hotkey</span>(<span class="ident">Key</span>::<span class="ident">Escape</span>))
.<span class="ident">centered_horiz</span>(),
])
<span class="comment">// hardcoded width avoids jiggle due to text updates</span>
.<span class="ident">force_width</span>(<span class="number">700.0</span>),
)
.<span class="ident">build</span>(<span class="ident">ctx</span>),
})
}
}
<span class="kw">impl</span> <span class="ident">State</span> <span class="kw">for</span> <span class="ident">TimeWarpScreen</span> {
<span class="kw">fn</span> <span class="ident">event</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">ctx</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">EventCtx</span>, <span class="ident">app</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">App</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Transition</span> {
<span class="kw">if</span> <span class="ident">ctx</span>.<span class="ident">input</span>.<span class="ident">nonblocking_is_update_event</span>().<span class="ident">is_some</span>() {
<span class="ident">ctx</span>.<span class="ident">input</span>.<span class="ident">use_update_event</span>();
<span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">time_limited_step</span>(
<span class="kw-2">&amp;</span><span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">map</span>,
<span class="self">self</span>.<span class="ident">target</span> <span class="op">-</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">time</span>(),
<span class="ident">Duration</span>::<span class="ident">seconds</span>(<span class="number">0.033</span>),
<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim_cb</span>,
);
<span class="kw">for</span> (<span class="ident">t</span>, <span class="ident">maybe_i</span>, <span class="ident">alert</span>) <span class="kw">in</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">clear_alerts</span>() {
<span class="comment">// TODO Just the first :(</span>
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Replace</span>(<span class="ident">PopupMsg</span>::<span class="ident">new</span>(
<span class="ident">ctx</span>,
<span class="string">&quot;Alert&quot;</span>,
<span class="macro">vec</span><span class="macro">!</span>[<span class="macro">format</span><span class="macro">!</span>(<span class="string">&quot;At {}, near {:?}, {}&quot;</span>, <span class="ident">t</span>, <span class="ident">maybe_i</span>, <span class="ident">alert</span>)],
));
}
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="kw-2">ref</span> <span class="kw-2">mut</span> <span class="ident">cb</span>) <span class="op">=</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim_cb</span> {
<span class="kw">let</span> <span class="ident">di</span> <span class="op">=</span> <span class="ident">cb</span>.<span class="ident">downcast_mut</span>::<span class="op">&lt;</span><span class="ident">FindDelayedIntersections</span><span class="op">&gt;</span>().<span class="ident">unwrap</span>();
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>((<span class="ident">i</span>, <span class="ident">t</span>)) <span class="op">=</span> <span class="ident">di</span>.<span class="ident">currently_delayed</span>.<span class="ident">get</span>(<span class="number">0</span>) {
<span class="kw">if</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">time</span>() <span class="op">-</span> <span class="kw-2">*</span><span class="ident">t</span> <span class="op">&gt;</span> <span class="ident">di</span>.<span class="ident">halt_limit</span> {
<span class="kw">let</span> <span class="ident">id</span> <span class="op">=</span> <span class="ident">ID</span>::<span class="ident">Intersection</span>(<span class="kw-2">*</span><span class="ident">i</span>);
<span class="ident">app</span>.<span class="ident">layer</span> <span class="op">=</span>
<span class="prelude-val">Some</span>(<span class="ident">Box</span>::<span class="ident">new</span>(<span class="kw">crate</span>::<span class="ident">layer</span>::<span class="ident">traffic</span>::<span class="ident">TrafficJams</span>::<span class="ident">new</span>(<span class="ident">ctx</span>, <span class="ident">app</span>)));
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Replace</span>(<span class="ident">Warping</span>::<span class="ident">new</span>(
<span class="ident">ctx</span>,
<span class="ident">id</span>.<span class="ident">canonical_point</span>(<span class="kw-2">&amp;</span><span class="ident">app</span>.<span class="ident">primary</span>).<span class="ident">unwrap</span>(),
<span class="prelude-val">Some</span>(<span class="number">10.0</span>),
<span class="prelude-val">Some</span>(<span class="ident">id</span>),
<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">app</span>.<span class="ident">primary</span>,
));
}
}
}
<span class="kw">let</span> <span class="ident">now</span> <span class="op">=</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">time</span>();
<span class="kw">let</span> (<span class="ident">finished_after</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">num_trips</span>();
<span class="kw">let</span> <span class="ident">finished_before</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">app</span>.<span class="ident">has_prebaked</span>().<span class="ident">is_some</span>() {
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">cnt</span> <span class="op">=</span> <span class="number">0</span>;
<span class="kw">for</span> (<span class="ident">t</span>, <span class="kw">_</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="kw">in</span> <span class="kw-2">&amp;</span><span class="ident">app</span>.<span class="ident">prebaked</span>().<span class="ident">finished_trips</span> {
<span class="kw">if</span> <span class="kw-2">*</span><span class="ident">t</span> <span class="op">&gt;</span> <span class="ident">now</span> {
<span class="kw">break</span>;
}
<span class="ident">cnt</span> <span class="op">+</span><span class="op">=</span> <span class="number">1</span>;
}
<span class="prelude-val">Some</span>(<span class="ident">cnt</span>)
} <span class="kw">else</span> {
<span class="prelude-val">None</span>
};
<span class="kw">let</span> <span class="ident">elapsed_sim_time</span> <span class="op">=</span> <span class="ident">now</span> <span class="op">-</span> <span class="self">self</span>.<span class="ident">sim_time_started</span>;
<span class="kw">let</span> <span class="ident">elapsed_wall_time</span> <span class="op">=</span> <span class="ident">Duration</span>::<span class="ident">realtime_elapsed</span>(<span class="self">self</span>.<span class="ident">wall_time_started</span>);
<span class="kw">let</span> <span class="ident">txt</span> <span class="op">=</span> <span class="ident">Text</span>::<span class="ident">from_multiline</span>(<span class="macro">vec</span><span class="macro">!</span>[
<span class="comment">// I&#39;m covered in shame for not doing this from the start.</span>
<span class="ident">Line</span>(<span class="string">&quot;Let&#39;s do the time warp again!&quot;</span>).<span class="ident">small_heading</span>(),
<span class="ident">Line</span>(<span class="macro">format</span><span class="macro">!</span>(
<span class="string">&quot;{} / {}&quot;</span>,
<span class="ident">now</span>.<span class="ident">ampm_tostring</span>(),
<span class="self">self</span>.<span class="ident">target</span>.<span class="ident">ampm_tostring</span>()
)),
<span class="ident">Line</span>(<span class="macro">format</span><span class="macro">!</span>(
<span class="string">&quot;Speed: {}x&quot;</span>,
<span class="ident">prettyprint_usize</span>((<span class="ident">elapsed_sim_time</span> <span class="op">/</span> <span class="ident">elapsed_wall_time</span>) <span class="kw">as</span> <span class="ident">usize</span>)
)),
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">n</span>) <span class="op">=</span> <span class="ident">finished_before</span> {
<span class="comment">// TODO Underline</span>
<span class="ident">Line</span>(<span class="macro">format</span><span class="macro">!</span>(
<span class="string">&quot;Finished trips: {} ({} compared to before \&quot;{}\&quot;)&quot;</span>,
<span class="ident">prettyprint_usize</span>(<span class="ident">finished_after</span>),
<span class="ident">compare_count</span>(<span class="ident">finished_after</span>, <span class="ident">n</span>),
<span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">map</span>.<span class="ident">get_edits</span>().<span class="ident">edits_name</span>,
))
} <span class="kw">else</span> {
<span class="ident">Line</span>(<span class="macro">format</span><span class="macro">!</span>(
<span class="string">&quot;Finished trips: {}&quot;</span>,
<span class="ident">prettyprint_usize</span>(<span class="ident">finished_after</span>)
))
},
]);
<span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">replace</span>(<span class="ident">ctx</span>, <span class="string">&quot;text&quot;</span>, <span class="ident">txt</span>.<span class="ident">draw</span>(<span class="ident">ctx</span>).<span class="ident">named</span>(<span class="string">&quot;text&quot;</span>));
}
<span class="kw">if</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">time</span>() <span class="op">=</span><span class="op">=</span> <span class="self">self</span>.<span class="ident">target</span> {
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Pop</span>;
}
<span class="kw">match</span> <span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">event</span>(<span class="ident">ctx</span>) {
<span class="ident">Outcome</span>::<span class="ident">Clicked</span>(<span class="ident">x</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="kw">match</span> <span class="ident">x</span>.<span class="ident">as_ref</span>() {
<span class="string">&quot;stop now&quot;</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Pop</span>;
}
<span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> <span class="macro">unreachable</span><span class="macro">!</span>(),
},
<span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> {}
}
<span class="kw">if</span> <span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">clicked_outside</span>(<span class="ident">ctx</span>) {
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Pop</span>;
}
<span class="ident">ctx</span>.<span class="ident">request_update</span>(<span class="ident">UpdateType</span>::<span class="ident">Game</span>);
<span class="ident">Transition</span>::<span class="ident">Keep</span>
}
<span class="kw">fn</span> <span class="ident">draw_baselayer</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">DrawBaselayer</span> {
<span class="ident">DrawBaselayer</span>::<span class="ident">Custom</span>
}
<span class="kw">fn</span> <span class="ident">draw</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">g</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">GfxCtx</span>, <span class="ident">app</span>: <span class="kw-2">&amp;</span><span class="ident">App</span>) {
<span class="kw">if</span> <span class="ident">app</span>.<span class="ident">opts</span>.<span class="ident">dont_draw_time_warp</span> {
<span class="ident">g</span>.<span class="ident">clear</span>(<span class="ident">app</span>.<span class="ident">cs</span>.<span class="ident">section_bg</span>);
} <span class="kw">else</span> {
<span class="ident">app</span>.<span class="ident">draw</span>(
<span class="ident">g</span>,
<span class="ident">DrawOptions</span>::<span class="ident">new</span>(),
<span class="kw-2">&amp;</span><span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>,
<span class="kw-2">&amp;</span><span class="ident">ShowEverything</span>::<span class="ident">new</span>(),
);
<span class="ident">State</span>::<span class="ident">grey_out_map</span>(<span class="ident">g</span>, <span class="ident">app</span>);
}
<span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">draw</span>(<span class="ident">g</span>);
}
<span class="kw">fn</span> <span class="ident">on_destroy</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="kw">_</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">EventCtx</span>, <span class="ident">app</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">App</span>) {
<span class="kw">if</span> <span class="self">self</span>.<span class="ident">halt_upon_delay</span>.<span class="ident">is_some</span>() {
<span class="macro">assert</span><span class="macro">!</span>(<span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim_cb</span>.<span class="ident">is_some</span>());
<span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim_cb</span> <span class="op">=</span> <span class="prelude-val">None</span>;
<span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">unset_periodic_callback</span>();
}
}
}
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">TimePanel</span> {
<span class="ident">time</span>: <span class="ident">Time</span>,
<span class="kw">pub</span> <span class="ident">panel</span>: <span class="ident">Panel</span>,
@ -1572,76 +833,5 @@
<span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">draw</span>(<span class="ident">g</span>);
}
}
<span class="kw">fn</span> <span class="ident">area_under_curve</span>(<span class="ident">raw</span>: <span class="ident">Vec</span><span class="op">&lt;</span>(<span class="ident">Time</span>, <span class="ident">usize</span>)<span class="op">&gt;</span>, <span class="ident">width</span>: <span class="ident">f64</span>, <span class="ident">height</span>: <span class="ident">f64</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Polygon</span> {
<span class="macro">assert</span><span class="macro">!</span>(<span class="op">!</span><span class="ident">raw</span>.<span class="ident">is_empty</span>());
<span class="kw">let</span> <span class="ident">min_x</span> <span class="op">=</span> <span class="ident">Time</span>::<span class="ident">START_OF_DAY</span>;
<span class="kw">let</span> <span class="ident">min_y</span> <span class="op">=</span> <span class="number">0</span>;
<span class="kw">let</span> <span class="ident">max_x</span> <span class="op">=</span> <span class="ident">raw</span>.<span class="ident">last</span>().<span class="ident">unwrap</span>().<span class="number">0</span>;
<span class="kw">let</span> <span class="ident">max_y</span> <span class="op">=</span> <span class="ident">raw</span>.<span class="ident">iter</span>().<span class="ident">max_by_key</span>(<span class="op">|</span>(<span class="kw">_</span>, <span class="ident">cnt</span>)<span class="op">|</span> <span class="kw-2">*</span><span class="ident">cnt</span>).<span class="ident">unwrap</span>().<span class="number">1</span>;
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">pts</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="ident">new</span>();
<span class="kw">for</span> (<span class="ident">t</span>, <span class="ident">cnt</span>) <span class="kw">in</span> <span class="ident">raw</span> {
<span class="ident">pts</span>.<span class="ident">push</span>(<span class="ident">lttb</span>::<span class="ident">DataPoint</span>::<span class="ident">new</span>(
<span class="ident">width</span> <span class="op">*</span> (<span class="ident">t</span> <span class="op">-</span> <span class="ident">min_x</span>) <span class="op">/</span> (<span class="ident">max_x</span> <span class="op">-</span> <span class="ident">min_x</span>),
<span class="ident">height</span> <span class="op">*</span> (<span class="number">1.0</span> <span class="op">-</span> (((<span class="ident">cnt</span> <span class="op">-</span> <span class="ident">min_y</span>) <span class="kw">as</span> <span class="ident">f64</span>) <span class="op">/</span> ((<span class="ident">max_y</span> <span class="op">-</span> <span class="ident">min_y</span>) <span class="kw">as</span> <span class="ident">f64</span>))),
));
}
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">downsampled</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="ident">new</span>();
<span class="kw">for</span> <span class="ident">pt</span> <span class="kw">in</span> <span class="ident">lttb</span>::<span class="ident">lttb</span>(<span class="ident">pts</span>, <span class="number">100</span>) {
<span class="ident">downsampled</span>.<span class="ident">push</span>(<span class="ident">Pt2D</span>::<span class="ident">new</span>(<span class="ident">pt</span>.<span class="ident">x</span>, <span class="ident">pt</span>.<span class="ident">y</span>));
}
<span class="ident">downsampled</span>.<span class="ident">push</span>(<span class="ident">Pt2D</span>::<span class="ident">new</span>(<span class="ident">width</span>, <span class="ident">height</span>));
<span class="ident">downsampled</span>.<span class="ident">push</span>(<span class="ident">downsampled</span>[<span class="number">0</span>]);
<span class="ident">Ring</span>::<span class="ident">must_new</span>(<span class="ident">downsampled</span>).<span class="ident">to_polygon</span>()
}
<span class="comment">// TODO Maybe color, put in helpers</span>
<span class="kw">fn</span> <span class="ident">compare_count</span>(<span class="ident">after</span>: <span class="ident">usize</span>, <span class="ident">before</span>: <span class="ident">usize</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">String</span> {
<span class="kw">if</span> <span class="ident">after</span> <span class="op">=</span><span class="op">=</span> <span class="ident">before</span> {
<span class="string">&quot;+0&quot;</span>.<span class="ident">to_string</span>()
} <span class="kw">else</span> <span class="kw">if</span> <span class="ident">after</span> <span class="op">&gt;</span> <span class="ident">before</span> {
<span class="macro">format</span><span class="macro">!</span>(<span class="string">&quot;+{}&quot;</span>, <span class="ident">prettyprint_usize</span>(<span class="ident">after</span> <span class="op">-</span> <span class="ident">before</span>))
} <span class="kw">else</span> {
<span class="macro">format</span><span class="macro">!</span>(<span class="string">&quot;-{}&quot;</span>, <span class="ident">prettyprint_usize</span>(<span class="ident">before</span> <span class="op">-</span> <span class="ident">after</span>))
}
}
<span class="kw">fn</span> <span class="ident">build_jump_to_time_btn</span>(<span class="ident">target</span>: <span class="ident">Time</span>, <span class="ident">ctx</span>: <span class="kw-2">&amp;</span><span class="ident">EventCtx</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Widget</span> {
<span class="ident">Btn</span>::<span class="ident">text_bg2</span>(<span class="macro">format</span><span class="macro">!</span>(<span class="string">&quot;Jump to {}&quot;</span>, <span class="ident">target</span>.<span class="ident">ampm_tostring</span>()))
.<span class="ident">build</span>(<span class="ident">ctx</span>, <span class="string">&quot;jump to time&quot;</span>, <span class="ident">hotkey</span>(<span class="ident">Key</span>::<span class="ident">Enter</span>))
.<span class="ident">named</span>(<span class="string">&quot;jump to time&quot;</span>)
.<span class="ident">centered_horiz</span>()
.<span class="ident">margin_above</span>(<span class="number">16</span>)
}
<span class="kw">fn</span> <span class="ident">build_jump_to_delay_button</span>(<span class="ident">halt_limit</span>: <span class="ident">Duration</span>, <span class="ident">ctx</span>: <span class="kw-2">&amp;</span><span class="ident">EventCtx</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Widget</span> {
<span class="ident">Btn</span>::<span class="ident">text_bg2</span>(<span class="macro">format</span><span class="macro">!</span>(<span class="string">&quot;Jump to next {} delay&quot;</span>, <span class="ident">halt_limit</span>))
.<span class="ident">build</span>(<span class="ident">ctx</span>, <span class="string">&quot;jump to delay&quot;</span>, <span class="ident">hotkey</span>(<span class="ident">Key</span>::<span class="ident">D</span>))
.<span class="ident">named</span>(<span class="string">&quot;jump to delay&quot;</span>)
.<span class="ident">centered_horiz</span>()
.<span class="ident">margin_above</span>(<span class="number">16</span>)
}
<span class="kw">fn</span> <span class="ident">build_jump_to_delay_picker</span>(<span class="ident">halt_limit</span>: <span class="ident">Duration</span>, <span class="ident">ctx</span>: <span class="kw-2">&amp;</span><span class="ident">EventCtx</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Widget</span> {
<span class="comment">// EZGUI TODO: it&#39;d be nice if we could style the fg color for persistent splits but this needs</span>
<span class="comment">// to be passed into the button builder in init. so either we&#39;d need to make a required</span>
<span class="comment">// argument, or introduce a persistentsplitbuilder, or re-work splitbuilder to allow mutating</span>
<span class="comment">// the color after the fact which requires holding more state to re-invoke the btnbuilder</span>
<span class="ident">PersistentSplit</span>::<span class="ident">new</span>(
<span class="ident">ctx</span>,
<span class="string">&quot;choose delay&quot;</span>,
<span class="ident">halt_limit</span>,
<span class="prelude-val">None</span>,
<span class="macro">vec</span><span class="macro">!</span>[
<span class="ident">Choice</span>::<span class="ident">new</span>(<span class="string">&quot;1 minute delay&quot;</span>, <span class="ident">Duration</span>::<span class="ident">minutes</span>(<span class="number">1</span>)),
<span class="ident">Choice</span>::<span class="ident">new</span>(<span class="string">&quot;2 minute delay&quot;</span>, <span class="ident">Duration</span>::<span class="ident">minutes</span>(<span class="number">2</span>)),
<span class="ident">Choice</span>::<span class="ident">new</span>(<span class="string">&quot;5 minute delay&quot;</span>, <span class="ident">Duration</span>::<span class="ident">minutes</span>(<span class="number">5</span>)),
<span class="ident">Choice</span>::<span class="ident">new</span>(<span class="string">&quot;10 minute delay&quot;</span>, <span class="ident">Duration</span>::<span class="ident">minutes</span>(<span class="number">10</span>)),
],
)
.<span class="ident">outline</span>(<span class="number">2.0</span>, <span class="ident">Color</span>::<span class="ident">WHITE</span>)
.<span class="ident">centered_horiz</span>()
}
</pre></div>
</section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../../";window.currentCrate = "game";</script><script src="../../../main.js"></script><script src="../../../source-script.js"></script><script src="../../../source-files.js"></script><script defer src="../../../search-index.js"></script></body></html>

View File

@ -0,0 +1,833 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source to the Rust file `game/src/sandbox/time_warp.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>time_warp.rs.html -- source</title><link rel="stylesheet" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="shortcut icon" href="../../../favicon.ico"><style type="text/css">#crate-search{background-image:url("../../../down-arrow.svg");}</style></head><body class="rustdoc source"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../game/index.html'><div class='logo-container'><img src='../../../rust-logo.png' alt='logo'></div></a></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><pre class="line-numbers"><span id="1"> 1</span>
<span id="2"> 2</span>
<span id="3"> 3</span>
<span id="4"> 4</span>
<span id="5"> 5</span>
<span id="6"> 6</span>
<span id="7"> 7</span>
<span id="8"> 8</span>
<span id="9"> 9</span>
<span id="10"> 10</span>
<span id="11"> 11</span>
<span id="12"> 12</span>
<span id="13"> 13</span>
<span id="14"> 14</span>
<span id="15"> 15</span>
<span id="16"> 16</span>
<span id="17"> 17</span>
<span id="18"> 18</span>
<span id="19"> 19</span>
<span id="20"> 20</span>
<span id="21"> 21</span>
<span id="22"> 22</span>
<span id="23"> 23</span>
<span id="24"> 24</span>
<span id="25"> 25</span>
<span id="26"> 26</span>
<span id="27"> 27</span>
<span id="28"> 28</span>
<span id="29"> 29</span>
<span id="30"> 30</span>
<span id="31"> 31</span>
<span id="32"> 32</span>
<span id="33"> 33</span>
<span id="34"> 34</span>
<span id="35"> 35</span>
<span id="36"> 36</span>
<span id="37"> 37</span>
<span id="38"> 38</span>
<span id="39"> 39</span>
<span id="40"> 40</span>
<span id="41"> 41</span>
<span id="42"> 42</span>
<span id="43"> 43</span>
<span id="44"> 44</span>
<span id="45"> 45</span>
<span id="46"> 46</span>
<span id="47"> 47</span>
<span id="48"> 48</span>
<span id="49"> 49</span>
<span id="50"> 50</span>
<span id="51"> 51</span>
<span id="52"> 52</span>
<span id="53"> 53</span>
<span id="54"> 54</span>
<span id="55"> 55</span>
<span id="56"> 56</span>
<span id="57"> 57</span>
<span id="58"> 58</span>
<span id="59"> 59</span>
<span id="60"> 60</span>
<span id="61"> 61</span>
<span id="62"> 62</span>
<span id="63"> 63</span>
<span id="64"> 64</span>
<span id="65"> 65</span>
<span id="66"> 66</span>
<span id="67"> 67</span>
<span id="68"> 68</span>
<span id="69"> 69</span>
<span id="70"> 70</span>
<span id="71"> 71</span>
<span id="72"> 72</span>
<span id="73"> 73</span>
<span id="74"> 74</span>
<span id="75"> 75</span>
<span id="76"> 76</span>
<span id="77"> 77</span>
<span id="78"> 78</span>
<span id="79"> 79</span>
<span id="80"> 80</span>
<span id="81"> 81</span>
<span id="82"> 82</span>
<span id="83"> 83</span>
<span id="84"> 84</span>
<span id="85"> 85</span>
<span id="86"> 86</span>
<span id="87"> 87</span>
<span id="88"> 88</span>
<span id="89"> 89</span>
<span id="90"> 90</span>
<span id="91"> 91</span>
<span id="92"> 92</span>
<span id="93"> 93</span>
<span id="94"> 94</span>
<span id="95"> 95</span>
<span id="96"> 96</span>
<span id="97"> 97</span>
<span id="98"> 98</span>
<span id="99"> 99</span>
<span id="100">100</span>
<span id="101">101</span>
<span id="102">102</span>
<span id="103">103</span>
<span id="104">104</span>
<span id="105">105</span>
<span id="106">106</span>
<span id="107">107</span>
<span id="108">108</span>
<span id="109">109</span>
<span id="110">110</span>
<span id="111">111</span>
<span id="112">112</span>
<span id="113">113</span>
<span id="114">114</span>
<span id="115">115</span>
<span id="116">116</span>
<span id="117">117</span>
<span id="118">118</span>
<span id="119">119</span>
<span id="120">120</span>
<span id="121">121</span>
<span id="122">122</span>
<span id="123">123</span>
<span id="124">124</span>
<span id="125">125</span>
<span id="126">126</span>
<span id="127">127</span>
<span id="128">128</span>
<span id="129">129</span>
<span id="130">130</span>
<span id="131">131</span>
<span id="132">132</span>
<span id="133">133</span>
<span id="134">134</span>
<span id="135">135</span>
<span id="136">136</span>
<span id="137">137</span>
<span id="138">138</span>
<span id="139">139</span>
<span id="140">140</span>
<span id="141">141</span>
<span id="142">142</span>
<span id="143">143</span>
<span id="144">144</span>
<span id="145">145</span>
<span id="146">146</span>
<span id="147">147</span>
<span id="148">148</span>
<span id="149">149</span>
<span id="150">150</span>
<span id="151">151</span>
<span id="152">152</span>
<span id="153">153</span>
<span id="154">154</span>
<span id="155">155</span>
<span id="156">156</span>
<span id="157">157</span>
<span id="158">158</span>
<span id="159">159</span>
<span id="160">160</span>
<span id="161">161</span>
<span id="162">162</span>
<span id="163">163</span>
<span id="164">164</span>
<span id="165">165</span>
<span id="166">166</span>
<span id="167">167</span>
<span id="168">168</span>
<span id="169">169</span>
<span id="170">170</span>
<span id="171">171</span>
<span id="172">172</span>
<span id="173">173</span>
<span id="174">174</span>
<span id="175">175</span>
<span id="176">176</span>
<span id="177">177</span>
<span id="178">178</span>
<span id="179">179</span>
<span id="180">180</span>
<span id="181">181</span>
<span id="182">182</span>
<span id="183">183</span>
<span id="184">184</span>
<span id="185">185</span>
<span id="186">186</span>
<span id="187">187</span>
<span id="188">188</span>
<span id="189">189</span>
<span id="190">190</span>
<span id="191">191</span>
<span id="192">192</span>
<span id="193">193</span>
<span id="194">194</span>
<span id="195">195</span>
<span id="196">196</span>
<span id="197">197</span>
<span id="198">198</span>
<span id="199">199</span>
<span id="200">200</span>
<span id="201">201</span>
<span id="202">202</span>
<span id="203">203</span>
<span id="204">204</span>
<span id="205">205</span>
<span id="206">206</span>
<span id="207">207</span>
<span id="208">208</span>
<span id="209">209</span>
<span id="210">210</span>
<span id="211">211</span>
<span id="212">212</span>
<span id="213">213</span>
<span id="214">214</span>
<span id="215">215</span>
<span id="216">216</span>
<span id="217">217</span>
<span id="218">218</span>
<span id="219">219</span>
<span id="220">220</span>
<span id="221">221</span>
<span id="222">222</span>
<span id="223">223</span>
<span id="224">224</span>
<span id="225">225</span>
<span id="226">226</span>
<span id="227">227</span>
<span id="228">228</span>
<span id="229">229</span>
<span id="230">230</span>
<span id="231">231</span>
<span id="232">232</span>
<span id="233">233</span>
<span id="234">234</span>
<span id="235">235</span>
<span id="236">236</span>
<span id="237">237</span>
<span id="238">238</span>
<span id="239">239</span>
<span id="240">240</span>
<span id="241">241</span>
<span id="242">242</span>
<span id="243">243</span>
<span id="244">244</span>
<span id="245">245</span>
<span id="246">246</span>
<span id="247">247</span>
<span id="248">248</span>
<span id="249">249</span>
<span id="250">250</span>
<span id="251">251</span>
<span id="252">252</span>
<span id="253">253</span>
<span id="254">254</span>
<span id="255">255</span>
<span id="256">256</span>
<span id="257">257</span>
<span id="258">258</span>
<span id="259">259</span>
<span id="260">260</span>
<span id="261">261</span>
<span id="262">262</span>
<span id="263">263</span>
<span id="264">264</span>
<span id="265">265</span>
<span id="266">266</span>
<span id="267">267</span>
<span id="268">268</span>
<span id="269">269</span>
<span id="270">270</span>
<span id="271">271</span>
<span id="272">272</span>
<span id="273">273</span>
<span id="274">274</span>
<span id="275">275</span>
<span id="276">276</span>
<span id="277">277</span>
<span id="278">278</span>
<span id="279">279</span>
<span id="280">280</span>
<span id="281">281</span>
<span id="282">282</span>
<span id="283">283</span>
<span id="284">284</span>
<span id="285">285</span>
<span id="286">286</span>
<span id="287">287</span>
<span id="288">288</span>
<span id="289">289</span>
<span id="290">290</span>
<span id="291">291</span>
<span id="292">292</span>
<span id="293">293</span>
<span id="294">294</span>
<span id="295">295</span>
<span id="296">296</span>
<span id="297">297</span>
<span id="298">298</span>
<span id="299">299</span>
<span id="300">300</span>
<span id="301">301</span>
<span id="302">302</span>
<span id="303">303</span>
<span id="304">304</span>
<span id="305">305</span>
<span id="306">306</span>
<span id="307">307</span>
<span id="308">308</span>
<span id="309">309</span>
<span id="310">310</span>
<span id="311">311</span>
<span id="312">312</span>
<span id="313">313</span>
<span id="314">314</span>
<span id="315">315</span>
<span id="316">316</span>
<span id="317">317</span>
<span id="318">318</span>
<span id="319">319</span>
<span id="320">320</span>
<span id="321">321</span>
<span id="322">322</span>
<span id="323">323</span>
<span id="324">324</span>
<span id="325">325</span>
<span id="326">326</span>
<span id="327">327</span>
<span id="328">328</span>
<span id="329">329</span>
<span id="330">330</span>
<span id="331">331</span>
<span id="332">332</span>
<span id="333">333</span>
<span id="334">334</span>
<span id="335">335</span>
<span id="336">336</span>
<span id="337">337</span>
<span id="338">338</span>
<span id="339">339</span>
<span id="340">340</span>
<span id="341">341</span>
<span id="342">342</span>
<span id="343">343</span>
<span id="344">344</span>
<span id="345">345</span>
<span id="346">346</span>
<span id="347">347</span>
<span id="348">348</span>
<span id="349">349</span>
<span id="350">350</span>
<span id="351">351</span>
<span id="352">352</span>
<span id="353">353</span>
<span id="354">354</span>
<span id="355">355</span>
<span id="356">356</span>
<span id="357">357</span>
<span id="358">358</span>
<span id="359">359</span>
<span id="360">360</span>
<span id="361">361</span>
<span id="362">362</span>
<span id="363">363</span>
<span id="364">364</span>
<span id="365">365</span>
<span id="366">366</span>
<span id="367">367</span>
<span id="368">368</span>
<span id="369">369</span>
<span id="370">370</span>
<span id="371">371</span>
<span id="372">372</span>
<span id="373">373</span>
<span id="374">374</span>
<span id="375">375</span>
<span id="376">376</span>
<span id="377">377</span>
<span id="378">378</span>
<span id="379">379</span>
<span id="380">380</span>
<span id="381">381</span>
<span id="382">382</span>
<span id="383">383</span>
<span id="384">384</span>
<span id="385">385</span>
<span id="386">386</span>
<span id="387">387</span>
<span id="388">388</span>
<span id="389">389</span>
<span id="390">390</span>
<span id="391">391</span>
<span id="392">392</span>
<span id="393">393</span>
<span id="394">394</span>
<span id="395">395</span>
<span id="396">396</span>
<span id="397">397</span>
<span id="398">398</span>
<span id="399">399</span>
<span id="400">400</span>
<span id="401">401</span>
<span id="402">402</span>
<span id="403">403</span>
<span id="404">404</span>
<span id="405">405</span>
<span id="406">406</span>
<span id="407">407</span>
<span id="408">408</span>
<span id="409">409</span>
<span id="410">410</span>
<span id="411">411</span>
<span id="412">412</span>
<span id="413">413</span>
<span id="414">414</span>
<span id="415">415</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">app</span>::{<span class="ident">App</span>, <span class="ident">FindDelayedIntersections</span>, <span class="ident">ShowEverything</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">common</span>::<span class="ident">Warping</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">game</span>::{<span class="ident">DrawBaselayer</span>, <span class="ident">PopupMsg</span>, <span class="ident">State</span>, <span class="ident">Transition</span>};
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">helpers</span>::<span class="ident">ID</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">render</span>::<span class="ident">DrawOptions</span>;
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">sandbox</span>::{<span class="ident">GameplayMode</span>, <span class="ident">SandboxMode</span>};
<span class="kw">use</span> <span class="ident">abstutil</span>::<span class="ident">prettyprint_usize</span>;
<span class="kw">use</span> <span class="ident">geom</span>::{<span class="ident">Duration</span>, <span class="ident">Polygon</span>, <span class="ident">Pt2D</span>, <span class="ident">Ring</span>, <span class="ident">Time</span>};
<span class="kw">use</span> <span class="ident">instant</span>::<span class="ident">Instant</span>;
<span class="kw">use</span> <span class="ident">widgetry</span>::{
<span class="ident">hotkey</span>, <span class="ident">AreaSlider</span>, <span class="ident">Btn</span>, <span class="ident">Checkbox</span>, <span class="ident">Choice</span>, <span class="ident">Color</span>, <span class="ident">EventCtx</span>, <span class="ident">GeomBatch</span>, <span class="ident">GfxCtx</span>, <span class="ident">Key</span>, <span class="ident">Line</span>,
<span class="ident">Outcome</span>, <span class="ident">Panel</span>, <span class="ident">PersistentSplit</span>, <span class="ident">Text</span>, <span class="ident">UpdateType</span>, <span class="ident">Widget</span>,
};
<span class="comment">// TODO Text entry would be great</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">JumpToTime</span> {
<span class="ident">panel</span>: <span class="ident">Panel</span>,
<span class="ident">target</span>: <span class="ident">Time</span>,
<span class="ident">halt_limit</span>: <span class="ident">Duration</span>,
<span class="ident">maybe_mode</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">GameplayMode</span><span class="op">&gt;</span>,
}
<span class="kw">impl</span> <span class="ident">JumpToTime</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">ctx</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">EventCtx</span>, <span class="ident">app</span>: <span class="kw-2">&amp;</span><span class="ident">App</span>, <span class="ident">maybe_mode</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">GameplayMode</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">JumpToTime</span> {
<span class="kw">let</span> <span class="ident">target</span> <span class="op">=</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">time</span>();
<span class="kw">let</span> <span class="ident">end_of_day</span> <span class="op">=</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">get_end_of_day</span>();
<span class="kw">let</span> <span class="ident">halt_limit</span> <span class="op">=</span> <span class="ident">app</span>.<span class="ident">opts</span>.<span class="ident">time_warp_halt_limit</span>;
<span class="ident">JumpToTime</span> {
<span class="ident">target</span>,
<span class="ident">halt_limit</span>,
<span class="ident">maybe_mode</span>,
<span class="ident">panel</span>: <span class="ident">Panel</span>::<span class="ident">new</span>(<span class="ident">Widget</span>::<span class="ident">col</span>(<span class="macro">vec</span><span class="macro">!</span>[
<span class="ident">Widget</span>::<span class="ident">row</span>(<span class="macro">vec</span><span class="macro">!</span>[
<span class="ident">Line</span>(<span class="string">&quot;Jump to what time?&quot;</span>).<span class="ident">small_heading</span>().<span class="ident">draw</span>(<span class="ident">ctx</span>),
<span class="ident">Btn</span>::<span class="ident">plaintext</span>(<span class="string">&quot;X&quot;</span>)
.<span class="ident">build</span>(<span class="ident">ctx</span>, <span class="string">&quot;close&quot;</span>, <span class="ident">hotkey</span>(<span class="ident">Key</span>::<span class="ident">Escape</span>))
.<span class="ident">align_right</span>(),
]),
<span class="ident">Checkbox</span>::<span class="ident">checkbox</span>(
<span class="ident">ctx</span>,
<span class="string">&quot;skip drawing (for faster simulations)&quot;</span>,
<span class="prelude-val">None</span>,
<span class="ident">app</span>.<span class="ident">opts</span>.<span class="ident">dont_draw_time_warp</span>,
)
.<span class="ident">margin_above</span>(<span class="number">30</span>)
.<span class="ident">named</span>(<span class="string">&quot;don&#39;t draw&quot;</span>),
<span class="ident">Widget</span>::<span class="ident">horiz_separator</span>(<span class="ident">ctx</span>, <span class="number">0.25</span>).<span class="ident">margin_above</span>(<span class="number">10</span>),
<span class="kw">if</span> <span class="ident">app</span>.<span class="ident">has_prebaked</span>().<span class="ident">is_some</span>() {
<span class="ident">Widget</span>::<span class="ident">draw_batch</span>(
<span class="ident">ctx</span>,
<span class="ident">GeomBatch</span>::<span class="ident">from</span>(<span class="macro">vec</span><span class="macro">!</span>[(
<span class="ident">Color</span>::<span class="ident">WHITE</span>.<span class="ident">alpha</span>(<span class="number">0.7</span>),
<span class="ident">area_under_curve</span>(
<span class="ident">app</span>.<span class="ident">prebaked</span>().<span class="ident">active_agents</span>(<span class="ident">end_of_day</span>),
<span class="comment">// TODO Auto fill width</span>
<span class="number">500.0</span>,
<span class="number">50.0</span>,
),
)]),
)
} <span class="kw">else</span> {
<span class="ident">Widget</span>::<span class="ident">nothing</span>()
},
<span class="comment">// TODO Auto-fill width?</span>
<span class="ident">AreaSlider</span>::<span class="ident">new</span>(
<span class="ident">ctx</span>,
<span class="number">0.25</span> <span class="op">*</span> <span class="ident">ctx</span>.<span class="ident">canvas</span>.<span class="ident">window_width</span>,
<span class="ident">target</span>.<span class="ident">to_percent</span>(<span class="ident">end_of_day</span>).<span class="ident">min</span>(<span class="number">1.0</span>),
)
.<span class="ident">named</span>(<span class="string">&quot;time slider&quot;</span>)
.<span class="ident">centered_horiz</span>()
<span class="comment">// EZGUI FIXME: margin_below having no effect here, so instead we add a margin_top</span>
<span class="comment">// to the subsequent element</span>
<span class="comment">//.margin_above(16).margin_below(16),</span>
.<span class="ident">margin_above</span>(<span class="number">16</span>),
<span class="ident">build_jump_to_time_btn</span>(<span class="ident">target</span>, <span class="ident">ctx</span>),
<span class="ident">Widget</span>::<span class="ident">horiz_separator</span>(<span class="ident">ctx</span>, <span class="number">0.25</span>).<span class="ident">margin_above</span>(<span class="number">16</span>),
<span class="ident">build_jump_to_delay_picker</span>(<span class="ident">halt_limit</span>, <span class="ident">ctx</span>).<span class="ident">margin_above</span>(<span class="number">16</span>),
<span class="ident">build_jump_to_delay_button</span>(<span class="ident">halt_limit</span>, <span class="ident">ctx</span>),
]))
.<span class="ident">build</span>(<span class="ident">ctx</span>),
}
}
}
<span class="kw">impl</span> <span class="ident">State</span> <span class="kw">for</span> <span class="ident">JumpToTime</span> {
<span class="kw">fn</span> <span class="ident">event</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">ctx</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">EventCtx</span>, <span class="ident">app</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">App</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Transition</span> {
<span class="kw">match</span> <span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">event</span>(<span class="ident">ctx</span>) {
<span class="ident">Outcome</span>::<span class="ident">Clicked</span>(<span class="ident">x</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="kw">match</span> <span class="ident">x</span>.<span class="ident">as_ref</span>() {
<span class="string">&quot;close&quot;</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Pop</span>;
}
<span class="string">&quot;jump to time&quot;</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">if</span> <span class="self">self</span>.<span class="ident">target</span> <span class="op">&lt;</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">time</span>() {
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">mode</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">maybe_mode</span>.<span class="ident">take</span>() {
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Multi</span>(<span class="macro">vec</span><span class="macro">!</span>[
<span class="ident">Transition</span>::<span class="ident">Replace</span>(<span class="ident">SandboxMode</span>::<span class="ident">new</span>(<span class="ident">ctx</span>, <span class="ident">app</span>, <span class="ident">mode</span>)),
<span class="ident">Transition</span>::<span class="ident">Push</span>(<span class="ident">TimeWarpScreen</span>::<span class="ident">new</span>(<span class="ident">ctx</span>, <span class="ident">app</span>, <span class="self">self</span>.<span class="ident">target</span>, <span class="prelude-val">None</span>)),
]);
} <span class="kw">else</span> {
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Replace</span>(<span class="ident">PopupMsg</span>::<span class="ident">new</span>(
<span class="ident">ctx</span>,
<span class="string">&quot;Error&quot;</span>,
<span class="macro">vec</span><span class="macro">!</span>[<span class="string">&quot;Sorry, you can&#39;t go rewind time from this mode.&quot;</span>],
));
}
}
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Replace</span>(<span class="ident">TimeWarpScreen</span>::<span class="ident">new</span>(<span class="ident">ctx</span>, <span class="ident">app</span>, <span class="self">self</span>.<span class="ident">target</span>, <span class="prelude-val">None</span>));
}
<span class="string">&quot;choose delay&quot;</span> <span class="op">=</span><span class="op">&gt;</span> <span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Keep</span>,
<span class="string">&quot;jump to delay&quot;</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">halt_limit</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">persistent_split_value</span>(<span class="string">&quot;choose delay&quot;</span>);
<span class="ident">app</span>.<span class="ident">opts</span>.<span class="ident">time_warp_halt_limit</span> <span class="op">=</span> <span class="ident">halt_limit</span>;
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Replace</span>(<span class="ident">TimeWarpScreen</span>::<span class="ident">new</span>(
<span class="ident">ctx</span>,
<span class="ident">app</span>,
<span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">get_end_of_day</span>(),
<span class="prelude-val">Some</span>(<span class="ident">halt_limit</span>),
));
}
<span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> <span class="macro">unreachable</span><span class="macro">!</span>(),
},
<span class="ident">Outcome</span>::<span class="ident">Changed</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="ident">app</span>.<span class="ident">opts</span>.<span class="ident">dont_draw_time_warp</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">is_checked</span>(<span class="string">&quot;don&#39;t draw&quot;</span>);
}
<span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> {}
}
<span class="kw">let</span> <span class="ident">target</span> <span class="op">=</span> <span class="ident">app</span>
.<span class="ident">primary</span>
.<span class="ident">sim</span>
.<span class="ident">get_end_of_day</span>()
.<span class="ident">percent_of</span>(<span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">area_slider</span>(<span class="string">&quot;time slider&quot;</span>).<span class="ident">get_percent</span>())
.<span class="ident">round_seconds</span>(<span class="number">600.0</span>);
<span class="kw">if</span> <span class="ident">target</span> <span class="op">!</span><span class="op">=</span> <span class="self">self</span>.<span class="ident">target</span> {
<span class="self">self</span>.<span class="ident">target</span> <span class="op">=</span> <span class="ident">target</span>;
<span class="self">self</span>.<span class="ident">panel</span>
.<span class="ident">replace</span>(<span class="ident">ctx</span>, <span class="string">&quot;jump to time&quot;</span>, <span class="ident">build_jump_to_time_btn</span>(<span class="ident">target</span>, <span class="ident">ctx</span>));
}
<span class="kw">let</span> <span class="ident">halt_limit</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">persistent_split_value</span>(<span class="string">&quot;choose delay&quot;</span>);
<span class="kw">if</span> <span class="ident">halt_limit</span> <span class="op">!</span><span class="op">=</span> <span class="self">self</span>.<span class="ident">halt_limit</span> {
<span class="self">self</span>.<span class="ident">halt_limit</span> <span class="op">=</span> <span class="ident">halt_limit</span>;
<span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">replace</span>(
<span class="ident">ctx</span>,
<span class="string">&quot;jump to delay&quot;</span>,
<span class="ident">build_jump_to_delay_button</span>(<span class="ident">halt_limit</span>, <span class="ident">ctx</span>),
);
}
<span class="kw">if</span> <span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">clicked_outside</span>(<span class="ident">ctx</span>) {
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Pop</span>;
}
<span class="ident">Transition</span>::<span class="ident">Keep</span>
}
<span class="kw">fn</span> <span class="ident">draw</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">g</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">GfxCtx</span>, <span class="ident">app</span>: <span class="kw-2">&amp;</span><span class="ident">App</span>) {
<span class="ident">State</span>::<span class="ident">grey_out_map</span>(<span class="ident">g</span>, <span class="ident">app</span>);
<span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">draw</span>(<span class="ident">g</span>);
}
}
<span class="comment">// Display a nicer screen for jumping forwards in time, allowing cancellation.</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">TimeWarpScreen</span> {
<span class="ident">target</span>: <span class="ident">Time</span>,
<span class="ident">wall_time_started</span>: <span class="ident">Instant</span>,
<span class="ident">sim_time_started</span>: <span class="ident">geom</span>::<span class="ident">Time</span>,
<span class="ident">halt_upon_delay</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Duration</span><span class="op">&gt;</span>,
<span class="ident">panel</span>: <span class="ident">Panel</span>,
}
<span class="kw">impl</span> <span class="ident">TimeWarpScreen</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(
<span class="ident">ctx</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">EventCtx</span>,
<span class="ident">app</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">App</span>,
<span class="ident">target</span>: <span class="ident">Time</span>,
<span class="kw-2">mut</span> <span class="ident">halt_upon_delay</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Duration</span><span class="op">&gt;</span>,
) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Box</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">State</span><span class="op">&gt;</span> {
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">halt_limit</span>) <span class="op">=</span> <span class="ident">halt_upon_delay</span> {
<span class="kw">if</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim_cb</span>.<span class="ident">is_none</span>() {
<span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim_cb</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">Box</span>::<span class="ident">new</span>(<span class="ident">FindDelayedIntersections</span> {
<span class="ident">halt_limit</span>,
<span class="ident">report_limit</span>: <span class="ident">halt_limit</span>,
<span class="ident">currently_delayed</span>: <span class="ident">Vec</span>::<span class="ident">new</span>(),
}));
<span class="comment">// TODO Can we get away with less frequently? Not sure about all the edge cases</span>
<span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">set_periodic_callback</span>(<span class="ident">Duration</span>::<span class="ident">minutes</span>(<span class="number">1</span>));
} <span class="kw">else</span> {
<span class="ident">halt_upon_delay</span> <span class="op">=</span> <span class="prelude-val">None</span>;
}
}
<span class="ident">Box</span>::<span class="ident">new</span>(<span class="ident">TimeWarpScreen</span> {
<span class="ident">target</span>,
<span class="ident">wall_time_started</span>: <span class="ident">Instant</span>::<span class="ident">now</span>(),
<span class="ident">sim_time_started</span>: <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">time</span>(),
<span class="ident">halt_upon_delay</span>,
<span class="ident">panel</span>: <span class="ident">Panel</span>::<span class="ident">new</span>(
<span class="ident">Widget</span>::<span class="ident">col</span>(<span class="macro">vec</span><span class="macro">!</span>[
<span class="ident">Text</span>::<span class="ident">new</span>().<span class="ident">draw</span>(<span class="ident">ctx</span>).<span class="ident">named</span>(<span class="string">&quot;text&quot;</span>),
<span class="ident">Btn</span>::<span class="ident">text_bg2</span>(<span class="string">&quot;stop now&quot;</span>)
.<span class="ident">build_def</span>(<span class="ident">ctx</span>, <span class="ident">hotkey</span>(<span class="ident">Key</span>::<span class="ident">Escape</span>))
.<span class="ident">centered_horiz</span>(),
])
<span class="comment">// hardcoded width avoids jiggle due to text updates</span>
.<span class="ident">force_width</span>(<span class="number">700.0</span>),
)
.<span class="ident">build</span>(<span class="ident">ctx</span>),
})
}
}
<span class="kw">impl</span> <span class="ident">State</span> <span class="kw">for</span> <span class="ident">TimeWarpScreen</span> {
<span class="kw">fn</span> <span class="ident">event</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">ctx</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">EventCtx</span>, <span class="ident">app</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">App</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Transition</span> {
<span class="kw">if</span> <span class="ident">ctx</span>.<span class="ident">input</span>.<span class="ident">nonblocking_is_update_event</span>().<span class="ident">is_some</span>() {
<span class="ident">ctx</span>.<span class="ident">input</span>.<span class="ident">use_update_event</span>();
<span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">time_limited_step</span>(
<span class="kw-2">&amp;</span><span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">map</span>,
<span class="self">self</span>.<span class="ident">target</span> <span class="op">-</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">time</span>(),
<span class="ident">Duration</span>::<span class="ident">seconds</span>(<span class="number">0.033</span>),
<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim_cb</span>,
);
<span class="kw">for</span> (<span class="ident">t</span>, <span class="ident">maybe_i</span>, <span class="ident">alert</span>) <span class="kw">in</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">clear_alerts</span>() {
<span class="comment">// TODO Just the first :(</span>
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Replace</span>(<span class="ident">PopupMsg</span>::<span class="ident">new</span>(
<span class="ident">ctx</span>,
<span class="string">&quot;Alert&quot;</span>,
<span class="macro">vec</span><span class="macro">!</span>[<span class="macro">format</span><span class="macro">!</span>(<span class="string">&quot;At {}, near {:?}, {}&quot;</span>, <span class="ident">t</span>, <span class="ident">maybe_i</span>, <span class="ident">alert</span>)],
));
}
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="kw-2">ref</span> <span class="kw-2">mut</span> <span class="ident">cb</span>) <span class="op">=</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim_cb</span> {
<span class="kw">let</span> <span class="ident">di</span> <span class="op">=</span> <span class="ident">cb</span>.<span class="ident">downcast_mut</span>::<span class="op">&lt;</span><span class="ident">FindDelayedIntersections</span><span class="op">&gt;</span>().<span class="ident">unwrap</span>();
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>((<span class="ident">i</span>, <span class="ident">t</span>)) <span class="op">=</span> <span class="ident">di</span>.<span class="ident">currently_delayed</span>.<span class="ident">get</span>(<span class="number">0</span>) {
<span class="kw">if</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">time</span>() <span class="op">-</span> <span class="kw-2">*</span><span class="ident">t</span> <span class="op">&gt;</span> <span class="ident">di</span>.<span class="ident">halt_limit</span> {
<span class="kw">let</span> <span class="ident">id</span> <span class="op">=</span> <span class="ident">ID</span>::<span class="ident">Intersection</span>(<span class="kw-2">*</span><span class="ident">i</span>);
<span class="ident">app</span>.<span class="ident">layer</span> <span class="op">=</span>
<span class="prelude-val">Some</span>(<span class="ident">Box</span>::<span class="ident">new</span>(<span class="kw">crate</span>::<span class="ident">layer</span>::<span class="ident">traffic</span>::<span class="ident">TrafficJams</span>::<span class="ident">new</span>(<span class="ident">ctx</span>, <span class="ident">app</span>)));
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Replace</span>(<span class="ident">Warping</span>::<span class="ident">new</span>(
<span class="ident">ctx</span>,
<span class="ident">id</span>.<span class="ident">canonical_point</span>(<span class="kw-2">&amp;</span><span class="ident">app</span>.<span class="ident">primary</span>).<span class="ident">unwrap</span>(),
<span class="prelude-val">Some</span>(<span class="number">10.0</span>),
<span class="prelude-val">Some</span>(<span class="ident">id</span>),
<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">app</span>.<span class="ident">primary</span>,
));
}
}
}
<span class="kw">let</span> <span class="ident">now</span> <span class="op">=</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">time</span>();
<span class="kw">let</span> (<span class="ident">finished_after</span>, <span class="kw">_</span>) <span class="op">=</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">num_trips</span>();
<span class="kw">let</span> <span class="ident">finished_before</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">app</span>.<span class="ident">has_prebaked</span>().<span class="ident">is_some</span>() {
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">cnt</span> <span class="op">=</span> <span class="number">0</span>;
<span class="kw">for</span> (<span class="ident">t</span>, <span class="kw">_</span>, <span class="kw">_</span>, <span class="kw">_</span>) <span class="kw">in</span> <span class="kw-2">&amp;</span><span class="ident">app</span>.<span class="ident">prebaked</span>().<span class="ident">finished_trips</span> {
<span class="kw">if</span> <span class="kw-2">*</span><span class="ident">t</span> <span class="op">&gt;</span> <span class="ident">now</span> {
<span class="kw">break</span>;
}
<span class="ident">cnt</span> <span class="op">+</span><span class="op">=</span> <span class="number">1</span>;
}
<span class="prelude-val">Some</span>(<span class="ident">cnt</span>)
} <span class="kw">else</span> {
<span class="prelude-val">None</span>
};
<span class="kw">let</span> <span class="ident">elapsed_sim_time</span> <span class="op">=</span> <span class="ident">now</span> <span class="op">-</span> <span class="self">self</span>.<span class="ident">sim_time_started</span>;
<span class="kw">let</span> <span class="ident">elapsed_wall_time</span> <span class="op">=</span> <span class="ident">Duration</span>::<span class="ident">realtime_elapsed</span>(<span class="self">self</span>.<span class="ident">wall_time_started</span>);
<span class="kw">let</span> <span class="ident">txt</span> <span class="op">=</span> <span class="ident">Text</span>::<span class="ident">from_multiline</span>(<span class="macro">vec</span><span class="macro">!</span>[
<span class="comment">// I&#39;m covered in shame for not doing this from the start.</span>
<span class="ident">Line</span>(<span class="string">&quot;Let&#39;s do the time warp again!&quot;</span>).<span class="ident">small_heading</span>(),
<span class="ident">Line</span>(<span class="macro">format</span><span class="macro">!</span>(
<span class="string">&quot;{} / {}&quot;</span>,
<span class="ident">now</span>.<span class="ident">ampm_tostring</span>(),
<span class="self">self</span>.<span class="ident">target</span>.<span class="ident">ampm_tostring</span>()
)),
<span class="ident">Line</span>(<span class="macro">format</span><span class="macro">!</span>(
<span class="string">&quot;Speed: {}x&quot;</span>,
<span class="ident">prettyprint_usize</span>((<span class="ident">elapsed_sim_time</span> <span class="op">/</span> <span class="ident">elapsed_wall_time</span>) <span class="kw">as</span> <span class="ident">usize</span>)
)),
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">n</span>) <span class="op">=</span> <span class="ident">finished_before</span> {
<span class="comment">// TODO Underline</span>
<span class="ident">Line</span>(<span class="macro">format</span><span class="macro">!</span>(
<span class="string">&quot;Finished trips: {} ({} compared to before \&quot;{}\&quot;)&quot;</span>,
<span class="ident">prettyprint_usize</span>(<span class="ident">finished_after</span>),
<span class="ident">compare_count</span>(<span class="ident">finished_after</span>, <span class="ident">n</span>),
<span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">map</span>.<span class="ident">get_edits</span>().<span class="ident">edits_name</span>,
))
} <span class="kw">else</span> {
<span class="ident">Line</span>(<span class="macro">format</span><span class="macro">!</span>(
<span class="string">&quot;Finished trips: {}&quot;</span>,
<span class="ident">prettyprint_usize</span>(<span class="ident">finished_after</span>)
))
},
]);
<span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">replace</span>(<span class="ident">ctx</span>, <span class="string">&quot;text&quot;</span>, <span class="ident">txt</span>.<span class="ident">draw</span>(<span class="ident">ctx</span>).<span class="ident">named</span>(<span class="string">&quot;text&quot;</span>));
}
<span class="kw">if</span> <span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">time</span>() <span class="op">=</span><span class="op">=</span> <span class="self">self</span>.<span class="ident">target</span> {
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Pop</span>;
}
<span class="kw">match</span> <span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">event</span>(<span class="ident">ctx</span>) {
<span class="ident">Outcome</span>::<span class="ident">Clicked</span>(<span class="ident">x</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="kw">match</span> <span class="ident">x</span>.<span class="ident">as_ref</span>() {
<span class="string">&quot;stop now&quot;</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Pop</span>;
}
<span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> <span class="macro">unreachable</span><span class="macro">!</span>(),
},
<span class="kw">_</span> <span class="op">=</span><span class="op">&gt;</span> {}
}
<span class="kw">if</span> <span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">clicked_outside</span>(<span class="ident">ctx</span>) {
<span class="kw">return</span> <span class="ident">Transition</span>::<span class="ident">Pop</span>;
}
<span class="ident">ctx</span>.<span class="ident">request_update</span>(<span class="ident">UpdateType</span>::<span class="ident">Game</span>);
<span class="ident">Transition</span>::<span class="ident">Keep</span>
}
<span class="kw">fn</span> <span class="ident">draw_baselayer</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">DrawBaselayer</span> {
<span class="ident">DrawBaselayer</span>::<span class="ident">Custom</span>
}
<span class="kw">fn</span> <span class="ident">draw</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">g</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">GfxCtx</span>, <span class="ident">app</span>: <span class="kw-2">&amp;</span><span class="ident">App</span>) {
<span class="kw">if</span> <span class="ident">app</span>.<span class="ident">opts</span>.<span class="ident">dont_draw_time_warp</span> {
<span class="ident">g</span>.<span class="ident">clear</span>(<span class="ident">app</span>.<span class="ident">cs</span>.<span class="ident">section_bg</span>);
} <span class="kw">else</span> {
<span class="ident">app</span>.<span class="ident">draw</span>(
<span class="ident">g</span>,
<span class="ident">DrawOptions</span>::<span class="ident">new</span>(),
<span class="kw-2">&amp;</span><span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>,
<span class="kw-2">&amp;</span><span class="ident">ShowEverything</span>::<span class="ident">new</span>(),
);
<span class="ident">State</span>::<span class="ident">grey_out_map</span>(<span class="ident">g</span>, <span class="ident">app</span>);
}
<span class="self">self</span>.<span class="ident">panel</span>.<span class="ident">draw</span>(<span class="ident">g</span>);
}
<span class="kw">fn</span> <span class="ident">on_destroy</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="kw">_</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">EventCtx</span>, <span class="ident">app</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">App</span>) {
<span class="kw">if</span> <span class="self">self</span>.<span class="ident">halt_upon_delay</span>.<span class="ident">is_some</span>() {
<span class="macro">assert</span><span class="macro">!</span>(<span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim_cb</span>.<span class="ident">is_some</span>());
<span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim_cb</span> <span class="op">=</span> <span class="prelude-val">None</span>;
<span class="ident">app</span>.<span class="ident">primary</span>.<span class="ident">sim</span>.<span class="ident">unset_periodic_callback</span>();
}
}
}
<span class="kw">fn</span> <span class="ident">area_under_curve</span>(<span class="ident">raw</span>: <span class="ident">Vec</span><span class="op">&lt;</span>(<span class="ident">Time</span>, <span class="ident">usize</span>)<span class="op">&gt;</span>, <span class="ident">width</span>: <span class="ident">f64</span>, <span class="ident">height</span>: <span class="ident">f64</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Polygon</span> {
<span class="macro">assert</span><span class="macro">!</span>(<span class="op">!</span><span class="ident">raw</span>.<span class="ident">is_empty</span>());
<span class="kw">let</span> <span class="ident">min_x</span> <span class="op">=</span> <span class="ident">Time</span>::<span class="ident">START_OF_DAY</span>;
<span class="kw">let</span> <span class="ident">min_y</span> <span class="op">=</span> <span class="number">0</span>;
<span class="kw">let</span> <span class="ident">max_x</span> <span class="op">=</span> <span class="ident">raw</span>.<span class="ident">last</span>().<span class="ident">unwrap</span>().<span class="number">0</span>;
<span class="kw">let</span> <span class="ident">max_y</span> <span class="op">=</span> <span class="ident">raw</span>.<span class="ident">iter</span>().<span class="ident">max_by_key</span>(<span class="op">|</span>(<span class="kw">_</span>, <span class="ident">cnt</span>)<span class="op">|</span> <span class="kw-2">*</span><span class="ident">cnt</span>).<span class="ident">unwrap</span>().<span class="number">1</span>;
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">pts</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="ident">new</span>();
<span class="kw">for</span> (<span class="ident">t</span>, <span class="ident">cnt</span>) <span class="kw">in</span> <span class="ident">raw</span> {
<span class="ident">pts</span>.<span class="ident">push</span>(<span class="ident">lttb</span>::<span class="ident">DataPoint</span>::<span class="ident">new</span>(
<span class="ident">width</span> <span class="op">*</span> (<span class="ident">t</span> <span class="op">-</span> <span class="ident">min_x</span>) <span class="op">/</span> (<span class="ident">max_x</span> <span class="op">-</span> <span class="ident">min_x</span>),
<span class="ident">height</span> <span class="op">*</span> (<span class="number">1.0</span> <span class="op">-</span> (((<span class="ident">cnt</span> <span class="op">-</span> <span class="ident">min_y</span>) <span class="kw">as</span> <span class="ident">f64</span>) <span class="op">/</span> ((<span class="ident">max_y</span> <span class="op">-</span> <span class="ident">min_y</span>) <span class="kw">as</span> <span class="ident">f64</span>))),
));
}
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">downsampled</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="ident">new</span>();
<span class="kw">for</span> <span class="ident">pt</span> <span class="kw">in</span> <span class="ident">lttb</span>::<span class="ident">lttb</span>(<span class="ident">pts</span>, <span class="number">100</span>) {
<span class="ident">downsampled</span>.<span class="ident">push</span>(<span class="ident">Pt2D</span>::<span class="ident">new</span>(<span class="ident">pt</span>.<span class="ident">x</span>, <span class="ident">pt</span>.<span class="ident">y</span>));
}
<span class="ident">downsampled</span>.<span class="ident">push</span>(<span class="ident">Pt2D</span>::<span class="ident">new</span>(<span class="ident">width</span>, <span class="ident">height</span>));
<span class="ident">downsampled</span>.<span class="ident">push</span>(<span class="ident">downsampled</span>[<span class="number">0</span>]);
<span class="ident">Ring</span>::<span class="ident">must_new</span>(<span class="ident">downsampled</span>).<span class="ident">to_polygon</span>()
}
<span class="comment">// TODO Maybe color, put in helpers</span>
<span class="kw">fn</span> <span class="ident">compare_count</span>(<span class="ident">after</span>: <span class="ident">usize</span>, <span class="ident">before</span>: <span class="ident">usize</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">String</span> {
<span class="kw">if</span> <span class="ident">after</span> <span class="op">=</span><span class="op">=</span> <span class="ident">before</span> {
<span class="string">&quot;+0&quot;</span>.<span class="ident">to_string</span>()
} <span class="kw">else</span> <span class="kw">if</span> <span class="ident">after</span> <span class="op">&gt;</span> <span class="ident">before</span> {
<span class="macro">format</span><span class="macro">!</span>(<span class="string">&quot;+{}&quot;</span>, <span class="ident">prettyprint_usize</span>(<span class="ident">after</span> <span class="op">-</span> <span class="ident">before</span>))
} <span class="kw">else</span> {
<span class="macro">format</span><span class="macro">!</span>(<span class="string">&quot;-{}&quot;</span>, <span class="ident">prettyprint_usize</span>(<span class="ident">before</span> <span class="op">-</span> <span class="ident">after</span>))
}
}
<span class="kw">fn</span> <span class="ident">build_jump_to_time_btn</span>(<span class="ident">target</span>: <span class="ident">Time</span>, <span class="ident">ctx</span>: <span class="kw-2">&amp;</span><span class="ident">EventCtx</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Widget</span> {
<span class="ident">Btn</span>::<span class="ident">text_bg2</span>(<span class="macro">format</span><span class="macro">!</span>(<span class="string">&quot;Jump to {}&quot;</span>, <span class="ident">target</span>.<span class="ident">ampm_tostring</span>()))
.<span class="ident">build</span>(<span class="ident">ctx</span>, <span class="string">&quot;jump to time&quot;</span>, <span class="ident">hotkey</span>(<span class="ident">Key</span>::<span class="ident">Enter</span>))
.<span class="ident">named</span>(<span class="string">&quot;jump to time&quot;</span>)
.<span class="ident">centered_horiz</span>()
.<span class="ident">margin_above</span>(<span class="number">16</span>)
}
<span class="kw">fn</span> <span class="ident">build_jump_to_delay_button</span>(<span class="ident">halt_limit</span>: <span class="ident">Duration</span>, <span class="ident">ctx</span>: <span class="kw-2">&amp;</span><span class="ident">EventCtx</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Widget</span> {
<span class="ident">Btn</span>::<span class="ident">text_bg2</span>(<span class="macro">format</span><span class="macro">!</span>(<span class="string">&quot;Jump to next {} delay&quot;</span>, <span class="ident">halt_limit</span>))
.<span class="ident">build</span>(<span class="ident">ctx</span>, <span class="string">&quot;jump to delay&quot;</span>, <span class="ident">hotkey</span>(<span class="ident">Key</span>::<span class="ident">D</span>))
.<span class="ident">named</span>(<span class="string">&quot;jump to delay&quot;</span>)
.<span class="ident">centered_horiz</span>()
.<span class="ident">margin_above</span>(<span class="number">16</span>)
}
<span class="kw">fn</span> <span class="ident">build_jump_to_delay_picker</span>(<span class="ident">halt_limit</span>: <span class="ident">Duration</span>, <span class="ident">ctx</span>: <span class="kw-2">&amp;</span><span class="ident">EventCtx</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Widget</span> {
<span class="comment">// EZGUI TODO: it&#39;d be nice if we could style the fg color for persistent splits but this needs</span>
<span class="comment">// to be passed into the button builder in init. so either we&#39;d need to make a required</span>
<span class="comment">// argument, or introduce a persistentsplitbuilder, or re-work splitbuilder to allow mutating</span>
<span class="comment">// the color after the fact which requires holding more state to re-invoke the btnbuilder</span>
<span class="ident">PersistentSplit</span>::<span class="ident">new</span>(
<span class="ident">ctx</span>,
<span class="string">&quot;choose delay&quot;</span>,
<span class="ident">halt_limit</span>,
<span class="prelude-val">None</span>,
<span class="macro">vec</span><span class="macro">!</span>[
<span class="ident">Choice</span>::<span class="ident">new</span>(<span class="string">&quot;1 minute delay&quot;</span>, <span class="ident">Duration</span>::<span class="ident">minutes</span>(<span class="number">1</span>)),
<span class="ident">Choice</span>::<span class="ident">new</span>(<span class="string">&quot;2 minute delay&quot;</span>, <span class="ident">Duration</span>::<span class="ident">minutes</span>(<span class="number">2</span>)),
<span class="ident">Choice</span>::<span class="ident">new</span>(<span class="string">&quot;5 minute delay&quot;</span>, <span class="ident">Duration</span>::<span class="ident">minutes</span>(<span class="number">5</span>)),
<span class="ident">Choice</span>::<span class="ident">new</span>(<span class="string">&quot;10 minute delay&quot;</span>, <span class="ident">Duration</span>::<span class="ident">minutes</span>(<span class="number">10</span>)),
],
)
.<span class="ident">outline</span>(<span class="number">2.0</span>, <span class="ident">Color</span>::<span class="ident">WHITE</span>)
.<span class="ident">centered_horiz</span>()
}
</pre></div>
</section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../../";window.currentCrate = "game";</script><script src="../../../main.js"></script><script src="../../../source-script.js"></script><script src="../../../source-files.js"></script><script defer src="../../../search-index.js"></script></body></html>