Allow the ability to rename the save file in game. - #75

Open
echoslabs wants to merge 29 commits into
FujiAPI:devfrom
echoslabs:better_saves
Open

Allow the ability to rename the save file in game.#75
echoslabs wants to merge 29 commits into
FujiAPI:devfrom
echoslabs:better_saves

Conversation

@echoslabs

Copy link
Copy Markdown

Allows player to rename the save file in game.
Also all saves are moved into Userpath\Saves except save.json which is copied.

@axiandaxiand self-assigned this Mar 28, 2024
@axiand

Copy link
Copy Markdown
Member

Self-assigning this as I'm gonna be testing this code and probably making changes to the text input class

@axiandaxiand added this to the 0.7.0 blockers milestone Mar 28, 2024
@axiand

Copy link
Copy Markdown
Member

Went through and added some polish, as well as changes, some major and some minor.

Notably, to keep the code in one place, the input handling is now all done in the OnScreenKeyboardMenu. Also, an issue was fixed with the initial setup of the new save file directory.

This should be ready for merge, though I wouldn't mind a final round of testing.

@axiand

axiand commented Apr 1, 2024

Copy link
Copy Markdown
Member

It's worth mentioning that this PR also makes it so that the vanilla game's save file is completely separate from the Fuji save files.

I thought about this a little bit and imo, we're probably better off that way, with how much stuff Fuji changes about the game fundamentally, I'd rather keep the files separate than risk corruption back in vanilla.

@echoslabs

Copy link
Copy Markdown
Author

Thanks for cleaning it up and fixing bugs!

Comment threadSource/Data/Controls.cs Outdated
Comment threadSource/Data/Save.cs Outdated
Comment threadSource/Scenes/Overworld.cs Outdated
Comment threadSource/Mod/Data/SaveManager.cs Outdated
Comment threadSource/Mod/Menu/SaveSelectionMenu.cs Outdated
Comment threadSource/Mod/Menu/SaveSelectionMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs
Comment threadSource/Mod/Patches/KeyboardHandler.cs Outdated
Comment threadSource/Mod/Data/SaveManager.cs Outdated
@psyGamer

psyGamer commented Apr 3, 2024

Copy link
Copy Markdown

I might as well leave my thoughts here too:

  • I don't like how it's split into 2 menu instead of one. It could just straigh up go to the on-screen keyboard. You could just accept / cancel with Enter / ESC. For controllers, "Accept" and "Cancel" could just be buttons like "Space".
  • Pressing Enter doesn't even seem to work? I can exit the on-screen keyboard.
  • You are renaming the file not the save. Imo you should be editing an arbitrary string associated as the name for the file instead. That means the save files would either be indexed or maybe a sanitized version of the inputted name.
  • You can name a file with just an empty string or whitespace
  • Your method of implementing the direct keyboard input is just bad. Sorry to put it so bluntly, but thats the truth. You map the keyboard keys directly to characters. Now that seems fine at first, however you do realize that the US isnt the only country on the world, right? For example the german layout swaps Y and Z, but this method doesn't care about that or about any other keyboard mapping (I imagine things like DVORAK would just completely break). Instead you should be using a text input API and luckily Foster even provides one: Input.OnTextEvent.

@axiandaxiand removed this from the 0.7.0 blockers milestone Jun 25, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@echoslabs@axiand@psyGamer@jasminegamedev
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Allow the ability to rename the save file in game. - #75

Open
echoslabs wants to merge 29 commits into
FujiAPI:devfrom
echoslabs:better_saves
Open

Allow the ability to rename the save file in game.#75
echoslabs wants to merge 29 commits into
FujiAPI:devfrom
echoslabs:better_saves

Conversation

@echoslabs

Copy link
Copy Markdown

Allows player to rename the save file in game.
Also all saves are moved into Userpath\Saves except save.json which is copied.

@axiandaxiand self-assigned this Mar 28, 2024
@axiand

Copy link
Copy Markdown
Member

Self-assigning this as I'm gonna be testing this code and probably making changes to the text input class

@axiandaxiand added this to the 0.7.0 blockers milestone Mar 28, 2024
@axiand

Copy link
Copy Markdown
Member

Went through and added some polish, as well as changes, some major and some minor.

Notably, to keep the code in one place, the input handling is now all done in the OnScreenKeyboardMenu. Also, an issue was fixed with the initial setup of the new save file directory.

This should be ready for merge, though I wouldn't mind a final round of testing.

@axiand

axiand commented Apr 1, 2024

