Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sync building side screens (user menu on the right). E.g. selecting filtered item, setting production queue, setting battery levels, etc. #92

Closed
zuev93 opened this issue Jun 4, 2023 · 2 comments
Assignees
Labels
enhancement New feature or request

Comments

@zuev93
Copy link
Member

zuev93 commented Jun 4, 2023

See for exhaustive list
https://docs.google.com/spreadsheets/d/1klx2C6pbsQOD0CR1RiFPcvWsTv19xBcj5wd-Q-nI4YA/edit#gid=1436570526

Important:
Add default clause to catch not handled side screens and log them, to be able to track desync errors.

@zuev93 zuev93 added the enhancement New feature or request label Jun 4, 2023
@zuev93 zuev93 added this to the [Alpha] Bare minimum milestone Jun 4, 2023
@polycone polycone moved this from Todo to In Progress in @zuev93's oni_multiplayer project Jun 21, 2023
@polycone polycone self-assigned this Jun 21, 2023
@polycone
Copy link
Member

Seems like we have to sync individual screens data, because a side screen is a singleton and has a selectable target. This implicates if there's a side screen opened and the target object is being changed the side screen should be updated as well. Maybe it's a subject to change, but I don't see any generalizing options since each side screen has its own data.

@polycone polycone moved this to In Progress in Multiplayer Mod Jul 4, 2023
zuev93 added a commit that referenced this issue Jul 12, 2023
Currently it filters out all side screen since they were not tested.
Idea is to go through each of them and make sure that the event and command covers all required action syncs. It is possible that some sidescreens couldn't be easily synced through general event. However the idea is to cover 80%+ of sidescreens with general to avoid creating 70+ different events and commands.
zuev93 added a commit that referenced this issue Jul 12, 2023
Currently it filters out all side screen since they were not tested.
Idea is to go through each of them and make sure that the event and command covers all required action syncs. It is possible that some sidescreens couldn't be easily synced through general event. However the idea is to cover 80%+ of sidescreens with general to avoid creating 70+ different events and commands.
zuev93 added a commit that referenced this issue Jul 12, 2023
Currently it filters out all side screen since they were not tested.
Idea is to go through each of them and make sure that the event and command covers all required action syncs. It is possible that some sidescreens couldn't be easily synced through general event. However the idea is to cover 80%+ of sidescreens with general to avoid creating 70+ different events and commands.
zuev93 added a commit that referenced this issue Jul 12, 2023
Example: Manual Generator, Coal generator.
Also fixed multiple events firing in case of multiple calls of setTarget (if select an object multiple times).
Added AbstractInteractWithSideScreen.cs.
zuev93 added a commit that referenced this issue Jul 12, 2023
Example: Manual Generator, Coal generator.
Removed SideScreenEvents.cs :) Idea does not really scale for more complex side screens and requires a lot of exceptions.
zuev93 added a commit that referenced this issue Jul 12, 2023
zuev93 added a commit that referenced this issue Jul 12, 2023
* #92 Sync slider controls.
Example: Manual Generator, Coal generator.
Removed SideScreenEvents.cs :) Idea does not really scale for more complex side screens and requires a lot of exceptions.
zuev93 added a commit that referenced this issue Jul 12, 2023
Examples:
FoodBox - TreeFilterableSideScreen
LiquidFilter - FilterSideScreen
zuev93 added a commit that referenced this issue Jul 12, 2023
Examples:
FoodBox - TreeFilterableSideScreen
LiquidFilter - FilterSideScreen
zuev93 added a commit that referenced this issue Jul 13, 2023
zuev93 added a commit that referenced this issue Jul 13, 2023
* #92 Sync filterable side screens.
Examples:
FoodBox - TreeFilterableSideScreen
LiquidFilter - FilterSideScreen

* #92 Address comments from the PR.
zuev93 added a commit that referenced this issue Jul 14, 2023
All those events are triggered upon a game object method call and just passing all arguments to the client where the same method being called.
This being replaced by a single event class and a single command instead.

P.S. Few events have not been replaced since they requires additional surrogates to serialize their arguments data.
zuev93 added a commit that referenced this issue Jul 14, 2023
polycone pushed a commit that referenced this issue Jul 14, 2023
All those events are triggered upon a game object method call and just passing all arguments to the client where the same method being called.
This being replaced by a single event class and a single command instead.

P.S. Few events have not been replaced since they requires additional surrogates to serialize their arguments data.
zuev93 added a commit that referenced this issue Jul 14, 2023
zuev93 added a commit that referenced this issue Jul 14, 2023
zuev93 added a commit that referenced this issue Jul 15, 2023
PassengerRocketModule, RocketControlStation, ICheckboxControl, SuitLocker, IThresholdSwitch,
ISliderControl, Valve.

Added support for interface as patch target type.
zuev93 added a commit that referenced this issue Jul 15, 2023
PassengerRocketModule, RocketControlStation, ICheckboxControl, SuitLocker, IThresholdSwitch,
ISliderControl, Valve.

Added support for interface as patch target type.
zuev93 added a commit that referenced this issue Jul 15, 2023
PassengerRocketModule, RocketControlStation, ICheckboxControl, SuitLocker, IThresholdSwitch,
ISliderControl, Valve.

Added support for interface as patch target type.
zuev93 added a commit that referenced this issue Jul 15, 2023
PassengerRocketModule, RocketControlStation, ICheckboxControl, SuitLocker, IThresholdSwitch,
ISliderControl, Valve.

Added support for interface as patch target type.
zuev93 added a commit that referenced this issue Jul 16, 2023
zuev93 added a commit that referenced this issue Jul 16, 2023
@polycone polycone assigned zuev93 and polycone and unassigned polycone Jul 18, 2023
zuev93 added a commit that referenced this issue Jul 19, 2023
…castReceiver, LaunchConditionManager, GeoTuner.Instance, IConfigurableConsumer types to enable their side screen syncs.

Also fixed containers `Sweep only` button (added Storage.SetOnlyFetchMarkedItems sync).
zuev93 added a commit that referenced this issue Jul 19, 2023
…castReceiver, LaunchConditionManager, GeoTuner.Instance, IConfigurableConsumer types to enable their side screen syncs.

Also fixed containers `Sweep only` button (added Storage.SetOnlyFetchMarkedItems sync).
zuev93 added a commit that referenced this issue Jul 19, 2023
…castReceiver, LaunchConditionManager, GeoTuner.Instance, IConfigurableConsumer types to enable their side screen syncs.

Also fixed containers `Sweep only` button (added Storage.SetOnlyFetchMarkedItems sync).
zuev93 added a commit that referenced this issue Jul 21, 2023
zuev93 added a commit that referenced this issue Jul 21, 2023
@zuev93
Copy link
Member Author

zuev93 commented Jul 21, 2023

Most of the sidescreens (56 out of 69 ) are synced except few left overs (created #169 to cover them).

@zuev93 zuev93 closed this as completed Jul 21, 2023
@github-project-automation github-project-automation bot moved this from In Progress to Done in Multiplayer Mod Jul 21, 2023
@github-project-automation github-project-automation bot moved this from In Progress to Done in @zuev93's oni_multiplayer project Jul 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Archived in project
Development

No branches or pull requests

2 participants