Implemented Finite State Machine - #3

Open
gregormaclaine wants to merge 23 commits into
mainfrom
finite-state-machine
Open

Implemented Finite State Machine#3
gregormaclaine wants to merge 23 commits into
mainfrom
finite-state-machine

Conversation

@gregormaclaine

Copy link
Copy Markdown
Member

This feature branch creates a FSM framework for the program that will make it much easier to have different views that can be switched between such as the menu and the game. This also involved clearing up the code for the menu and modularising some of the features in it like the button.

The most recent commits in main have been merged into it, meaning it includes the new additions of player health and the background.

This version is also fully functional on macOS amd64, so it needs testing on windows before mergining into the main branch.

This commit technically does not work because for some reason at the start of the program the framerate acts a bit weird.
It causes everything effected by gravity (player and enemies) to fall directly through the platforms and therefore go beneath the screen.
This then immediately fixes itself as the framerate stabalises.
I am not going to try to fix this because when there is a menu beforehand, it will allow time before the players and enemies are placed, meaning that issue should never occur.
# Conflicts:
#	src/main.cpp
This is a temporary commit, as currently the user stays in the menu stage and can't progress to the game due to the buttons not being fully functional.
# Conflicts:
#	src/Enemy.cpp
#	src/Enemy.hpp
#	src/Menu.cpp
#	src/Menu.hpp
#	src/Player.cpp
#	src/Player.hpp
#	src/main.cpp
@gregormaclainegregormaclaine self-assigned this Feb 5, 2022
@gregormaclaine
gregormaclaine requested review from AdamHeal, JaneM443 and egorvert and removed request for JaneM443 and egorvertFebruary 5, 2022 02:12

@egorvertegorvert left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code is good and functional on Mac. It would be appreciated if you could add comments to your code to explain what it does so the rest of the team doesn't have to spend their precious time on figuring out what the hell you're doing.

Some bugs I noticed:

  • Hitboxes are always shown and control / command B does not turn them off
  • Resizing a window causes the character to fly off the screen

Tl;Dr
★★★★☆
Good feature rich commit but with little annotation and a few bugs. Also needs testing on Windows.

@gregormaclaine

Copy link
Copy Markdown
MemberAuthor

Woops closed it by accident. Also I see the bug with resizing the window, but the hitbox outlines work perfectly find for me? They don't show up to begin with and toggle visibility with Ctrl-B.

@gregormaclaine

Copy link
Copy Markdown
MemberAuthor

All bugs and changes requested by Egor have been implemented.
Branch is now ready for merge

std::vector is dynamic so it can be freely added to, which will be important later on.
It's also much easier to iterate through.
I needed the vectors to be of the class pointers as sometimes (by that I mean all the time) the textures of the sprites would unload since the vector would keep trying to move the memory around which would break the reference between the texture and the sprite causing it to show a tan rectangle instead of the actual picture.
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.

2 participants

@gregormaclaine@egorvert
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e 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

Implemented Finite State Machine - #3

Open
gregormaclaine wants to merge 23 commits into
mainfrom
finite-state-machine
Open

Implemented Finite State Machine#3
gregormaclaine wants to merge 23 commits into
mainfrom
finite-state-machine

Conversation

@gregormaclaine

Copy link
Copy Markdown
Member

This feature branch creates a FSM framework for the program that will make it much easier to have different views that can be switched between such as the menu and the game. This also involved clearing up the code for the menu and modularising some of the features in it like the button.

The most recent commits in main have been merged into it, meaning it includes the new additions of player health and the background.

This version is also fully functional on macOS amd64, so it needs testing on windows before mergining into the main branch.