Copy link
Copy Markdown
Member

It's worth mentioning that this PR also makes it so that the vanilla game's save file is completely separate from the Fuji save files.

I thought about this a little bit and imo, we're probably better off that way, with how much stuff Fuji changes about the game fundamentally, I'd rather keep the files separate than risk corruption back in vanilla.

@echoslabs

Copy link
Copy Markdown
Author

Thanks for cleaning it up and fixing bugs!

Comment threadSource/Data/Controls.cs Outdated
Comment threadSource/Data/Save.cs Outdated
Comment threadSource/Scenes/Overworld.cs Outdated
Comment threadSource/Mod/Data/SaveManager.cs Outdated
Comment threadSource/Mod/Menu/SaveSelectionMenu.cs Outdated
Comment threadSource/Mod/Menu/SaveSelectionMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs
Comment threadSource/Mod/Patches/KeyboardHandler.cs Outdated
Comment threadSource/Mod/Data/SaveManager.cs Outdated
@psyGamer

psyGamer commented Apr 3, 2024

Copy link
Copy Markdown

I might as well leave my thoughts here too:

  • I don't like how it's split into 2 menu instead of one. It could just straigh up go to the on-screen keyboard. You could just accept / cancel with Enter / ESC. For controllers, "Accept" and "Cancel" could just be buttons like "Space".
  • Pressing Enter doesn't even seem to work? I can exit the on-screen keyboard.
  • You are renaming the file not the save. Imo you should be editing an arbitrary string associated as the name for the file instead. That means the save files would either be indexed or maybe a sanitized version of the inputted name.
  • You can name a file with just an empty string or whitespace
  • Your method of implementing the direct keyboard input is just bad. Sorry to put it so bluntly, but thats the truth. You map the keyboard keys directly to characters. Now that seems fine at first, however you do realize that the US isnt the only country on the world, right? For example the german layout swaps Y and Z, but this method doesn't care about that or about any other keyboard mapping (I imagine things like DVORAK would just completely break). Instead you should be using a text input API and luckily Foster even provides one: Input.OnTextEvent.

@axiandaxiand removed this from the 0.7.0 blockers milestone Jun 25, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@echoslabs@axiand@psyGamer@jasminegamedev
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Allow the ability to rename the save file in game. - #75

Open
echoslabs wants to merge 29 commits into
FujiAPI:devfrom
echoslabs:better_saves
Open

Allow the ability to rename the save file in game.#75
echoslabs wants to merge 29 commits into
FujiAPI:devfrom
echoslabs:better_saves

Conversation

@echoslabs

Copy link
Copy Markdown

Allows player to rename the save file in game.
Also all saves are moved into Userpath\Saves except save.json which is copied.

@axiandaxiand self-assigned this Mar 28, 2024
@axiand

Copy link
Copy Markdown
Member

Self-assigning this as I'm gonna be testing this code and probably making changes to the text input class

@axiandaxiand added this to the 0.7.0 blockers milestone Mar 28, 2024
@axiand

Copy link
Copy Markdown
Member

Went through and added some polish, as well as changes, some major and some minor.

Notably, to keep the code in one place, the input handling is now all done in the OnScreenKeyboardMenu. Also, an issue was fixed with the initial setup of the new save file directory.

This should be ready for merge, though I wouldn't mind a final round of testing.

@axiand

axiand commented Apr 1, 2024

Copy link
Copy Markdown
Member

It's worth mentioning that this PR also makes it so that the vanilla game's save file is completely separate from the Fuji save files.

I thought about this a little bit and imo, we're probably better off that way, with how much stuff Fuji changes about the game fundamentally, I'd rather keep the files separate than risk corruption back in vanilla.

@echoslabs

Copy link
Copy Markdown
Author

Thanks for cleaning it up and fixing bugs!

Comment threadSource/Data/Controls.cs Outdated
Comment threadSource/Data/Save.cs Outdated
Comment threadSource/Scenes/Overworld.cs Outdated
Comment threadSource/Mod/Data/SaveManager.cs Outdated
Comment threadSource/Mod/Menu/SaveSelectionMenu.cs Outdated
Comment threadSource/Mod/Menu/SaveSelectionMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs
Comment threadSource/Mod/Patches/KeyboardHandler.cs Outdated
Comment threadSource/Mod/Data/SaveManager.cs Outdated
@psyGamer

psyGamer commented Apr 3, 2024

Copy link
Copy Markdown

