| 2071 | } |
| 2072 | |
| 2073 | static ImVec2 AdjustPositionForAlignment(const ImVec2& base_position, const ImVec2& element_size, AchievementOverlayPosition alignment) |
| 2074 | { |
| 2075 | ImVec2 adjusted = base_position; |
| 2076 | |
| 2077 | // Adjust for horizontal alignment |
| 2078 | switch (alignment) |
| 2079 | { |
| 2080 | case AchievementOverlayPosition::TopLeft: |
| 2081 | case AchievementOverlayPosition::CenterLeft: |
| 2082 | case AchievementOverlayPosition::BottomLeft: |
| 2083 | // Left aligned no adjustment needed for x |
| 2084 | break; |
| 2085 | |
| 2086 | case AchievementOverlayPosition::TopCenter: |
| 2087 | case AchievementOverlayPosition::Center: |
| 2088 | case AchievementOverlayPosition::BottomCenter: |
| 2089 | // Center aligned offset by half element width |
| 2090 | adjusted.x -= element_size.x * 0.5f; |
| 2091 | break; |
| 2092 | |
| 2093 | case AchievementOverlayPosition::TopRight: |
| 2094 | case AchievementOverlayPosition::CenterRight: |
| 2095 | case AchievementOverlayPosition::BottomRight: |
| 2096 | default: |
| 2097 | // Right aligned offset by full element width |
| 2098 | adjusted.x -= element_size.x; |
| 2099 | break; |
| 2100 | } |
| 2101 | |
| 2102 | // Adjust for vertical alignment |
| 2103 | switch (alignment) |
| 2104 | { |
| 2105 | case AchievementOverlayPosition::TopLeft: |
| 2106 | case AchievementOverlayPosition::TopCenter: |
| 2107 | case AchievementOverlayPosition::TopRight: |
| 2108 | // Top aligned no adjustment needed for y |
| 2109 | break; |
| 2110 | |
| 2111 | case AchievementOverlayPosition::CenterLeft: |
| 2112 | case AchievementOverlayPosition::Center: |
| 2113 | case AchievementOverlayPosition::CenterRight: |
| 2114 | // Center aligned offset by half element height |
| 2115 | adjusted.y -= element_size.y * 0.5f; |
| 2116 | break; |
| 2117 | |
| 2118 | case AchievementOverlayPosition::BottomLeft: |
| 2119 | case AchievementOverlayPosition::BottomCenter: |
| 2120 | case AchievementOverlayPosition::BottomRight: |
| 2121 | default: |
| 2122 | // Bottom aligned offset by full element height |
| 2123 | adjusted.y -= element_size.y; |
| 2124 | break; |
| 2125 | } |
| 2126 | |
| 2127 | return adjusted; |
| 2128 | } |
| 2129 | |
| 2130 | static ImVec2 GetStackingDirection(AchievementOverlayPosition alignment) |