This commit technically does not work because for some reason at the start of the program the framerate acts a bit weird.
It causes everything effected by gravity (player and enemies) to fall directly through the platforms and therefore go beneath the screen.
This then immediately fixes itself as the framerate stabalises.
I am not going to try to fix this because when there is a menu beforehand, it will allow time before the players and enemies are placed, meaning that issue should never occur.
# Conflicts:
#	src/main.cpp
This is a temporary commit, as currently the user stays in the menu stage and can't progress to the game due to the buttons not being fully functional.
# Conflicts:
#	src/Enemy.cpp
#	src/Enemy.hpp
#	src/Menu.cpp
#	src/Menu.hpp
#	src/Player.cpp
#	src/Player.hpp
#	src/main.cpp
@gregormaclainegregormaclaine self-assigned this Feb 5, 2022
@gregormaclaine
gregormaclaine requested review from AdamHeal, JaneM443 and egorvert and removed request for JaneM443 and egorvertFebruary 5, 2022 02:12

@egorvertegorvert left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code is good and functional on Mac. It would be appreciated if you could add comments to your code to explain what it does so the rest of the team doesn't have to spend their precious time on figuring out what the hell you're doing.

Some bugs I noticed:

  • Hitboxes are always shown and control / command B does not turn them off
  • Resizing a window causes the character to fly off the screen

Tl;Dr
★★★★☆
Good feature rich commit but with little annotation and a few bugs. Also needs testing on Windows.

@gregormaclaine

Copy link
Copy Markdown
MemberAuthor

Woops closed it by accident. Also I see the bug with resizing the window, but the hitbox outlines work perfectly find for me? They don't show up to begin with and toggle visibility with Ctrl-B.

@gregormaclaine

Copy link
Copy Markdown
MemberAuthor

All bugs and changes requested by Egor have been implemented.
Branch is now ready for merge

std::vector is dynamic so it can be freely added to, which will be important later on.
It's also much easier to iterate through.
I needed the vectors to be of the class pointers as sometimes (by that I mean all the time) the textures of the sprites would unload since the vector would keep trying to move the memory around which would break the reference between the texture and the sprite causing it to show a tan rectangle instead of the actual picture.
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.

2 participants

@gregormaclaine@egorvert
, '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

Implemented Finite State Machine - #3

Open
gregormaclaine wants to merge 23 commits into
mainfrom
finite-state-machine
Open

Implemented Finite State Machine#3
gregormaclaine wants to merge 23 commits into
mainfrom
finite-state-machine

Conversation

@gregormaclaine

Copy link
Copy Markdown
Member

This feature branch creates a FSM framework for the program that will make it much easier to have different views that can be switched between such as the menu and the game. This also involved clearing up the code for the menu and modularising some of the features in it like the button.

The most recent commits in main have been merged into it, meaning it includes the new additions of player health and the background.

This version is also fully functional on macOS amd64, so it needs testing on windows before mergining into the main branch.

This commit technically does not work because for some reason at the start of the program the framerate acts a bit weird.
It causes everything effected by gravity (player and enemies) to fall directly through the platforms and therefore go beneath the screen.
This then immediately fixes itself as the framerate stabalises.
I am not going to try to fix this because when there is a menu beforehand, it will allow time before the players and enemies are placed, meaning that issue should never occur.
# Conflicts:
#	src/main.cpp
This is a temporary commit, as currently the user stays in the menu stage and can't progress to the game due to the buttons not being fully functional.
# Conflicts:
#	src/Enemy.cpp
#	src/Enemy.hpp
#	src/Menu.cpp
#	src/Menu.hpp
#	src/Player.cpp
#	src/Player.hpp
#	src/main.cpp
@gregormaclainegregormaclaine self-assigned this Feb 5, 2022
@gregormaclaine
gregormaclaine requested review from AdamHeal, JaneM443 and egorvert and removed request for JaneM443 and egorvertFebruary 5, 2022 02:12

@egorvertegorvert left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code is good and functional on Mac. It would be appreciated if you could add comments to your code to explain what it does so the rest of the team doesn't have to spend their precious time on figuring out what the hell you're doing.

Some bugs I noticed:

  • Hitboxes are always shown and control / command B does not turn them off
  • Resizing a window causes the character to fly off the screen