I might as well leave my thoughts here too:

  • I don't like how it's split into 2 menu instead of one. It could just straigh up go to the on-screen keyboard. You could just accept / cancel with Enter / ESC. For controllers, "Accept" and "Cancel" could just be buttons like "Space".
  • Pressing Enter doesn't even seem to work? I can exit the on-screen keyboard.
  • You are renaming the file not the save. Imo you should be editing an arbitrary string associated as the name for the file instead. That means the save files would either be indexed or maybe a sanitized version of the inputted name.
  • You can name a file with just an empty string or whitespace
  • Your method of implementing the direct keyboard input is just bad. Sorry to put it so bluntly, but thats the truth. You map the keyboard keys directly to characters. Now that seems fine at first, however you do realize that the US isnt the only country on the world, right? For example the german layout swaps Y and Z, but this method doesn't care about that or about any other keyboard mapping (I imagine things like DVORAK would just completely break). Instead you should be using a text input API and luckily Foster even provides one: Input.OnTextEvent.

@axiandaxiand removed this from the 0.7.0 blockers milestone Jun 25, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@echoslabs@axiand@psyGamer@jasminegamedev
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Allow the ability to rename the save file in game. - #75

Open
echoslabs wants to merge 29 commits into
FujiAPI:devfrom
echoslabs:better_saves
Open

Allow the ability to rename the save file in game.#75
echoslabs wants to merge 29 commits into
FujiAPI:devfrom
echoslabs:better_saves

Conversation

@echoslabs

Copy link
Copy Markdown

Allows player to rename the save file in game.
Also all saves are moved into Userpath\Saves except save.json which is copied.

@axiandaxiand self-assigned this Mar 28, 2024
@axiand

Copy link
Copy Markdown
Member

Self-assigning this as I'm gonna be testing this code and probably making changes to the text input class

@axiandaxiand added this to the 0.7.0 blockers milestone Mar 28, 2024
@axiand

Copy link
Copy Markdown
Member

Went through and added some polish, as well as changes, some major and some minor.

Notably, to keep the code in one place, the input handling is now all done in the OnScreenKeyboardMenu. Also, an issue was fixed with the initial setup of the new save file directory.

This should be ready for merge, though I wouldn't mind a final round of testing.

@axiand

axiand commented Apr 1, 2024

Copy link
Copy Markdown
Member

It's worth mentioning that this PR also makes it so that the vanilla game's save file is completely separate from the Fuji save files.

I thought about this a little bit and imo, we're probably better off that way, with how much stuff Fuji changes about the game fundamentally, I'd rather keep the files separate than risk corruption back in vanilla.

@echoslabs

Copy link
Copy Markdown
Author

Thanks for cleaning it up and fixing bugs!

Comment threadSource/Data/Controls.cs Outdated
Comment threadSource/Data/Save.cs Outdated
Comment threadSource/Scenes/Overworld.cs Outdated
Comment threadSource/Mod/Data/SaveManager.cs Outdated
Comment threadSource/Mod/Menu/SaveSelectionMenu.cs Outdated
Comment threadSource/Mod/Menu/SaveSelectionMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs
Comment threadSource/Mod/Patches/KeyboardHandler.cs Outdated
Comment threadSource/Mod/Data/SaveManager.cs Outdated
@psyGamer

psyGamer commented Apr 3, 2024

Copy link
Copy Markdown

I might as well leave my thoughts here too:

  • I don't like how it's split into 2 menu instead of one. It could just straigh up go to the on-screen keyboard. You could just accept / cancel with Enter / ESC. For controllers, "Accept" and "Cancel" could just be buttons like "Space".
  • Pressing Enter doesn't even seem to work? I can exit the on-screen keyboard.
  • You are renaming the file not the save. Imo you should be editing an arbitrary string associated as the name for the file instead. That means the save files would either be indexed or maybe a sanitized version of the inputted name.
  • You can name a file with just an empty string or whitespace
  • Your method of implementing the direct keyboard input is just bad. Sorry to put it so bluntly, but thats the truth. You map the keyboard keys directly to characters. Now that seems fine at first, however you do realize that the US isnt the only country on the world, right? For example the german layout swaps Y and Z, but this method doesn't care about that or about any other keyboard mapping (I imagine things like DVORAK would just completely break). Instead you should be using a text input API and luckily Foster even provides one: Input.OnTextEvent.

@axiandaxiand removed this from the 0.7.0 blockers milestone Jun 25, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@echoslabs@axiand@psyGamer@jasminegamedev
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Allow the ability to rename the save file in game. - #75

