diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-07-28 17:38:34 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-07-28 17:38:34 (GMT) |
| commit | c14a008d463dab4e6e2168fa28afb26384432b36 (patch) | |
| tree | fece974b4df3a93b48393ceda3e6ec1d8e070164 | |
| parent | ca1f81a26423fd9c86bb76b20e9992db7204fa4f (diff) | |
| download | powder-c14a008d463dab4e6e2168fa28afb26384432b36.zip powder-c14a008d463dab4e6e2168fa28afb26384432b36.tar.gz | |
Corrections to GameSave to prevent conflicts in the Expanded state, improve Save preview comments display
| -rw-r--r-- | src/client/GameSave.cpp | 17 | ||||
| -rw-r--r-- | src/graphics/Graphics.cpp | 18 | ||||
| -rw-r--r-- | src/interface/ScrollPanel.cpp | 6 | ||||
| -rw-r--r-- | src/interface/ScrollPanel.h | 2 | ||||
| -rw-r--r-- | src/preview/PreviewView.cpp | 28 |
5 files changed, 47 insertions, 24 deletions
diff --git a/src/client/GameSave.cpp b/src/client/GameSave.cpp index c683119..96306ac 100644 --- a/src/client/GameSave.cpp +++ b/src/client/GameSave.cpp @@ -85,6 +85,9 @@ GameSave::GameSave(std::vector<char> data) expanded = false; hasOriginalData = true; originalData = data; +#ifdef DEBUG + std::cout << "Creating Collapsed save from data" << std::endl; +#endif try { Expand(); @@ -114,6 +117,9 @@ GameSave::GameSave(std::vector<unsigned char> data) expanded = false; hasOriginalData = true; originalData = std::vector<char>(data.begin(), data.end()); +#ifdef DEBUG + std::cout << "Creating Collapsed save from data" << std::endl; +#endif try { Expand(); @@ -140,9 +146,12 @@ GameSave::GameSave(char * data, int dataSize) fanVelYPtr = NULL; particles = NULL; - expanded = true; + expanded = false; hasOriginalData = true; originalData = std::vector<char>(data, data+dataSize); +#ifdef DEBUG + std::cout << "Creating Expanded save from data" << std::endl; +#endif try { Expand(); @@ -219,10 +228,16 @@ void GameSave::read(char * data, int dataSize) { if(data[0] == 0x50 || data[0] == 0x66) { +#ifdef DEBUG + std::cout << "Reading PSv..." << std::endl; +#endif readPSv(data, dataSize); } else if(data[0] == 'O') { +#ifdef DEBUG + std::cout << "Reading OPS..." << std::endl; +#endif readOPS(data, dataSize); } else diff --git a/src/graphics/Graphics.cpp b/src/graphics/Graphics.cpp index ac6878c..20f5851 100644 --- a/src/graphics/Graphics.cpp +++ b/src/graphics/Graphics.cpp @@ -1,4 +1,5 @@ #include <cmath> +#include <iostream> #include <bzlib.h> #include <string> #include "Config.h" @@ -330,6 +331,9 @@ pixel *Graphics::resample_img_nn(pixel * src, int sw, int sh, int rw, int rh) pixel *Graphics::resample_img(pixel *src, int sw, int sh, int rw, int rh) { +#ifdef DEBUG + std::cout << "Resampling " << sw << "x" << sh << " to " << rw << "x" << rh << std::endl; +#endif int y, x, fxceil, fyceil; //int i,j,x,y,w,h,r,g,b,c; pixel *q = NULL; @@ -337,7 +341,7 @@ pixel *Graphics::resample_img(pixel *src, int sw, int sh, int rw, int rh) //Don't resample q = (pixel *)malloc(rw*rh*PIXELSIZE); memcpy(q, src, rw*rh*PIXELSIZE); - } else if(rw > sw && rh > sh){ + } else if(rw >= sw && rh >= sh){ float fx, fy, fyc, fxc; double intp; pixel tr, tl, br, bl; @@ -376,14 +380,16 @@ pixel *Graphics::resample_img(pixel *src, int sw, int sh, int rw, int rh) rw = sw; rh = sh; while(rrw != rw && rrh != rh){ - rw *= 0.7; - rh *= 0.7; - if(rw <= rrw || rh <= rrh){ + if(rw > rrw) + rw *= 0.7; + if(rh > rrh) + rh *= 0.7; + if(rw <= rrw) rw = rrw; + if(rh <= rrh) rh = rrh; - } q = (pixel *)malloc(rw*rh*PIXELSIZE); - //Bilinear interpolation for upscaling + //Bilinear interpolation for (y=0; y<rh; y++) for (x=0; x<rw; x++) { diff --git a/src/interface/ScrollPanel.cpp b/src/interface/ScrollPanel.cpp index ecf527b..c2d4f66 100644 --- a/src/interface/ScrollPanel.cpp +++ b/src/interface/ScrollPanel.cpp @@ -31,8 +31,10 @@ void ScrollPanel::XOnMouseWheelInside(int localx, int localy, int d) yScrollVel -= d*2; } -void ScrollPanel::XDraw(const Point& screenPos) +void ScrollPanel::Draw(const Point& screenPos) { + Panel::Draw(screenPos); + Graphics * g = ui::Engine::Ref().g; //Vertical scroll bar @@ -45,7 +47,7 @@ void ScrollPanel::XDraw(const Point& screenPos) scrollPos = float(Size.Y-scrollHeight)*(float(offsetY)/float(maxOffset.Y)); } - g->fillrect(screenPos.X+(Size.X-scrollBarWidth), screenPos.Y, scrollBarWidth, Size.Y, 255, 255, 255, 55); + g->fillrect(screenPos.X+(Size.X-scrollBarWidth), screenPos.Y, scrollBarWidth, Size.Y, 125, 125, 125, 100); g->fillrect(screenPos.X+(Size.X-scrollBarWidth), screenPos.Y+scrollPos, scrollBarWidth, scrollHeight, 255, 255, 255, 255); } } diff --git a/src/interface/ScrollPanel.h b/src/interface/ScrollPanel.h index ae2a4ce..fc54b31 100644 --- a/src/interface/ScrollPanel.h +++ b/src/interface/ScrollPanel.h @@ -18,7 +18,7 @@ namespace ui int GetScrollLimit(); - virtual void XDraw(const Point& screenPos); + virtual void Draw(const Point& screenPos); virtual void XTick(float dt); virtual void XOnMouseWheelInside(int localx, int localy, int d); }; diff --git a/src/preview/PreviewView.cpp b/src/preview/PreviewView.cpp index f20df6f..ba081be 100644 --- a/src/preview/PreviewView.cpp +++ b/src/preview/PreviewView.cpp @@ -156,7 +156,7 @@ PreviewView::PreviewView(): pageInfo = new ui::Label(ui::Point((XRES/2) + 5, Size.Y+1), ui::Point(Size.X-((XRES/2) + 10), 15), "Page 1 of 1"); pageInfo->Appearance.HorizontalAlign = ui::Appearance::AlignCentre; authorDateLabel->Appearance.VerticalAlign = ui::Appearance::AlignMiddle; - commentsPanel = new ui::ScrollPanel(ui::Point(XRES/2, 0), ui::Point(Size.X-(XRES/2), Size.Y-commentBoxHeight)); + commentsPanel = new ui::ScrollPanel(ui::Point((XRES/2)+1, 1), ui::Point((Size.X-(XRES/2))-2, Size.Y-commentBoxHeight)); AddComponent(commentsPanel); AddComponent(pageInfo); @@ -202,6 +202,18 @@ void PreviewView::DoDraw() g->drawrect(Position.X+(Size.X/2)-100, Position.Y+(Size.Y/2)-25, 200, 50, 255, 255, 255, 180); g->drawtext(Position.X+(Size.X/2)-(Graphics::textwidth("Loading save...")/2), Position.Y+(Size.Y/2)-5, "Loading save...", style::Colour::InformationTitle.Red, style::Colour::InformationTitle.Green, style::Colour::InformationTitle.Blue, 255); } + + for(int i = 0; i < commentTextComponents.size(); i++) + { + int linePos = commentTextComponents[i]->Position.Y+commentsPanel->ViewportPosition.Y+commentTextComponents[i]->Size.Y+4; + if(linePos > 0 && linePos < Size.Y-commentBoxHeight) + g->draw_line( + Position.X+1+XRES/2, + Position.Y+linePos, + Position.X+Size.X-2, + Position.Y+linePos, + 255, 255, 255, 100); + } } void PreviewView::OnDraw() @@ -218,7 +230,7 @@ void PreviewView::OnDraw() g->draw_image(savePreview->Data, (Position.X+1)+(((XRES/2)-savePreview->Size.X)/2), (Position.Y+1)+(((YRES/2)-savePreview->Size.Y)/2), savePreview->Size.X, savePreview->Size.Y, 255); } g->drawrect(Position.X, Position.Y, (XRES/2)+1, (YRES/2)+1, 255, 255, 255, 100); - g->draw_line(Position.X+1+XRES/2, Position.Y+1, Position.X+1+XRES/2, Position.Y+Size.Y-2, 200, 200, 200, 255); + g->draw_line(Position.X+XRES/2, Position.Y+1, Position.X+XRES/2, Position.Y+Size.Y-2, 200, 200, 200, 255); g->draw_line(Position.X+1, Position.Y+12+YRES/2, Position.X-1+XRES/2, Position.Y+12+YRES/2, 100, 100, 100,255); @@ -233,18 +245,6 @@ void PreviewView::OnDraw() g->draw_icon(1+Position.X+2, Position.Y+(YRES/2)+4, IconVoteUp); g->draw_icon(Position.X+(XRES/2)-12, Position.Y+(YRES/2)+1, IconVoteDown); } - - for(int i = 0; i < commentTextComponents.size(); i++) - { - int linePos = commentTextComponents[i]->Position.Y+commentsPanel->ViewportPosition.Y+commentTextComponents[i]->Size.Y+4; - if(linePos > 0 && linePos < Size.Y-commentBoxHeight) - g->draw_line( - Position.X+XRES/2, - Position.Y+linePos, - Position.X+Size.X-1, - Position.Y+linePos, - 100, 100, 100, 255); - } } void PreviewView::OnTick(float dt) |