Tl;Dr
★★★★☆
Good feature rich commit but with little annotation and a few bugs. Also needs testing on Windows.

@gregormaclaine

Copy link
Copy Markdown
MemberAuthor

Woops closed it by accident. Also I see the bug with resizing the window, but the hitbox outlines work perfectly find for me? They don't show up to begin with and toggle visibility with Ctrl-B.

@gregormaclaine

Copy link
Copy Markdown
MemberAuthor

All bugs and changes requested by Egor have been implemented.
Branch is now ready for merge

std::vector is dynamic so it can be freely added to, which will be important later on.
It's also much easier to iterate through.
I needed the vectors to be of the class pointers as sometimes (by that I mean all the time) the textures of the sprites would unload since the vector would keep trying to move the memory around which would break the reference between the texture and the sprite causing it to show a tan rectangle instead of the actual picture.
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.

2 participants

@gregormaclaine@egorvert
, '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 \u003e 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

Implemented Finite State Machine - #3

Open
gregormaclaine wants to merge 23 commits into
mainfrom
finite-state-machine
Open

Implemented Finite State Machine#3
gregormaclaine wants to merge 23 commits into
mainfrom
finite-state-machine

Conversation

@gregormaclaine

Copy link
Copy Markdown
Member

This feature branch creates a FSM framework for the program that will make it much easier to have different views that can be switched between such as the menu and the game. This also involved clearing up the code for the menu and modularising some of the features in it like the button.

The most recent commits in main have been merged into it, meaning it includes the new additions of player health and the background.

This version is also fully functional on macOS amd64, so it needs testing on windows before mergining into the main branch.

This commit technically does not work because for some reason at the start of the program the framerate acts a bit weird.
It causes everything effected by gravity (player and enemies) to fall directly through the platforms and therefore go beneath the screen.
This then immediately fixes itself as the framerate stabalises.
I am not going to try to fix this because when there is a menu beforehand, it will allow time before the players and enemies are placed, meaning that issue should never occur.
# Conflicts:
#	src/main.cpp
This is a temporary commit, as currently the user stays in the menu stage and can't progress to the game due to the buttons not being fully functional.
# Conflicts:
#	src/Enemy.cpp
#	src/Enemy.hpp
#	src/Menu.cpp
#	src/Menu.hpp
#	src/Player.cpp
#	src/Player.hpp
#	src/main.cpp
@gregormaclainegregormaclaine self-assigned this Feb 5, 2022
@gregormaclaine
gregormaclaine requested review from AdamHeal, JaneM443 and egorvert and removed request for JaneM443 and egorvertFebruary 5, 2022 02:12

@egorvertegorvert left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code is good and functional on Mac. It would be appreciated if you could add comments to your code to explain what it does so the rest of the team doesn't have to spend their precious time on figuring out what the hell you're doing.

Some bugs I noticed:

  • Hitboxes are always shown and control / command B does not turn them off
  • Resizing a window causes the character to fly off the screen

Tl;Dr
★★★★☆
Good feature rich commit but with little annotation and a few bugs. Also needs testing on Windows.

@gregormaclaine

Copy link
Copy Markdown
MemberAuthor

Woops closed it by accident. Also I see the bug with resizing the window, but the hitbox outlines work perfectly find for me? They don't show up to begin with and toggle visibility with Ctrl-B.

@gregormaclaine

Copy link
Copy Markdown
MemberAuthor

All bugs and changes requested by Egor have been implemented.
Branch is now ready for merge

std::vector is dynamic so it can be freely added to, which will be important later on.
It's also much easier to iterate through.
I needed the vectors to be of the class pointers as sometimes (by that I mean all the time) the textures of the sprites would unload since the vector would keep trying to move the memory around which would break the reference between the texture and the sprite causing it to show a tan rectangle instead of the actual picture.
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.

2 participants

@gregormaclaine@egorvert
, '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

