const UINT BubblePortraitCount = 24; const UINT ActionButtonCount = 15; const UINT BuildQueueCount = 5; class ScreenConstants { public: ScreenConstants() { _ValidSize = false; } void Resize(const Vec2i &WindowDimensions); __forceinline const Vec2f& GetVec2fConstant(ScreenConstantVec2fType Constant) const { return _ResolutionVec2fConstants[Constant]; } __forceinline const Rectangle2i& GetRectangle2iConstant(ScreenConstantRectangle2iType Constant) const { return _ResolutionRectangle2iConstants[Constant]; } __forceinline bool ValidSize() { return _ValidSize; } __forceinline Vec2i MinimapCoordToScreenCoord(const Vec2f &MinimapCoord) const { const Vec2f MinimapTopLeft = _ResolutionVec2fConstants[ScreenConstantVec2fMinimapTopLeft]; const Vec2f MinimapDimensions = _ResolutionVec2fConstants[ScreenConstantVec2fMinimapDimensions]; Vec2f Result = MinimapTopLeft + Vec2f(MinimapDimensions.x * MinimapCoord.x, MinimapDimensions.y * MinimapCoord.y); return Result.RoundToVec2i(); } __forceinline Vec2f ScreenCoordToMinimapCoord(const Vec2f &ScreenCoord) const { const Vec2f MinimapTopLeft = _ResolutionVec2fConstants[ScreenConstantVec2fMinimapTopLeft]; const Vec2f MinimapDimensions = _ResolutionVec2fConstants[ScreenConstantVec2fMinimapDimensions]; Vec2f MinimapCoord = ScreenCoord - MinimapTopLeft; MinimapCoord.x = Utility::Bound(MinimapCoord.x / MinimapDimensions.x, 0.0f, 1.0f); MinimapCoord.y = Utility::Bound(MinimapCoord.y / MinimapDimensions.y, 0.0f, 1.0f); return MinimapCoord; } __forceinline bool Clickable(const Vec2i &ScreenCoord) const { if(_ResolutionRectangle2iConstants[ScreenConstantRectangle2iClickableRegion].ContainsPt(ScreenCoord)) { return (!_ResolutionRectangle2iConstants[ScreenConstantRectangle2iIdleWorkerRegion].ContainsPt(ScreenCoord)); //&& !_ResolutionRectangle2iConstants[ScreenConstantRectangle2iMenuRegion].ContainsPt(ScreenCoord)); } else { return false; } } Vec2i RandomClickablePoint(float BorderRegion) const; private: void Load1024x768Constants(); bool _ValidSize; Vec2f _ResolutionVec2fConstants[ScreenConstantVec2fCount]; Rectangle2i _ResolutionRectangle2iConstants[ScreenConstantRectangle2iCount]; };