relrelb
ad944800be
core: Perfer `Loader`'s `FetchError`
...
`NetworkError` and `NetworkUnavailable` were rarely used, and they
were very similar to `FetchError`.
2022-03-17 20:31:59 -07:00
relrelb
8a17d88c77
core: Remove `NavigatorBackend::time_since_launch`
...
`core` already depends on the `instant` crate which abstracts
`std::instant::Instant` and polyfills it on Web. Use it to replace
`NavigatorBackend::time_since_launch` in order to make `NavigatorBackend`
a little smaller and more simple.
2022-03-17 00:08:44 +02:00
relrelb
031126a1b8
core: Remove `LocaleBackend`
...
Previously there were 3 implementations of `LocaleBackend`:
`DesktopLocaleBackend`, `WebLocaleBackend` and `NullLocaleBackend`.
While `DesktopLocaleBackend`, `WebLocaleBackend` were identical,
`NullLocaleBackend` always returned a fixed date/time for tests
determinism.
Unify them in a single file, and use `cfg!(test)` and a new dedicated
`deterministic` feature to decide whether to mock date/time or not.
This should not cause any behavioral changes.
2022-03-16 19:57:53 +02:00
relrelb
5da7149aaf
desktop: Access `App` fields directly
...
I think older Rust versions couldn't handle this, but I may be wrong.
Anyway, now it works and is more straight-forward.
2022-03-16 18:49:59 +02:00
relrelb
32f5cd22a4
desktop: Split `movie` and `movie_url`
...
This makes the code a little more readble.
2022-03-14 21:59:16 +02:00
relrelb
83287e4d48
desktop: Store only `bool` instead of `SwfMovie`
...
Because it was only used as such.
2022-03-14 21:59:16 +02:00
relrelb
a3f858c510
desktop: Turn `load_from_file_dialog` into `pick_file`
...
This deduplicates some code (the calls to `parse_url` and `load_movie`),
plus makes the path choosing flow more linear.
2022-03-14 21:59:16 +02:00
relrelb
d22186c088
desktop: Extract `parse_url` from `load_movie_from_path`
...
And change `load_movie_from_path` to `load_movie`.
2022-03-14 21:59:16 +02:00
relrelb
8ad8122b68
desktop: Change return type of `App::run` to `!`
...
The never type is already stable for function return types.
2022-03-14 21:59:16 +02:00
relrelb
7a591b885c
desktop: Remove `loop` from `App::run`
...
`winit::event_loop::EventLoop::run` never returns, so there's no
point calling it over and over again.
2022-03-14 21:59:16 +02:00
Chris Midgley
453b0f1fe3
desktop: swap out tinyfiledialogs for rfd
2022-02-23 22:45:26 +02:00
Mike Welsh
d5986a7294
desktop: Don't swallow Escape key ( fix #6135 )
2022-01-25 00:22:28 -08:00
relrelb
82b4c6ef27
core: Support mouse buttons in `KeyCode`
...
Add `MouseLeft`, `MouseRight` and `MouseMiddle` to `KeyCode` for
AVM1's `Key.isDown()` function.
2022-01-10 01:18:49 -08:00
relrelb
6396c21bc0
core: Rename `PlayerEvent::MouseLeft` to `MouseLeave`
...
So it's not consfusing with `KeyCode::MouseLeft`.
2022-01-10 01:18:49 -08:00
relrelb
07c5330456
core: Introduce `InputManager`
...
`InputManager` encapsulates the common logic that previously the
`UiBackend`s used to implement.
2021-12-15 14:20:30 -08:00
relrelb
0e3168f99e
desktop: Small event-related cleanups
...
* Use `match state` for `MouseInput` events.
* Remove `ReceivedCharacter` handling from `DesktopUiBackend::handle_event`.
2021-11-25 07:35:33 +02:00
relrelb
cbce91365c
desktop: Track `keys_down` by `KeyCode`
...
This makes `DesktopUiBackend::is_key_down` a simple one-line check.
Also unify the handling code of `ElementState::Pressed` and `ElementState::Released`,
which had a lot of common code.
2021-11-25 07:35:33 +02:00
Tal Hayon
7ed38850fd
core: implement displayState for Stage in avm1/2
2021-11-11 16:20:05 -07:00
Adrian Wielgosik
8cc00f32bb
chore: Stop using traits available in prelude
2021-10-21 10:24:05 -07:00
dependabot[bot]
40aeffb91d
build(deps): bump clap from 3.0.0-beta.4 to 3.0.0-beta.5
...
Bumps [clap](https://github.com/clap-rs/clap ) from 3.0.0-beta.4 to 3.0.0-beta.5.
- [Release notes](https://github.com/clap-rs/clap/releases )
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/clap-rs/clap/commits )
---
updated-dependencies:
- dependency-name: clap
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2021-10-18 14:50:19 -07:00
Chris Midgley
b0e3698c44
desktop: correct error when passing an invalid absolute windows filepath
2021-10-09 11:26:45 -07:00
relrelb
3aeffce365
desktop: Refactor clap settings
...
* Fix #5252 by passing `multiple_occurrences = true`.
* Remove `case_insensitive = true`.
* Reformat comments a bit.
2021-09-08 16:04:09 -07:00
Mike Welsh
94d02fa653
core: Add AudioMixer to core
...
Pull out the audio mixing code from desktop and add it to core.
This will allow other backends to use it (such as the web audio
backend) to get consistent audio across all platforms.
2021-09-07 16:48:34 -07:00
Tal Hayon
4625ca0e0b
web: fix base param
2021-09-07 16:45:35 -07:00
David Wendt
116fb1f323
avm2: Impl `Sound.play`
...
This does not (yet) implement the third `SoundTransform` parameter on `play`.
2021-09-03 16:47:02 -06:00
David Wendt
3b6eea2a1d
core: Report sound duration as `f64` and round down in AS1
2021-09-03 16:47:02 -06:00
David Wendt
89b411593f
avm2: Impl `Sound.bytesTotal`
2021-09-03 16:47:02 -06:00
relrelb
fff739d5c9
desktop: Cleanup `CpalAudioBackend`
2021-09-03 22:48:35 +03:00
relrelb
66e2a2166e
desktop: Revert cpal initialization on a separate thread
...
It was initialized on a separate thread since 6178dd9ef1
,
as a workaround for Windows.
But now thanks to https://github.com/RustAudio/cpal/pull/597 , this
is no longer needed, and cpal can be initialized on the same thread
as before.
2021-09-03 22:48:35 +03:00
David Wendt
dae087017c
desktop: Add video backend to timedemo
2021-08-21 14:13:55 -06:00
EmperorBale
792a0d6502
desktop: Fix clap settings
2021-08-20 21:41:44 -06:00
Adrian Wielgosik
b940e7f00f
Extension: Sidestep CORS issues by offering to load the SWF in a tab
2021-08-02 21:28:16 +02:00
Adrian Wielgosik
35d543b610
desktop: Add a flag to disable AS3 warning popup
2021-07-06 17:03:45 +02:00
relrelb
0fd1c05fd5
chore: Use into() in more places
2021-06-22 11:49:41 -07:00
relrelb
f82faf9603
chore: Appease clippy
2021-06-05 10:16:00 -07:00
Mike Welsh
3ddb97d2f6
core: Add SwfMovie::frame_rate and num_frames
2021-05-23 23:02:38 -07:00
Mike Welsh
077c7f045e
core: Add SwfMovie::stage_size
...
Change `SwfMovie::width` and `height` to return `Twips`.
2021-05-23 23:02:38 -07:00
Mike Welsh
e1439f4105
swf: Add HeaderExt struct providing additional info
...
When reading an SWF, search for FileAttributes and
SetBackgroundColor and return this along with the header data
because it's useful (in particular, the AS3 flag).
2021-05-23 23:02:38 -07:00
relrelb
7acf0349c3
desktop: Refactor main.rs
2021-05-11 18:58:08 -07:00
Mike Welsh
6051ee4cb1
core: Disallow .. in shared object paths ( fix #3961 )
...
Toss out any shared objects that contain ".." in the name
to avoid accessing files outside of the Ruffle data directory.
The DiskStorageBackend also will fail any requests with a ".."
component as an extra precaution.
Fixes #3961 .
2021-05-09 23:20:32 -07:00
Mike Welsh
339f0e2862
desktop: Append .sol extension to SharedObject files
...
Also, prefix the shared object name with # if it contains a
slash, (e.g. `#mygame/foo`). This matches Flash's directory
structure and makes it easier to transfer saved data to Ruffle.
2021-05-09 23:20:32 -07:00
CUB3D
cd1cde1708
avm1: Implement de/serialization of shared objects into Flash Player Lso format
2021-05-09 23:20:32 -07:00
Mike Welsh
ba7fd1b2b9
chore: Appease clippy, bump url
...
Bump url and avoid `Url::into_string` deprecation warnings.
Fix `single_char_pattern` clippy lints.
2021-05-07 20:51:26 -07:00
Mike Welsh
e35933aeee
desktop: Fix window size calculation
...
Change width/height CLI paramters to `f64`, and also clamp window
size to minimum of 1x1 to prevent panics from invalid window
dimensions.
2021-05-06 17:56:35 -07:00
Nicolas F
423fcf5019
desktop: add parameters to specify window size
...
This adds two optional parameters, --width and --height, which
allow the user to specify a desired physical window width and
height to be used. If only one of the two parameters is present,
the other will be deduced from it and the movie's aspect ratio.
If neither are present, the window's size is set to the movie's
logical size, in accordance with the behaviour before this change.
2021-05-06 15:58:41 -07:00
Moulins
272841729e
core: Replace SwfMovie's PropertyMap by a list of key-value pairs
...
PropertyMap is an AVM1-only concept, and shouldn't be used on cross-VM
types.
2021-05-03 13:47:14 -07:00
David Wendt
0c6584ca03
core: Store the viewport's scale factor on the stage
2021-04-26 01:15:42 -07:00
relrelb
79bcee07f5
audio: Properly round sound duration
...
Previously it was always rounded down. Change it to the nearest
integer.
2021-04-17 09:11:50 -07:00
EmperorBale
1020aa84d6
chore: Simplify response.status() formatting
2021-04-06 16:01:34 -06:00
EmperorBale
e36ad2874b
chore: Make error message more helpful
2021-04-06 16:01:34 -06:00