Implemented Finite State Machine - #3

Open
gregormaclaine wants to merge 23 commits into
mainfrom
finite-state-machine
Open

Implemented Finite State Machine#3
gregormaclaine wants to merge 23 commits into
mainfrom
finite-state-machine

Conversation

@gregormaclaine

Copy link
Copy Markdown
Member

This feature branch creates a FSM framework for the program that will make it much easier to have different views that can be switched between such as the menu and the game. This also involved clearing up the code for the menu and modularising some of the features in it like the button.

The most recent commits in main have been merged into it, meaning it includes the new additions of player health and the background.

This version is also fully functional on macOS amd64, so it needs testing on windows before mergining into the main branch.

This commit technically does not work because for some reason at the start of the program the framerate acts a bit weird.
It causes everything effected by gravity (player and enemies) to fall directly through the platforms and therefore go beneath the screen.
This then immediately fixes itself as the framerate stabalises.
I am not going to try to fix this because when there is a menu beforehand, it will allow time before the players and enemies are placed, meaning that issue should never occur.
# Conflicts:
#	src/main.cpp
This is a temporary commit, as currently the user stays in the menu stage and can't progress to the game due to the buttons not being fully functional.
# Conflicts:
#	src/Enemy.cpp
#	src/Enemy.hpp
#	src/Menu.cpp
#	src/Menu.hpp
#	src/Player.cpp
#	src/Player.hpp
#	src/main.cpp
@gregormaclainegregormaclaine self-assigned this Feb 5, 2022
@gregormaclaine
gregormaclaine requested review from AdamHeal, JaneM443 and egorvert and removed request for JaneM443 and egorvertFebruary 5, 2022 02:12

@egorvertegorvert left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code is good and functional on Mac. It would be appreciated if you could add comments to your code to explain what it does so the rest of the team doesn't have to spend their precious time on figuring out what the hell you're doing.

Some bugs I noticed:

  • Hitboxes are always shown and control / command B does not turn them off
  • Resizing a window causes the character to fly off the screen

Tl;Dr
★★★★☆
Good feature rich commit but with little annotation and a few bugs. Also needs testing on Windows.

@gregormaclaine

Copy link
Copy Markdown
MemberAuthor

Woops closed it by accident. Also I see the bug with resizing the window, but the hitbox outlines work perfectly find for me? They don't show up to begin with and toggle visibility with Ctrl-B.

@gregormaclaine

Copy link
Copy Markdown
MemberAuthor

All bugs and changes requested by Egor have been implemented.
Branch is now ready for merge

std::vector is dynamic so it can be freely added to, which will be important later on.
It's also much easier to iterate through.
I needed the vectors to be of the class pointers as sometimes (by that I mean all the time) the textures of the sprites would unload since the vector would keep trying to move the memory around which would break the reference between the texture and the sprite causing it to show a tan rectangle instead of the actual picture.
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.

2 participants

@gregormaclaine@egorvert
, '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

Implemented Finite State Machine - #3

Open
gregormaclaine wants to merge 23 commits into
mainfrom
finite-state-machine
Open

Implemented Finite State Machine#3
gregormaclaine wants to merge 23 commits into
mainfrom
finite-state-machine

Conversation

@gregormaclaine

Copy link
Copy Markdown
Member

This feature branch creates a FSM framework for the program that will make it much easier to have different views that can be switched between such as the menu and the game. This also involved clearing up the code for the menu and modularising some of the features in it like the button.

The most recent commits in main have been merged into it, meaning it includes the new additions of player health and the background.

This version is also fully functional on macOS amd64, so it needs testing on windows before mergining into the main branch.