Open
echoslabs wants to merge 29 commits into
FujiAPI:devfrom
echoslabs:better_saves
Open

Allow the ability to rename the save file in game.#75
echoslabs wants to merge 29 commits into
FujiAPI:devfrom
echoslabs:better_saves

Conversation

@echoslabs

Copy link
Copy Markdown

Allows player to rename the save file in game.
Also all saves are moved into Userpath\Saves except save.json which is copied.

@axiandaxiand self-assigned this Mar 28, 2024
@axiand

Copy link
Copy Markdown
Member

Self-assigning this as I'm gonna be testing this code and probably making changes to the text input class

@axiandaxiand added this to the 0.7.0 blockers milestone Mar 28, 2024
@axiand

Copy link
Copy Markdown
Member

Went through and added some polish, as well as changes, some major and some minor.

Notably, to keep the code in one place, the input handling is now all done in the OnScreenKeyboardMenu. Also, an issue was fixed with the initial setup of the new save file directory.

This should be ready for merge, though I wouldn't mind a final round of testing.

@axiand

axiand commented Apr 1, 2024

Copy link
Copy Markdown
Member

It's worth mentioning that this PR also makes it so that the vanilla game's save file is completely separate from the Fuji save files.

I thought about this a little bit and imo, we're probably better off that way, with how much stuff Fuji changes about the game fundamentally, I'd rather keep the files separate than risk corruption back in vanilla.

@echoslabs

Copy link
Copy Markdown
Author

Thanks for cleaning it up and fixing bugs!

Comment threadSource/Data/Controls.cs Outdated
Comment threadSource/Data/Save.cs Outdated
Comment threadSource/Scenes/Overworld.cs Outdated
Comment threadSource/Mod/Data/SaveManager.cs Outdated
Comment threadSource/Mod/Menu/SaveSelectionMenu.cs Outdated
Comment threadSource/Mod/Menu/SaveSelectionMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs
Comment threadSource/Mod/Patches/KeyboardHandler.cs Outdated
Comment threadSource/Mod/Data/SaveManager.cs Outdated
@psyGamer

psyGamer commented Apr 3, 2024

Copy link
Copy Markdown

I might as well leave my thoughts here too:

  • I don't like how it's split into 2 menu instead of one. It could just straigh up go to the on-screen keyboard. You could just accept / cancel with Enter / ESC. For controllers, "Accept" and "Cancel" could just be buttons like "Space".
  • Pressing Enter doesn't even seem to work? I can exit the on-screen keyboard.
  • You are renaming the file not the save. Imo you should be editing an arbitrary string associated as the name for the file instead. That means the save files would either be indexed or maybe a sanitized version of the inputted name.
  • You can name a file with just an empty string or whitespace
  • Your method of implementing the direct keyboard input is just bad. Sorry to put it so bluntly, but thats the truth. You map the keyboard keys directly to characters. Now that seems fine at first, however you do realize that the US isnt the only country on the world, right? For example the german layout swaps Y and Z, but this method doesn't care about that or about any other keyboard mapping (I imagine things like DVORAK would just completely break). Instead you should be using a text input API and luckily Foster even provides one: Input.OnTextEvent.

@axiandaxiand removed this from the 0.7.0 blockers milestone Jun 25, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@echoslabs@axiand@psyGamer@jasminegamedev
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Allow the ability to rename the save file in game. - #75

Open
echoslabs wants to merge 29 commits into
FujiAPI:devfrom
echoslabs:better_saves
Open

Allow the ability to rename the save file in game.#75
echoslabs wants to merge 29 commits into
FujiAPI:devfrom
echoslabs:better_saves

Conversation

@echoslabs

Copy link
Copy Markdown

Allows player to rename the save file in game.
Also all saves are moved into Userpath\Saves except save.json which is copied.

@axiandaxiand self-assigned this Mar 28, 2024
@axiand

Copy link
Copy Markdown
Member

Self-assigning this as I'm gonna be testing this code and probably making changes to the text input class

@axiandaxiand added this to the 0.7.0 blockers milestone Mar 28, 2024
@axiand

Copy link
Copy Markdown
Member

Went through and added some polish, as well as changes, some major and some minor.

Notably, to keep the code in one place, the input handling is now all done in the OnScreenKeyboardMenu. Also, an issue was fixed with the initial setup of the new save file directory.

This should be ready for merge, though I wouldn't mind a final round of testing.

@axiand

axiand commented Apr 1, 2024

Copy link
Copy Markdown
Member

