From e6be2ea52b92f8f7c398e444052169461ee63f46 Mon Sep 17 00:00:00 2001 From: "Nestor Ortega (NvSo)" Date: Fri, 26 Apr 2024 10:58:32 -0400 Subject: [PATCH] Refresh Zone Tool Utility to edit the refreshable areas of the map --- brushes/refresh.png | Bin 0 -> 595 bytes brushes/refresh_small.png | Bin 0 -> 563 bytes icons/refresh.png | Bin 0 -> 720 bytes icons/refresh.xpm | 129 ++++++++++++++++++++++++++++ source/artprovider.cpp | 3 + source/artprovider.h | 1 + source/browse_tile_window.cpp | 1 + source/brush.cpp | 5 ++ source/graphics.cpp | 5 ++ source/gui.h | 1 + source/gui_ids.h | 1 + source/main_toolbar.cpp | 8 ++ source/map_drawer.cpp | 9 ++ source/palette_common.cpp | 27 +++++- source/palette_common.h | 2 + source/pngfiles.cpp | 154 ++++++++++++++++++++++++++++++++++ source/pngfiles.h | 2 + source/sprites.h | 1 + 18 files changed, 348 insertions(+), 1 deletion(-) create mode 100644 brushes/refresh.png create mode 100644 brushes/refresh_small.png create mode 100644 icons/refresh.png create mode 100644 icons/refresh.xpm diff --git a/brushes/refresh.png b/brushes/refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..bb1590128c03842eca9b11f6b5653d9aef23eec2 GIT binary patch literal 595 zcmV-Z0<8UsP)Px#1ZP1_K>z@;j|==^1poj5w@^$}MVXnI|NsB&?Ck67>+0(2>FMd{=;(oa=xt}{ zVOQZ;OW#dH=1M;2Ju~N7HW}yV=i}o2&&~C_x%H2W^?`lzJu=v_c17joW+}qpR+S=OL+1c3G*w@$B0002h)z#G0)YH?`($dn=(b3S*(9h4$ zM=cTN00009a7bBm000XS000XS0e@s)kpKVzB}qgO(_*r zaId?amR8^Yxy+Xk?BU0FnaN2$F3SP$e~c3ddk$FGcfi7d0~QX2?x7tTLO2r4vG0$@ z!DKoO!>|t_oCwB0jiNYCk~BLD`w+spU`A1v=d+?H<|Jqc;X*LuI4{exs)|bzG=y*^ znCql0>$+|#2pU4T5loiy`KE!OA%t7O%u+eu+>xLmgnPjheh^H+0|^>JcofXjVlfBL zAqg5ncoDi!NI=jK!s`GQw1@CEfCcR#ybmz=7urMk7{KqLJ%mpOEPOd&VY#%{O3~dn zEUZ=*i;C{Qfra(jVp*<(frYlEn^9@e>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGf5dZ)S5dnW>Uy%R+0mw;2K~y+Tm6Abg z6HySyXXd@P*>ux()7VDqp?DC5q9;MnlP6D}QlSUGL-eX2z%S5Cz>6Osc+*0!3VO7? zR0J(pjcpnX*=Cbw-<#)b6D*ZN>7Tc=JHzk)<_&ML(P+R$q~)pAYUAWwHJeS67c*BX zm0~&2G04JM#@JEJSaI4g9XW+OS1t=CaNa?_QchkzAI!`c&$ipnlGJqn5M=Ro_sy-* z(@|#E);F2Gzswdky=@uTD*eSm&4`T`sxxc-RRvcKD<}Iwpf_9%z~YC5c8;? zZM;if)PF3@Ymex>(iD38?ap22b1KIqPG&$4zgxETld6|#Y8s;wlp+p`Dh~T;N=W%( zP8mG-*1qc;ILuSF6938K!6h%Q0d|bc(>2(vJG{z)O?qTmNwcG6>4~m6?qI`()JxpdeQ%b2&)BCO6 zU!6n~N#z`a=)t4aS08rQ-fqs$U6NGb3;x~!e*t7KGgz$}%(Vaj002ovPDHLkV1i@P B{=EPI literal 0 HcmV?d00001 diff --git a/icons/refresh.png b/icons/refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..ce1e6ae9d637b0537924ca4f3355b20f1175d827 GIT binary patch literal 720 zcmV;>0x$iEP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0%b`=K~y+TrISl& z6Hyq2&%BaJGEJIy(?Z&+RBaU>D2P}rwAdPgg29EQ3(=MCM6v2l5Vc!DvTz};+z29+ zYAHgoFARc@QV>F$Hd<}dWSW@7q)8^@+?ya&tOWdEX8yVNoWtCoe;8F&@jq-CaMd?> zIIibMGaGiZl`}zKOs2fvXYbYYYPYsMtX;tyPopC&RsV(QczX!uPV3 z=G1qEE#!l0)sEn9BeiL(Zw9xf`a)E53wWA zkF`Xacwf-~YoXjUT@nq;Uvrq8SSM>}ZZW`W*TLfvv5_x>v?-EI!)XF?as>H}614Mw zBU*N?)#J;n0tbcxqjiMiX$AzIfv97U{i#4vR7jQr9QHc!qNO6J!Zyf-eFObR*`!>c zCV^+cvJ7~Rf!QKJk~lOriI9^~xLgjbgx?b19Cd53Oh(viG1g;tHjQjnfx{u7rPTgQlc^$(ciGV0V@G>O9i}H@xO@8@K90}i z&+NB7>JVd-cdlGSxuhT#PZ8f3b!+fpeJVZvWXhS&k+Z1~gbdu$Qg$qKQ>sXS`{z!a zy?n~m$?_Z$@(T5e{`N&JIekK0-;H&biCPRV4zN{r44 z`44_mYXC)FrxQ3uU#ip^5PUH*gYf)vkkpkW0`Lo@N6(#E7!u|H0000 c #BB8436", +", c #B1803C", +"< c #BE8C45", +"1 c #C08C42", +"2 c #C79246", +"3 c #CA974D", +"4 c #D49E53", +"5 c #D6A256", +"6 c #DBAF6E", +"7 c #DFB77D", +"8 c #3630A6", +"9 c #3835A0", +"0 c #3831A6", +"q c #3931A6", +"w c #3E34A5", +"e c #4A38A5", +"r c #523CA3", +"t c #4533B1", +"y c #4533B2", +"u c #4435B3", +"i c #52498D", +"p c #4A4699", +"a c #524794", +"s c #614486", +"d c #6D4285", +"f c #6A4788", +"g c #6D4B8C", +"h c #634C98", +"j c #5E5EB7", +"k c #7E63A7", +"l c #6B5FCD", +"z c #6F63CE", +"x c #7768C5", +"c c #7064CF", +"v c #7166CF", +"b c #7368CF", +"n c #776ACD", +"m c #766AD0", +"M c #786CD1", +"N c #786DD1", +"B c #923B94", +"V c #BC78B1", +"C c #9170C7", +"Z c #938DAB", +"A c #AEACB3", +"S c #E2BC86", +"D c #C0B4A0", +"F c #E4C18F", +"G c #8283C2", +"H c #998ECF", +"J c #8C80D6", +"K c #8F84D8", +"L c #9186D9", +"P c #9C90DB", +"I c #9F95DE", +"U c #A59DC9", +"Y c #A097DE", +"T c #A298DF", +"R c #A399DF", +"E c #A59BDE", +"W c #A59BDF", +"Q c #BA9EDC", +"! c #A6A0D3", +"~ c #A99EE0", +"^ c #ACA1E0", +"/ c #ADA3E0", +"( c #ACA2E1", +") c #AEA3E0", +"_ c #B1A7E3", +"` c #B2A8E3", +"' c #B5AAE3", +"] c #B6ABE3", +"[ c #B6AEE4", +"{ c #B9B0E6", +"} c #BDB2E6", +"| c #BEB4E6", +" . c #BEB4E7", +".. c #C998D7", +"X. c #C1B6E7", +"o. c #C0B7E7", +"O. c #C2B8E7", +"+. c #C1B9E9", +"@. c #C4BAE8", +"#. c #C7BDE9", +"$. c #C9BFE9", +"%. c #CCC1EB", +"&. c #CCC3EB", +"*. c #CFC5EC", +"=. c #CFC6EC", +"-. c #D2C9ED", +";. c #FBF7EF", +/* pixels */ +" ", +" X i h f + o o ", +" 9 j %.[ N i ;.> o ", +" : w q q 8 G &.-. .+.A S % ", +" g #.X.X.%.&.' @.R Q $ F O ", +" a ^ v z K I { | R H & 6 o ", +" p ( v m K ~ o.` I U 1 7 o ", +"- ! P m M K ~ &.| { Z 5 2 o ", +"; ] c l J ` | / x C A 5 = o ", +"B ~ ! ( ] n u k ..V . 4 + ", +"d r u t e s @ 5 o ", +" o , 5 o ", +" o 3 5 o ", +" o 5 < o ", +" o 5 * ", +" o o o " +}; diff --git a/source/artprovider.cpp b/source/artprovider.cpp index 3285dab..1f39368 100644 --- a/source/artprovider.cpp +++ b/source/artprovider.cpp @@ -30,6 +30,7 @@ #include "../icons/position_go.xpm" #include "../icons/protected_zone.xpm" #include "../icons/pvp_zone.xpm" +#include "../icons/refresh.xpm" #include "../icons/rectangular_1.xpm" #include "../icons/rectangular_2.xpm" #include "../icons/rectangular_3.xpm" @@ -66,6 +67,8 @@ wxBitmap ArtProvider::CreateBitmap(const wxArtID& id, const wxArtClient& client, return wxBitmap(nologout_zone_xpm); } else if (id == ART_NOPVP_BRUSH) { return wxBitmap(nopvp_zone_xpm); + } else if (id == ART_REFRESH_BRUSH) { + return wxBitmap(refresh_xpm); } else if (id == ART_POSITION_GO) { return wxBitmap(position_go_xpm); } else if (id == ART_PVP_BRUSH) { diff --git a/source/artprovider.h b/source/artprovider.h index a5313fe..c34c29c 100644 --- a/source/artprovider.h +++ b/source/artprovider.h @@ -30,6 +30,7 @@ #define ART_CIRCULAR_7 wxART_MAKE_ART_ID(ART_CIRCULAR_7) #define ART_NOLOOUT_BRUSH wxART_MAKE_ART_ID(ART_NOLOOUT_BRUSH) #define ART_NOPVP_BRUSH wxART_MAKE_ART_ID(ART_NOPVP_BRUSH) +#define ART_REFRESH_BRUSH wxART_MAKE_ART_ID(ART_REFRESH_BRUSH) #define ART_POSITION_GO wxART_MAKE_ART_ID(ART_POSITION_GO) #define ART_PVP_BRUSH wxART_MAKE_ART_ID(ART_PVP_BRUSH) #define ART_PZ_BRUSH wxART_MAKE_ART_ID(ART_PZ_BRUSH) diff --git a/source/browse_tile_window.cpp b/source/browse_tile_window.cpp index 8d449b4..316eb50 100644 --- a/source/browse_tile_window.cpp +++ b/source/browse_tile_window.cpp @@ -162,6 +162,7 @@ BrowseTileWindow::BrowseTileWindow(wxWindow* parent, Tile* tile, wxPoint positio infoSizer->Add(newd wxStaticText(this, wxID_ANY, "No PvP: " + b2yn(tile->getMapFlags() & TILESTATE_NOPVP)), wxSizerFlags(0).Left()); infoSizer->Add(newd wxStaticText(this, wxID_ANY, "No logout: " + b2yn(tile->getMapFlags() & TILESTATE_NOLOGOUT)), wxSizerFlags(0).Left()); infoSizer->Add(newd wxStaticText(this, wxID_ANY, "PvP zone: " + b2yn(tile->getMapFlags() & TILESTATE_PVPZONE)), wxSizerFlags(0).Left()); + infoSizer->Add(newd wxStaticText(this, wxID_ANY, "Refresh zone: " + b2yn(tile->getMapFlags() & TILESTATE_REFRESH)), wxSizerFlags(0).Left()); infoSizer->Add(newd wxStaticText(this, wxID_ANY, "House: " + b2yn(tile->isHouseTile())), wxSizerFlags(0).Left()); sizer->Add(infoSizer, wxSizerFlags(0).Left().DoubleBorder()); diff --git a/source/brush.cpp b/source/brush.cpp index 332caca..5c7d106 100644 --- a/source/brush.cpp +++ b/source/brush.cpp @@ -84,6 +84,7 @@ void Brushes::init() { addBrush(g_gui.rook_brush = newd FlagBrush(TILESTATE_NOPVP)); addBrush(g_gui.nolog_brush = newd FlagBrush(TILESTATE_NOLOGOUT)); addBrush(g_gui.pvp_brush = newd FlagBrush(TILESTATE_PVPZONE)); + addBrush(g_gui.refresh_brush = newd FlagBrush(TILESTATE_REFRESH)); GroundBrush::init(); WallBrush::init(); @@ -256,6 +257,8 @@ std::string FlagBrush::getName() const { return "No logout zone brush (0x08)"; case TILESTATE_PVPZONE: return "PVP Zone brush (0x10)"; + case TILESTATE_REFRESH: + return "Refresh Zone brush (0x20)"; } return "Unknown flag brush"; } @@ -270,6 +273,8 @@ int FlagBrush::getLookID() const { return EDITOR_SPRITE_NOLOG_TOOL; case TILESTATE_PVPZONE: return EDITOR_SPRITE_PVPZ_TOOL; + case TILESTATE_REFRESH: + return EDITOR_SPRITE_REFRESH_TOOL; } return 0; } diff --git a/source/graphics.cpp b/source/graphics.cpp index 3c08d61..298fa60 100644 --- a/source/graphics.cpp +++ b/source/graphics.cpp @@ -380,6 +380,11 @@ bool GraphicManager::loadEditorSprites() { loadPNGFile(no_pvp_png) ); + sprite_space[EDITOR_SPRITE_REFRESH_TOOL] = newd EditorSprite( + loadPNGFile(refresh_small_png), + loadPNGFile(refresh_png) + ); + sprite_space[EDITOR_SPRITE_DOOR_NORMAL] = newd EditorSprite( newd wxBitmap(door_normal_small_xpm), newd wxBitmap(door_normal_xpm) diff --git a/source/gui.h b/source/gui.h index fe9f538..33d132f 100644 --- a/source/gui.h +++ b/source/gui.h @@ -428,6 +428,7 @@ class GUI { FlagBrush* rook_brush; FlagBrush* nolog_brush; FlagBrush* pvp_brush; + FlagBrush* refresh_brush; protected: //========================================================================= diff --git a/source/gui_ids.h b/source/gui_ids.h index e576157..b4e34eb 100644 --- a/source/gui_ids.h +++ b/source/gui_ids.h @@ -122,6 +122,7 @@ enum EditorActionID { PALETTE_TERRAIN_NOPVP_TOOL, PALETTE_TERRAIN_NOLOGOUT_TOOL, PALETTE_TERRAIN_PVPZONE_TOOL, + PALETTE_TERRAIN_REFRESH_TOOL, PALETTE_CREATURE_TILESET_CHOICE, PALETTE_CREATURE_LISTBOX, diff --git a/source/main_toolbar.cpp b/source/main_toolbar.cpp index fd62dce..538370c 100644 --- a/source/main_toolbar.cpp +++ b/source/main_toolbar.cpp @@ -74,6 +74,7 @@ MainToolBar::MainToolBar(wxWindow* parent, wxAuiManager* manager) { wxBitmap nopvp_bitmap = wxArtProvider::GetBitmap(ART_NOPVP_BRUSH, wxART_TOOLBAR, icon_size); wxBitmap nologout_bitmap = wxArtProvider::GetBitmap(ART_NOLOOUT_BRUSH, wxART_TOOLBAR, icon_size); wxBitmap pvp_bitmap = wxArtProvider::GetBitmap(ART_PVP_BRUSH, wxART_TOOLBAR, icon_size); + wxBitmap refresh_bitmap = wxArtProvider::GetBitmap(ART_REFRESH_BRUSH, wxART_TOOLBAR, icon_size); wxBitmap normal_bitmap = wxArtProvider::GetBitmap(ART_DOOR_NORMAL_SMALL, wxART_TOOLBAR, icon_size); wxBitmap locked_bitmap = wxArtProvider::GetBitmap(ART_DOOR_LOCKED_SMALL, wxART_TOOLBAR, icon_size); wxBitmap magic_bitmap = wxArtProvider::GetBitmap(ART_DOOR_MAGIC_SMALL, wxART_TOOLBAR, icon_size); @@ -93,6 +94,7 @@ MainToolBar::MainToolBar(wxWindow* parent, wxAuiManager* manager) { brushes_toolbar->AddTool(PALETTE_TERRAIN_NOPVP_TOOL, wxEmptyString, nopvp_bitmap, wxNullBitmap, wxITEM_CHECK, "No PvP Zone", wxEmptyString, NULL); brushes_toolbar->AddTool(PALETTE_TERRAIN_NOLOGOUT_TOOL, wxEmptyString, nologout_bitmap, wxNullBitmap, wxITEM_CHECK, "No Logout Zone", wxEmptyString, NULL); brushes_toolbar->AddTool(PALETTE_TERRAIN_PVPZONE_TOOL, wxEmptyString, pvp_bitmap, wxNullBitmap, wxITEM_CHECK, "PvP Zone", wxEmptyString, NULL); + brushes_toolbar->AddTool(PALETTE_TERRAIN_REFRESH_TOOL, wxEmptyString, refresh_bitmap, wxNullBitmap, wxITEM_CHECK, "Refresh Zone", wxEmptyString, NULL); brushes_toolbar->AddSeparator(); brushes_toolbar->AddTool(PALETTE_TERRAIN_NORMAL_DOOR, wxEmptyString, normal_bitmap, wxNullBitmap, wxITEM_CHECK, "Normal Door", wxEmptyString, NULL); @@ -209,6 +211,7 @@ void MainToolBar::UpdateButtons() { brushes_toolbar->EnableTool(PALETTE_TERRAIN_NOPVP_TOOL, has_map); brushes_toolbar->EnableTool(PALETTE_TERRAIN_NOLOGOUT_TOOL, has_map); brushes_toolbar->EnableTool(PALETTE_TERRAIN_PVPZONE_TOOL, has_map); + brushes_toolbar->EnableTool(PALETTE_TERRAIN_REFRESH_TOOL, has_map); brushes_toolbar->EnableTool(PALETTE_TERRAIN_NORMAL_DOOR, has_map); brushes_toolbar->EnableTool(PALETTE_TERRAIN_LOCKED_DOOR, has_map); brushes_toolbar->EnableTool(PALETTE_TERRAIN_MAGIC_DOOR, has_map); @@ -248,6 +251,7 @@ void MainToolBar::UpdateBrushButtons() { brushes_toolbar->ToggleTool(PALETTE_TERRAIN_NOPVP_TOOL, brush == g_gui.rook_brush); brushes_toolbar->ToggleTool(PALETTE_TERRAIN_NOLOGOUT_TOOL, brush == g_gui.nolog_brush); brushes_toolbar->ToggleTool(PALETTE_TERRAIN_PVPZONE_TOOL, brush == g_gui.pvp_brush); + brushes_toolbar->ToggleTool(PALETTE_TERRAIN_REFRESH_TOOL, brush == g_gui.refresh_brush); brushes_toolbar->ToggleTool(PALETTE_TERRAIN_NORMAL_DOOR, brush == g_gui.normal_door_brush); brushes_toolbar->ToggleTool(PALETTE_TERRAIN_LOCKED_DOOR, brush == g_gui.locked_door_brush); brushes_toolbar->ToggleTool(PALETTE_TERRAIN_MAGIC_DOOR, brush == g_gui.magic_door_brush); @@ -263,6 +267,7 @@ void MainToolBar::UpdateBrushButtons() { brushes_toolbar->ToggleTool(PALETTE_TERRAIN_NOPVP_TOOL, false); brushes_toolbar->ToggleTool(PALETTE_TERRAIN_NOLOGOUT_TOOL, false); brushes_toolbar->ToggleTool(PALETTE_TERRAIN_PVPZONE_TOOL, false); + brushes_toolbar->ToggleTool(PALETTE_TERRAIN_REFRESH_TOOL, false); brushes_toolbar->ToggleTool(PALETTE_TERRAIN_NORMAL_DOOR, false); brushes_toolbar->ToggleTool(PALETTE_TERRAIN_LOCKED_DOOR, false); brushes_toolbar->ToggleTool(PALETTE_TERRAIN_MAGIC_DOOR, false); @@ -476,6 +481,9 @@ void MainToolBar::OnBrushesButtonClick(wxCommandEvent& event) { case PALETTE_TERRAIN_PVPZONE_TOOL: g_gui.SelectBrush(g_gui.pvp_brush); break; + case PALETTE_TERRAIN_REFRESH_TOOL: + g_gui.SelectBrush(g_gui.refresh_brush); + break; case PALETTE_TERRAIN_NORMAL_DOOR: g_gui.SelectBrush(g_gui.normal_door_brush); break; diff --git a/source/map_drawer.cpp b/source/map_drawer.cpp index 7cf6539..270a563 100644 --- a/source/map_drawer.cpp +++ b/source/map_drawer.cpp @@ -408,6 +408,10 @@ void MapDrawer::DrawMap() { if (options.show_special_tiles && tile->getMapFlags() & TILESTATE_NOPVP) { g /= 2; } + if (options.show_special_tiles && tile->getMapFlags() & TILESTATE_REFRESH) { + g /= 2; + r /= 2; + } BlitItem(draw_x, draw_y, tile, tile->ground, true, r, g, b, 160); } @@ -1558,6 +1562,11 @@ void MapDrawer::DrawTile(TileLocation* location) { if (showspecial && tile->getMapFlags() & TILESTATE_NOPVP) { g /= 2; } + + if (showspecial && tile->getMapFlags() & TILESTATE_REFRESH) { + g /= 2; + r /= 2; + } } if (only_colors) { diff --git a/source/palette_common.cpp b/source/palette_common.cpp index f0addd6..e47acba 100644 --- a/source/palette_common.cpp +++ b/source/palette_common.cpp @@ -401,6 +401,7 @@ EVT_TOGGLEBUTTON(PALETTE_TERRAIN_PZ_TOOL, BrushToolPanel::OnClickPZBrushButton) EVT_TOGGLEBUTTON(PALETTE_TERRAIN_NOPVP_TOOL, BrushToolPanel::OnClickNOPVPBrushButton) EVT_TOGGLEBUTTON(PALETTE_TERRAIN_NOLOGOUT_TOOL, BrushToolPanel::OnClickNoLogoutBrushButton) EVT_TOGGLEBUTTON(PALETTE_TERRAIN_PVPZONE_TOOL, BrushToolPanel::OnClickPVPZoneBrushButton) +EVT_TOGGLEBUTTON(PALETTE_TERRAIN_REFRESH_TOOL, BrushToolPanel::OnClickRefreshBrushButton) EVT_CHECKBOX(PALETTE_TERRAIN_LOCK_DOOR, BrushToolPanel::OnClickLockDoorCheckbox) END_EVENT_TABLE() @@ -422,7 +423,8 @@ BrushToolPanel::BrushToolPanel(wxWindow* parent) : pzBrushButton(nullptr), nopvpBrushButton(nullptr), nologBrushButton(nullptr), - pvpzoneBrushButton(nullptr) { + pvpzoneBrushButton(nullptr), + refreshBrushButton(nullptr) { //// } @@ -494,6 +496,14 @@ void BrushToolPanel::LoadAllContents() { size_sizer->Add(sub_sizer); sub_sizer = newd wxBoxSizer(wxHORIZONTAL); + ASSERT(g_gui.refresh_brush); + sub_sizer->Add(refreshBrushButton = newd BrushButton(this, g_gui.refresh_brush, RENDER_SIZE_32x32, PALETTE_TERRAIN_REFRESH_TOOL)); + refreshBrushButton->SetToolTip("Refresh Zone Tool"); + + // New row + size_sizer->Add(sub_sizer); + sub_sizer = newd wxBoxSizer(wxHORIZONTAL); + ASSERT(g_gui.normal_door_brush); sub_sizer->Add(normalDoorButton = newd BrushButton(this, g_gui.normal_door_brush, RENDER_SIZE_32x32, PALETTE_TERRAIN_NORMAL_DOOR)); normalDoorButton->SetToolTip("Normal Door Tool"); @@ -593,6 +603,10 @@ void BrushToolPanel::LoadAllContents() { ASSERT(g_gui.pvp_brush); sub_sizer->Add(pvpzoneBrushButton = newd BrushButton(this, g_gui.pvp_brush, RENDER_SIZE_16x16, PALETTE_TERRAIN_PVPZONE_TOOL)); pvpzoneBrushButton->SetToolTip("PVP Zone Tool"); + + ASSERT(g_gui.refresh_brush); + sub_sizer->Add(refreshBrushButton = newd BrushButton(this, g_gui.refresh_brush, RENDER_SIZE_16x16, PALETTE_TERRAIN_REFRESH_TOOL)); + refreshBrushButton->SetToolTip("Refresh Zone Tool"); } sub_sizer->AddSpacer(large_icons ? 42 : 24); @@ -639,6 +653,7 @@ void BrushToolPanel::DeselectAll() { nopvpBrushButton->SetValue(false); nologBrushButton->SetValue(false); pvpzoneBrushButton->SetValue(false); + refreshBrushButton->SetValue(false); } } @@ -685,6 +700,9 @@ Brush* BrushToolPanel::GetSelectedBrush() const { if (pvpzoneBrushButton->GetValue()) { return g_gui.pvp_brush; } + if (refreshBrushButton->GetValue()) { + return g_gui.refresh_brush; + } return nullptr; } @@ -718,6 +736,8 @@ bool BrushToolPanel::SelectBrush(const Brush* whatbrush) { button = nologBrushButton; } else if (whatbrush == g_gui.pvp_brush) { button = pvpzoneBrushButton; + } else if (whatbrush == g_gui.refresh_brush) { + button = refreshBrushButton; } DeselectAll(); @@ -827,6 +847,11 @@ void BrushToolPanel::OnClickPVPZoneBrushButton(wxCommandEvent& event) { g_gui.SelectBrush(g_gui.pvp_brush); } +void BrushToolPanel::OnClickRefreshBrushButton(wxCommandEvent& event) { + g_gui.ActivatePalette(GetParentPalette()); + g_gui.SelectBrush(g_gui.refresh_brush); +} + void BrushToolPanel::OnClickLockDoorCheckbox(wxCommandEvent& event) { g_gui.ActivatePalette(GetParentPalette()); diff --git a/source/palette_common.h b/source/palette_common.h index b9084d3..23fbc30 100644 --- a/source/palette_common.h +++ b/source/palette_common.h @@ -207,6 +207,7 @@ class BrushToolPanel : public PalettePanel { void OnClickNOPVPBrushButton(wxCommandEvent& event); void OnClickNoLogoutBrushButton(wxCommandEvent& event); void OnClickPVPZoneBrushButton(wxCommandEvent& event); + void OnClickRefreshBrushButton(wxCommandEvent& event); // ---- void OnClickLockDoorCheckbox(wxCommandEvent& event); @@ -232,6 +233,7 @@ class BrushToolPanel : public PalettePanel { BrushButton* nopvpBrushButton; BrushButton* nologBrushButton; BrushButton* pvpzoneBrushButton; + BrushButton* refreshBrushButton; wxCheckBox* lockDoorCheckbox; diff --git a/source/pngfiles.cpp b/source/pngfiles.cpp index 940d7a5..00cff82 100644 --- a/source/pngfiles.cpp +++ b/source/pngfiles.cpp @@ -4203,6 +4203,160 @@ unsigned char rectangular_7_small_png[429] = { 0x44, 0xae, 0x42, 0x60, 0x82 }; /* End Of File */ +/* refresh.png - 595 bytes */ +unsigned char refresh_png[595] = { + 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, + 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, + 0x08, 0x03, 0x00, 0x00, 0x00, 0x44, 0xa4, 0x8a, + 0xc6, 0x00, 0x00, 0x00, 0x01, 0x73, 0x52, 0x47, + 0x42, 0x00, 0xae, 0xce, 0x1c, 0xe9, 0x00, 0x00, + 0x00, 0x04, 0x67, 0x41, 0x4d, 0x41, 0x00, 0x00, + 0xb1, 0x8f, 0x0b, 0xfc, 0x61, 0x05, 0x00, 0x00, + 0x00, 0xb7, 0x50, 0x4c, 0x54, 0x45, 0x99, 0x99, + 0x99, 0xff, 0xff, 0xff, 0xec, 0xec, 0xec, 0xeb, + 0xeb, 0xeb, 0xea, 0xea, 0xea, 0xe9, 0xe9, 0xe9, + 0xe8, 0xe8, 0xe8, 0x81, 0x7b, 0xe8, 0x6d, 0x67, + 0xe8, 0x61, 0x57, 0xe1, 0x58, 0x4b, 0xdf, 0x4d, + 0x43, 0xe6, 0x4a, 0x3e, 0xe7, 0x3d, 0x33, 0xe7, + 0x59, 0x36, 0x19, 0xe7, 0xe7, 0xe7, 0xe3, 0xe2, + 0xfd, 0xcf, 0xcd, 0xf5, 0xbb, 0xb9, 0xf5, 0x8f, + 0x8b, 0xf5, 0x81, 0x7d, 0xf2, 0x3d, 0x32, 0xd8, + 0xb1, 0x76, 0x45, 0xe5, 0xe5, 0xe5, 0x3d, 0x2e, + 0xd7, 0x3a, 0x2c, 0xd9, 0x34, 0x27, 0xda, 0x1b, + 0x25, 0xae, 0xe4, 0xe4, 0xe4, 0x38, 0x29, 0xd4, + 0x32, 0x24, 0xd8, 0x2a, 0x1f, 0x83, 0xe3, 0xe3, + 0xe3, 0x4c, 0x3f, 0xda, 0x33, 0x24, 0xd3, 0x2f, + 0x20, 0xd4, 0xe2, 0xe2, 0xe2, 0xe1, 0xe1, 0xe1, + 0x27, 0x1d, 0x7f, 0xe0, 0xe0, 0xe0, 0x67, 0x38, + 0x00, 0xdf, 0xdf, 0xdf, 0x2a, 0x24, 0xdf, 0x1c, + 0x23, 0xcc, 0x1b, 0x2d, 0x92, 0xde, 0xde, 0xde, + 0xdd, 0xdd, 0xdd, 0xdc, 0xdc, 0xdc, 0xdb, 0xdb, + 0xdb, 0xda, 0xda, 0xda, 0xd9, 0xd9, 0xd9, 0xd8, + 0xd8, 0xd8, 0xd7, 0xd7, 0xd7, 0x00, 0x00, 0x00, + 0xd5, 0xd5, 0xd5, 0xd4, 0xd4, 0xd4, 0xd3, 0xd3, + 0xd3, 0xd2, 0xd2, 0xd2, 0xd1, 0xd1, 0xd1, 0xd0, + 0xd0, 0xd0, 0xcf, 0xcf, 0xcf, 0x47, 0x2d, 0x11, + 0xe6, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, + 0x73, 0x00, 0x00, 0x0b, 0x11, 0x00, 0x00, 0x0b, + 0x11, 0x01, 0x7f, 0x64, 0x5f, 0x91, 0x00, 0x00, + 0x01, 0x25, 0x49, 0x44, 0x41, 0x54, 0x38, 0x4f, + 0x85, 0x91, 0xe9, 0x56, 0x83, 0x40, 0x0c, 0x46, + 0x19, 0x57, 0x5a, 0x5a, 0x94, 0x4d, 0x29, 0x15, + 0x54, 0x70, 0xaf, 0xbb, 0x9d, 0x96, 0x56, 0xdf, + 0xff, 0xb9, 0xcc, 0x97, 0x10, 0xec, 0xe1, 0xc7, + 0x78, 0x99, 0xc9, 0x49, 0x3e, 0x2e, 0xcb, 0x01, + 0xef, 0x7f, 0x8c, 0x13, 0x08, 0x7b, 0x0e, 0x58, + 0xd8, 0x77, 0xc0, 0xc2, 0x81, 0x03, 0x16, 0x0e, + 0x85, 0xee, 0xa1, 0x1d, 0x1a, 0x42, 0x38, 0x12, + 0xcc, 0xb1, 0xef, 0x8f, 0xc6, 0xc1, 0x64, 0x3a, + 0x0d, 0xc3, 0xb0, 0x0f, 0x21, 0x9c, 0x08, 0xc6, + 0x3f, 0x8d, 0xa2, 0x38, 0x4e, 0x92, 0x34, 0x3b, + 0x0b, 0xfb, 0x10, 0xc2, 0xb9, 0x60, 0x46, 0x51, + 0x96, 0xe7, 0xb3, 0xa2, 0x28, 0xe6, 0x24, 0x68, + 0x08, 0xe1, 0x42, 0x30, 0xe3, 0x38, 0x2f, 0xcb, + 0xb2, 0xaa, 0x8a, 0x4b, 0x12, 0x34, 0x84, 0x70, + 0x25, 0x98, 0xeb, 0xa4, 0x2c, 0xeb, 0xba, 0x6e, + 0x2a, 0x08, 0x1a, 0x42, 0xb8, 0x11, 0x4c, 0x96, + 0xf2, 0xf9, 0xa6, 0x81, 0xa0, 0x21, 0x84, 0x5b, + 0xc1, 0xcc, 0x52, 0x39, 0xdf, 0xdc, 0x91, 0xa0, + 0x21, 0x84, 0x7b, 0xc1, 0x14, 0x7e, 0x10, 0x4c, + 0xc0, 0x03, 0x09, 0x1a, 0x42, 0x78, 0x14, 0xcc, + 0xd3, 0x62, 0x31, 0x07, 0xcf, 0x21, 0x09, 0x1a, + 0x42, 0x78, 0x11, 0xba, 0x4f, 0x48, 0x40, 0xd0, + 0x10, 0xc2, 0xeb, 0x00, 0x16, 0xb4, 0x87, 0xf0, + 0x36, 0x80, 0x05, 0xed, 0x21, 0xbc, 0x0f, 0x30, + 0xf8, 0x17, 0xda, 0x43, 0xf8, 0x18, 0xc0, 0xef, + 0xa1, 0x3d, 0x84, 0x4f, 0x07, 0x2c, 0x7c, 0x39, + 0x60, 0x61, 0xb9, 0xb4, 0xd6, 0x4a, 0xd1, 0xdd, + 0x37, 0x2c, 0xac, 0x56, 0x16, 0x8b, 0x8a, 0xee, + 0xbf, 0x81, 0x85, 0xf5, 0xda, 0x62, 0x59, 0xae, + 0x83, 0x81, 0x85, 0xb6, 0xa5, 0x9b, 0x51, 0x69, + 0xd1, 0xec, 0x0c, 0x98, 0x58, 0xd8, 0x6c, 0x2c, + 0x1d, 0x58, 0xdd, 0xee, 0x06, 0x54, 0x16, 0xb6, + 0x5b, 0x8b, 0x45, 0x57, 0xa2, 0xd9, 0x19, 0x68, + 0xb3, 0xf0, 0xed, 0x80, 0x85, 0x1f, 0x07, 0x2c, + 0x38, 0x21, 0xc1, 0x89, 0xe7, 0xfd, 0x02, 0xf8, + 0x42, 0x69, 0xcc, 0x4b, 0xa8, 0xd8, 0xe3, 0x00, + 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, + 0x42, 0x60, 0x82 +}; +/* End Of File */ +/* refresh_small.png - 563 bytes */ +unsigned char refresh_small_png[563] = { + 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, + 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, + 0x08, 0x02, 0x00, 0x00, 0x00, 0x90, 0x91, 0x68, + 0x36, 0x00, 0x00, 0x00, 0x01, 0x73, 0x52, 0x47, + 0x42, 0x00, 0xae, 0xce, 0x1c, 0xe9, 0x00, 0x00, + 0x00, 0x04, 0x67, 0x41, 0x4d, 0x41, 0x00, 0x00, + 0xb1, 0x8f, 0x0b, 0xfc, 0x61, 0x05, 0x00, 0x00, + 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, + 0x0b, 0x11, 0x00, 0x00, 0x0b, 0x11, 0x01, 0x7f, + 0x64, 0x5f, 0x91, 0x00, 0x00, 0x01, 0xc8, 0x49, + 0x44, 0x41, 0x54, 0x38, 0x4f, 0x95, 0x92, 0x41, + 0x6b, 0x13, 0x51, 0x10, 0xc7, 0x67, 0xe6, 0xbd, + 0xb7, 0xd9, 0x74, 0xd3, 0x76, 0xd3, 0xd8, 0x46, + 0xeb, 0xa1, 0x78, 0x10, 0x85, 0xa2, 0x27, 0x41, + 0xd0, 0x93, 0x27, 0x4f, 0x9e, 0x52, 0xa1, 0x07, + 0xbf, 0x43, 0xf4, 0xaa, 0x1f, 0xc0, 0x2f, 0xd0, + 0x4b, 0xc0, 0x8b, 0x1f, 0x20, 0x78, 0xd3, 0x42, + 0xaf, 0x0a, 0x7a, 0xb4, 0xbd, 0x54, 0x04, 0x2d, + 0x58, 0x8d, 0x6d, 0x1a, 0x0c, 0xd9, 0x66, 0x93, + 0x66, 0xdf, 0x9b, 0xe7, 0x6c, 0x13, 0x2c, 0x95, + 0x42, 0xe9, 0x9f, 0xb7, 0xb3, 0x3b, 0xc3, 0xef, + 0xff, 0xe6, 0x0d, 0x6f, 0xb1, 0xd1, 0x68, 0xc0, + 0x45, 0xa4, 0xe5, 0xa9, 0xd5, 0x6a, 0xe3, 0xe4, + 0x5c, 0x35, 0x9b, 0x4d, 0x92, 0x17, 0x33, 0x57, + 0x2a, 0x95, 0x62, 0x39, 0xd0, 0x31, 0xc8, 0xc2, + 0x59, 0xc6, 0xd8, 0x51, 0xcc, 0x58, 0x71, 0xda, + 0x30, 0x1d, 0x39, 0x85, 0x3c, 0x57, 0x2e, 0x0b, + 0x26, 0x70, 0xde, 0x41, 0xbe, 0x52, 0x4e, 0x5e, + 0x3e, 0x1f, 0xcc, 0xcc, 0x18, 0xcf, 0xb6, 0xdb, + 0xce, 0x92, 0xd4, 0x74, 0xff, 0x10, 0x64, 0xf1, + 0x76, 0xf7, 0xcd, 0xad, 0xd1, 0xd3, 0x51, 0x66, + 0xd7, 0xd6, 0x37, 0x99, 0xbd, 0xc0, 0x79, 0x07, + 0xe7, 0xdc, 0x91, 0x1f, 0x44, 0x91, 0x5a, 0x59, + 0x9d, 0x5a, 0xbc, 0x82, 0xd7, 0x97, 0xc3, 0xe5, + 0xdb, 0xfa, 0xea, 0x12, 0x2e, 0xdd, 0xe8, 0xdd, + 0x2c, 0x3e, 0xbc, 0x57, 0xbf, 0xb6, 0x58, 0x98, + 0xb6, 0xcc, 0x82, 0x9d, 0x74, 0x10, 0xf3, 0xa8, + 0x9f, 0x6d, 0xbc, 0x4b, 0x5e, 0xd4, 0x7f, 0x2c, + 0xcc, 0x6b, 0x8f, 0xe8, 0xbc, 0xd2, 0x14, 0x7a, + 0xfb, 0xed, 0xce, 0x5d, 0xe7, 0x73, 0x2a, 0xc7, + 0x24, 0x4e, 0x66, 0x40, 0x0f, 0xbf, 0x5b, 0xb6, + 0xf5, 0x93, 0xaa, 0x97, 0x69, 0x6a, 0x1a, 0xa3, + 0x12, 0x94, 0x22, 0x0e, 0x8b, 0x2a, 0x0e, 0xfb, + 0x69, 0x4a, 0x48, 0xf9, 0x61, 0x4e, 0x19, 0x3c, + 0xf8, 0xd6, 0xbe, 0xeb, 0x1c, 0x38, 0xcc, 0x53, + 0xf0, 0x2c, 0xe7, 0xf4, 0xd6, 0x5a, 0xe7, 0x90, + 0x8e, 0xb7, 0x1f, 0x63, 0x12, 0x4f, 0x0c, 0x9c, + 0x21, 0x11, 0x28, 0x52, 0x05, 0xa3, 0x15, 0x19, + 0xa3, 0x4d, 0x18, 0x04, 0x43, 0xb6, 0x38, 0x72, + 0x20, 0xdb, 0xfc, 0x67, 0x90, 0xd2, 0x97, 0xaf, + 0xc3, 0xad, 0xed, 0xbe, 0x0d, 0x4d, 0xe2, 0xdc, + 0xa1, 0x77, 0x29, 0xb0, 0x36, 0xf4, 0x7d, 0xe1, + 0x73, 0x75, 0x27, 0xb5, 0x81, 0xfa, 0x67, 0x98, + 0x0c, 0x1d, 0xa9, 0xd2, 0xe3, 0x27, 0x6a, 0xe0, + 0x53, 0xa5, 0x2d, 0xc0, 0x21, 0x20, 0x81, 0xa7, + 0xcc, 0xf6, 0x68, 0xe7, 0xa0, 0x67, 0x15, 0x42, + 0x8e, 0x9e, 0x32, 0xf4, 0x3b, 0xc3, 0xfa, 0x33, + 0x69, 0x1c, 0x1d, 0xaf, 0xaa, 0x14, 0x45, 0x41, + 0x10, 0x7c, 0x5c, 0xbf, 0xff, 0xe9, 0x75, 0x13, + 0xa0, 0x34, 0xc6, 0x24, 0x4e, 0xee, 0x61, 0xef, + 0x2c, 0xb5, 0xdb, 0xed, 0x21, 0x0f, 0x8a, 0x85, + 0x82, 0xa2, 0x7c, 0x88, 0xf1, 0x3d, 0x4c, 0x66, + 0x38, 0x53, 0x4a, 0xa9, 0x50, 0xd3, 0xfb, 0xad, + 0xdd, 0x5f, 0x9d, 0x44, 0x13, 0x49, 0xe5, 0x1c, + 0x83, 0xe8, 0xc1, 0xa3, 0xd5, 0x57, 0x1f, 0x76, + 0xd7, 0xde, 0x6e, 0xce, 0xce, 0x5d, 0x92, 0x54, + 0xe0, 0x0b, 0xfe, 0xde, 0x00, 0x7f, 0x01, 0x64, + 0x2f, 0x33, 0x58, 0xad, 0x1a, 0xcc, 0xb5, 0x00, + 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, + 0x42, 0x60, 0x82 +}; +/* End Of File */ /* window_hatch.png - 910 bytes */ unsigned char window_hatch_png[910] = { 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, diff --git a/source/pngfiles.h b/source/pngfiles.h index a76d1e0..04334b1 100644 --- a/source/pngfiles.h +++ b/source/pngfiles.h @@ -68,6 +68,8 @@ extern unsigned char rectangular_6_png[600]; extern unsigned char rectangular_6_small_png[431]; extern unsigned char rectangular_7_png[697]; extern unsigned char rectangular_7_small_png[429]; +extern unsigned char refresh_png[595]; +extern unsigned char refresh_small_png[563]; extern unsigned char window_hatch_png[910]; extern unsigned char window_hatch_small_png[641]; extern unsigned char window_normal_png[947]; diff --git a/source/sprites.h b/source/sprites.h index 1c2eaae..f89011f 100644 --- a/source/sprites.h +++ b/source/sprites.h @@ -49,6 +49,7 @@ enum { EDITOR_SPRITE_PVPZ_TOOL, EDITOR_SPRITE_NOLOG_TOOL, EDITOR_SPRITE_NOPVP_TOOL, + EDITOR_SPRITE_REFRESH_TOOL, EDITOR_SPRITE_DOOR_NORMAL, EDITOR_SPRITE_DOOR_LOCKED, EDITOR_SPRITE_DOOR_MAGIC,