This commit technically does not work because for some reason at the start of the program the framerate acts a bit weird.
It causes everything effected by gravity (player and enemies) to fall directly through the platforms and therefore go beneath the screen.
This then immediately fixes itself as the framerate stabalises.
I am not going to try to fix this because when there is a menu beforehand, it will allow time before the players and enemies are placed, meaning that issue should never occur.
# Conflicts:
#	src/main.cpp
This is a temporary commit, as currently the user stays in the menu stage and can't progress to the game due to the buttons not being fully functional.
# Conflicts:
#	src/Enemy.cpp
#	src/Enemy.hpp
#	src/Menu.cpp
#	src/Menu.hpp
#	src/Player.cpp
#	src/Player.hpp
#	src/main.cpp
@gregormaclainegregormaclaine self-assigned this Feb 5, 2022
@gregormaclaine
gregormaclaine requested review from AdamHeal, JaneM443 and egorvert and removed request for JaneM443 and egorvertFebruary 5, 2022 02:12

@egorvertegorvert left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code is good and functional on Mac. It would be appreciated if you could add comments to your code to explain what it does so the rest of the team doesn't have to spend their precious time on figuring out what the hell you're doing.

Some bugs I noticed:

  • Hitboxes are always shown and control / command B does not turn them off
  • Resizing a window causes the character to fly off the screen

Tl;Dr
★★★★☆
Good feature rich commit but with little annotation and a few bugs. Also needs testing on Windows.

@gregormaclaine

Copy link
Copy Markdown
MemberAuthor

Woops closed it by accident. Also I see the bug with resizing the window, but the hitbox outlines work perfectly find for me? They don't show up to begin with and toggle visibility with Ctrl-B.

@gregormaclaine

Copy link
Copy Markdown
MemberAuthor

All bugs and changes requested by Egor have been implemented.
Branch is now ready for merge

std::vector is dynamic so it can be freely added to, which will be important later on.
It's also much easier to iterate through.
I needed the vectors to be of the class pointers as sometimes (by that I mean all the time) the textures of the sprites would unload since the vector would keep trying to move the memory around which would break the reference between the texture and the sprite causing it to show a tan rectangle instead of the actual picture.
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.

2 participants

@gregormaclaine@egorvert
, '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

Implemented Finite State Machine - #3

Open
gregormaclaine wants to merge 23 commits into
mainfrom
finite-state-machine
Open

Implemented Finite State Machine#3
gregormaclaine wants to merge 23 commits into
mainfrom
finite-state-machine

Conversation

@gregormaclaine

Copy link
Copy Markdown
Member

This feature branch creates a FSM framework for the program that will make it much easier to have different views that can be switched between such as the menu and the game. This also involved clearing up the code for the menu and modularising some of the features in it like the button.

The most recent commits in main have been merged into it, meaning it includes the new additions of player health and the background.

This version is also fully functional on macOS amd64, so it needs testing on windows before mergining into the main branch.

This commit technically does not work because for some reason at the start of the program the framerate acts a bit weird.
It causes everything effected by gravity (player and enemies) to fall directly through the platforms and therefore go beneath the screen.
This then immediately fixes itself as the framerate stabalises.
I am not going to try to fix this because when there is a menu beforehand, it will allow time before the players and enemies are placed, meaning that issue should never occur.
# Conflicts:
#	src/main.cpp
This is a temporary commit, as currently the user stays in the menu stage and can't progress to the game due to the buttons not being fully functional.
# Conflicts:
#	src/Enemy.cpp
#	src/Enemy.hpp
#	src/Menu.cpp
#	src/Menu.hpp
#	src/Player.cpp
#	src/Player.hpp
#	src/main.cpp
@gregormaclainegregormaclaine self-assigned this Feb 5, 2022
@gregormaclaine
gregormaclaine requested review from AdamHeal, JaneM443 and egorvert and removed request for JaneM443 and egorvertFebruary 5, 2022 02:12

@egorvertegorvert left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code is good and functional on Mac. It would be appreciated if you could add comments to your code to explain what it does so the rest of the team doesn't have to spend their precious time on figuring out what the hell you're doing.