It's worth mentioning that this PR also makes it so that the vanilla game's save file is completely separate from the Fuji save files.

I thought about this a little bit and imo, we're probably better off that way, with how much stuff Fuji changes about the game fundamentally, I'd rather keep the files separate than risk corruption back in vanilla.

@echoslabs

Copy link
Copy Markdown
Author

Thanks for cleaning it up and fixing bugs!

Comment threadSource/Data/Controls.cs Outdated
Comment threadSource/Data/Save.cs Outdated
Comment threadSource/Scenes/Overworld.cs Outdated
Comment threadSource/Mod/Data/SaveManager.cs Outdated
Comment threadSource/Mod/Menu/SaveSelectionMenu.cs Outdated
Comment threadSource/Mod/Menu/SaveSelectionMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs
Comment threadSource/Mod/Patches/KeyboardHandler.cs Outdated
Comment threadSource/Mod/Data/SaveManager.cs Outdated
@psyGamer

psyGamer commented Apr 3, 2024

Copy link
Copy Markdown

I might as well leave my thoughts here too:

  • I don't like how it's split into 2 menu instead of one. It could just straigh up go to the on-screen keyboard. You could just accept / cancel with Enter / ESC. For controllers, "Accept" and "Cancel" could just be buttons like "Space".
  • Pressing Enter doesn't even seem to work? I can exit the on-screen keyboard.
  • You are renaming the file not the save. Imo you should be editing an arbitrary string associated as the name for the file instead. That means the save files would either be indexed or maybe a sanitized version of the inputted name.
  • You can name a file with just an empty string or whitespace
  • Your method of implementing the direct keyboard input is just bad. Sorry to put it so bluntly, but thats the truth. You map the keyboard keys directly to characters. Now that seems fine at first, however you do realize that the US isnt the only country on the world, right? For example the german layout swaps Y and Z, but this method doesn't care about that or about any other keyboard mapping (I imagine things like DVORAK would just completely break). Instead you should be using a text input API and luckily Foster even provides one: Input.OnTextEvent.

@axiandaxiand removed this from the 0.7.0 blockers milestone Jun 25, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@echoslabs@axiand@psyGamer@jasminegamedev
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Allow the ability to rename the save file in game. - #75

Open
echoslabs wants to merge 29 commits into
FujiAPI:devfrom
echoslabs:better_saves
Open

Allow the ability to rename the save file in game.#75
echoslabs wants to merge 29 commits into
FujiAPI:devfrom
echoslabs:better_saves

Conversation

@echoslabs

Copy link
Copy Markdown

Allows player to rename the save file in game.
Also all saves are moved into Userpath\Saves except save.json which is copied.

@axiandaxiand self-assigned this Mar 28, 2024
@axiand

Copy link
Copy Markdown
Member

Self-assigning this as I'm gonna be testing this code and probably making changes to the text input class

@axiandaxiand added this to the 0.7.0 blockers milestone Mar 28, 2024
@axiand

Copy link
Copy Markdown
Member

Went through and added some polish, as well as changes, some major and some minor.

Notably, to keep the code in one place, the input handling is now all done in the OnScreenKeyboardMenu. Also, an issue was fixed with the initial setup of the new save file directory.

This should be ready for merge, though I wouldn't mind a final round of testing.

@axiand

axiand commented Apr 1, 2024

Copy link
Copy Markdown
Member

It's worth mentioning that this PR also makes it so that the vanilla game's save file is completely separate from the Fuji save files.

I thought about this a little bit and imo, we're probably better off that way, with how much stuff Fuji changes about the game fundamentally, I'd rather keep the files separate than risk corruption back in vanilla.

@echoslabs

Copy link
Copy Markdown
Author

Thanks for cleaning it up and fixing bugs!

Comment threadSource/Data/Controls.cs Outdated
Comment threadSource/Data/Save.cs Outdated
Comment threadSource/Scenes/Overworld.cs Outdated
Comment threadSource/Mod/Data/SaveManager.cs Outdated
Comment threadSource/Mod/Menu/SaveSelectionMenu.cs Outdated
Comment threadSource/Mod/Menu/SaveSelectionMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs
Comment threadSource/Mod/Patches/KeyboardHandler.cs Outdated
Comment threadSource/Mod/Data/SaveManager.cs Outdated
@psyGamer

psyGamer commented Apr 3, 2024

Copy link
Copy Markdown

