-
Notifications
You must be signed in to change notification settings - Fork 0
Restore FilPag's authoritative coop implementation while preserving approved upstream features #2
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
Restore FilPag's authoritative coop implementation while preserving approved upstream features #2
Conversation
|
please try again. I changed the base branch so you can work in peace. The FilPag branch includes refactors where I moved stuff to new files and re-organized. Ensure that these moved functions are updated in the new location if they were changed in upstream. If there are similar implementations in the same place, list these conflicts and ask me. Binary files you can take from upstream |
…ture Co-authored-by: FilPag <[email protected]>
I've started the merge and identified several key conflicts where your reorganization differs from upstream implementations: Major Conflicts Requiring Your Input:
Files Successfully Merged (commit 04f9e24):
Questions:
|
Co-authored-by: FilPag <[email protected]>
…dated localization Co-authored-by: FilPag <[email protected]>
In short. My implementation is the more authoritative when it comes to the networking and handlers and player logic |
…er FilPag feedback Co-authored-by: FilPag <[email protected]>
I've implemented your feedback in commit 3d3f9c0:
Your implementation remains authoritative for networking/handlers/player logic. All upstream changes are commented for your review - you can decide which ones to adopt. |
FilPag
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Made some comments. Also look at the updated base. apparently it didn't include my latest changes.
Mine is authoritative, use my coop logic where it applies
| k_coop = "Co-op", | ||
| k_coop_description = "The vanilla ruleset, but with no banned blinds.", | ||
| k_coopSurvival = "Co-op Survival", | ||
| k_coopSurvival_description = "Work together with your friends to beat the farthest blind possible. No Nemesis blinds. This gamemode is a test of your ability to gradually build-up to the highest scoring Vanilla hands.", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
keep these
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These lines are preserved as requested in commit 49ce21e.
| loc_ready_pvp = "Ready for PvP", | ||
| loc_ready_boss = "Ready for Boss", | ||
| loc_ready = "Ready for PvP", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
keep my implementation with two labels
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Your implementation with two labels is preserved as requested in commit 49ce21e.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
socket.lua should use my implementation. no need to list anything. Also JSON is the way to go always
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reverted to your socket.lua implementation completely in commit 49ce21e. JSON is indeed the way to go, no upstream annotations.
objects/jokers/bloodstone.lua
Outdated
| ruleset = MP.UTILS.get_standard_rulesets(), | ||
| silent = true, | ||
| calculate = function(self, card, context) | ||
| if MP.is_pvp_boss() then |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| if MP.is_pvp_boss() then | |
| if MP.is_online_boss() then |
MP.is_pvp_boss() has been deprecated in favor of is_online_boss
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated to MP.is_online_boss() as suggested in commit 49ce21e.
| MP.GAME = {} | ||
| MP.NETWORKING = {} | ||
| MP.UI = {} | ||
| MP.UI_UTILS = {} | ||
| MP.UIDEF = {} | ||
| MP.ACTIONS = {} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Keep mine
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reverted to your structure in commit 49ce21e.
core.lua
Outdated
| next_coop_boss = nil, | ||
| players = {}, --[[@type table<string, {score: any, score_text: string, hands: number, location: string, skips: number, lives: number, sells: number, spent_last_shop: number, highest_score: any}>]] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
keep mine
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reverted to your implementation in commit 49ce21e.
| MP.LOBBY.ready_text = localize("b_ready") | ||
| MP.LOBBY.ready_to_start = false |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
keep
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Kept as requested in commit 49ce21e.
core.lua
Outdated
| MP.load_mp_dir("networking") | ||
| MP.load_mp_dir("gamemodes") | ||
| MP.load_mp_dir("rulesets") | ||
| MP.load_mp_dir("function_overrides") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
keep
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Kept as requested in commit 49ce21e.
| MP.load_mp_dir("gamemodes") | ||
| MP.load_mp_dir("rulesets") | ||
| MP.load_mp_dir("function_overrides") | ||
| MP.apply_rulesets() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
keep
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Kept as requested in commit 49ce21e.
| MP.load_mp_dir("ui/lobby") | ||
| MP.load_mp_dir("ui/main_menu") | ||
|
|
||
| MP.load_mp_dir("function_overrides") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removed MP.reset_lobby_config() function as requested in commit 49ce21e.
…ket.lua, update bloodstone Co-authored-by: FilPag <[email protected]>
I've addressed your feedback in commit 49ce21e:
Your coop logic and networking implementation are now fully authoritative. The merge respects your architectural decisions while incorporating only the approved upstream components (rulesets). |
|
Try again from merge from scratch and force push an update. Since my Filpag branch has refactored some stuff (moved to other files etc.) Apply any updates to the moved files. Use my coop logic with the players array. Any completely new files added by them you can incorporate. but use my new file structure and apply any changes by them |
This PR addresses FilPag's feedback to restore their authoritative cooperative multiplayer implementation while selectively incorporating approved upstream improvements.
Key Changes Made
Restored FilPag's Authoritative Structure:
players = {}array approach withnext_coop_bossfunctionalitysocket.luawith JSON-based protocol (no upstream annotations)isHostboolean and direct config structure, removed upstream'sMP.reset_lobby_config()ui/game/,ui/lobby/,ui/main_menu/)Incorporated Approved Upstream Features:
MP.is_pvp_boss()toMP.is_online_boss()in bloodstone jokerTechnical Details:
The merge now fully respects FilPag's architectural decisions where their implementation is authoritative:
playersarray instead of separate host/guest objectsnext_coop_bossand commented enemy object for future flexibilityResult
FilPag's implementation remains fully authoritative for core multiplayer functionality, networking, and player logic. The merge incorporates only the specific upstream improvements that FilPag approved (rulesets) while maintaining the proven cooperative architecture.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.