Some bugs I noticed:

  • Hitboxes are always shown and control / command B does not turn them off
  • Resizing a window causes the character to fly off the screen

Tl;Dr
★★★★☆
Good feature rich commit but with little annotation and a few bugs. Also needs testing on Windows.

@gregormaclaine

Copy link
Copy Markdown
MemberAuthor

Woops closed it by accident. Also I see the bug with resizing the window, but the hitbox outlines work perfectly find for me? They don't show up to begin with and toggle visibility with Ctrl-B.

@gregormaclaine

Copy link
Copy Markdown
MemberAuthor

All bugs and changes requested by Egor have been implemented.
Branch is now ready for merge

std::vector is dynamic so it can be freely added to, which will be important later on.
It's also much easier to iterate through.
I needed the vectors to be of the class pointers as sometimes (by that I mean all the time) the textures of the sprites would unload since the vector would keep trying to move the memory around which would break the reference between the texture and the sprite causing it to show a tan rectangle instead of the actual picture.
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.

2 participants

@gregormaclaine@egorvert
, '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

Implemented Finite State Machine - #3

Open
gregormaclaine wants to merge 23 commits into
mainfrom
finite-state-machine
Open

Implemented Finite State Machine#3
gregormaclaine wants to merge 23 commits into
mainfrom
finite-state-machine

Conversation

@gregormaclaine

Copy link
Copy Markdown
Member

This feature branch creates a FSM framework for the program that will make it much easier to have different views that can be switched between such as the menu and the game. This also involved clearing up the code for the menu and modularising some of the features in it like the button.

The most recent commits in main have been merged into it, meaning it includes the new additions of player health and the background.

This version is also fully functional on macOS amd64, so it needs testing on windows before mergining into the main branch.

This commit technically does not work because for some reason at the start of the program the framerate acts a bit weird.
It causes everything effected by gravity (player and enemies) to fall directly through the platforms and therefore go beneath the screen.
This then immediately fixes itself as the framerate stabalises.
I am not going to try to fix this because when there is a menu beforehand, it will allow time before the players and enemies are placed, meaning that issue should never occur.
# Conflicts:
#	src/main.cpp
This is a temporary commit, as currently the user stays in the menu stage and can't progress to the game due to the buttons not being fully functional.
# Conflicts:
#	src/Enemy.cpp
#	src/Enemy.hpp
#	src/Menu.cpp
#	src/Menu.hpp
#	src/Player.cpp
#	src/Player.hpp
#	src/main.cpp
@gregormaclainegregormaclaine self-assigned this Feb 5, 2022
@gregormaclaine
gregormaclaine requested review from AdamHeal, JaneM443 and egorvert and removed request for JaneM443 and egorvertFebruary 5, 2022 02:12

@egorvertegorvert left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code is good and functional on Mac. It would be appreciated if you could add comments to your code to explain what it does so the rest of the team doesn't have to spend their precious time on figuring out what the hell you're doing.

Some bugs I noticed:

  • Hitboxes are always shown and control / command B does not turn them off
  • Resizing a window causes the character to fly off the screen

Tl;Dr
★★★★☆
Good feature rich commit but with little annotation and a few bugs. Also needs testing on Windows.

@gregormaclaine

Copy link
Copy Markdown
MemberAuthor

Woops closed it by accident. Also I see the bug with resizing the window, but the hitbox outlines work perfectly find for me? They don't show up to begin with and toggle visibility with Ctrl-B.

@gregormaclaine

Copy link
Copy Markdown
MemberAuthor

All bugs and changes requested by Egor have been implemented.
Branch is now ready for merge

std::vector is dynamic so it can be freely added to, which will be important later on.
It's also much easier to iterate through.
I needed the vectors to be of the class pointers as sometimes (by that I mean all the time) the textures of the sprites would unload since the vector would keep trying to move the memory around which would break the reference between the texture and the sprite causing it to show a tan rectangle instead of the actual picture.
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.

2 participants

@gregormaclaine@egorvert