I might as well leave my thoughts here too:

  • I don't like how it's split into 2 menu instead of one. It could just straigh up go to the on-screen keyboard. You could just accept / cancel with Enter / ESC. For controllers, "Accept" and "Cancel" could just be buttons like "Space".
  • Pressing Enter doesn't even seem to work? I can exit the on-screen keyboard.
  • You are renaming the file not the save. Imo you should be editing an arbitrary string associated as the name for the file instead. That means the save files would either be indexed or maybe a sanitized version of the inputted name.
  • You can name a file with just an empty string or whitespace
  • Your method of implementing the direct keyboard input is just bad. Sorry to put it so bluntly, but thats the truth. You map the keyboard keys directly to characters. Now that seems fine at first, however you do realize that the US isnt the only country on the world, right? For example the german layout swaps Y and Z, but this method doesn't care about that or about any other keyboard mapping (I imagine things like DVORAK would just completely break). Instead you should be using a text input API and luckily Foster even provides one: Input.OnTextEvent.

@axiandaxiand removed this from the 0.7.0 blockers milestone Jun 25, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@echoslabs@axiand@psyGamer@jasminegamedev
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Allow the ability to rename the save file in game. - #75

Open
echoslabs wants to merge 29 commits into
FujiAPI:devfrom
echoslabs:better_saves
Open

Allow the ability to rename the save file in game.#75
echoslabs wants to merge 29 commits into
FujiAPI:devfrom
echoslabs:better_saves

Conversation

@echoslabs

Copy link
Copy Markdown

Allows player to rename the save file in game.
Also all saves are moved into Userpath\Saves except save.json which is copied.

@axiandaxiand self-assigned this Mar 28, 2024
@axiand

Copy link
Copy Markdown
Member

Self-assigning this as I'm gonna be testing this code and probably making changes to the text input class

@axiandaxiand added this to the 0.7.0 blockers milestone Mar 28, 2024
@axiand

Copy link
Copy Markdown
Member

Went through and added some polish, as well as changes, some major and some minor.

Notably, to keep the code in one place, the input handling is now all done in the OnScreenKeyboardMenu. Also, an issue was fixed with the initial setup of the new save file directory.

This should be ready for merge, though I wouldn't mind a final round of testing.

@axiand

axiand commented Apr 1, 2024

Copy link
Copy Markdown
Member

It's worth mentioning that this PR also makes it so that the vanilla game's save file is completely separate from the Fuji save files.

I thought about this a little bit and imo, we're probably better off that way, with how much stuff Fuji changes about the game fundamentally, I'd rather keep the files separate than risk corruption back in vanilla.

@echoslabs

Copy link
Copy Markdown
Author

Thanks for cleaning it up and fixing bugs!

Comment threadSource/Data/Controls.cs Outdated
Comment threadSource/Data/Save.cs Outdated
Comment threadSource/Scenes/Overworld.cs Outdated
Comment threadSource/Mod/Data/SaveManager.cs Outdated
Comment threadSource/Mod/Menu/SaveSelectionMenu.cs Outdated
Comment threadSource/Mod/Menu/SaveSelectionMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs Outdated
Comment threadSource/Mod/Menu/OnScreenKeyboardMenu.cs
Comment threadSource/Mod/Patches/KeyboardHandler.cs Outdated
Comment threadSource/Mod/Data/SaveManager.cs Outdated
@psyGamer

psyGamer commented Apr 3, 2024

Copy link
Copy Markdown

I might as well leave my thoughts here too:

  • I don't like how it's split into 2 menu instead of one. It could just straigh up go to the on-screen keyboard. You could just accept / cancel with Enter / ESC. For controllers, "Accept" and "Cancel" could just be buttons like "Space".
  • Pressing Enter doesn't even seem to work? I can exit the on-screen keyboard.
  • You are renaming the file not the save. Imo you should be editing an arbitrary string associated as the name for the file instead. That means the save files would either be indexed or maybe a sanitized version of the inputted name.
  • You can name a file with just an empty string or whitespace
  • Your method of implementing the direct keyboard input is just bad. Sorry to put it so bluntly, but thats the truth. You map the keyboard keys directly to characters. Now that seems fine at first, however you do realize that the US isnt the only country on the world, right? For example the german layout swaps Y and Z, but this method doesn't care about that or about any other keyboard mapping (I imagine things like DVORAK would just completely break). Instead you should be using a text input API and luckily Foster even provides one: Input.OnTextEvent.

@axiandaxiand removed this from the 0.7.0 blockers milestone Jun 25, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@echoslabs@axiand@psyGamer@jasminegamedev