diff --git a/core/Action/ActionDelay.cpp b/core/Action/ActionDelay.cpp index 0f23e530..5c8e7fa7 100644 --- a/core/Action/ActionDelay.cpp +++ b/core/Action/ActionDelay.cpp @@ -1,6 +1,6 @@ #include "..\eactions.h" -e2d::ActionDelay::ActionDelay(float duration) +e2d::ActionDelay::ActionDelay(double duration) { m_fDelayTime = max(duration, 0); } diff --git a/core/Action/ActionGradual.cpp b/core/Action/ActionGradual.cpp index d8002a57..370f4c89 100644 --- a/core/Action/ActionGradual.cpp +++ b/core/Action/ActionGradual.cpp @@ -1,6 +1,6 @@ #include "..\eactions.h" -e2d::ActionGradual::ActionGradual(float duration) +e2d::ActionGradual::ActionGradual(double duration) : m_fRateOfProgress(0) { m_fDuration = max(duration, 0); diff --git a/core/Action/ActionMoveBy.cpp b/core/Action/ActionMoveBy.cpp index 1ad568f3..64c581d8 100644 --- a/core/Action/ActionMoveBy.cpp +++ b/core/Action/ActionMoveBy.cpp @@ -1,7 +1,7 @@ #include "..\eactions.h" -e2d::ActionMoveBy::ActionMoveBy(float duration, Vector vector) : +e2d::ActionMoveBy::ActionMoveBy(double duration, Vector vector) : ActionGradual(duration) { m_MoveVec = vector; diff --git a/core/Action/ActionMoveTo.cpp b/core/Action/ActionMoveTo.cpp index 3b8cd38f..2acc55c3 100644 --- a/core/Action/ActionMoveTo.cpp +++ b/core/Action/ActionMoveTo.cpp @@ -1,6 +1,6 @@ #include "..\eactions.h" -e2d::ActionMoveTo::ActionMoveTo(float duration, Point pos) : +e2d::ActionMoveTo::ActionMoveTo(double duration, Point pos) : ActionMoveBy(duration, Vector()) { m_EndPos = pos; diff --git a/core/Action/ActionOpacityBy.cpp b/core/Action/ActionOpacityBy.cpp index dec590d6..8eb2dcc3 100644 --- a/core/Action/ActionOpacityBy.cpp +++ b/core/Action/ActionOpacityBy.cpp @@ -1,7 +1,7 @@ #include "..\eactions.h" -e2d::ActionOpacityBy::ActionOpacityBy(float duration, float opacity) : +e2d::ActionOpacityBy::ActionOpacityBy(double duration, double opacity) : ActionGradual(duration) { m_nVariation = opacity; diff --git a/core/Action/ActionOpacityTo.cpp b/core/Action/ActionOpacityTo.cpp index 244807a3..b5dbb73c 100644 --- a/core/Action/ActionOpacityTo.cpp +++ b/core/Action/ActionOpacityTo.cpp @@ -1,7 +1,7 @@ #include "..\eactions.h" -e2d::ActionOpacityTo::ActionOpacityTo(float duration, float opacity) : +e2d::ActionOpacityTo::ActionOpacityTo(double duration, double opacity) : ActionOpacityBy(duration, 0) { m_nEndVal = opacity; diff --git a/core/Action/ActionRotateBy.cpp b/core/Action/ActionRotateBy.cpp index ffd02729..ce7677b5 100644 --- a/core/Action/ActionRotateBy.cpp +++ b/core/Action/ActionRotateBy.cpp @@ -1,7 +1,7 @@ #include "..\eactions.h" -e2d::ActionRotateBy::ActionRotateBy(float duration, float rotation) : +e2d::ActionRotateBy::ActionRotateBy(double duration, double rotation) : ActionGradual(duration) { m_nVariation = rotation; diff --git a/core/Action/ActionRotateTo.cpp b/core/Action/ActionRotateTo.cpp index ca8ea1e6..badf400d 100644 --- a/core/Action/ActionRotateTo.cpp +++ b/core/Action/ActionRotateTo.cpp @@ -1,7 +1,7 @@ #include "..\eactions.h" -e2d::ActionRotateTo::ActionRotateTo(float duration, float rotation) : +e2d::ActionRotateTo::ActionRotateTo(double duration, double rotation) : ActionRotateBy(duration, 0) { m_nEndVal = rotation; diff --git a/core/Action/ActionScaleBy.cpp b/core/Action/ActionScaleBy.cpp index 80e5efbd..55716504 100644 --- a/core/Action/ActionScaleBy.cpp +++ b/core/Action/ActionScaleBy.cpp @@ -1,14 +1,14 @@ #include "..\eactions.h" -e2d::ActionScaleBy::ActionScaleBy(float duration, float scale) +e2d::ActionScaleBy::ActionScaleBy(double duration, double scale) : ActionGradual(duration) { m_nVariationX = scale; m_nVariationY = scale; } -e2d::ActionScaleBy::ActionScaleBy(float duration, float scaleX, float scaleY) +e2d::ActionScaleBy::ActionScaleBy(double duration, double scaleX, double scaleY) : ActionGradual(duration) { m_nVariationX = scaleX; diff --git a/core/Action/ActionScaleTo.cpp b/core/Action/ActionScaleTo.cpp index 83675d24..5071045c 100644 --- a/core/Action/ActionScaleTo.cpp +++ b/core/Action/ActionScaleTo.cpp @@ -1,13 +1,13 @@ #include "..\eactions.h" -e2d::ActionScaleTo::ActionScaleTo(float duration, float scale) +e2d::ActionScaleTo::ActionScaleTo(double duration, double scale) : ActionScaleBy(duration, 0, 0) { m_nEndScaleX = scale; m_nEndScaleY = scale; } -e2d::ActionScaleTo::ActionScaleTo(float duration, float scaleX, float scaleY) +e2d::ActionScaleTo::ActionScaleTo(double duration, double scaleX, double scaleY) : ActionScaleBy(duration, 0, 0) { m_nEndScaleX = scaleX; diff --git a/core/Action/Animation.cpp b/core/Action/Animation.cpp index e66b59dd..447f9dcd 100644 --- a/core/Action/Animation.cpp +++ b/core/Action/Animation.cpp @@ -5,7 +5,7 @@ e2d::Animation::Animation() { } -e2d::Animation::Animation(float invertal) +e2d::Animation::Animation(double invertal) : m_nFrameIndex(0) , m_fInterval(invertal) { @@ -19,7 +19,7 @@ e2d::Animation::~Animation() } } -void e2d::Animation::setInterval(float interval) +void e2d::Animation::setInterval(double interval) { m_fInterval = max(interval, 0); } diff --git a/core/Base/Input.cpp b/core/Base/Input.cpp index ff4ec13c..1badb69c 100644 --- a/core/Base/Input.cpp +++ b/core/Base/Input.cpp @@ -224,32 +224,32 @@ bool Input::isMouseMButtonRelease() return false; } -float Input::getMouseX() +double Input::getMouseX() { - return (float)s_MousePosition.x; + return (double)s_MousePosition.x; } -float Input::getMouseY() +double Input::getMouseY() { - return (float)s_MousePosition.y; + return (double)s_MousePosition.y; } Point Input::getMousePos() { - return Point((float)s_MousePosition.x, (float)s_MousePosition.y); + return Point((double)s_MousePosition.x, (double)s_MousePosition.y); } -float Input::getMouseDeltaX() +double Input::getMouseDeltaX() { - return (float)s_MouseState.lX; + return (double)s_MouseState.lX; } -float Input::getMouseDeltaY() +double Input::getMouseDeltaY() { - return (float)s_MouseState.lY; + return (double)s_MouseState.lY; } -float Input::getMouseDeltaZ() +double Input::getMouseDeltaZ() { - return (float)s_MouseState.lZ; + return (double)s_MouseState.lZ; } \ No newline at end of file diff --git a/core/Base/Time.cpp b/core/Base/Time.cpp index c0b1f853..79aafd27 100644 --- a/core/Base/Time.cpp +++ b/core/Base/Time.cpp @@ -15,12 +15,12 @@ static steady_clock::time_point s_tLastUpdate; // 上一帧与当前帧的时间间隔 static int s_nInterval = 0; // 游戏开始时长 -static float s_fTotalTime = 0; +static double s_fTotalTime = 0; // 每一帧间隔 static milliseconds s_tExceptedInvertal; -float e2d::Time::getTotalTime() +double e2d::Time::getTotalTime() { return s_fTotalTime; } @@ -59,7 +59,7 @@ void e2d::Time::__updateLast() s_tNow = steady_clock::now(); s_nInterval = static_cast(duration_cast(s_tNow - s_tLastUpdate).count()); - s_fTotalTime = static_cast(duration_cast(s_tNow - s_tStart).count()) / 1000.0f; + s_fTotalTime = static_cast(duration_cast(s_tNow - s_tStart).count()) / 1000.0f; } void e2d::Time::__sleep() diff --git a/core/Base/Window.cpp b/core/Base/Window.cpp index e3694f08..3e2dabed 100644 --- a/core/Base/Window.cpp +++ b/core/Base/Window.cpp @@ -38,7 +38,7 @@ bool e2d::Window::__init(LPCTSTR sTitle, UINT32 nWidth, UINT32 nHeight, LPCTSTR // 因为 CreateWindow 函数使用的是像素大小,获取系统的 DPI 以使它 // 适应窗口缩放 - FLOAT dpiX, dpiY; + float dpiX, dpiY; // 工厂将返回当前的系统 DPI,这个值也将用来创建窗口 Renderer::getID2D1Factory()->GetDesktopDpi(&dpiX, &dpiY); @@ -123,12 +123,12 @@ void e2d::Window::__poll() } } -float e2d::Window::getWidth() +double e2d::Window::getWidth() { return Renderer::getRenderTarget()->GetSize().width; } -float e2d::Window::getHeight() +double e2d::Window::getHeight() { return Renderer::getRenderTarget()->GetSize().height; } diff --git a/core/Common/Font.cpp b/core/Common/Font.cpp index 150a1025..e32c0f89 100644 --- a/core/Common/Font.cpp +++ b/core/Common/Font.cpp @@ -10,7 +10,7 @@ e2d::Font::Font() { } -e2d::Font::Font(String fontFamily, float fontSize /* = 22 */, UINT32 color /* = EColor::WHITE */, UINT32 fontWeight, bool italic /* = false */) +e2d::Font::Font(String fontFamily, double fontSize /* = 22 */, UINT32 color /* = EColor::WHITE */, UINT32 fontWeight, bool italic /* = false */) : m_pTextFormat(nullptr) , m_Color(Color::WHITE) , m_fFontSize(22) @@ -30,7 +30,7 @@ e2d::Font::~Font() SafeReleaseInterface(&m_pTextFormat); } -float e2d::Font::getFontSize() const +double e2d::Font::getFontSize() const { return m_fFontSize; } @@ -56,9 +56,9 @@ void e2d::Font::setFamily(const String & fontFamily) m_bRecreateNeeded = true; } -void e2d::Font::setSize(float fontSize) +void e2d::Font::setSize(double fontSize) { - m_fFontSize = fontSize; + m_fFontSize = static_cast(fontSize); m_bRecreateNeeded = true; } diff --git a/core/Common/Image.cpp b/core/Common/Image.cpp index b7f33899..474b1f60 100644 --- a/core/Common/Image.cpp +++ b/core/Common/Image.cpp @@ -18,7 +18,7 @@ e2d::Image::Image(LPCTSTR strFileName) this->loadFrom(strFileName); } -e2d::Image::Image(LPCTSTR strFileName, float nClipX, float nClipY, float nClipWidth, float nClipHeight) +e2d::Image::Image(LPCTSTR strFileName, double nClipX, double nClipY, double nClipWidth, double nClipHeight) { this->loadFrom(strFileName); this->clip(nClipX, nClipY, nClipWidth, nClipHeight); @@ -47,13 +47,13 @@ void e2d::Image::loadFrom(const String & strFilePath) m_fSourceClipHeight = m_pBitmap->GetSize().height; } -void e2d::Image::loadFrom(const String & strFilePath, float x, float y, float width, float height) +void e2d::Image::loadFrom(const String & strFilePath, double x, double y, double width, double height) { loadFrom(strFilePath); clip(x, y, width, height); } -void e2d::Image::clip(float x, float y, float width, float height) +void e2d::Image::clip(double x, double y, double width, double height) { if (m_pBitmap) { @@ -64,12 +64,12 @@ void e2d::Image::clip(float x, float y, float width, float height) } } -float e2d::Image::getWidth() const +double e2d::Image::getWidth() const { return m_fSourceClipWidth; } -float e2d::Image::getHeight() const +double e2d::Image::getHeight() const { return m_fSourceClipHeight; } @@ -79,7 +79,7 @@ e2d::Size e2d::Image::getSize() const return Size(m_fSourceClipWidth, m_fSourceClipHeight); } -float e2d::Image::getSourceWidth() const +double e2d::Image::getSourceWidth() const { if (m_pBitmap) { @@ -91,7 +91,7 @@ float e2d::Image::getSourceWidth() const } } -float e2d::Image::getSourceHeight() const +double e2d::Image::getSourceHeight() const { if (m_pBitmap) { @@ -115,12 +115,12 @@ e2d::Size e2d::Image::getSourceSize() const } } -float e2d::Image::getClipX() const +double e2d::Image::getClipX() const { return m_fSourceClipX; } -float e2d::Image::getClipY() const +double e2d::Image::getClipY() const { return m_fSourceClipY; } diff --git a/core/Node/Node.cpp b/core/Node/Node.cpp index ab16c376..53732b20 100644 --- a/core/Node/Node.cpp +++ b/core/Node/Node.cpp @@ -11,6 +11,10 @@ static float s_fDefaultPiovtY = 0; e2d::Node::Node() : m_nOrder(0) + , m_fPosX(0) + , m_fPosY(0) + , m_fWidth(0) + , m_fHeight(0) , m_fScaleX(1.0f) , m_fScaleY(1.0f) , m_fRotation(0) @@ -203,8 +207,8 @@ void e2d::Node::_updateTransform() { // 计算中心点坐标 D2D1_POINT_2F pivot = D2D1::Point2F( - getRealWidth() * m_fPivotX, - getRealHeight() * m_fPivotY + m_fWidth * m_fPivotX, + m_fHeight * m_fPivotY ); // 变换 Initial 矩阵,子节点将根据这个矩阵进行变换 m_MatriInitial = D2D1::Matrix3x2F::Scale( @@ -219,8 +223,8 @@ void e2d::Node::_updateTransform() m_fRotation, pivot ) * D2D1::Matrix3x2F::Translation( - m_Pos.x, - m_Pos.y + m_fPosX, + m_fPosY ); // 根据自身中心点变换 Final 矩阵 m_MatriFinal = m_MatriInitial * D2D1::Matrix3x2F::Translation(-pivot.x, -pivot.y); @@ -282,52 +286,52 @@ e2d::String e2d::Node::getName() const return m_sName; } -float e2d::Node::getPosX() const +double e2d::Node::getPosX() const { - return m_Pos.x; + return m_fPosX; } -float e2d::Node::getPosY() const +double e2d::Node::getPosY() const { - return m_Pos.y; + return m_fPosY; } e2d::Point e2d::Node::getPos() const { - return m_Pos; + return Point(m_fPosX, m_fPosY); } -float e2d::Node::getWidth() const +double e2d::Node::getWidth() const { - return m_Size.width * m_fScaleX; + return m_fWidth * m_fScaleX; } -float e2d::Node::getHeight() const +double e2d::Node::getHeight() const { - return m_Size.height * m_fScaleY; + return m_fHeight * m_fScaleY; } -float e2d::Node::getRealWidth() const +double e2d::Node::getRealWidth() const { - return m_Size.width; + return m_fWidth; } -float e2d::Node::getRealHeight() const +double e2d::Node::getRealHeight() const { - return m_Size.height; + return m_fHeight; } e2d::Size e2d::Node::getRealSize() const { - return m_Size; + return Size(m_fWidth, m_fHeight); } -float e2d::Node::getPivotX() const +double e2d::Node::getPivotX() const { return m_fPivotX; } -float e2d::Node::getPivotY() const +double e2d::Node::getPivotY() const { return m_fPivotY; } @@ -337,32 +341,32 @@ e2d::Size e2d::Node::getSize() const return Size(getWidth(), getHeight()); } -float e2d::Node::getScaleX() const +double e2d::Node::getScaleX() const { return m_fScaleX; } -float e2d::Node::getScaleY() const +double e2d::Node::getScaleY() const { return m_fScaleY; } -float e2d::Node::getSkewX() const +double e2d::Node::getSkewX() const { return m_fSkewAngleX; } -float e2d::Node::getSkewY() const +double e2d::Node::getSkewY() const { return m_fSkewAngleY; } -float e2d::Node::getRotation() const +double e2d::Node::getRotation() const { return m_fRotation; } -float e2d::Node::getOpacity() const +double e2d::Node::getOpacity() const { return m_fRealOpacity; } @@ -382,14 +386,14 @@ void e2d::Node::setOrder(int order) m_nOrder = order; } -void e2d::Node::setPosX(float x) +void e2d::Node::setPosX(double x) { - this->setPos(x, m_Pos.y); + this->setPos(x, m_fPosY); } -void e2d::Node::setPosY(float y) +void e2d::Node::setPosY(double y) { - this->setPos(m_Pos.x, y); + this->setPos(m_fPosX, y); } void e2d::Node::setPos(const Point & p) @@ -397,29 +401,29 @@ void e2d::Node::setPos(const Point & p) this->setPos(p.x, p.y); } -void e2d::Node::setPos(float x, float y) +void e2d::Node::setPos(double x, double y) { - if (m_Pos.x == x && m_Pos.y == y) + if (m_fPosX == x && m_fPosY == y) return; - m_Pos.x = x; - m_Pos.y = y; + m_fPosX = static_cast(x); + m_fPosY = static_cast(y); m_bTransformNeeded = true; } -void e2d::Node::movePosX(float x) +void e2d::Node::movePosX(double x) { this->movePos(x, 0); } -void e2d::Node::movePosY(float y) +void e2d::Node::movePosY(double y) { this->movePos(0, y); } -void e2d::Node::movePos(float x, float y) +void e2d::Node::movePos(double x, double y) { - this->setPos(m_Pos.x + x, m_Pos.y + y); + this->setPos(m_fPosX + x, m_fPosY + y); } void e2d::Node::movePos(const Vector & v) @@ -427,97 +431,97 @@ void e2d::Node::movePos(const Vector & v) this->movePos(v.x, v.y); } -void e2d::Node::_setSize(float width, float height) +void e2d::Node::_setSize(double width, double height) { - if (m_Size.width == width && m_Size.height == height) + if (m_fWidth == width && m_fHeight == height) return; - m_Size.width = width; - m_Size.height = height; + m_fWidth = static_cast(width); + m_fHeight = static_cast(height); m_bTransformNeeded = true; } -void e2d::Node::setScaleX(float scaleX) +void e2d::Node::setScaleX(double scaleX) { this->setScale(scaleX, m_fScaleY); } -void e2d::Node::setScaleY(float scaleY) +void e2d::Node::setScaleY(double scaleY) { this->setScale(m_fScaleX, scaleY); } -void e2d::Node::setScale(float scale) +void e2d::Node::setScale(double scale) { this->setScale(scale, scale); } -void e2d::Node::setScale(float scaleX, float scaleY) +void e2d::Node::setScale(double scaleX, double scaleY) { if (m_fScaleX == scaleX && m_fScaleY == scaleY) return; - m_fScaleX = scaleX; - m_fScaleY = scaleY; + m_fScaleX = static_cast(scaleX); + m_fScaleY = static_cast(scaleY); m_bTransformNeeded = true; } -void e2d::Node::setSkewX(float angleX) +void e2d::Node::setSkewX(double angleX) { this->setSkew(angleX, m_fSkewAngleY); } -void e2d::Node::setSkewY(float angleY) +void e2d::Node::setSkewY(double angleY) { this->setSkew(m_fSkewAngleX, angleY); } -void e2d::Node::setSkew(float angleX, float angleY) +void e2d::Node::setSkew(double angleX, double angleY) { if (m_fSkewAngleX == angleX && m_fSkewAngleY == angleY) return; - m_fSkewAngleX = angleX; - m_fSkewAngleY = angleY; + m_fSkewAngleX = static_cast(angleX); + m_fSkewAngleY = static_cast(angleY); m_bTransformNeeded = true; } -void e2d::Node::setRotation(float angle) +void e2d::Node::setRotation(double angle) { if (m_fRotation == angle) return; - m_fRotation = angle; + m_fRotation = static_cast(angle); m_bTransformNeeded = true; } -void e2d::Node::setOpacity(float opacity) +void e2d::Node::setOpacity(double opacity) { if (m_fRealOpacity == opacity) return; - m_fDisplayOpacity = m_fRealOpacity = min(max(opacity, 0), 1); + m_fDisplayOpacity = m_fRealOpacity = min(max(static_cast(opacity), 0), 1); // 更新节点透明度 _updateOpacity(this); } -void e2d::Node::setPivotX(float pivotX) +void e2d::Node::setPivotX(double pivotX) { this->setPivot(pivotX, m_fPivotY); } -void e2d::Node::setPivotY(float pivotY) +void e2d::Node::setPivotY(double pivotY) { this->setPivot(m_fPivotX, pivotY); } -void e2d::Node::setPivot(float pivotX, float pivotY) +void e2d::Node::setPivot(double pivotX, double pivotY) { if (m_fPivotX == pivotX && m_fPivotY == pivotY) return; - m_fPivotX = min(max(pivotX, 0), 1); - m_fPivotY = min(max(pivotY, 0), 1); + m_fPivotX = min(max(static_cast(pivotX), 0), 1); + m_fPivotY = min(max(static_cast(pivotY), 0), 1); m_bTransformNeeded = true; } @@ -768,13 +772,15 @@ bool e2d::Node::isPointIn(Point point) // 为节点创建一个形状 ID2D1RectangleGeometry * rect; Renderer::getID2D1Factory()->CreateRectangleGeometry( - D2D1::RectF(0, 0, getWidth(), getHeight()), + D2D1::RectF(0, 0, m_fWidth * m_fScaleX, m_fHeight * m_fScaleY), &rect ); // 判断点是否在形状内 BOOL ret; rect->FillContainsPoint( - D2D1::Point2F(point.x, point.y), + D2D1::Point2F( + static_cast(point.x), + static_cast(point.y)), &m_MatriFinal, &ret ); @@ -796,10 +802,10 @@ void e2d::Node::setAutoUpdate(bool bAutoUpdate) m_bAutoUpdate = bAutoUpdate; } -void e2d::Node::setDefaultPiovt(float defaultPiovtX, float defaultPiovtY) +void e2d::Node::setDefaultPiovt(double defaultPiovtX, double defaultPiovtY) { - s_fDefaultPiovtX = min(max(defaultPiovtX, 0), 1); - s_fDefaultPiovtY = min(max(defaultPiovtY, 0), 1); + s_fDefaultPiovtX = min(max(static_cast(defaultPiovtX), 0), 1); + s_fDefaultPiovtY = min(max(static_cast(defaultPiovtY), 0), 1); } void e2d::Node::stopAction(Action * action) diff --git a/core/Node/Sprite.cpp b/core/Node/Sprite.cpp index 726636ab..233d145b 100644 --- a/core/Node/Sprite.cpp +++ b/core/Node/Sprite.cpp @@ -18,7 +18,7 @@ e2d::Sprite::Sprite(LPCTSTR imageFileName) loadFrom(imageFileName); } -e2d::Sprite::Sprite(LPCTSTR imageFileName, float x, float y, float width, float height) +e2d::Sprite::Sprite(LPCTSTR imageFileName, double x, double y, double width, double height) : m_pImage(nullptr) { loadFrom(imageFileName); @@ -47,7 +47,7 @@ void e2d::Sprite::loadFrom(LPCTSTR imageFileName) loadFrom(new Image(imageFileName)); } -void e2d::Sprite::clip(float x, float y, float width, float height) +void e2d::Sprite::clip(double x, double y, double width, double height) { m_pImage->clip(x, y, width, height); Node::_setSize( @@ -65,17 +65,19 @@ void e2d::Sprite::onRender() { if (m_pImage && m_pImage->getBitmap()) { + float fClipX = static_cast(m_pImage->getClipX()); + float fClipY = static_cast(m_pImage->getClipY()); // 渲染图片 Renderer::getRenderTarget()->DrawBitmap( m_pImage->getBitmap(), - D2D1::RectF(0, 0, getRealWidth(), getRealHeight()), + D2D1::RectF(0, 0, m_fWidth, m_fHeight), m_fDisplayOpacity, D2D1_BITMAP_INTERPOLATION_MODE_LINEAR, D2D1::RectF( - m_pImage->getClipX(), - m_pImage->getClipY(), - m_pImage->getClipX() + getRealWidth(), - m_pImage->getClipY() + getRealHeight() + fClipX, + fClipY, + fClipX + m_fWidth, + fClipY + m_fHeight ) ); } diff --git a/core/Node/Text.cpp b/core/Node/Text.cpp index 034ca3c6..216766aa 100644 --- a/core/Node/Text.cpp +++ b/core/Node/Text.cpp @@ -34,7 +34,7 @@ e2d::Text::Text(const String & text, Font * font) this->setFont(font); } -e2d::Text::Text(const String & text, String fontFamily, float fontSize, UINT32 color, UINT32 fontWeight, bool italic) +e2d::Text::Text(const String & text, String fontFamily, double fontSize, UINT32 color, UINT32 fontWeight, bool italic) : m_bWordWrapping(false) , m_pFont(nullptr) , m_fWordWrappingWidth(0) @@ -53,12 +53,12 @@ e2d::String e2d::Text::getText() const return m_sText; } -float e2d::Text::getWidth() const +double e2d::Text::getWidth() const { return m_fWordWrappingWidth * m_fScaleX; } -float e2d::Text::getRealWidth() const +double e2d::Text::getRealWidth() const { return m_fWordWrappingWidth; } @@ -92,9 +92,9 @@ void e2d::Text::setWordWrappingEnable(bool value) _initTextLayout(); } -void e2d::Text::setWordWrappingWidth(float wordWrapWidth) +void e2d::Text::setWordWrappingWidth(double wordWrapWidth) { - m_fWordWrappingWidth = max(wordWrapWidth, 0); + m_fWordWrappingWidth = max(static_cast(wordWrapWidth), 0); _initTextLayout(); } @@ -108,8 +108,8 @@ void e2d::Text::onRender() D2D1::RectF( 0, 0, - m_bWordWrapping ? m_fWordWrappingWidth : m_Size.width, - getRealHeight() + m_bWordWrapping ? m_fWordWrappingWidth : m_fWidth, + m_fHeight ), Renderer::getSolidColorBrush() ); diff --git a/core/Shape/Circle.cpp b/core/Shape/Circle.cpp index b946920c..89fd9433 100644 --- a/core/Shape/Circle.cpp +++ b/core/Shape/Circle.cpp @@ -6,7 +6,7 @@ e2d::Circle::Circle() { } -e2d::Circle::Circle(Point center, float radius) +e2d::Circle::Circle(Point center, double radius) : m_pD2dCircle(nullptr) { this->_setCircle(center, radius); @@ -15,7 +15,7 @@ e2d::Circle::Circle(Point center, float radius) e2d::Circle::Circle(Node * node) : m_pD2dCircle(nullptr) { - float minSide = min(node->getRealWidth(), node->getRealHeight()); + double minSide = min(node->getRealWidth(), node->getRealHeight()); this->_setCircle( Point( node->getRealWidth() / 2, @@ -30,17 +30,17 @@ e2d::Circle::~Circle() SafeReleaseInterface(&m_pD2dCircle); } -void e2d::Circle::_setCircle(Point center, float radius) +void e2d::Circle::_setCircle(Point center, double radius) { SafeReleaseInterface(&m_pD2dCircle); Renderer::getID2D1Factory()->CreateEllipseGeometry( D2D1::Ellipse( D2D1::Point2F( - center.x, - center.y), - radius, - radius), + static_cast(center.x), + static_cast(center.y)), + static_cast(radius), + static_cast(radius)), &m_pD2dCircle ); } diff --git a/core/Shape/Ellipse.cpp b/core/Shape/Ellipse.cpp index b7974e2d..6b8ec12d 100644 --- a/core/Shape/Ellipse.cpp +++ b/core/Shape/Ellipse.cpp @@ -6,7 +6,7 @@ e2d::Ellipse::Ellipse() { } -e2d::Ellipse::Ellipse(Point center, float radiusX, float radiusY) +e2d::Ellipse::Ellipse(Point center, double radiusX, double radiusY) : m_pD2dEllipse(nullptr) { this->_setEllipse(center, radiusX, radiusY); @@ -30,17 +30,17 @@ e2d::Ellipse::~Ellipse() SafeReleaseInterface(&m_pD2dEllipse); } -void e2d::Ellipse::_setEllipse(Point center, float radiusX, float radiusY) +void e2d::Ellipse::_setEllipse(Point center, double radiusX, double radiusY) { SafeReleaseInterface(&m_pD2dEllipse); Renderer::getID2D1Factory()->CreateEllipseGeometry( D2D1::Ellipse( D2D1::Point2F( - center.x, - center.y), - radiusX, - radiusY), + static_cast(center.x), + static_cast(center.y)), + static_cast(radiusX), + static_cast(radiusY)), &m_pD2dEllipse ); } diff --git a/core/Shape/Rect.cpp b/core/Shape/Rect.cpp index c869e219..5190cc26 100644 --- a/core/Shape/Rect.cpp +++ b/core/Shape/Rect.cpp @@ -6,7 +6,7 @@ e2d::Rect::Rect() { } -e2d::Rect::Rect(float x, float y, float width, float height) +e2d::Rect::Rect(double x, double y, double width, double height) : m_pD2dRectangle(nullptr) { this->_setRect(x, y, x + width, y + height); @@ -28,12 +28,16 @@ e2d::Rect::~Rect() SafeReleaseInterface(&m_pD2dRectangle); } -void e2d::Rect::_setRect(float left, float top, float right, float bottom) +void e2d::Rect::_setRect(double left, double top, double right, double bottom) { SafeReleaseInterface(&m_pD2dRectangle); Renderer::getID2D1Factory()->CreateRectangleGeometry( - D2D1::RectF(left, top, right, bottom), + D2D1::RectF( + static_cast(left), + static_cast(top), + static_cast(right), + static_cast(bottom)), &m_pD2dRectangle ); } diff --git a/core/Shape/Shape.cpp b/core/Shape/Shape.cpp index 0c7c1e15..6163e28f 100644 --- a/core/Shape/Shape.cpp +++ b/core/Shape/Shape.cpp @@ -59,9 +59,9 @@ void e2d::Shape::setColor(UINT32 color) m_nColor = color; } -void e2d::Shape::setOpacity(float opacity) +void e2d::Shape::setOpacity(double opacity) { - m_fOpacity = min(max(opacity, 0), 1); + m_fOpacity = min(max(static_cast(opacity), 0), 1); } void e2d::Shape::_render() diff --git a/core/Tool/Data.cpp b/core/Tool/Data.cpp index 679a8eef..6b5df6b5 100644 --- a/core/Tool/Data.cpp +++ b/core/Tool/Data.cpp @@ -6,7 +6,7 @@ void e2d::Data::saveInt(const String & key, int value) ::WritePrivateProfileString(L"Default", key, String::toString(value), File::getDefaultSavePath()); } -void e2d::Data::saveFloat(const String & key, float value) +void e2d::Data::saveDouble(const String & key, double value) { ::WritePrivateProfileString(L"Default", key, String::toString(value), File::getDefaultSavePath()); } @@ -21,7 +21,7 @@ int e2d::Data::getInt(const String & key, int default) return ::GetPrivateProfileInt(L"Default", key, default, File::getDefaultSavePath()); } -float e2d::Data::getFloat(const String & key, float default) +double e2d::Data::getDouble(const String & key, double default) { wchar_t temp[32] = { 0 }; ::GetPrivateProfileString(L"Default", key, String::toString(default), temp, 31, File::getDefaultSavePath()); diff --git a/core/Tool/Music.cpp b/core/Tool/Music.cpp index 048a504b..4e49b557 100644 --- a/core/Tool/Music.cpp +++ b/core/Tool/Music.cpp @@ -208,41 +208,41 @@ bool Music::isPlaying() } } -float Music::getVolume() const +double Music::getVolume() const { float fVolume = 0.0f; if (m_pSourceVoice) { m_pSourceVoice->GetVolume(&fVolume); } - return fVolume; + return static_cast(fVolume); } -bool Music::setVolume(float fVolume) +bool Music::setVolume(double fVolume) { if (m_pSourceVoice) { - return SUCCEEDED(m_pSourceVoice->SetVolume(min(max(fVolume, -224), 224))); + return SUCCEEDED(m_pSourceVoice->SetVolume(min(max(static_cast(fVolume), -224), 224))); } return false; } -float Music::getFrequencyRatio() const +double Music::getFrequencyRatio() const { float fFrequencyRatio = 0.0f; if (m_pSourceVoice) { m_pSourceVoice->GetFrequencyRatio(&fFrequencyRatio); } - return fFrequencyRatio; + return static_cast(fFrequencyRatio); } -bool Music::setFrequencyRatio(float fFrequencyRatio) +bool Music::setFrequencyRatio(double fFrequencyRatio) { if (m_pSourceVoice) { fFrequencyRatio = min(max(fFrequencyRatio, XAUDIO2_MIN_FREQ_RATIO), XAUDIO2_MAX_FREQ_RATIO); - return SUCCEEDED(m_pSourceVoice->SetFrequencyRatio(fFrequencyRatio)); + return SUCCEEDED(m_pSourceVoice->SetFrequencyRatio(static_cast(fFrequencyRatio))); } return false; } diff --git a/core/Tool/Timer.cpp b/core/Tool/Timer.cpp index 0d21fe2b..c305a04d 100644 --- a/core/Tool/Timer.cpp +++ b/core/Tool/Timer.cpp @@ -14,7 +14,7 @@ e2d::Timer::Timer() { } -e2d::Timer::Timer(const TimerCallback & callback, float interval /* = 0 */, int repeatTimes /* = -1 */, bool atOnce /* = false */) +e2d::Timer::Timer(const TimerCallback & callback, double interval /* = 0 */, int repeatTimes /* = -1 */, bool atOnce /* = false */) : m_bRunning(false) , m_nRunTimes(0) , m_pParentNode(nullptr) @@ -30,7 +30,7 @@ e2d::Timer::Timer(const TimerCallback & callback, float interval /* = 0 */, int m_bAtOnce = atOnce; } -e2d::Timer::Timer(const String & name, const TimerCallback & callback, float interval /* = 0 */, int repeatTimes /* = -1 */, bool atOnce /* = false */) +e2d::Timer::Timer(const String & name, const TimerCallback & callback, double interval /* = 0 */, int repeatTimes /* = -1 */, bool atOnce /* = false */) : m_bRunning(false) , m_nRunTimes(0) , m_pParentNode(nullptr) @@ -78,7 +78,7 @@ void e2d::Timer::setName(const String & name) m_sName = name; } -void e2d::Timer::setInterval(float interval) +void e2d::Timer::setInterval(double interval) { m_fInterval = max(interval, 0); } diff --git a/core/Transition/ETransition.cpp b/core/Transition/ETransition.cpp index d704afc7..34e963d2 100644 --- a/core/Transition/ETransition.cpp +++ b/core/Transition/ETransition.cpp @@ -1,7 +1,7 @@ #include "..\ebase.h" #include "..\etransitions.h" -e2d::Transition::Transition(float duration) +e2d::Transition::Transition(double duration) : m_bEnd(false) , m_fLast(0) , m_fRateOfProgress(0) diff --git a/core/Transition/ETransitionEmerge.cpp b/core/Transition/ETransitionEmerge.cpp index c5d810e9..609a24c0 100644 --- a/core/Transition/ETransitionEmerge.cpp +++ b/core/Transition/ETransitionEmerge.cpp @@ -1,7 +1,7 @@ #include "..\etransitions.h" #include "..\enodes.h" -e2d::TransitionEmerge::TransitionEmerge(float duration) +e2d::TransitionEmerge::TransitionEmerge(double duration) : Transition(duration) { } diff --git a/core/Transition/ETransitionFade.cpp b/core/Transition/ETransitionFade.cpp index 4aeb22f1..673d0d71 100644 --- a/core/Transition/ETransitionFade.cpp +++ b/core/Transition/ETransitionFade.cpp @@ -1,7 +1,7 @@ #include "..\etransitions.h" #include "..\enodes.h" -e2d::TransitionFade::TransitionFade(float fadeOutDuration, float fadeInDuration) +e2d::TransitionFade::TransitionFade(double fadeOutDuration, double fadeInDuration) : Transition(0) , m_fFadeOutDuration(fadeOutDuration) , m_fFadeInDuration(fadeInDuration) diff --git a/core/Transition/ETransitionMove.cpp b/core/Transition/ETransitionMove.cpp index ac531c75..b75a63f7 100644 --- a/core/Transition/ETransitionMove.cpp +++ b/core/Transition/ETransitionMove.cpp @@ -1,7 +1,7 @@ #include "..\etransitions.h" #include "..\enodes.h" -e2d::TransitionMove::TransitionMove(float duration, MOVE_DIRECT direct) +e2d::TransitionMove::TransitionMove(double duration, MOVE_DIRECT direct) : Transition(duration) , m_Direct(direct) { diff --git a/core/eactions.h b/core/eactions.h index 89cb50b1..05a37ba4 100644 --- a/core/eactions.h +++ b/core/eactions.h @@ -74,7 +74,7 @@ protected: bool m_bInit; Node * m_pTarget; Scene *m_pParentScene; - float m_fLast; + double m_fLast; }; @@ -84,7 +84,7 @@ class ActionGradual : public: // 创建时长动画 ActionGradual( - float duration + double duration ); protected: @@ -95,8 +95,8 @@ protected: virtual void _update() override; protected: - float m_fDuration; - float m_fRateOfProgress; + double m_fDuration; + double m_fRateOfProgress; }; @@ -106,7 +106,7 @@ class ActionMoveBy : public: // 创建相对位移动画 ActionMoveBy( - float duration, /* 动画持续时长 */ + double duration, /* 动画持续时长 */ Vector vector /* 位移向量 */ ); @@ -135,7 +135,7 @@ class ActionMoveTo : public: // 创建位移动画 ActionMoveTo( - float duration, /* 动画持续时长 */ + double duration, /* 动画持续时长 */ Point pos /* 位移至目标点的坐标 */ ); @@ -157,15 +157,15 @@ class ActionScaleBy : public: // 创建相对缩放动画 ActionScaleBy( - float duration, /* 动画持续时长 */ - float scale /* 缩放比例变化 */ + double duration, /* 动画持续时长 */ + double scale /* 缩放比例变化 */ ); // 创建相对缩放动画 ActionScaleBy( - float duration, /* 动画持续时长 */ - float scaleX, /* 横向缩放比例变化 */ - float scaleY /* 纵向缩放比例变化 */ + double duration, /* 动画持续时长 */ + double scaleX, /* 横向缩放比例变化 */ + double scaleY /* 纵向缩放比例变化 */ ); // 获取该动画的拷贝对象 @@ -182,10 +182,10 @@ protected: virtual void _update() override; protected: - float m_nBeginScaleX; - float m_nBeginScaleY; - float m_nVariationX; - float m_nVariationY; + double m_nBeginScaleX; + double m_nBeginScaleY; + double m_nVariationX; + double m_nVariationY; }; @@ -195,15 +195,15 @@ class ActionScaleTo : public: // 创建缩放动画 ActionScaleTo( - float duration, /* 动画持续时长 */ - float scale /* 缩放至目标比例 */ + double duration, /* 动画持续时长 */ + double scale /* 缩放至目标比例 */ ); // 创建缩放动画 ActionScaleTo( - float duration, /* 动画持续时长 */ - float scaleX, /* 横向缩放至目标比例 */ - float scaleY /* 纵向缩放至目标比例 */ + double duration, /* 动画持续时长 */ + double scaleX, /* 横向缩放至目标比例 */ + double scaleY /* 纵向缩放至目标比例 */ ); // 获取该动画的拷贝对象 @@ -214,8 +214,8 @@ protected: virtual void _init() override; protected: - float m_nEndScaleX; - float m_nEndScaleY; + double m_nEndScaleX; + double m_nEndScaleY; }; @@ -225,8 +225,8 @@ class ActionOpacityBy : public: // 创建透明度相对渐变动画 ActionOpacityBy( - float duration, /* 动画持续时长 */ - float opacity /* 透明度相对变化值 */ + double duration, /* 动画持续时长 */ + double opacity /* 透明度相对变化值 */ ); // 获取该动画的拷贝对象 @@ -243,8 +243,8 @@ protected: virtual void _update() override; protected: - float m_nBeginVal; - float m_nVariation; + double m_nBeginVal; + double m_nVariation; }; @@ -254,8 +254,8 @@ class ActionOpacityTo : public: // 创建透明度渐变动画 ActionOpacityTo( - float duration, /* 动画持续时长 */ - float opacity /* 透明度渐变至目标值 */ + double duration, /* 动画持续时长 */ + double opacity /* 透明度渐变至目标值 */ ); // 获取该动画的拷贝对象 @@ -266,7 +266,7 @@ protected: virtual void _init() override; protected: - float m_nEndVal; + double m_nEndVal; }; @@ -276,7 +276,7 @@ class ActionFadeIn : public: // 创建淡入动画 ActionFadeIn( - float duration /* 动画持续时长 */ + double duration /* 动画持续时长 */ ) : ActionOpacityTo(duration, 1) {} }; @@ -287,7 +287,7 @@ class ActionFadeOut : public: // 创建淡出动画 ActionFadeOut( - float duration /* 动画持续时长 */ + double duration /* 动画持续时长 */ ) : ActionOpacityTo(duration, 0) {} }; @@ -298,8 +298,8 @@ class ActionRotateBy : public: // 创建相对旋转动画 ActionRotateBy( - float duration, /* 动画持续时长 */ - float rotation /* 旋转角度变化值 */ + double duration, /* 动画持续时长 */ + double rotation /* 旋转角度变化值 */ ); // 获取该动画的拷贝对象 @@ -316,8 +316,8 @@ protected: virtual void _update() override; protected: - float m_nBeginVal; - float m_nVariation; + double m_nBeginVal; + double m_nVariation; }; @@ -327,8 +327,8 @@ class ActionRotateTo : public: // 创建旋转动画 ActionRotateTo( - float duration, /* 动画持续时长 */ - float rotation /* 旋转角度至目标值 */ + double duration, /* 动画持续时长 */ + double rotation /* 旋转角度至目标值 */ ); // 获取该动画的拷贝对象 @@ -339,7 +339,7 @@ protected: virtual void _init() override; protected: - float m_nEndVal; + double m_nEndVal; }; @@ -438,7 +438,7 @@ class ActionDelay : public: // 创建延时动作 ActionDelay( - float duration /* 延迟时长(秒) */ + double duration /* 延迟时长(秒) */ ); // 获取该动作的拷贝对象 @@ -452,7 +452,7 @@ protected: virtual void _update() override; protected: - float m_fDelayTime; + double m_fDelayTime; }; @@ -500,7 +500,7 @@ public: // 创建特定帧间隔的帧动画 Animation( - float interval /* 帧间隔(秒) */ + double interval /* 帧间隔(秒) */ ); virtual ~Animation(); @@ -512,7 +512,7 @@ public: // 设置每一帧的时间间隔 void setInterval( - float interval /* 帧间隔(秒) */ + double interval /* 帧间隔(秒) */ ); // 获取该动画的拷贝对象 @@ -532,7 +532,7 @@ protected: virtual void _update() override; protected: - float m_fInterval; + double m_fInterval; UINT m_nFrameIndex; std::vector m_vFrames; }; diff --git a/core/ebase.h b/core/ebase.h index 4d6e0f69..d7626f1f 100644 --- a/core/ebase.h +++ b/core/ebase.h @@ -54,10 +54,10 @@ public: static String getTitle(); // 获取窗口宽度 - static float getWidth(); + static double getWidth(); // 获取窗口高度 - static float getHeight(); + static double getHeight(); // 获取窗口大小 static Size getSize(); @@ -116,7 +116,7 @@ public: static int getDeltaTime(); // 获取游戏开始时长(秒) - static float getTotalTime(); + static double getTotalTime(); private: // 初始化计时操作 @@ -188,22 +188,22 @@ public: static bool isMouseMButtonRelease(); // 获得鼠标X轴坐标值 - static float getMouseX(); + static double getMouseX(); // 获得鼠标Y轴坐标值 - static float getMouseY(); + static double getMouseY(); // 获得鼠标坐标值 static Point getMousePos(); // 获得鼠标X轴坐标增量 - static float getMouseDeltaX(); + static double getMouseDeltaX(); // 获得鼠标Y轴坐标增量 - static float getMouseDeltaY(); + static double getMouseDeltaY(); // 获得鼠标Z轴(鼠标滚轮)坐标增量 - static float getMouseDeltaZ(); + static double getMouseDeltaZ(); private: // 初始化 DirectInput 以及键盘鼠标设备 diff --git a/core/ecommon.h b/core/ecommon.h index 5252f74b..edd28867 100644 --- a/core/ecommon.h +++ b/core/ecommon.h @@ -11,8 +11,8 @@ namespace e2d // 表示坐标的结构体 struct Point { - float x; - float y; + double x; + double y; Point() { @@ -20,7 +20,7 @@ struct Point y = 0; } - Point(float x, float y) + Point(double x, double y) { this->x = x; this->y = y; @@ -36,12 +36,12 @@ struct Point return Point(x - p.x, y - p.y); } - Point operator * (float const & value) + Point operator * (double const & value) { return Point(x * value, y * value); } - Point operator / (float const & value) + Point operator / (double const & value) { return Point(x / value, y / value); } @@ -50,8 +50,8 @@ struct Point // 表示大小的结构体 struct Size { - float width; - float height; + double width; + double height; Size() { @@ -59,7 +59,7 @@ struct Size height = 0; } - Size(float width, float height) + Size(double width, double height) { this->width = width; this->height = height; @@ -75,12 +75,12 @@ struct Size return Size(width - size.width, height - size.height); } - Size operator * (float const & value) + Size operator * (double const & value) { return Size(width * value, height * value); } - Size operator / (float const & value) + Size operator / (double const & value) { return Size(width / value, height / value); } @@ -428,7 +428,7 @@ public: Font( String fontFamily, - float fontSize = 22, + double fontSize = 22, UINT32 color = Color::WHITE, UINT32 fontWeight = FontWeight::REGULAR, bool italic = false @@ -437,7 +437,7 @@ public: virtual ~Font(); // 获取当前字号 - float getFontSize() const; + double getFontSize() const; // 获取当前字体粗细值 UINT32 getFontWeight() const; @@ -455,7 +455,7 @@ public: // 设置字号 void setSize( - float fontSize + double fontSize ); // 设置字体粗细值 @@ -507,20 +507,20 @@ public: // 从本地文件中读取资源 Image( LPCTSTR strFilePath,/* 图片文件路径 */ - float nClipX, /* 裁剪位置 X 坐标 */ - float nClipY, /* 裁剪位置 Y 坐标 */ - float nClipWidth, /* 裁剪宽度 */ - float nClipHeight /* 裁剪高度 */ + double nClipX, /* 裁剪位置 X 坐标 */ + double nClipY, /* 裁剪位置 Y 坐标 */ + double nClipWidth, /* 裁剪宽度 */ + double nClipHeight /* 裁剪高度 */ ); virtual ~Image(); // 裁剪图片 void clip( - float nClipX, /* 裁剪位置 X 坐标 */ - float nClipY, /* 裁剪位置 Y 坐标 */ - float nClipWidth, /* 裁剪宽度 */ - float nClipHeight /* 裁剪高度 */ + double nClipX, /* 裁剪位置 X 坐标 */ + double nClipY, /* 裁剪位置 Y 坐标 */ + double nClipWidth, /* 裁剪宽度 */ + double nClipHeight /* 裁剪高度 */ ); // 从本地文件中读取图片 @@ -531,35 +531,35 @@ public: // 从本地文件中读取图片并裁剪 void loadFrom( const String & strFilePath,/* 图片文件路径 */ - float nClipX, /* 裁剪位置 X 坐标 */ - float nClipY, /* 裁剪位置 Y 坐标 */ - float nClipWidth, /* 裁剪宽度 */ - float nClipHeight /* 裁剪高度 */ + double nClipX, /* 裁剪位置 X 坐标 */ + double nClipY, /* 裁剪位置 Y 坐标 */ + double nClipWidth, /* 裁剪宽度 */ + double nClipHeight /* 裁剪高度 */ ); // 获取宽度 - virtual float getWidth() const; + virtual double getWidth() const; // 获取高度 - virtual float getHeight() const; + virtual double getHeight() const; // 获取大小 virtual Size getSize() const; // 获取源图片宽度 - virtual float getSourceWidth() const; + virtual double getSourceWidth() const; // 获取源图片高度 - virtual float getSourceHeight() const; + virtual double getSourceHeight() const; // 获取源图片大小 virtual Size getSourceSize() const; // 获取裁剪位置 X 坐标 - virtual float getClipX() const; + virtual double getClipX() const; // 获取裁剪位置 Y 坐标 - virtual float getClipY() const; + virtual double getClipY() const; // 获取裁剪位置 virtual Point getClipPos() const; @@ -576,10 +576,10 @@ public: static void clearCache(); protected: - float m_fSourceClipX; - float m_fSourceClipY; - float m_fSourceClipWidth; - float m_fSourceClipHeight; + double m_fSourceClipX; + double m_fSourceClipY; + double m_fSourceClipWidth; + double m_fSourceClipHeight; ID2D1Bitmap * m_pBitmap; }; diff --git a/core/enodes.h b/core/enodes.h index e875bb4d..c5f04be3 100644 --- a/core/enodes.h +++ b/core/enodes.h @@ -60,55 +60,55 @@ public: virtual int getOrder() const; // 获取节点横坐标 - virtual float getPosX() const; + virtual double getPosX() const; // 获取节点纵坐标 - virtual float getPosY() const; + virtual double getPosY() const; // 获取节点坐标 virtual Point getPos() const; // 获取节点宽度 - virtual float getWidth() const; + virtual double getWidth() const; // 获取节点高度 - virtual float getHeight() const; + virtual double getHeight() const; // 获取节点宽度(不考虑缩放) - virtual float getRealWidth() const; + virtual double getRealWidth() const; // 获取节点高度(不考虑缩放) - virtual float getRealHeight() const; + virtual double getRealHeight() const; // 获取节点大小(不考虑缩放) virtual Size getRealSize() const; // 获取节点的中心点 - virtual float getPivotX() const; + virtual double getPivotX() const; // 获取节点的中心点 - virtual float getPivotY() const; + virtual double getPivotY() const; // 获取节点大小 virtual Size getSize() const; // 获取节点横向缩放比例 - virtual float getScaleX() const; + virtual double getScaleX() const; // 获取节点纵向缩放比例 - virtual float getScaleY() const; + virtual double getScaleY() const; // 获取节点横向倾斜角度 - virtual float getSkewX() const; + virtual double getSkewX() const; // 获取节点纵向倾斜角度 - virtual float getSkewY() const; + virtual double getSkewY() const; // 获取节点旋转角度 - virtual float getRotation() const; + virtual double getRotation() const; // 获取节点透明度 - virtual float getOpacity() const; + virtual double getOpacity() const; // 获取节点形状 virtual Shape * getShape() const; @@ -168,12 +168,12 @@ public: // 设置节点横坐标 virtual void setPosX( - float x + double x ); // 设置节点纵坐标 virtual void setPosY( - float y + double y ); // 设置节点坐标 @@ -183,24 +183,24 @@ public: // 设置节点坐标 virtual void setPos( - float x, - float y + double x, + double y ); // 移动节点 virtual void movePosX( - float x + double x ); // 移动节点 virtual void movePosY( - float y + double y ); // 移动节点 virtual void movePos( - float x, - float y + double x, + double y ); // 移动节点 @@ -217,76 +217,76 @@ public: // 设置横向缩放比例 // 默认为 1.0f virtual void setScaleX( - float scaleX + double scaleX ); // 设置纵向缩放比例 // 默认为 1.0f virtual void setScaleY( - float scaleY + double scaleY ); // 设置缩放比例 // 默认为 (1.0f, 1.0f) virtual void setScale( - float scaleX, - float scaleY + double scaleX, + double scaleY ); // 设置缩放比例 // 默认为 1.0f virtual void setScale( - float scale + double scale ); // 设置横向倾斜角度 // 默认为 0 virtual void setSkewX( - float angleX + double angleX ); // 设置纵向倾斜角度 // 默认为 0 virtual void setSkewY( - float angleY + double angleY ); // 设置倾斜角度 // 默认为 (0, 0) virtual void setSkew( - float angleX, - float angleY + double angleX, + double angleY ); // 设置旋转角度 // 默认为 0 virtual void setRotation( - float rotation + double rotation ); // 设置透明度 // 默认为 1.0f, 范围 [0, 1] virtual void setOpacity( - float opacity + double opacity ); // 设置中心点的横向位置 // 默认为 0, 范围 [0, 1] virtual void setPivotX( - float pivotX + double pivotX ); // 设置中心点的纵向位置 // 默认为 0, 范围 [0, 1] virtual void setPivotY( - float pivotY + double pivotY ); // 设置中心点位置 // 默认为 (0, 0), 范围 [0, 1] virtual void setPivot( - float pivotX, - float pivotY + double pivotX, + double pivotY ); // 设置节点形状 @@ -331,8 +331,8 @@ public: // 修改节点的默认中心点位置 static void setDefaultPiovt( - float defaultPiovtX, - float defaultPiovtY + double defaultPiovtX, + double defaultPiovtY ); protected: @@ -367,8 +367,8 @@ protected: // 修改节点大小 void _setSize( - float width, - float height + double width, + double height ); // 更新节点二维矩阵 @@ -379,9 +379,11 @@ protected: protected: String m_sName; - size_t m_nHashName; - Point m_Pos; - Size m_Size; + unsigned m_nHashName; + float m_fPosX; + float m_fPosY; + float m_fWidth; + float m_fHeight; float m_fScaleX; float m_fScaleY; float m_fRotation; @@ -426,10 +428,10 @@ public: // 从文件图片创建精灵并裁剪 Sprite( LPCTSTR imageFileName, - float x, - float y, - float width, - float height + double x, + double y, + double width, + double height ); virtual ~Sprite(); @@ -446,10 +448,10 @@ public: // 裁剪图片 virtual void clip( - float x, - float y, - float width, - float height + double x, + double y, + double width, + double height ); // 获取 EImage 对象 @@ -485,7 +487,7 @@ public: Text( const String & text, String fontFamily, - float fontSize = 22, + double fontSize = 22, UINT32 color = Color::WHITE, UINT32 fontWeight = FontWeight::REGULAR, bool italic = false @@ -497,10 +499,10 @@ public: String getText() const; // 获取文本宽度 - virtual float getWidth() const override; + virtual double getWidth() const override; // 获取文本宽度(不考虑缩放) - virtual float getRealWidth() const override; + virtual double getRealWidth() const override; // 获取字体 Font * getFont() const; @@ -522,7 +524,7 @@ public: // 设置文字换行宽度(WordWrapping 打开时生效) void setWordWrappingWidth( - float fWordWrapWidth + double fWordWrapWidth ); // 渲染文字 diff --git a/core/eshape.h b/core/eshape.h index b6485271..743768b3 100644 --- a/core/eshape.h +++ b/core/eshape.h @@ -61,7 +61,7 @@ public: // 设置绘制透明度 void setOpacity( - float opacity + double opacity ); protected: @@ -95,10 +95,10 @@ public: // 根据左上角坐标和宽高创建矩形 Rect( - float x, - float y, - float width, - float height + double x, + double y, + double width, + double height ); // 创建一个和节点位置大小相同的矩形 @@ -110,10 +110,10 @@ public: protected: void _setRect( - float left, - float top, - float right, - float bottom + double left, + double top, + double right, + double bottom ); virtual ID2D1RectangleGeometry * _getD2dGeometry() const override; @@ -133,7 +133,7 @@ public: // 根据圆心和半径创建圆形 Circle( Point center, - float radius + double radius ); // 创建一个和节点位置大小相同的圆形 @@ -146,7 +146,7 @@ public: protected: void _setCircle( Point center, - float radius + double radius ); virtual ID2D1EllipseGeometry * _getD2dGeometry() const override; @@ -166,8 +166,8 @@ public: // 根据圆心和半径创建椭圆 Ellipse( Point center, - float radiusX, - float radiusY + double radiusX, + double radiusY ); // 创建一个和节点位置大小相同的椭圆 @@ -180,8 +180,8 @@ public: protected: void _setEllipse( Point center, - float radiusX, - float radiusY + double radiusX, + double radiusY ); virtual ID2D1EllipseGeometry * _getD2dGeometry() const override; diff --git a/core/etools.h b/core/etools.h index 4dd8f04a..d9a77eb7 100644 --- a/core/etools.h +++ b/core/etools.h @@ -16,20 +16,12 @@ public: template static inline T range(T min, T max) { return e2d::Random::randomInt(min, max); } - // 取得浮点数范围内的一个随机数 - static inline float range(float min, float max) { return e2d::Random::randomReal(min, max); } - // 取得浮点数范围内的一个随机数 static inline double range(double min, double max) { return e2d::Random::randomReal(min, max); } - // 取得浮点数范围内的一个随机数 - static inline long double range(long double min, long double max) { return e2d::Random::randomReal(min, max); } - // 取得整型范围内的一个随机数 template - static T randomInt( - T min, - T max) + static T randomInt(T min, T max) { std::uniform_int_distribution dist(min, max); return dist(getEngine()); @@ -37,9 +29,7 @@ public: // 取得浮点数类型范围内的一个随机数 template - static T randomReal( - T min, - T max) + static T randomReal(T min, T max) { std::uniform_real_distribution dist(min, max); return dist(getEngine()); @@ -61,7 +51,7 @@ public: Timer( const TimerCallback &callback, /* 定时器回调函数 */ - float interval = 0, /* 时间间隔(秒) */ + double interval = 0, /* 时间间隔(秒) */ int repeatTimes = -1, /* 定时器执行次数 */ bool atOnce = false /* 是否立即执行 */ ); @@ -69,7 +59,7 @@ public: Timer( const String &name, /* 定时器名称 */ const TimerCallback &callback, /* 定时器回调函数 */ - float interval = 0, /* 时间间隔(秒) */ + double interval = 0, /* 时间间隔(秒) */ int repeatTimes = -1, /* 定时器执行次数 */ bool atOnce = false /* 是否立即执行 */ ); @@ -96,7 +86,7 @@ public: // 设置定时器执行间隔(秒) void setInterval( - float interval + double interval ); // 设置定时器回调函数 @@ -127,8 +117,8 @@ protected: bool m_bAtOnce; int m_nRunTimes; int m_nRepeatTimes; - float m_fInterval; - float m_fLast; + double m_fInterval; + double m_fLast; Node * m_pParentNode; TimerCallback m_Callback; }; @@ -144,10 +134,10 @@ public: int value ); - // 保存 float 类型的值 - static void saveFloat( + // 保存 double 类型的值 + static void saveDouble( const String & key, - float value + double value ); // 保存 字符串 类型的值 @@ -163,11 +153,11 @@ public: int defaultValue ); - // 获取 float 类型的值 + // 获取 double 类型的值 // (若不存在则返回 defaultValue 参数的值) - static float getFloat( + static double getDouble( const String & key, - float defaultValue + double defaultValue ); // 获取 字符串 类型的值 @@ -229,19 +219,19 @@ public: bool isPlaying(); // 获取音量 - float getVolume() const; + double getVolume() const; // 设置音量 bool setVolume( - float fVolume /* 音量范围为 -224 ~ 224,其中 0 是静音,1 是正常音量 */ + double fVolume /* 音量范围为 -224 ~ 224,其中 0 是静音,1 是正常音量 */ ); // 获取频率比 - float getFrequencyRatio() const; + double getFrequencyRatio() const; // 设置频率比 bool setFrequencyRatio( - float fFrequencyRatio /* 频率比范围为 1/1024.0f ~ 1024.0f,其中 1.0 为正常声调 */ + double fFrequencyRatio /* 频率比范围为 1/1024.0f ~ 1024.0f,其中 1.0 为正常声调 */ ); // 获取 IXAudio2SourceVoice 对象 diff --git a/core/etransitions.h b/core/etransitions.h index 92502b60..9395cee6 100644 --- a/core/etransitions.h +++ b/core/etransitions.h @@ -13,7 +13,7 @@ class Transition : friend SceneManager; public: - Transition(float duration); + Transition(double duration); // 场景切换动画是否结束 bool isEnding(); @@ -42,9 +42,9 @@ protected: protected: bool m_bEnd; - float m_fLast; - float m_fDuration; - float m_fRateOfProgress; + double m_fLast; + double m_fDuration; + double m_fRateOfProgress; Scene * m_pPrevScene; Scene * m_pNextScene; }; @@ -56,8 +56,8 @@ class TransitionFade : public: // 创建淡入淡出式的场景切换动画 TransitionFade( - float fadeOutDuration, /* 前一场景淡出动画持续时长 */ - float fadeInDuration /* 后一场景淡入动画持续时长 */ + double fadeOutDuration, /* 前一场景淡出动画持续时长 */ + double fadeInDuration /* 后一场景淡入动画持续时长 */ ); protected: @@ -69,8 +69,8 @@ protected: virtual void _reset() override; protected: - float m_fFadeOutDuration; - float m_fFadeInDuration; + double m_fFadeOutDuration; + double m_fFadeInDuration; bool m_bFadeOutTransioning; }; @@ -81,7 +81,7 @@ class TransitionEmerge : public: // 创建浮现式的场景切换动画 TransitionEmerge( - float duration /* 浮现动画持续时长 */ + double duration /* 浮现动画持续时长 */ ); protected: @@ -108,7 +108,7 @@ public: // 创建移动式的场景切换动画 TransitionMove( - float moveDuration, /* 场景移动动画持续时长 */ + double moveDuration, /* 场景移动动画持续时长 */ MOVE_DIRECT direct = LEFT /* 场景移动方向 */ );