From: <mg...@us...> - 2008-07-16 23:33:36
|
Revision: 1921 http://planeshift.svn.sourceforge.net/planeshift/?rev=1921&view=rev Author: mgist Date: 2008-07-16 23:33:45 +0000 (Wed, 16 Jul 2008) Log Message: ----------- - Removed r1872, it needs more work done to it. Modified Paths: -------------- stable/docs/history.txt stable/src/client/gui/pawsslot.cpp stable/src/client/gui/psmainwidget.cpp stable/src/client/pscharcontrol.cpp stable/src/client/psmovement.cpp stable/src/client/psmovement.h Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-07-16 23:32:48 UTC (rev 1920) +++ stable/docs/history.txt 2008-07-16 23:33:45 UTC (rev 1921) @@ -8,7 +8,6 @@ - Fix to guild window xml, patch by Caarrie. *** 2008-07-06 by Roland Schulz -- Fix to FS#1336 by Boite - use mouselook only when focussed on main widget. - Fix to FS#1694 by Zwenze - added GM /checkitem command. - Fix to FS#1376 by Oskaris - display bug in ownership when splitting a stack in furnace Modified: stable/src/client/gui/pawsslot.cpp =================================================================== --- stable/src/client/gui/pawsslot.cpp 2008-07-16 23:32:48 UTC (rev 1920) +++ stable/src/client/gui/pawsslot.cpp 2008-07-16 23:33:45 UTC (rev 1921) @@ -86,23 +86,18 @@ psengine->GetMsgHandler()->SendMessage( out.msg ); return true; } - else + else if ( dragDrop && (!empty || psengine->GetSlotManager()->IsDragging()) ) { - bool grab = psengine->GetMouseBinds()->CheckBind("EntityDragDrop", button, modifiers); - bool grabAll = psengine->GetMouseBinds()->CheckBind("EntityDragDropAll", button, modifiers); - bool grabOne = psengine->GetMouseBinds()->CheckBind("EntityDragDropOne", button, modifiers); - if ( dragDrop && (grab || grabAll || grabOne) && (!empty || psengine->GetSlotManager()->IsDragging()) ) - { - // Grab one item if EntityDragDropOne modifiers key are used. Grab everything in the slot - // if EntityDragDropAll modifiers key are used - mgr->Handle( this, grabOne, grabAll ); + // Grab one item if shift key are used. Grab everything in the slot + // if either middle mouse button or ctrl key are used + mgr->Handle( this, modifiers==1, button==2 || modifiers==2 ); return true; - }else if ( parent ) + } + else if ( parent ) return parent->OnButtonPressed(button, modifiers, this); else return pawsWidget::OnMouseDown(button, modifiers, x, y ); } -} void pawsSlot::SetToolTip( const char* text ) { Modified: stable/src/client/gui/psmainwidget.cpp =================================================================== --- stable/src/client/gui/psmainwidget.cpp 2008-07-16 23:32:48 UTC (rev 1920) +++ stable/src/client/gui/psmainwidget.cpp 2008-07-16 23:33:45 UTC (rev 1921) @@ -354,11 +354,6 @@ { GEMClientObject* over = FindMouseOverObject( x, y ); - const psControl* mouseLookTrigger = psengine->GetCharControl()->GetTrigger("MouseLook"); - if(mouseLookTrigger->button==button && mouseLookTrigger->mods==keyModifier){ - psengine->GetCharControl()->GetMovementManager()->MouseLookCanAct(true); - } - if (psengine->GetMouseBinds()->CheckBind("EntitySelect", button, keyModifier)) { if ( over ) Modified: stable/src/client/pscharcontrol.cpp =================================================================== --- stable/src/client/pscharcontrol.cpp 2008-07-16 23:32:48 UTC (rev 1920) +++ stable/src/client/pscharcontrol.cpp 2008-07-16 23:33:45 UTC (rev 1921) @@ -527,7 +527,7 @@ // RS: invert mouselook status so the mouselook button can be // used to temporarily switch out of mouselook mode too movement->MouseLook(!movement->MouseLook()); - if (!movement->MouseZoom() && movement->MouseLook()) { // KL: No CenterMouse while in MouseZoom mode. + if (!movement->MouseZoom()) { // KL: No CenterMouse while in MouseZoom mode. charcontrol->CenterMouse(value); } Modified: stable/src/client/psmovement.cpp =================================================================== --- stable/src/client/psmovement.cpp 2008-07-16 23:32:48 UTC (rev 1920) +++ stable/src/client/psmovement.cpp 2008-07-16 23:33:45 UTC (rev 1921) @@ -89,7 +89,6 @@ toggleRun = false; mouseAutoMove = false; mouseLook = false; - mouseLookCanAct = false; mouseZoom = false; mouseMove = false; sneaking = false; @@ -600,9 +599,6 @@ SetMouseSensX( v2 ); } -void psMovementManager::MouseLookCanAct(bool v){ - mouseLookCanAct = v; -} void psMovementManager::MouseLook(bool v) { @@ -610,9 +606,6 @@ { return; } - - if(mouseLookCanAct || !v) - { mouseLook = v; psCamera* camera = psengine->GetPSCamera(); if( camera->RotateCameraWithPlayer() ) @@ -627,8 +620,6 @@ } } } - mouseLookCanAct = false; -} void psMovementManager::MouseLook(iEvent& ev) { Modified: stable/src/client/psmovement.h =================================================================== --- stable/src/client/psmovement.h 2008-07-16 23:32:48 UTC (rev 1920) +++ stable/src/client/psmovement.h 2008-07-16 23:33:45 UTC (rev 1921) @@ -108,7 +108,6 @@ bool autoMove; bool toggleRun; bool mouseLook; - bool mouseLookCanAct; bool mouseZoom; bool mouseMove; bool sneaking; @@ -173,9 +172,6 @@ bool GetInvertedMouse() { return invertedMouse; } void LoadMouseSettings(); - void MouseLookCanAct(bool v); - bool MouseLookCanAct(){ return mouseLookCanAct; } - void MouseLook(bool v); bool MouseLook() { return mouseLook; } void MouseLook(iEvent& ev); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-07-19 12:42:38
|
Revision: 1928 http://planeshift.svn.sourceforge.net/planeshift/?rev=1928&view=rev Author: mgist Date: 2008-07-19 12:42:28 +0000 (Sat, 19 Jul 2008) Log Message: ----------- - Merged r1911,1915-1916,1918-1919,1923-1927 from trunk. Modified Paths: -------------- stable/data/gui/containerdesc.xml stable/data/gui/detailwindow.xml stable/docs/compiling.html stable/docs/history.txt stable/src/client/gui/chatwindow.cpp stable/src/client/gui/pawscharpick.cpp stable/src/client/psengine.cpp stable/src/common/paws/pawslistbox.cpp stable/src/common/paws/pawsyesnobox.cpp Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Added: svn:mergeinfo + /trunk:1911,1915-1916,1918-1919,1923-1927 Modified: stable/data/gui/containerdesc.xml =================================================================== --- stable/data/gui/containerdesc.xml 2008-07-19 12:28:52 UTC (rev 1927) +++ stable/data/gui/containerdesc.xml 2008-07-19 12:42:28 UTC (rev 1928) @@ -39,7 +39,7 @@ <widget name="ItemDescription" factory="pawsMultiLineTextBox" > - <frame x="107" y="27" width="215" height="73" border="no"/> + <frame x="89" y="27" width="200" height="73" border="no"/> <font name="/planeshift/data/ttf/LiberationSans-Regular.ttf" r="225" g="255" b="225" size="10" /> </widget> Modified: stable/data/gui/detailwindow.xml =================================================================== --- stable/data/gui/detailwindow.xml 2008-07-19 12:28:52 UTC (rev 1927) +++ stable/data/gui/detailwindow.xml 2008-07-19 12:42:28 UTC (rev 1928) @@ -43,7 +43,7 @@ <widget name="ShowCombat" factory="pawsButton" style="tabbuttonskills" id="1001" > <frame x="140" y="65" width="30" /> - <label text="Comat" /> + <label text="Combat" /> <attachpoints> <attach point="PROPORTIONAL_RIGHT" /> <attach point="PROPORTIONAL_LEFT" /> Modified: stable/docs/compiling.html =================================================================== --- stable/docs/compiling.html 2008-07-19 12:28:52 UTC (rev 1927) +++ stable/docs/compiling.html 2008-07-19 12:42:28 UTC (rev 1928) @@ -7,19 +7,17 @@ <script type="text/javascript"> <!-- // Source versions are listed here and automatically updated in the body. - // Standard dates (CSrev, CELrev) are the ones that are compatible with Laanx. - // An additional set of CS/CEL revisions (CSrev_HEAD, CELrev_HEAD) may be specified for the latest version of PS. - var CSrev = "30039"; // CS_SOURCE_REV - var CELrev = "3452"; // CEL_SOURCE_REV + // Standard revisions (CSrev) are the ones that are compatible with Laanx. + // An additional CS revision (CSrev_HEAD) may be specified for the latest version of PS. + var CSrev = "30458"; // CS_SOURCE_REV var CAL3Drev = "493"; // CAL3D_SOURCE_REV - var CSrev_HEAD = "30039"; // CS_SOURCE_REV_HEAD - var CELrev_HEAD = "3452"; // CEL_SOURCE_REV_HEAD + var CSrev_HEAD = "30458"; // CS_SOURCE_REV_HEAD var CAL3Drev_HEAD = "493"; // CAL3D_SOURCE_REV_HEAD - var csWinLibsVersionStab = "1.3_003"; // cs win32 libs version. + var csWinLibsVersionStab = "1.3_004"; // cs win32 libs version. var csWinLibsVersion = "1.3_004"; // cs win32 libs version. //Update date and author, to be changed everytime and updates occurred - var UpdateDate = "24 June 2008"; //Date when the update occurred - var UpdateAuthor = "Caarrie"; //Author of the update + var UpdateDate = "19 July 2008"; //Date when the update occurred + var UpdateAuthor = "Mike Gist"; //Author of the update --> </script> @@ -32,9 +30,9 @@ <p><i class="command">text</i></p> or <p><div class="commandBox">text<br>text</div></p> Source dates/revisions compatible with Laanx should be specified in the body as: - PS_SOURCE_DATE or CS_SOURCE_REV or CEL_SOURCE_REV - The CS/CEL SVN revisions required for latest PS are specified by: - CS_SOURCE_REV_HEAD and CEL_SOURCE_REV_HEAD + PS_SOURCE_DATE or CS_SOURCE_REV + The CS SVN revisions required for latest PS are specified by: + CS_SOURCE_REV_HEAD Update and author date should be specified instead as: UPDATE_DATE and UPDATE_AUTHOR @@ -222,17 +220,15 @@ document.body.innerHTML = document.body.innerHTML. replace(/CAL3D_SOURCE_REV_HEAD/g, CAL3Drev_HEAD). replace(/CS_SOURCE_REV_HEAD/g, CSrev_HEAD). - replace(/CEL_SOURCE_REV_HEAD/g, CELrev_HEAD). replace(/CAL3D_SOURCE_REV/g, CAL3Drev). replace(/CS_SOURCE_REV/g, CSrev). - replace(/CEL_SOURCE_REV/g, CELrev). replace(/UPDATE_DATE/g, UpdateDate). replace(/LIBS_VER_STAB/g, csWinLibsVersionStab). replace(/LIBS_VER/g, csWinLibsVersion). replace(/UPDATE_AUTHOR/g, UpdateAuthor); // Hide the second CS date if we don't need it - if (CSrev_HEAD == CSrev && CELrev_HEAD == CELrev) + if (CSrev_HEAD == CSrev) document.getElementById("forked").style.display = "none"; } @@ -353,7 +349,7 @@ <p> <h3>Source Dates:</h3> <i>Make sure you get the correct dates required for the version of PS you are building.<br> - Note that different versions of PS require different CS/CEL revisions, and PS revisions<br> + Note that different versions of PS require different CS and PS revisions.<br> after those listed here may not be compatible with the public server.</i> <div class="User"> @@ -361,7 +357,6 @@ Currently compatible with Laanx:<br> <b>CAL3D SVN revision:</b> CAL3D_SOURCE_REV <br> <b>CS 1.4 SVN revision:</b> CS_SOURCE_REV <br> - <b>CEL 1.4 SVN revision:</b> CEL_SOURCE_REV <br> </p> </div> <div class="Developer"> @@ -369,7 +364,6 @@ Currently compatible with trunk of PS:<br> <b>CAL3D SVN revision:</b> CAL3D_SOURCE_REV_HEAD <br> <b>CS SVN revision:</b> CS_SOURCE_REV_HEAD <br> - <b>CEL SVN revision:</b> CEL_SOURCE_REV_HEAD <br> </p> </div> </p> @@ -426,36 +420,38 @@ First, we'll get MinGW and a few necessary dependencies.<br> Note: These are the minimum required packages for the MinGW build.<br> Go here: <a href="http://prdownloads.sourceforge.net/mingw/">http://prdownloads.sourceforge.net/mingw/</a> and fetch:<br><br> - MinGW [bin] MinGW-4.1.0.exe<br> + MinGW [bin] MinGW-5.1.4.exe<br> MSYS [bin] MSYS-1.0.10.exe<br> MSYS DTK [bin] msysDTK-1.0.1.exe<br> GDB [bin] gdb-5.2.1-1.exe (Optional)<br> MSYS Autoconf [bin] msys-autoconf-2.59.tar.bz2<br> MSYS Automake [bin] msys-automake-1.8.2.tar.bz2<br> - BinUtils [bin] binutils-2.16.91-20060119-1.tar.gz<br><br> + BinUtils [bin] binutils-2.17.50-20060824-1.tar.gz<br><br> - Run the exe files in the order they were downloaded to install the compiler and unzip the conf/make utilities in c:\msys\1.0\. <br> - Then unzip the BinUtils to the c:\mingw directory.<br> + Run the exe files in the order they were downloaded to install the compiler. Select 'Full' type for the MinGW installation.<br> + The installation program should also add an icon for MSYS to your start menu. <br> + Click the "MSYS" icon and it should open up a shell window. Type "exit" to close the shell window again.<br><br> + + Unzip the conf/make utilities in c:\msys\1.0\, then unzip the BinUtils to the c:\mingw directory as follows:<br> Unzipping the tar.bz2 archives needs to be done through the MSYS command-line by changing directory with the cd command to where you downloaded the files. Then, run the following commands: <div class="commandBox">tar -xjf msys-autoconf-2.59.tar.bz2 -C /c/msys/1.0<br> tar -xjf msys-automake-1.8.2.tar.bz2 -C /c/msys/1.0<br> -tar -xzf binutils-2.16.91-20060119-1.tar.gz -C /c/MinGW</div><br> +tar -xzf binutils-2.17.50-20060824-1.tar.gz -C /c/MinGW</div><br> This allows MSYS to setup the MinGW paths correctly.<br> - The installation program should also add an icon for MSYS to your start menu. <br> - Click the "MSYS" icon and it should open up a shell window. Type "exit" to close the shell window again.<br><br> - Download the following dependencies from the same site, but do not install these yet. Their install instructions are included.<br> + Download the following dependencies from the same site, but do not install these yet. Their install instructions are included below.<br> From explorer, create and place these dependencies into C:\msys\1.0\src. Also, create the C:\msys\1.0\local directory.<br><br> freetype-2.1.9-mingwPORT.tar.bz2 <br> jpeg-6b-mingwPORT.tar.bz2<br> - zlib-1.2.3-mingwPORT.tar.bz2<br> + zlib-1.2.3-mingwPORT-1.tar.bz2<br> wget-1.9.1-mingwPORT.tar.bz2<br> </p> The following dependencies use a scripted system to download and install them, built into their files.<br> - For the unanswered questions below, just press enter to accept the default (in parentheses).<br><br> + For the unanswered questions below, just press enter to accept the default (in parentheses).<br> + The following commands are to be run in the MSYS shell.<br><br> <b>Installing wget</b> <p> The input listed by the mingwPORT.sh script assumes that there is a file called wget-1.9.1.tar.gz in /usr/src, but the file you do have is @@ -473,6 +469,7 @@ <p><div class="commandBox"> + $ cd /usr/src<br> $ tar -jxvf wget-1.9.1-mingwPORT.tar.bz2<br> $ cd wget-1.9.1/mingwPORT<br> $ ./mingwPORT.sh<br> @@ -480,14 +477,15 @@ Unarchive file? (Yes)<br> Archive file type? (tar.gz) <br> Archive file? (wget-1.9.1.tar.gz) <br> - Archive file path? (/tmp) /c/distro<br> + Archive file path? (/tmp) /usr/src<br> Source path? (/usr/src/wget-1.9.1) <br> Installation directory? (/mingw) <br> CFLAGS (-O3 -s -mms-bitfields -march=i686) <br> </div></p> <b>Installing zlib</b> <p><div class="commandBox"> - $ tar -jxvf zlib-1.2.3-mingwPORT.tar.bz2 <br> + $ cd /usr/src<br> + $ tar -jxvf zlib-1.2.3-mingwPORT-1.tar.bz2 <br> $ cd zlib-1.2.3/mingwPORT<br> $ ./mingwPORT.sh<br> Download file? (Yes) <br> @@ -508,6 +506,7 @@ </div></p> <b>Installing JPEG Support</b> <p><div class="commandBox"> + $ cd /usr/src<br> $ tar -jxvf jpeg-6b-mingwPORT.tar.bz2 <br> $ cd jpeg-6b/mingwPORT<br> $ ./mingwPORT.sh<br> @@ -529,18 +528,20 @@ </div></p> <b>Installing LibPNG Support</b><br> Go to <a href="http://sourceforge.net/projects/libpng/">LibPNG's homepage</a> to get the latest source distribution.<br> - We'll be using libpng-1.2.12.tar.bz2<br> + We'll be using libpng-1.2.29.tar.bz2<br> Do not use the mingwPORT file. It is very outdated and no longer works.<br> Put this file in the /usr/src directory as well. <p><div class="commandBox"> - $ tar -jxvf libpng-1.2.12.tar.bz2 <br> - $ cd libpng-1.2.12<br> + $ cd /usr/src<br> + $ tar -jxvf libpng-1.2.29.tar.bz2 <br> + $ cd libpng-1.2.29<br> $ ./configure<br> $ make<br> $ make install<br> </div></p> <b>Installing FreeType2 Support</b> <p><div class="commandBox"> + $ cd /usr/src<br> $ tar -jxvf freetype-2.1.9-mingwPORT.tar.bz2<br> $ cd freetype-2.1.9/mingwPORT<br> $ ./mingwPORT.sh<br> @@ -588,15 +589,11 @@ <p><i>Variable Name</i>: CRYSTAL (all caps)<br> <i>Variable Value</i>: C:\development\cs</p> - <p><i>Variable Name</i>: CEL (all caps)<br> - <i>Variable Value</i>: C:\development\cel</p> <div class="MINGW"> <p>Before compiling each time in MinGW, you will also need to enter at the MSYS prompt:</p> <p><div class="commandBox"> - export CEL=/c/development/cel<br> export CRYSTAL=/c/development/cs<br> - export CSCONFPATH=/c/development/cel </div></p> </div> </div> @@ -606,14 +603,14 @@ <p>You will need a tool called Jam. Jam is a replacement for make. It's a bit easier to maintain and create custom builds. If you do not already have Jam, you can find it at <a href="ftp://ftp.perforce.com/pub/jam/">ftp://ftp.perforce.com/pub/jam/</a> - install it system wide. You can also use your distro's package manager to install it.</p> <h3>SVN</h3> - <p>CS, CEL and PlaneShift use SVN for their source repositories, so you'll need that too.<br> + <p>CS and PlaneShift use SVN for their source repositories, so you'll need that too.<br> You can find the software at: <a href="http://subversion.tigris.org/">http://subversion.tigris.org/</a><br> A GUI is available at: <a href="http://esvn.umputun.com/">http://esvn.umputun.com/</a> You can also use your distro's package manger to install it.</p> </div> <div class="Windows"> <h3>SVN client</h3> - <p>PS, CS and CEL use SVN for their source repositories, so you will need an SVN client.<br> + <p>PS and CS use SVN for their source repositories, so you will need an SVN client.<br> The SVN client for Windows is <a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a>.</p> </div> <div class="Linux-Gentoo"> @@ -660,7 +657,7 @@ <p>If you are on Gutsy use this command</p> <p><div class="commandBox"># sudo apt-get --assume-yes install libjpeg62-dev x11proto-gl-dev autoconf jam bison flex-old automake1.9 libmng-dev libmikmod2-dev libogg-dev libvorbis-dev zlib1g-dev libpng12-dev build-essential libtool libglu1-mesa-dev libglu1-xorg-dev xserver-xorg-dev libxt-dev libopenal0a libopenal-dev subversion zlibc libttf2 libfreetype6-dev libfreetype6 libasound2-dev alsa-oss libxxf86vm-dev libxext-dev x11proto-xext-dev </div></p> -<p>If you are on Hardy use this command></p> +<p>If you are on Hardy use this command</p> <p><div class="commandBox"># sudo apt-get --assume-yes install libjpeg62-dev x11proto-gl-dev autoconf jam bison flex-old automake1.9 libcurl4-openssl-dev libmng-dev libmikmod2-dev libogg-dev libvorbis-dev zlib1g-dev libpng12-dev build-essential libtool libglu1-mesa-dev libglu1-xorg-dev xserver-xorg-dev libxt-dev libopenal0a libopenal-dev subversion zlibc libttf2 libfreetype6-dev libfreetype6 libasound2-dev alsa-oss libxxf86vm-dev libxext-dev x11proto-xext-dev</div></p> <strong> ALL of these above commands are assuming you do not need a server if you do please follow directions in the <a href="#mysql">mysql</a> section for installing other required packages</strong> @@ -705,11 +702,11 @@ If you are on Gutsy you can <p><i class="command"># sudo apt-get install nvidia-cg-toolkit</i></p> <p> Otherwise you MUST do this</p> - <p><i class="command"># wget -c hhttp://developer.download.nvidia.com/cg/Cg_2.0/2.0.0015/Cg-2.0_May2008_x86.tgz</i></p> - <p><i class="command"># sudo mvCg-2.0_May2008_x86*.tgz /</i></p> - <p><i class="command"># cd /</i></p> - <p><i class="command"># sudo tar -zxvf Cg-2.0_May2008_x86*.tgz</i></p> - <p><i class="command"># sudo rm Cg-2.0_May2008_x86*.tgz</i></p> + <div class="commandBox"># wget -c http://developer.download.nvidia.com/cg/Cg_2.0/2.0.0015/Cg-2.0_May2008_x86.tgz</br> + # sudo mvCg-2.0_May2008_x86*.tgz /</br> + # cd /</br> + # sudo tar -zxvf Cg-2.0_May2008_x86*.tgz</br> + # sudo rm Cg-2.0_May2008_x86*.tgz</div></br> </div> <div class="Linux-Gentoo"> <p>Via portage: <i class="command"># emerge nvidia-cg-toolkit</i></p> @@ -778,7 +775,7 @@ Since SVN is not always installed you need to make sure it is installed you can get it from <a href="http://metissian.com/projects/macosx/subversion/">here.</a> <br /> You also need to install Nvidia's Cg Toolkit from <a href="http://www.nvidia.com/object/cg_toolkit.html"> -here.</a> +here.</a></div> <p> <h3>Server Databases</h3> <i>Optional section</i> @@ -816,19 +813,22 @@ <div class="MINGW"> <p>Also, we need to create MinGW compatible libraries from the standard Microsoft compatible libraries that ship with MySQL. Read the - <a href="http://www.mingw.org/mingwfaq.shtml">FAQ for mingw32</a> + <a href="http://www.mingw.org/MinGWiki/index.php/MSVC-MinGW-DLL">FAQ for mingw32</a> under the section "How can an MSVC program call a MinGW DLL, and vice versa?" You will find reimp here: <a href="http://wyw.dcweb.cn/reimp_new.zip">http://wyw.dcweb.cn/reimp_new.zip</a><br> - Copy the reimp.exe file to your /c/mingw/bin directory.<br> - Open an msys prompt, cd to the /c/mysql/lib/debug directory and do the following:</p> + You will have to compile it as an exe is not provided anymore, create and extract the contents of the zip into C:\msys\1.0\src\reimp, open an msys prompt then do the following:<br> <p><div class="commandBox"> + cd /usr/src/reimp/src<br> + make<br> + cp reimp.exe /c/mingw/bin<br> + cd /c/mysql/lib/debug<br> reimp -d libmysql.lib<br> dlltool -k -d LIBMYSQL.def -l libmysqlclient.a<br> rm LIBMYSQL.def<br> mv libmysqlclient.a .. </div></p> </div> - </div></div> + </div> <b>WordNet:</b><br> You will also need the WordNet dictionaries. Download and install the <a href="http://wordnet.princeton.edu/obtain/">WordNet binaries</a>, version 2.1. @@ -861,15 +861,6 @@ <p><i class="command">/home/user/development$ svn co -r CS_SOURCE_REV_HEAD https://crystal.svn.sourceforge.net/svnroot/crystal/CS/branches/release/V1.4 cs</i></p> </div> - <h3>Crystal Entity Layer (CEL)</h3> - <p>CEL is a layer on top of Crystal Space that is used for entity and behavior control.</p> - <div class="User"> - <p><i class="command">/home/user/development$ svn co -r CEL_SOURCE_REV https://cel.svn.sourceforge.net/svnroot/cel/cel/branches/release/V1.4 cel</i></p> - </div> - <div class="Developer"> - <p><i class="command">/home/user/development$ svn co -r CEL_SOURCE_REV_HEAD https://cel.svn.sourceforge.net/svnroot/cel/cel/branches/release/V1.4 cel</i></p> - </div> - <h3>PlaneShift</h3> <p>Lastly, download our source:</p> <div class="User"> @@ -882,13 +873,12 @@ <h3>Updating Sources</h3> - <p>From time to time, newer PlaneShift revisions will require you to upgrade your cal3d, CS, and CEL repositories to a newer revision as well. To update your supporting libraries, always be certain that you use the "-r" option keep from updating to the latest revision:</p> + <p>From time to time, newer PlaneShift revisions will require you to upgrade your cal3d and CS repositories to a newer revision as well. To update your supporting libraries, always be certain that you use the "-r" option keep from updating to the latest revision:</p> If you want to update to a new revision replace REVISON with the number of the revision you want to use: <p><div class="commandBox"> /home/user/development/cal3d$ svn update -r REVISION<br> /home/user/development/cs$ svn update -r REVISION<br> - /home/user/development/cel$ svn update -r REVISION<br> </div></p> <p>Unlike the supporting libraries, you will generally want to use the latest PlaneShift source (or the HEAD) rather than an intermediate revision. In this case, you will omit the "-r" option like so: <div class="commandBox"> @@ -898,7 +888,6 @@ <p><div class="commandBox"> /home/user/development/cal3d$ svn update -r HEAD<br> /home/user/development/cs$ svn update -r HEAD<br> - /home/user/development/cel$ svn update -r HEAD<br> </div></p> @@ -948,8 +937,6 @@ <p>Run the program and install the libraries. The Default name is fine. </p></div> <div class="MINGW"> <p>Run the program and install the libraries in C:\CSLibs. <br> -This helps to -trim down the length of the CEL linker flag list.</div> <p>When it asks you for the CS directory, enter <b>C:\development\CS</b>.<br> @@ -981,22 +968,6 @@ </div> </p> - <h3>Crystal Entity Layer (CEL)</h3> - <p>CEL is a layer on top of Crystal Space that is used for entity and behaviour control.</p> - <p> - Right-click on the development directory and select "SVN Checkout". Specify the URL as: - <div class="User"> - <p><i class="command">https://cel.svn.sourceforge.net/svnroot/cel/cel/branches/release/V1.4</i></p> - Specify the checkout directory as "C:\development\cel", select "Revision", and paste the current - CEL revision number: CEL_SOURCE_REV - </div> - <div class="Developer"> - <p><i class="command">https://cel.svn.sourceforge.net/svnroot/cel/cel/branches/release/V1.4</i></p> - Specify the checkout directory as "C:\development\cel", select "Revision", and paste the current - CEL revision number: CEL_SOURCE_REV_HEAD - </div> - </p> - <h3>PlaneShift</h3> <p>Lastly, download PlaneShift source code:</p> <p> @@ -1011,12 +982,12 @@ </p> <h3>Updating Sources</h3> - <p>If in the future you have the intentions to update cal3d, CS, CEL or PS because the team has decided to use + <p>If in the future you have the intentions to update cal3d, CS or PS because the team has decided to use another revision or because you feel like you want to update it, instead of doing a checkout you have simply to update. - Please, remember that CS, and CEL must be the exact revision specified above (or near the top of this <a name="dates">guide</a>) while PS can be newer.</p> + Please, remember that CS must be the exact revision specified above (or near the top of this <a name="dates">guide</a>) while PS can be newer.</p> <p> - <i>CS and CEL SVNs:</i><br> + <i>CS SVN:</i><br> Right-click on the folder of the module you want and goto TortoiseSVN->"Update to Revision". Enter a new revsion number or select HEAD to get latest, there is a possibility that HEAD may not work with with PS so keep that in mind. Click ok, and the files will be updated. </p> @@ -1044,15 +1015,6 @@ <p><i class="command">$HOME/development$ svn co -r CS_SOURCE_REV_HEAD https://crystal.svn.sourceforge.net/svnroot/crystal/CS/branches/release/V1.4 cs</i></p> </div> - <h3>Crystal Entity Layer (CEL)</h3> - <p>CEL is a layer on top of Crystal Space that is used for entity and behavior control.</p> - <div class="User"> - <p><i class="command">$HOME/development$ svn co -r CEL_SOURCE_REV https://cel.svn.sourceforge.net/svnroot/cel/cel/branches/release/V1.4 cel</i></p> - </div> - <div class="Developer"> - <p><i class="command">$HOME/development$ svn co -r CEL_SOURCE_REV_HEAD https://cel.svn.sourceforge.net/svnroot/cel/cel/branches/release/V1.4 cel</i></p> - </div> - <h3>PlaneShift</h3> <p>Lastly, download our source:</p> <div class="User"> @@ -1062,13 +1024,12 @@ <p><i class="command">$HOME/development$ svn co https://planeshift.svn.sourceforge.net/svnroot/planeshift/trunk planeshift</i></p> </div> <h3>Updating Sources</h3> - <p>From time to time, newer PlaneShift revisions will require you to upgrade your cal3d, CS, and CEL repositories to a newer revision as well. To update your supporting libraries, always be certain that you use the "-r" option keep from updating to the latest revision:</p> + <p>From time to time, newer PlaneShift revisions will require you to upgrade your cal3d and CS repositories to a newer revision as well. To update your supporting libraries, always be certain that you use the "-r" option keep from updating to the latest revision:</p> If you want to update to a new revision replace REVISON with the number of the revision you want to use: <p><div class="commandBox"> $HOME/development/cal3d$ svn update -r REVISION<br> $HOME/development/cs$ svn update -r REVISION<br> - $HOME/development/cel$ svn update -r REVISION<br> </div></p> <p>Unlike the supporting libraries, you will generally want to use the latest PlaneShift source (or the HEAD) rather than an intermediate revision. In this case, you will omit the "-r" option like so: <div class="commandBox"> @@ -1078,7 +1039,6 @@ <p><div class="commandBox"> $HOME/development/cal3d$ svn update -r HEAD<br> $HOME/development/cs$ svn update -r HEAD<br> - $HOME/development/cel$ svn update -r HEAD<br> </div></p> @@ -1087,7 +1047,7 @@ $HOME/development/planeshift$ jam clean<br> $HOME/development/planeshift$ jam -aq </div></p> -</div> +</div></div> <!----------------------------------------------------------------------------------------------------> <!----------------------------------------------------------------------------------------------------> @@ -1178,7 +1138,7 @@ </div></p></div> Because we did not install cal3d we need to make sure other things can find it. This is done using the LD_LIBRARY_PATH: <p><i class="command">export LD_LIBRARY_PATH=/home/user/development/cal3d/src/cal3d/.libs/:$LD_LIBRARY_PATH</i></p> -</div></div> +</div></div></div> <div class="Linux"> <h3>Crystal Space (CS)</h3> <p>Now we can build it and use the configure line to tell it where we installed the cal3d libraries. @@ -1239,21 +1199,7 @@ We should export the CRYSTAL environment variable so applications outside the Crystal Space tree know where to find the .so's. <p><i class="command">export CRYSTAL=/home/user/development/cs</i></p> - - <h3>Crystal Entity Layer (CEL)</h3> - <p><div class="commandBox"> - /home/user/development/cel$ ./configure --without-python<br> - <div class="Normal"> - /home/user/development/cel$ jam -aq libs plugins cel-config - </div> - <div class="Static"> - /home/user/development/cel$ jam -aq libs staticplugins cel-config - </div> - </div></p> - -We should export the CEL environment variable so applications outside the CEL tree know where to find the .so's. - <p><div class="commandBox">export CEL=/home/user/development/cel<br />export CSCONFPATH=/home/user/development/cel</div></p> - + <h3>PlaneShift</h3> <p><div class="commandBox"> /home/user/development/planeshift$ ./autogen.sh<br> @@ -1278,8 +1224,8 @@ <p><i class="command">/home/user/development/planeshift$ jam -aq server_static</i></p> </div> If you want to build the extra tools, just do "jam -a". -<p> Before launching any PS app you need to tell PS where to find CS and CEL as we did not install them globally</p> - <div class="commandBox">export LD_LIBRARY_PATH="/home/user/development/cal3d/src/cal3d/.libs/:/home/user/development/cs/:/home/user/development/cel:"$LD_LIBRARY_PATH</div> +<p> Before launching any PS app you need to tell PS where to find CS as we did not install it globally</p> + <div class="commandBox">export LD_LIBRARY_PATH="/home/user/development/cal3d/src/cal3d/.libs/:/home/user/development/cs/:"$LD_LIBRARY_PATH</div> <p>If your psclient has no skin you are used to seeing launch pssetup after you have copied your art over and select a new skin</p> <p>If you wish for your psclient to not use the same user files as your other build/install you may run ps with the following command<br /> <div class="commandBox"> @@ -1321,19 +1267,7 @@ We should export the CRYSTAL environment variable so applications outside the Crystal Space tree know where to find the .so's. <p><i class="command">export CRYSTAL=$HOME/development/cs</i></p> - - <h3>Crystal Entity Layer (CEL)</h3> - <p><div class="commandBox"> - $HOME/development/cel$ ./configure --without-python<br> - <div class="Normal"> - $HOME/development/cel$ jam -aq libs plugins cel-config - </div> - <div class="Static"> there is no Mac static build guide at this time</div> - </div></p> - -We should export the CEL environment variable so applications outside the CEL tree know where to find the .so's. - <p><i class="command">export CEL=$HOME/development/cel</i></p> - + <h3>PlaneShift</h3> <p><div class="commandBox"> $HOME/development/planeshift$ ./autogen.sh<br> @@ -1373,9 +1307,9 @@ configure without any arguments) If you chose to build cal3d, rather than use it from the CS win libs, you can specify its location with: --with-cal3d=/c/development/cal3d/ <p><div class="commandBox"><div class="User"> - ./configure --without-java --without-perl --without-python --without-lib3ds</div> + ./configure --without-java --without-perl --without-python --without-lib3ds --enable-shared=no</div> <div class="Developer"> - ./configure --enable-debug --without-java --without-perl --without-python --without-lib3ds</div> + ./configure --enable-debug --without-java --without-perl --without-python --without-lib3ds --enable-shared=no</div> <div class="Normal"> jam -aq libs plugins cs-config walktest </div> @@ -1385,21 +1319,20 @@ </div> </p> This will build all the needed libraries and plugins, as well as the standard test application.<br> +<div class="MINGW"> +<p>For Mingw you need to copy also these files to the +Crystal Space directory for walktest to work:<br><div class=commandBox> +C:\msys\1.0\local\bin\libpng12-0.dll<br> +C:\MinGW\bin\libjpeg-62.dll<br> +C:\MinGW\bin\zlib1.dll<br></div><br> +or by command-line:<br><div class=commandBox> +cp /c/msys/1.0/local/bin/libpng12-0.dll <br> +cp /c/MinGW/bin/libjpeg-62.dll <br> +cp /c/MinGW/bin/zlib1.dll <br></div> +</p> +</div> After everything compiles, try running "walktest.exe" in /c/development/cs to check that everything is ok. - <h3>Crystal Entity Layer (CEL)</h3> - <p>Change your working directory to CEL's, and do:</p> - <p><div class="commandBox"> - ./configure --without-python<br> - <div class="Normal"> - jam -aq libs plugins cel-config - </div> - <div class="Static"> - jam -aq libs staticplugins cel-config - </div> - </div></p> - You can test this build by running the demo application "celtst.exe" in /c/development/cel to check that everything is ok. - <h3>PlaneShift</h3> <p>If you chose to build cal3d, rather than use it from the CS win libs, you can specify its location after the configure command with: --with-cal3d=/c/development/cal3d/ <br> @@ -1415,45 +1348,16 @@ </div> </div> </p> -<p> - Sometimes when compiling with GCC it says the list of linker flags -for CEL is too long. Many of the flags are just duplicates and can be -removed. The box below can be used to do it for you automatically.<br> -<script language="Javascript"> -<!-- -function fixflags() -{ - var config=document.getElementById("flagfixerbox").value; - while(config.indexOf("\r\n")>-1){config=config.replace("\r\n","\n");} // Different platforms using different newline indications - while(config.indexOf("\n\r")>-1){config=config.replace("\n\r","\n");} - while(config.indexOf("\r")>-1){config=config.replace("\r","\n");} - config=config.split("\n"); - var i=0; - var i2=0; - while(i<config.length) - { - if(config[i].indexOf("\"")>-1) // In case of empty lines - { - var flags=config[i].substring(config[i].indexOf("\"")+1,config[i].indexOf("\"",config[i].indexOf("\"")+1)).split(" "); - var newflags=new Array(); - i2=0; - while(i2<flags.length) - { - if(("�"+newflags.join("�")+"�").indexOf("�"+flags[i2]+"�")<0){newflags[newflags.length]=flags[i2];} - i2++;} - config[i]=config[i].substring(0,config[i].indexOf("\"")+1)+newflags.join(" ")+config[i].substring(config[i].indexOf("\"",config[i].indexOf("\"")+1),config[i].length); - } - i++;} - document.getElementById("flagfixerbox").value=config.join("\r\n"); -} -//--> -</script> + If you're building the server instead do the following as you also need to configure with your MySQL location: + <p><div class="User"> <div class="commandBox"> + ./autogen.sh<br> + ./configure --with-mysqlclient=/c/mysql<br> + </div></div></p> + <p><div class="Developer"> <div class="commandBox"> + ./autogen.sh<br> + ./configure --enable-debug --with-mysqlclient=/c/mysql<br> + </div></div></p> -<textarea rows="10" cols="40" id="flagfixerbox"></textarea><br> -<button onclick="fixflags();">Fix flags</button><br> -You must paste the content of the file Jamconfig -(all of it, no need to find the right line) and click "Fix flags", -then just copy it back to the file.<br></p> <p><div class="commandBox"> <div class="Normal"> @@ -1463,15 +1367,7 @@ jam -aq client_static </div> </div></p> - If you're building the server, you also need to configure with your MySQL location: - <p><div class="User"> <div class="commandBox"> - ./autogen.sh<br> - ./configure --with-mysqlclient=/c/mysql<br> - </div></div></p> - <p><div class="Developer"> <div class="commandBox"> - ./autogen.sh<br> - ./configure --enable-debug --with-mysqlclient=/c/mysql<br> - </div></div></p> + If your building a server also do the following to compile it: <div class="Normal"> <p><i class="command">jam -aq server</i></p> </div> @@ -1504,7 +1400,6 @@ <p> C:\development\CS\include<br> C:\development\CS\include\csutil\win32<br> - C:\development\cel\include<br> C:\mysql\include </p> @@ -1537,34 +1432,15 @@ If you encounter any errors, check you have done everything correctly, and then if the problem persists, you can ask for help in the CS IRC channel:<br> irc.freenode.net #crystalspace</p> - - <h3>Crystal Entity Layer (CEL)</h3> - <p> - <div class="Normal"> - If you have MSVC 7.0 open C:\development\cel\msvc\7\wkscel.sln<br> - If you have MSVC 7.1 open C:\development\cel\msvc\71\wkscel.sln<br> - If you have MSVC 8.0 open C:\development\cel\msvc\8\wkscel.sln<br> - If you have MSCV 9.0 open C:\development\cel\msvc\9\wkscel.sln - </div> - <div class="Static"> - If you have MSVC 7.0 open C:\development\cel\msvc\7\wksstatic.sln<br> - If you have MSVC 7.1 open C:\development\cel\msvc\71\wksstatic.sln<br> - If you have MSVC 8.0 open C:\development\cel\msvc\8\wksstatic.sln<br> - If you have MSVC 9.0 open C:\development\cel\msvc\9\wksstatic.sln - </div> - </p> - <p>Make sure that your specific 'msvc' folder has the 'read only' box unchecked before continuing.</p> - <p>Build the solution. <br>Just ignore any Python errors.</p> - + <h3>PlaneShift</h3> <p>Under Tools->Options in you MSVC look on the left hand side for the Projects folder. Under Projects choose "VC++ Directories". In the Show Directories for: choose "Library Files". Click the new folder icon to add the following directories:</p> <p> C:\development\CS\out\releaseX\libs<br> - C:\development\cel\out\releaseX\libs </p> - <p>You have to change X (in the path concerning CS and cel libraries) to these + <p>You have to change X (in the path concerning CS) to these values, depending from the version you have of MSVC:</p> <p> 7 for MSVC 7<br> @@ -1603,12 +1479,14 @@ C:\msys\1.0\local\bin\libpng12-0.dll<br> C:\development\cs\cg.dll<br> C:\development\cs\cgGL.dll<br> -C:\MinGW\bin\libjpeg-62.dll<br></div><br> +C:\MinGW\bin\libjpeg-62.dll<br> +C:\MinGW\bin\zlib1.dll<br></div><br> or by command-line:<br><div class=commandBox> cp /c/msys/1.0/local/bin/libpng12-0.dll <br> cp /c/development/cs/cg.dll <br> cp /c/development/cs/cgGL.dll <br> -cp /c/MinGW/bin/libjpeg-62.dll <br></div> +cp /c/MinGW/bin/libjpeg-62.dll <br> +cp /c/MinGW/bin/zlib1.dll <br></div> </p> </div> @@ -1864,13 +1742,11 @@ <h2><a name="scripts">Mini Scripts</a></h2> <i>Optional section</i> <p>You might want to create some script so that you don't have to manually type in the environment variables every - time. In this way you can also have multiple versions of CS + CEL coexisting peacefully.</p> + time. In this way you can also have multiple versions of CS coexisting peacefully.</p> <p><div class="commandBox"> $ echo \#\!/bin/sh > PlaneShiftserver.sh<br> $ echo "export CRYSTAL=$PWD/cs/" >> PlaneShiftserver.sh<br> - $ echo "export CEL=$PWD/cel/" >> PlaneShiftserver.sh<br> - $ echo "export CSCONFPATH=$PWD/cel/" >> PlaneShiftserver.sh<br> $ echo "cd $PWD/PlaneShift" >> PlaneShiftserver.sh<br> $ echo "./psserver \$@" >> PlaneShiftserver.sh<br> $ chmod +x PlaneShiftserver.sh @@ -1879,8 +1755,6 @@ <p><div class="commandBox"> $ echo \#\!/bin/sh > PlaneShiftclient.sh<br> $ echo "export CRYSTAL=$PWD/cs/" >> PlaneShiftclient.sh<br> - $ echo "export CEL=$PWD/cel/" >> PlaneShiftclient.sh<br> - $ echo "export CSCONFPATH=$PWD/cel" >> PlaneShiftclient.sh<br> $ echo "cd $PWD/PlaneShift/" >> PlaneShiftclient.sh<br> $ echo "./psclient \$@" >> PlaneShiftclient.sh<br> $ chmod +x PlaneShiftclient.sh Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-07-19 12:28:52 UTC (rev 1927) +++ stable/docs/history.txt 2008-07-19 12:42:28 UTC (rev 1928) @@ -1,3 +1,36 @@ +*** 2008-07-17 by Mike Gist +- Bumped CS revision to 30349. Removed CEL from the compiling guide. + +*** 2008-07-16 by Andrew Craig +- Fix for FS#1865 - Improve the delete char message. + Now does an initial prompt window that gives details about what will happen. + The second prompt will request password to confirm character deletion. +- Fixed a problem in the yes/no box where it was always clearing the + modal widget after HandleButtonDown was called. + +*** 2008-07-16 by Steven Patrick +- Updated MinGW section of compiling.html. + +*** 2008-07-15 by Andrew Craig +- Fixed: FS#795 - cannot select last item in scrolling list. Fixed by adding + an extra vertical scroll if the horizontal scroll bar is showing +- FS#1278 - Tab autocompletion doesn't always find name. + Added patch from peeg + +*** 2008-07-15 by Steven Patrick +- Minor xml fixes, patch by Caarrie. + +*** 2008-07-14 by Andrew Craig +- Removed the CelBase class and cleaned up the server and npcclient. This is + a fairly large commit and could be some issues. This cleans up the minor use + if CEL we were using. + +*** 2008-07-12 by Andrew Craig +- Added in a helper function that will be used to attach gemObjects to meshes. + Part of a server side clean up. +- Removed the 'action' from gemObject::InitMesh() function since it was never used. + +>>>>>>> .merge-right.r1911 *** 2008-07-12 by Mike Gist - Fixed FS#1872, thanks to peeg for looking at this. Modified: stable/src/client/gui/chatwindow.cpp =================================================================== --- stable/src/client/gui/chatwindow.cpp 2008-07-19 12:28:52 UTC (rev 1927) +++ stable/src/client/gui/chatwindow.cpp 2008-07-19 12:42:28 UTC (rev 1928) @@ -1904,7 +1904,6 @@ psString partial(cmd); if (partial.Length () == 0) return; - partial.SetAt(0, toupper(partial.GetAt(0))); // valid but not unique psString list, last; @@ -1914,7 +1913,7 @@ while (iter.HasNext()) { psString found = iter.Next(); - if (!found.PartialEquals(partial)) + if(found.StartsWith(partial, true)) { list.Append(" "); list.Append(found); @@ -2176,16 +2175,21 @@ ((pawsButton *) FindWidget(buttonName))->Flash(true); } -void pawsChatWindow::AddAutoCompleteName(const char *name) +void pawsChatWindow::AddAutoCompleteName(const char *cname) { - for (size_t i = 0; i < autoCompleteNames.GetSize(); i++) + // normalize name + csString name = cname; + name.Downcase(); + name.SetAt(0,toupper(name.GetAt(0))); + + for (size_t i = 0; i < autoCompleteNames.GetSize(); i++) { if (autoCompleteNames[i].CompareNoCase(name)) { return; } } - + autoCompleteNames.Push(name); } Modified: stable/src/client/gui/pawscharpick.cpp =================================================================== --- stable/src/client/gui/pawscharpick.cpp 2008-07-19 12:28:52 UTC (rev 1927) +++ stable/src/client/gui/pawscharpick.cpp 2008-07-19 12:42:28 UTC (rev 1928) @@ -51,6 +51,8 @@ #define BACK_BUTTON 200 #define QUIT_BUTTON 250 +#define YES_DELETE_CHARACTER 300 +#define NO_DELETE_CHARACTER 302 pawsCharacterPickerWindow::pawsCharacterPickerWindow() { @@ -212,6 +214,27 @@ switch ( widget->GetID() ) { + case YES_DELETE_CHARACTER: + { + PawsManager::GetSingleton().SetModalWidget(NULL); + widget->GetParent()->Hide(); + + pawsStringPromptWindow::Create("Please enter your account password to confirm:", csString(""),false, 220, 20, this, "DeletionConfirm", 0, true); + pawsEditTextBox* passbox = dynamic_cast<pawsEditTextBox*> + (PawsManager::GetSingleton().FindWidget("stringPromptEntry")); + + if (passbox) + { + passbox->SetPassword(true); + } + return true; + } + + case NO_DELETE_CHARACTER: + { + return true; + } + case CHARACTER_DELETE_BUTTON: { csString name; @@ -229,16 +252,10 @@ // Catch invalid selection. if(charName == "New Character") return false; - // Selection is valid. - pawsStringPromptWindow::Create("Please enter your account password to confirm:", csString(""), - false, 220, 20, this, "DeletionConfirm", 0, true); - pawsEditTextBox* passbox = dynamic_cast<pawsEditTextBox*> - (PawsManager::GetSingleton().FindWidget("stringPromptEntry")); - if (passbox) - { - passbox->SetPassword(true); - } - + + csString msg("Warning! this will PERMANENTLY DELETE your character. Are you sure you want to continue?"); + pawsYesNoBox::Create(this, msg, YES_DELETE_CHARACTER, NO_DELETE_CHARACTER); + return true; } Modified: stable/src/client/psengine.cpp =================================================================== --- stable/src/client/psengine.cpp 2008-07-19 12:28:52 UTC (rev 1927) +++ stable/src/client/psengine.cpp 2008-07-19 12:42:28 UTC (rev 1928) @@ -479,6 +479,8 @@ if ( ! paws->LoadWidget("data/gui/quitinfo.xml") ) return false; + LoadPawsWidget( "Yes / No dialog", "data/gui/yesno.xml" ); + //Load confirmation information for duels if (!LoadDuelConfirm()) return false; @@ -1279,8 +1281,7 @@ LoadPawsWidget( "Container description window", "data/gui/containerdesc.xml" ); LoadPawsWidget( "Book Reading window", "data/gui/readbook.xml" ); LoadPawsWidget( "Interact menu", "data/gui/interact.xml" ); - LoadPawsWidget( "Yes / No dialog", "data/gui/yesno.xml" ); - LoadPawsWidget( "Group status window", "data/gui/group.xml" ); + LoadPawsWidget( "Group status window", "data/gui/group.xml" ); LoadPawsWidget( "Exchange window", "data/gui/exchange.xml" ); LoadPawsWidget( "Glyph window", "data/gui/glyph.xml" ); LoadPawsWidget( "Merchant window", "data/gui/merchant.xml" ); Modified: stable/src/common/paws/pawslistbox.cpp =================================================================== --- stable/src/common/paws/pawslistbox.cpp 2008-07-19 12:28:52 UTC (rev 1927) +++ stable/src/common/paws/pawslistbox.cpp 2008-07-19 12:42:28 UTC (rev 1928) @@ -517,9 +517,15 @@ void pawsListBox::SetScrollBarMaxValue() { + int horiz = 0; + // If horz scroll bar is visible add an extra vertical scroll + if ( horzscrollBar->IsVisible() ) + { + horiz = 1; + } scrollBar->SetMaxValue( - int(rows.GetSize()) + (usingTitleRow?1:0) + int(rows.GetSize()) + (usingTitleRow?1:0) + horiz + - screenFrame.Height() / columnDef[0].height ); Modified: stable/src/common/paws/pawsyesnobox.cpp =================================================================== --- stable/src/common/paws/pawsyesnobox.cpp 2008-07-19 12:28:52 UTC (rev 1927) +++ stable/src/common/paws/pawsyesnobox.cpp 2008-07-19 12:42:28 UTC (rev 1928) @@ -96,9 +96,9 @@ // The parent is responisble for handling the button presses. if ( notify ) { + PawsManager::GetSingleton().SetModalWidget( 0 ); bool result = notify->OnButtonPressed( mouseButton, keyModifier, widget ); SetNotify(0); - PawsManager::GetSingleton().SetModalWidget( 0 ); Hide(); return result; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-07-19 23:50:37
|
Revision: 1931 http://planeshift.svn.sourceforge.net/planeshift/?rev=1931&view=rev Author: mgist Date: 2008-07-19 23:50:11 +0000 (Sat, 19 Jul 2008) Log Message: ----------- - Merged r1930 from trunk. Modified Paths: -------------- stable/docs/compiling.html stable/docs/history.txt Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930 Modified: stable/docs/compiling.html =================================================================== --- stable/docs/compiling.html 2008-07-19 21:32:46 UTC (rev 1930) +++ stable/docs/compiling.html 2008-07-19 23:50:11 UTC (rev 1931) @@ -9,9 +9,9 @@ // Source versions are listed here and automatically updated in the body. // Standard revisions (CSrev) are the ones that are compatible with Laanx. // An additional CS revision (CSrev_HEAD) may be specified for the latest version of PS. - var CSrev = "30458"; // CS_SOURCE_REV + var CSrev = "30463"; // CS_SOURCE_REV var CAL3Drev = "493"; // CAL3D_SOURCE_REV - var CSrev_HEAD = "30458"; // CS_SOURCE_REV_HEAD + var CSrev_HEAD = "30463"; // CS_SOURCE_REV_HEAD var CAL3Drev_HEAD = "493"; // CAL3D_SOURCE_REV_HEAD var csWinLibsVersionStab = "1.3_004"; // cs win32 libs version. var csWinLibsVersion = "1.3_004"; // cs win32 libs version. Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-07-19 21:32:46 UTC (rev 1930) +++ stable/docs/history.txt 2008-07-19 23:50:11 UTC (rev 1931) @@ -1,5 +1,5 @@ *** 2008-07-17 by Mike Gist -- Bumped CS revision to 30349. Removed CEL from the compiling guide. +- Bumped CS revision to 30463. Removed CEL from the compiling guide. *** 2008-07-16 by Andrew Craig - Fix for FS#1865 - Improve the delete char message. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-07-21 09:21:19
|
Revision: 1935 http://planeshift.svn.sourceforge.net/planeshift/?rev=1935&view=rev Author: mgist Date: 2008-07-21 09:20:58 +0000 (Mon, 21 Jul 2008) Log Message: ----------- - Merged r1934 from trunk. Modified Paths: -------------- stable/data/gui/inventory.xml stable/data/gui/money.xml stable/src/client/gui/pawsexchangewindow.cpp Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934 Modified: stable/data/gui/inventory.xml =================================================================== --- stable/data/gui/inventory.xml 2008-07-21 07:35:12 UTC (rev 1934) +++ stable/data/gui/inventory.xml 2008-07-21 09:20:58 UTC (rev 1935) @@ -221,7 +221,7 @@ <widget name="TotalTriasLabel" factory="pawsTextBox"> <frame x="5" y="172" width="50" height="30" /> <font name="/planeshift/data/ttf/cupandtalon.ttf" r="255" g="255" b="128" size="10" /> - <text string="Trias" /> + <text string="Tria" /> </widget> <widget name="TotalWeightLabel" factory="pawsTextBox"> Modified: stable/data/gui/money.xml =================================================================== --- stable/data/gui/money.xml 2008-07-21 07:35:12 UTC (rev 1934) +++ stable/data/gui/money.xml 2008-07-21 09:20:58 UTC (rev 1935) @@ -1,6 +1,6 @@ <widget_description> <widget factory="pawsMoney"> - <widget name="Circles" factory="pawsSlot" tooltip="250 Trias" > + <widget name="Circles" factory="pawsSlot" tooltip="250 Tria" > <frame x="0" y="0" width="48" height="48" /> <font name="/planeshift/data/ttf/cupandtalon.ttf" r="255" g="255" b="64" size="10" /> <attachpoints> @@ -10,7 +10,7 @@ <attach point="PROPORTIONAL_BOTTOM" /> </attachpoints> </widget> - <widget name="Octas" factory="pawsSlot" tooltip="50 Trias" > + <widget name="Octas" factory="pawsSlot" tooltip="50 Tria" > <frame x="48" y="0" width="48" height="48" /> <font name="/planeshift/data/ttf/cupandtalon.ttf" r="255" g="255" b="64" size="10" /> <attachpoints> @@ -20,7 +20,7 @@ <attach point="PROPORTIONAL_BOTTOM" /> </attachpoints> </widget> - <widget name="Hexas" factory="pawsSlot" tooltip="10 Trias" > + <widget name="Hexas" factory="pawsSlot" tooltip="10 Tria" > <frame x="0" y="48" width="48" height="48" /> <font name="/planeshift/data/ttf/cupandtalon.ttf" r="255" g="255" b="64" size="10" /> <attachpoints> Modified: stable/src/client/gui/pawsexchangewindow.cpp =================================================================== --- stable/src/client/gui/pawsexchangewindow.cpp 2008-07-21 07:35:12 UTC (rev 1934) +++ stable/src/client/gui/pawsexchangewindow.cpp 2008-07-21 09:20:58 UTC (rev 1935) @@ -362,14 +362,14 @@ { offeringMoneyWidget->Set(money.circles, money.octas, money.hexas, money.trias); csString triasOffered; - triasOffered.Format("Trias Offered %d", money.circles*CIRCLES_VALUE_TRIAS + money.octas*OCTAS_VALUE_TRIAS + money.hexas*HEXAS_VALUE_TRIAS + money.trias); + triasOffered.Format("Tria Offered %d", money.circles*CIRCLES_VALUE_TRIAS + money.octas*OCTAS_VALUE_TRIAS + money.hexas*HEXAS_VALUE_TRIAS + money.trias); totalTriasOffered->SetText(triasOffered); } else if ( money.container == CONTAINER_RECEIVING_MONEY ) { receivingMoneyWidget->Set(money.circles, money.octas, money.hexas, money.trias); csString triasReceived; - triasReceived.Format("Trias Received %d", money.circles*CIRCLES_VALUE_TRIAS + money.octas*OCTAS_VALUE_TRIAS + money.hexas*HEXAS_VALUE_TRIAS + money.trias); + triasReceived.Format("Tria Received %d", money.circles*CIRCLES_VALUE_TRIAS + money.octas*OCTAS_VALUE_TRIAS + money.hexas*HEXAS_VALUE_TRIAS + money.trias); totalTriasReceived->SetText(triasReceived); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-07-28 17:27:51
|
Revision: 1950 http://planeshift.svn.sourceforge.net/planeshift/?rev=1950&view=rev Author: mgist Date: 2008-07-28 17:27:57 +0000 (Mon, 28 Jul 2008) Log Message: ----------- - Merged r1936,1939,1941,1945-1949 from trunk. Modified Paths: -------------- stable/data/help.xml stable/docs/compiling.html stable/docs/history.txt stable/src/client/gui/chatwindow.cpp stable/src/client/gui/pawsgmgui.cpp stable/src/client/gui/psmainwidget.cpp stable/src/client/pscelclient.cpp stable/src/client/pscelclient.h stable/src/common/net/message.h stable/src/common/net/netbase.cpp stable/src/common/net/netpacket.h stable/src/server/adminmanager.cpp stable/src/server/command.cpp stable/src/server/database/mysql/math_scripts.sql stable/src/server/gem.cpp stable/src/server/gem.h Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949 Modified: stable/data/help.xml =================================================================== --- stable/data/help.xml 2008-07-28 16:58:41 UTC (rev 1949) +++ stable/data/help.xml 2008-07-28 17:27:57 UTC (rev 1950) @@ -105,14 +105,14 @@ If you are an advisor, lists all currently unanswered questions.</topic> <topic name="/notbuddy">/notbuddy player -Removes the named player from your buddy list. Not your friend anymore? what a shame.</topic> +Removes the named player from your buddy list. Not your friend anymore? What a shame.</topic> <branch name="/pet"> Control your pet(s). /pet [petname,] assist /pet [petname,] attack /pet [petname,] dismiss /pet [petname,] follow /pet [petname,] name -/pet [petname,] quard +/pet [petname,] guard /pet [petname,] stay /pet [petname,] summon /pet [petname,] target @@ -127,7 +127,7 @@ <topic name="/pet name">/pet [petname,] name <newname> Give your pet a new name.</topic> - <topic name="/pet quard">/pet [petname,] quard + <topic name="/pet guard">/pet [petname,] guard </topic> <topic name="/pet stay">/pet [petname,] stay </topic> Modified: stable/docs/compiling.html =================================================================== --- stable/docs/compiling.html 2008-07-28 16:58:41 UTC (rev 1949) +++ stable/docs/compiling.html 2008-07-28 17:27:57 UTC (rev 1950) @@ -16,8 +16,8 @@ var csWinLibsVersionStab = "1.3_004"; // cs win32 libs version. var csWinLibsVersion = "1.3_004"; // cs win32 libs version. //Update date and author, to be changed everytime and updates occurred - var UpdateDate = "19 July 2008"; //Date when the update occurred - var UpdateAuthor = "Mike Gist"; //Author of the update + var UpdateDate = "21 July 2008"; //Date when the update occurred + var UpdateAuthor = "Steven Patrick"; //Author of the update --> </script> @@ -936,7 +936,7 @@ <div class="MSVC"> <p>Run the program and install the libraries. The Default name is fine. </p></div> <div class="MINGW"> -<p>Run the program and install the libraries in C:\CSLibs. <br> +<p>Run the program and install the libraries in C:\CSLibs. </p></div> <p>When it asks you for the CS directory, enter <b>C:\development\CS</b>.<br> Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-07-28 16:58:41 UTC (rev 1949) +++ stable/docs/history.txt 2008-07-28 17:27:57 UTC (rev 1950) @@ -1,3 +1,22 @@ +*** 2008-07-28 by Andreas Heinchen +- Fix for FS#1692 - fixing 2 bugs that caused entities to get lost in a temporary sector + +*** 2008-07-28 by Andreas Heinchen +- Cleaned up fix for FS#707 + +*** 2008-07-28 by Andreas Heinchen +- Fixed FS#1826 + +*** 2008-07-28 by Mike Gist +- Fixed FS#1925, patch by peeg. +- Patch for FS#2001 from weltall. +- Fixed a memory leak caused by a reference leak in netbase. +- Patch for FS#1912 from weltall. + +*** 2008-07-24 by Steven Patrick +- Fixed FS#1991 - deputizing doesn't update GM console, patch by Zwenze. +- Changed max deputize to 1 below current level, patch by Kerol. + *** 2008-07-17 by Mike Gist - Bumped CS revision to 30463. Removed CEL from the compiling guide. Modified: stable/src/client/gui/chatwindow.cpp =================================================================== --- stable/src/client/gui/chatwindow.cpp 2008-07-28 16:58:41 UTC (rev 1949) +++ stable/src/client/gui/chatwindow.cpp 2008-07-28 17:27:57 UTC (rev 1950) @@ -1191,7 +1191,7 @@ soundmgr->HandleSoundType(msg.type); } - LogMessage(msg.type == MSG_INFO_BASE ? CHAT_LOG_ALL : CHAT_LOG_SYSTEM, buff.GetData()); + LogMessage((msg.type == MSG_INFO_BASE || msg.type == MSG_INFO_SERVER) ? CHAT_LOG_ALL : CHAT_LOG_SYSTEM, buff.GetData()); } delete[] currentLine; } Modified: stable/src/client/gui/pawsgmgui.cpp =================================================================== --- stable/src/client/gui/pawsgmgui.cpp 2008-07-28 16:58:41 UTC (rev 1949) +++ stable/src/client/gui/pawsgmgui.cpp 2008-07-28 17:27:57 UTC (rev 1950) @@ -146,6 +146,7 @@ //We don't want old information //SelectTab(1); pawsWidget::Show(); + SetSecurity(); QueryServer(); } Modified: stable/src/client/gui/psmainwidget.cpp =================================================================== --- stable/src/client/gui/psmainwidget.cpp 2008-07-28 16:58:41 UTC (rev 1949) +++ stable/src/client/gui/psmainwidget.cpp 2008-07-28 17:27:57 UTC (rev 1950) @@ -483,6 +483,8 @@ if(mesg.type == MSG_ERROR) color = graphics2D->FindRGB(255,0,0); + else if(mesg.type == MSG_INFO_SERVER) + color = graphics2D->FindRGB(255,0,0); else if(mesg.type == MSG_RESULT) color = graphics2D->FindRGB(255,255,0); else if(mesg.type == MSG_OK) Modified: stable/src/client/pscelclient.cpp =================================================================== --- stable/src/client/pscelclient.cpp 2008-07-28 16:58:41 UTC (rev 1949) +++ stable/src/client/pscelclient.cpp 2008-07-28 17:27:57 UTC (rev 1950) @@ -15,7 +15,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * Implements the varrious things relating to the CEL for the client. + * Implements the various things relating to the CEL for the client. */ #include <psconfig.h> @@ -312,6 +312,7 @@ // Update equipment list local_player->equipment = mesg.equipment; + local_player->type = mesg.masqueradeType; if (mesg.factname != local_player->GetFactName()) { @@ -957,6 +958,8 @@ bool unresolved = true; + iSector* sectorToBeDeleted = 0; + // Are all the sectors going to be unloaded? for(int i = 0;i<sectors->GetCount();i++) { @@ -967,6 +970,8 @@ // We've found a sector that won't be unloaded so the mesh won't need to be moved unresolved = false; break; + } else { + sectorToBeDeleted = sectors->Get(i); } } @@ -975,7 +980,7 @@ // All the sectors the mesh is in are going to be unloaded Warning1(LOG_ANY,"Moving entity to temporary sector"); // put the mesh to the sector that server uses for keeping meshes located in unload maps - HandleUnresolvedPos(entities[entNum], movable->GetPosition(), 0.0f, unresSector->QueryObject ()->GetName ()); + HandleUnresolvedPos(entities[entNum], movable->GetPosition(), 0.0f, sectorToBeDeleted->QueryObject ()->GetName ()); } } } @@ -1045,8 +1050,8 @@ actor->GetMovement()->SetOnGround(false); delete *posIter; - // Deleting automatically increments the iterator. unresPos.Delete(posIter); + ++posIter; } else ++posIter; Modified: stable/src/client/pscelclient.h =================================================================== --- stable/src/client/pscelclient.h 2008-07-28 16:58:41 UTC (rev 1949) +++ stable/src/client/pscelclient.h 2008-07-28 17:27:57 UTC (rev 1950) @@ -164,7 +164,7 @@ void HandleItemEffect( const char* factName, csRef<iMeshWrapper> mw, bool onGround = true, const char* slot = 0, csHash<int, csString> *effectids = 0, csHash<int, csString> *lightids = 0 ); - /** Caled when new world maps were loaded + /** Called when new world maps were loaded CelClient looks for GEM Objects which have sectors with unknown name and checks if this name is known now */ void OnMapsLoaded(); Modified: stable/src/common/net/message.h =================================================================== --- stable/src/common/net/message.h 2008-07-28 16:58:41 UTC (rev 1949) +++ stable/src/common/net/message.h 2008-07-28 17:27:57 UTC (rev 1950) @@ -52,9 +52,8 @@ public: /// Initialize object and set reference to 1. - csSyncRefCount() + csSyncRefCount() : ref_count(1) { - AtomicOperations::Set(&ref_count, 1); } /// Increase the number of references to this object. Modified: stable/src/common/net/netbase.cpp =================================================================== --- stable/src/common/net/netbase.cpp 2008-07-28 16:58:41 UTC (rev 1949) +++ stable/src/common/net/netbase.cpp 2008-07-28 17:27:57 UTC (rev 1950) @@ -610,7 +610,7 @@ unsigned int senderCount = senders.Count(); unsigned int sentCount = 0; csRef<NetPacketQueueRefCount> q; - while (q = csPtr<NetPacketQueueRefCount> (senders.Get())) + while (q = senders.Get()) { sentCount += q->Count(); if (SendMergedPackets(q)) @@ -945,20 +945,20 @@ size_t pktlen = MIN(MAXPACKETSIZE-sizeof(struct psNetPacket), bytesleft); char notify = '!'; - psNetPacketEntry *pNewPkt = new psNetPacketEntry(me->priority, - me->clientnum, - id, - (uint16_t)offset, - (uint16_t)me->bytes->GetTotalSize(), - (uint16_t)pktlen, - me->bytes); + csRef<psNetPacketEntry> pNewPkt; + pNewPkt.AttachNew(new psNetPacketEntry(me->priority, me->clientnum, id, (uint16_t)offset, + (uint16_t)me->bytes->GetTotalSize(), (uint16_t)pktlen, me->bytes)); if (!queue->Add(pNewPkt)) { if(queue == NetworkQueue) - Error1("NetworkQueue full. Could not add packet.\n") + { + Error1("NetworkQueue full. Could not add packet.\n"); + } else - Error2("Target full. Could not add packet with clientnum %d.\n", me->clientnum) + { + Error2("Target full. Could not add packet with clientnum %d.\n", me->clientnum); + } return false; } @@ -1281,4 +1281,3 @@ cs_free(buf); } - Modified: stable/src/common/net/netpacket.h =================================================================== --- stable/src/common/net/netpacket.h 2008-07-28 16:58:41 UTC (rev 1949) +++ stable/src/common/net/netpacket.h 2008-07-28 17:27:57 UTC (rev 1950) @@ -152,7 +152,7 @@ template<> class csHashComputer<PacketKey> : public csHashComputerStruct<PacketKey> {}; -class psNetPacketEntry : public csRefCount +class psNetPacketEntry : public csSyncRefCount { public: /** clientnum this packet comes from/goes to */ Modified: stable/src/server/adminmanager.cpp =================================================================== --- stable/src/server/adminmanager.cpp 2008-07-28 16:58:41 UTC (rev 1949) +++ stable/src/server/adminmanager.cpp 2008-07-28 17:27:57 UTC (rev 1950) @@ -5966,139 +5966,166 @@ target->GetName(), faction->name.GetData()); } -void AdminManager::TransferItem(MsgEntry* me, psAdminCmdMessage& msg, AdminCmdData& data, Client* source, Client* target) +void AdminManager::TransferItem(MsgEntry* me, psAdminCmdMessage& msg, + AdminCmdData& data, Client* source, Client* target) { if (!target || !target->GetCharacterData()) { psserver->SendSystemError(me->clientnum, "Invalid character to give to"); return; } - + if (!source || !source->GetCharacterData()) { - psserver->SendSystemError(me->clientnum, "Invalid character to take from"); + psserver->SendSystemError(me->clientnum, + "Invalid character to take from"); return; } - + if (source == target) { - psserver->SendSystemError(me->clientnum, "Source and target must be different"); + psserver->SendSystemError(me->clientnum, + "Source and target must be different"); return; } - + if (data.value == 0 || data.item.IsEmpty()) { - psserver->SendSystemError(me->clientnum, "Syntax: \"/[giveitem|takeitem] [target] [quantity|'all'|''] [item|tria]\""); + psserver->SendSystemError(me->clientnum, + "Syntax: \"/[giveitem|takeitem] [target] [quantity|'all'|''] [item|tria]\""); return; } - psItemStats* itemstats = CacheManager::GetSingleton().GetBasicItemStatsByName(data.item); - if (!itemstats) + psCharacter* targetchar = target->GetCharacterData(); + psCharacter* sourcechar = source->GetCharacterData(); + + if (data.item == "tria") { - psserver->SendSystemError(me->clientnum, "Invalid item name"); + psMoney srcMoney = sourcechar->Money(); + psMoney targetMoney = targetchar->Money(); + int value = data.value; + if (value == -1) + { + value = srcMoney.GetTotal(); + } + else if (value > srcMoney.GetTotal()) + { + value = srcMoney.GetTotal(); + psserver->SendSystemError(me->clientnum, "Only %d tria taken.", + srcMoney.GetTotal()); + } + psMoney transferMoney(0, 0, 0, value); + transferMoney = transferMoney.Normalized(); + sourcechar->SetMoney(srcMoney - transferMoney); + psserver->GetCharManager()->UpdateItemViews(source->GetClientNum()); + targetchar->SetMoney(targetMoney + transferMoney); + psserver->GetCharManager()->UpdateItemViews(target->GetClientNum()); + + // Inform the GM doing the transfer + psserver->SendSystemOK(me->clientnum, + "%d tria transferred from %s to %s", value, + source->GetActor()->GetName(), target->GetActor()->GetName()); + + // If we're giving to someone else, notify them + if (target->GetClientNum() != me->clientnum) + { + psserver->SendSystemOK(target->GetClientNum(), + "%d tria was by GM %s.", value, + source->GetActor()->GetName()); + } + + // If we're taking from someone else, notify them + if (source->GetClientNum() != me->clientnum) + { + psserver->SendSystemResult(source->GetClientNum(), + "%d tria was taken by %s.", value, + target->GetActor()->GetName()); + } return; } + else + { + psItemStats* itemstats = + CacheManager::GetSingleton().GetBasicItemStatsByName(data.item); - psCharacter* targetchar = target->GetCharacterData(); - psCharacter* sourcechar = source->GetCharacterData(); + if (!itemstats) + { + psserver->SendSystemError(me->clientnum, + "Cannot find any %s in %s's inventory.", + data.item.GetData(), source->GetActor()->GetName()); + return; + } - + size_t slot = sourcechar->Inventory().FindItemStatIndex(itemstats); - //int slot = sourcechar->Inventory().FindItemInTopLevelBulkWithStats(itemstats); - size_t slot = sourcechar->Inventory().FindItemStatIndex(itemstats); - - if (slot != SIZET_NOT_FOUND) - { - InventoryTransaction srcTran( &sourcechar->Inventory() ); - psItem* item; - item = sourcechar->Inventory().RemoveItemIndex(slot,data.value); // data.value is the stack count to move, or -1 + if (slot == SIZET_NOT_FOUND) + { + psserver->SendSystemError(me->clientnum, + "Cannot find any %s in %s's inventory.", + data.item.GetData(), source->GetActor()->GetName()); + return; + } + + InventoryTransaction srcTran(&sourcechar->Inventory()); + psItem* item = + sourcechar->Inventory().RemoveItemIndex(slot, data.value); // data.value is the stack count to move, or -1 if (!item) { Error2("Cannot RemoveItemIndex on slot %zu.\n", slot); - psserver->SendSystemError(me->clientnum, "Cannot remove %s from %s's inventory.", - data.item.GetData(), source->GetActor()->GetName() ); + psserver->SendSystemError(me->clientnum, + "Cannot remove %s from %s's inventory.", + data.item.GetData(), source->GetActor()->GetName()); return; } psserver->GetCharManager()->UpdateItemViews(source->GetClientNum()); if (item->GetStackCount() < data.value) { - psserver->SendSystemError(me->clientnum, "There are only %d, not %d in the stack.", item->GetStackCount(), data.value ); + psserver->SendSystemError(me->clientnum, + "There are only %d, not %d in the stack.", + item->GetStackCount(), data.value); return; } bool wasEquipped = item->IsEquipped(); // Now here we handle the target machine - InventoryTransaction trgtTran( &targetchar->Inventory() ); + InventoryTransaction trgtTran(&targetchar->Inventory()); if (!targetchar->Inventory().Add(item)) { - psserver->SendSystemError(me->clientnum, "Target inventory is too full to accept item transfer."); + psserver->SendSystemError(me->clientnum, + "Target inventory is too full to accept item transfer."); return; } psserver->GetCharManager()->UpdateItemViews(target->GetClientNum()); // Inform the GM doing the transfer - psserver->SendSystemOK(me->clientnum, "%s transferred from %s's %s to %s", - item->GetName(), - source->GetActor()->GetName(), - wasEquipped?"equipment":"inventory", - target->GetActor()->GetName() ); + psserver->SendSystemOK(me->clientnum, + "%s transferred from %s's %s to %s", item->GetName(), + source->GetActor()->GetName(), wasEquipped ? "equipment" + : "inventory", target->GetActor()->GetName()); // If we're giving to someone else, notify them if (target->GetClientNum() != me->clientnum) { - psserver->SendSystemOK(target->GetClientNum(), "You were given %s by GM %s.", - item->GetName(), - source->GetActor()->GetName() ); + psserver->SendSystemOK(target->GetClientNum(), + "You were given %s by GM %s.", item->GetName(), + source->GetActor()->GetName()); } // If we're taking from someone else, notify them if (source->GetClientNum() != me->clientnum) { - psserver->SendSystemResult(source->GetClientNum(), "%s was taken by GM %s.", - item->GetName(), - target->GetActor()->GetName() ); + psserver->SendSystemResult(source->GetClientNum(), + "%s was taken by GM %s.", item->GetName(), + target->GetActor()->GetName()); } trgtTran.Commit(); srcTran.Commit(); return; } - else if (data.item == "tria") - { - psMoney srcMoney = sourcechar->Money(); - psMoney targetMoney = targetchar->Money(); - int value = data.value; - if (value == -1) - { - value = srcMoney.GetTotal(); - } - else if (value > srcMoney.GetTotal()) - { - value = srcMoney.GetTotal(); - psserver->SendSystemError(me->clientnum, "Only %d tria taken.",srcMoney.GetTotal()); - } - psMoney transferMoney(0, 0, 0, value); - transferMoney = transferMoney.Normalized(); - sourcechar->SetMoney( srcMoney - transferMoney ); - targetchar->SetMoney( targetMoney + transferMoney ); - // If we're taking from someone else, notify them - if (source->GetClientNum() != me->clientnum) - { - psserver->SendSystemResult(source->GetClientNum(), "%d tria was taken by %s.", - value, - target->GetActor()->GetName() ); - } - return; - } - else - { - psserver->SendSystemError(me->clientnum, "Cannot find any %s in %s's inventory.", - data.item.GetData(), source->GetActor()->GetName() ); - return; - } } void AdminManager::CheckItem(MsgEntry* me, psAdminCmdMessage& msg, AdminCmdData& data, Client* target) @@ -6893,8 +6920,8 @@ return; } - // Can only set others to a max of 3 levels below own level (ex: GM4 can set someone to GM1) - int maxleveltoset = client->GetSecurityLevel() - 3; + // Can only set others to a max of 1 level below own level (ex: GM4 can set someone to GM3) + int maxleveltoset = client->GetSecurityLevel() - 1; int value; Modified: stable/src/server/command.cpp =================================================================== --- stable/src/server/command.cpp 2008-07-28 16:58:41 UTC (rev 1949) +++ stable/src/server/command.cpp 2008-07-28 17:27:57 UTC (rev 1950) @@ -73,14 +73,149 @@ #include "bulkobjects/psitem.h" #include "bulkobjects/pssectorinfo.h" -/* shut down the server and exit program */ -int com_quit(char *) +int com_lock (char *) { - ServerConsole::Stop(); + EntityManager::GetSingleton().SetReady(false); + return 0; +} +int com_ready (char *) +{ + if (psserver->IsMapLoaded()) + { + EntityManager::GetSingleton().SetReady(true); + CPrintf (CON_CMDOUTPUT, "Server is now ready\n"); + } + else + { + CPrintf (CON_CMDOUTPUT, "Failed to switch server to ready! No map loaded\n"); + } + return 0; } +class psQuitEvent : public psGameEvent +{ +public: + psQuitEvent(csTicks msecDelay, psQuitEvent *quit_event, csString message, + bool server_lock, bool server_shutdown) + : psGameEvent(0,msecDelay,"psDelayedQuitEvent") + { + message_quit_event = quit_event; + mytext = message; + trigger_server_lock = server_lock; + trigger_server_shutdown = server_shutdown; + } + virtual void Trigger() + { + psSystemMessage newmsg(0, MSG_INFO_SERVER, mytext); + psserver->GetEventManager()->Broadcast(newmsg.msg); + CPrintf(CON_CMDOUTPUT, "%s\n", (const char*) mytext); + if(trigger_server_lock) //this is triggering the server lock + com_lock(NULL); + if(trigger_server_shutdown) //this is triggering the server shut down + ServerConsole::Stop(); + } + virtual bool CheckTrigger() + { //if this is the event triggering the server shut down pass it's validity, else check that event if + //it's still valid + return message_quit_event == NULL? valid : message_quit_event->CheckTrigger(); + } + void Invalidate() + { + valid = false; //this is used to inavlidate the server shut down event + } +private: + csString mytext; //keeps the message which will be sent to clients + bool trigger_server_lock; //if true this is the event locking the server + bool trigger_server_shutdown; //if true this is the event which will shut down the server + psQuitEvent *message_quit_event; //stores a link to the master event which will shut down the server +}; + +psQuitEvent *server_quit_event = NULL; //used to keep track of the shut down event + +/* shut down the server and exit program */ +int com_quit(char *arg) +{ + if(strncasecmp(arg,"stop", 4) == 0) //if the user passed 'stop' we will abort the shut down process + { + if(server_quit_event != NULL) //there is a quit event let's make it invalid + server_quit_event->Invalidate(); + com_ready(NULL); //remake the server available if it was locked in the process + server_quit_event = NULL; //we don't need it anymore so let's clean ourselves of it + //Let the user know about the new situation about the server + csString abort_msg = "Server Admin: The server is no longer restarting."; + psSystemMessage newmsg(0, MSG_INFO_SERVER, abort_msg); + psserver->GetEventManager()->Broadcast(newmsg.msg); + CPrintf(CON_CMDOUTPUT, "%s\n", (const char*) abort_msg); + } + else + { + if(server_quit_event == NULL) //check that there isn't a quit event already running... + { + uint quit_delay = atoi(arg); //if the user passed a number we will read it + if (quit_delay) //we have an argument > 0 so let's put an event for server shut down + { + if(quit_delay < 5) com_lock(NULL); //we got less than 5 minutes for shut down so let's lock the server + //immediately + + //generates the messages to alert the user and allocates them in the queque + for(uint i = 3; i > 0; i--) //i = 3 sets up the 0 seconds message and so is the event triggering + { //shutdown + csString outtext = "Server Admin: The server will shut down in "; + outtext += 60-(i*20); + outtext += " seconds."; + psQuitEvent *Quit_event = new psQuitEvent(((quit_delay-1)*60+i*20)*1000, server_quit_event, + outtext, false, i == 3 ? true : false); + psserver->GetEventManager()->Push(Quit_event); + if(!server_quit_event) server_quit_event = Quit_event; + } + csString outtext = "Server Admin: The server will shut down in 1 minute."; + psQuitEvent *Quit_event = new psQuitEvent((quit_delay-1)*60*1000, server_quit_event, outtext, + false, false); + psserver->GetEventManager()->Push(Quit_event); + + if(quit_delay == 1) return 0; //if the time we had was 1 minute no reason to go on + uint quit_time = (quit_delay < 5)? quit_delay : 5; //manage the period 1<x<5 minutes + while(1) + { + csString outtext = "Server Admin: The server will shut down in "; + outtext += quit_time; + outtext += " minutes."; + psQuitEvent *Quit_event = new psQuitEvent((quit_delay-quit_time)*60*1000, server_quit_event, + outtext, quit_time == 5 ? true : false, false); + psserver->GetEventManager()->Push(Quit_event); + if(quit_time == quit_delay) { break; } //we have got to the first message saying the server + //will be shut down let's go out of the loop + else if(quit_time+5 > quit_delay) { quit_time = quit_delay; } //we have reached the second message + //saying the server will shut down + //so manage the case of not multiple + //of 5 minutes shut down times + else { quit_time +=5; } //we have still a long way so let's go to the next 5 minutes message + } + } + else //we have no arguments or the argument passed is zero let's quit immediately + { + ServerConsole::Stop(); + } + } + else //we have found a quit event so we will inform the user about that + { + uint planned_shutdown = (server_quit_event->triggerticks-csGetTicks())/1000; //gets the seconds + //to the event + uint minutes = planned_shutdown/60; //get the minutes to the event + uint seconds = planned_shutdown%60; //get the seconds to the event when the minutes are subtracted + csString quitInfo = "Server already shutting down in "; + if(minutes) //if we don't have minutes (so they are zero) skip them + quitInfo += minutes; quitInfo += "minutes "; + if(seconds) //if we don't have seconds (so they are zero) skip them + quitInfo += seconds; quitInfo += "seconds"; + CPrintf(CON_CMDOUTPUT, "%s\n", (const char*) quitInfo); //send the message to the server console + } + } + return 0; +} + /* Print out help for ARG, or for all of the commands if ARG is not present. */ int com_help (char *arg) @@ -433,25 +568,6 @@ return 0; } -int com_ready(char *) -{ - if (psserver->IsMapLoaded()) - { - EntityManager::GetSingleton().SetReady(true); - CPrintf (CON_CMDOUTPUT ,"Server is now ready\n"); - } else { - CPrintf (CON_CMDOUTPUT ,"Failed to switch server to ready! No map loaded\n"); - } - return 0; - -} - -int com_lock(char *) -{ - EntityManager::GetSingleton().SetReady(false); - return 0; -} - int com_maplist(char *) { csRef<iVFS> vfs = csQueryRegistry<iVFS> (psserver->GetObjectReg()); @@ -2282,7 +2398,7 @@ { "maplist", true, com_maplist, "List all mounted maps"}, { "dumpwarpspace", true, com_dumpwarpspace, "Dump the warp space table"}, { "netprofile", true, com_netprofile, "shows network profile info" }, - { "quit", true, com_quit, "Makes the server exit"}, + { "quit", true, com_quit, "[minutes] Makes the server exit immediately or after the specified amount of minutes"}, { "ready", false, com_ready, "Tells server to start accepting connections"}, { "sectors", true, com_sectors, "Display all sectors" }, { "set", true, com_set, "Sets a server variable"}, Modified: stable/src/server/database/mysql/math_scripts.sql =================================================================== --- stable/src/server/database/mysql/math_scripts.sql 2008-07-28 16:58:41 UTC (rev 1949) +++ stable/src/server/database/mysql/math_scripts.sql 2008-07-28 17:27:57 UTC (rev 1950) @@ -186,7 +186,7 @@ INSERT INTO math_scripts VALUES( "StaminaMove", " - Drain = (Speed/10) + ((Weight/MaxWeight)/10); + Drain = (Speed/3) * (Weight/MaxWeight); "); INSERT INTO math_scripts VALUES( "StaminaCombat", Modified: stable/src/server/gem.cpp =================================================================== --- stable/src/server/gem.cpp 2008-07-28 16:58:41 UTC (rev 1949) +++ stable/src/server/gem.cpp 2008-07-28 17:27:57 UTC (rev 1950) @@ -2764,6 +2764,9 @@ void gemActor::ApplyStaminaCalculations(const csVector3& v, float times) { + csVector3 thisV = lastV; + lastV=v; + // Script static MathScript* script = psserver->GetMathScriptEngine()->FindScript("StaminaMove"); if (!script) @@ -2815,17 +2818,17 @@ double Speed; ///< magnitude of the velocity vector double Angle; ///< angle between velocity vector and X-Z plane - double XZvel = csQsqrt(v.x*v.x + v.z*v.z); - if (v.y > EPSILON) + double XZvel = csQsqrt(thisV.x*thisV.x + thisV.z*thisV.z); + if (thisV.y > EPSILON) { if (XZvel > EPSILON) { - Speed = csQsqrt(v.y*v.y + XZvel*XZvel); - Angle = atan(v.y / XZvel); + Speed = csQsqrt(thisV.y*thisV.y + XZvel*XZvel); + Angle = atan(thisV.y / XZvel); } else // straight up { - Speed = v.y; + Speed = thisV.y; Angle = HALF_PI; } } Modified: stable/src/server/gem.h =================================================================== --- stable/src/server/gem.h 2008-07-28 16:58:41 UTC (rev 1949) +++ stable/src/server/gem.h 2008-07-28 17:27:57 UTC (rev 1950) @@ -482,6 +482,7 @@ uint8_t DRcounter; /// increments in loop to prevent out of order packet overwrites of better data csTicks lastDR; + csVector3 lastV; /** Production Start Pos is used to record the place where people started digging. */ csVector3 productionStartPos; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-07-28 18:08:17
|
Revision: 1954 http://planeshift.svn.sourceforge.net/planeshift/?rev=1954&view=rev Author: mgist Date: 2008-07-28 18:08:24 +0000 (Mon, 28 Jul 2008) Log Message: ----------- - Merged r1951-1953 from trunk. Modified Paths: -------------- stable/data/gui/illumination.xml stable/docs/history.txt stable/src/client/gui/inventorywindow.cpp stable/src/client/gui/pawscontainerdescwindow.cpp stable/src/client/gui/pawsexchangewindow.cpp stable/src/client/gui/pawsilluminationwindow.cpp stable/src/client/gui/pawsilluminationwindow.h stable/src/client/gui/pawssmallinventory.cpp stable/src/server/adminmanager.cpp Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953 Modified: stable/data/gui/illumination.xml =================================================================== --- stable/data/gui/illumination.xml 2008-07-28 17:55:07 UTC (rev 1953) +++ stable/data/gui/illumination.xml 2008-07-28 18:08:24 UTC (rev 1954) @@ -62,6 +62,16 @@ <bgimage resource="TextTool" /> <eventMouseDown>Ret = SketchWindow:ClickNameTool()</eventMouseDown> </widget> + <widget name="SaveButton" factory="pawsButton" id="111" tooltip="Save (s)"> + <frame x="180" y="0" width="16" height="16" /> + <bgimage resource="FeatherTool" /> + <eventMouseDown>Ret = SketchWindow:ClickSaveButton()</eventMouseDown> + </widget> + <widget name="LoadButton" factory="pawsButton" id="112" tooltip="Load (l)"> + <frame x="200" y="0" width="16" height="16" /> + <bgimage resource="FeatherTool" /> + <eventMouseDown>Ret = SketchWindow:ClickLoadButton()</eventMouseDown> + </widget> </widget> </widget_description> Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-07-28 17:55:07 UTC (rev 1953) +++ stable/docs/history.txt 2008-07-28 18:08:24 UTC (rev 1954) @@ -1,17 +1,15 @@ *** 2008-07-28 by Andreas Heinchen - Fix for FS#1692 - fixing 2 bugs that caused entities to get lost in a temporary sector - -*** 2008-07-28 by Andreas Heinchen - Cleaned up fix for FS#707 - -*** 2008-07-28 by Andreas Heinchen - Fixed FS#1826 +- Fixed FS#1909, patch by Weltall. *** 2008-07-28 by Mike Gist - Fixed FS#1925, patch by peeg. - Patch for FS#2001 from weltall. - Fixed a memory leak caused by a reference leak in netbase. - Patch for FS#1912 from weltall. +- Patch for FS#1855 from Arerano. *** 2008-07-24 by Steven Patrick - Fixed FS#1991 - deputizing doesn't update GM console, patch by Zwenze. Modified: stable/src/client/gui/inventorywindow.cpp =================================================================== --- stable/src/client/gui/inventorywindow.cpp 2008-07-28 17:55:07 UTC (rev 1953) +++ stable/src/client/gui/inventorywindow.cpp 2008-07-28 18:08:24 UTC (rev 1954) @@ -156,26 +156,36 @@ if ( !SetupSlot("torso") ) return false; if ( !SetupSlot("mind") ) return false; - pawsListBox * bulkList = dynamic_cast <pawsListBox*> (FindWidget("BulkList")); - for (int i = 0; i < INVENTORY_BULK_COUNT/2; i++) + pawsListBox * bulkList = dynamic_cast <pawsListBox*> (FindWidget("BulkList")); + int colCount = bulkList->GetTotalColumns(); + int rowCount = (int) ceil(float(INVENTORY_BULK_COUNT)/colCount); + + for(int r = 0; r < rowCount; r ++) { - pawsListBoxRow * listRow = bulkList->NewRow(i); - for (int j = 0; j < 2; j++) + pawsListBoxRow * listRow = bulkList->NewRow(r); + for (int j = 0; j < colCount; j++) { + int i = r*colCount + j; pawsSlot * slot; slot = dynamic_cast <pawsSlot*> (listRow->GetColumn(j)); slot->SetContainer( CONTAINER_INVENTORY_BULK ); //csString name; - slot->SetSlotID( i*2+j ); + slot->SetSlotID( i ); csString name; - name.Format("invslot_%d", 16 + i*2+j); // 16 equip slots come first + name.Format("invslot_%d", 16 + i ); // 16 equip slots come first slot->SetSlotName(name); + if(i >= INVENTORY_BULK_COUNT) + { + slot->Hide(); + continue; + } + //printf("Subscribing bulk slot to %s.\n",name.GetData() ); PawsManager::GetSingleton().Subscribe( name, slot ); PawsManager::GetSingleton().Subscribe("sigClearInventorySlots", slot); - bulkSlots[i*2+j] = slot; - } + bulkSlots[i] = slot; + } } // Ask the server to send us the inventory Modified: stable/src/client/gui/pawscontainerdescwindow.cpp =================================================================== --- stable/src/client/gui/pawscontainerdescwindow.cpp 2008-07-28 17:55:07 UTC (rev 1953) +++ stable/src/client/gui/pawscontainerdescwindow.cpp 2008-07-28 18:08:24 UTC (rev 1954) @@ -146,7 +146,7 @@ contents->Clear(); containerSlots = PSITEM_MAX_CONTAINER_SLOTS; - const int cols = 6; + const int cols = contents->GetTotalColumns(); //6; const int rows = (int) ceil(float(containerSlots)/cols); for (int i = 0; i < rows; i++) { Modified: stable/src/client/gui/pawsexchangewindow.cpp =================================================================== --- stable/src/client/gui/pawsexchangewindow.cpp 2008-07-28 17:55:07 UTC (rev 1953) +++ stable/src/client/gui/pawsexchangewindow.cpp 2008-07-28 18:08:24 UTC (rev 1954) @@ -114,20 +114,28 @@ if (!bulkList) return false; - int i, j; + int colCount = bulkList->GetTotalColumns(); + int rowCount = (int) ceil(float(EXCHANGE_SLOT_COUNT)/colCount); + int r, j, i; - for (i = 0; i < EXCHANGE_SLOT_COUNT/NUM_COLUMNS; i++) + for (r = 0; r < rowCount; r++) { - pawsListBoxRow * listRow = bulkList->NewRow(i); - for (j = 0; j < NUM_COLUMNS; j++) + pawsListBoxRow * listRow = bulkList->NewRow(r); + for (j = 0; j < colCount; j++) { + i = r*colCount+j; pawsSlot * slot; slot = dynamic_cast <pawsSlot*> (listRow->GetColumn(j)); if (slot == NULL) return false; slot->SetContainer( CONTAINER_EXCHANGE_OFFERING ); - slot->SetSlotID( i*2+j ); - offeringSlots[i*2+j] = slot; + slot->SetSlotID( i ); + if (i >= EXCHANGE_SLOT_COUNT) + { + slot->Hide(); + continue; + } + offeringSlots[i] = slot; } } @@ -136,19 +144,28 @@ if (!bulkList) return false; - for (i = 0; i < EXCHANGE_SLOT_COUNT/NUM_COLUMNS; i++) + colCount = bulkList->GetTotalColumns(); + rowCount = (int) ceil(float(EXCHANGE_SLOT_COUNT)/colCount); + + for (r = 0; r < rowCount; r++) { - pawsListBoxRow * listRow = bulkList->NewRow(i); - for (j = 0; j < NUM_COLUMNS; j++) + pawsListBoxRow * listRow = bulkList->NewRow(r); + for (j = 0; j < colCount; j++) { + i = r*colCount+j; pawsSlot * slot; slot = dynamic_cast <pawsSlot*> (listRow->GetColumn(j)); if (slot == NULL) return false; slot->SetContainer( CONTAINER_EXCHANGE_RECEIVING ); - slot->SetSlotID( i*2+j ); + slot->SetSlotID( i ); slot->SetDrag(false); - receivingSlots[i*2+j] = slot; + if (i >= EXCHANGE_SLOT_COUNT) + { + slot->Hide(); + continue; + } + receivingSlots[i] = slot; } } Modified: stable/src/client/gui/pawsilluminationwindow.cpp =================================================================== --- stable/src/client/gui/pawsilluminationwindow.cpp 2008-07-28 17:55:07 UTC (rev 1953) +++ stable/src/client/gui/pawsilluminationwindow.cpp 2008-07-28 18:08:24 UTC (rev 1954) @@ -54,6 +54,17 @@ bool pawsSketchWindow::PostSetup() { psengine->GetMsgHandler()->Subscribe(this, MSGTYPE_VIEW_SKETCH); + //setup an easy way to access our widgets + FeatherTool = dynamic_cast<pawsWidget*> (FindWidget("FeatherTool")); + TextTool = dynamic_cast<pawsWidget*> (FindWidget("TextTool")); + LineTool = dynamic_cast<pawsWidget*> (FindWidget("LineTool")); + PlusTool = dynamic_cast<pawsWidget*> (FindWidget("PlusTool")); + LeftArrowTool = dynamic_cast<pawsWidget*> (FindWidget("LeftArrowTool")); + RightArrowTool = dynamic_cast<pawsWidget*> (FindWidget("RightArrowTool")); + DeleteTool = dynamic_cast<pawsWidget*> (FindWidget("DeleteTool")); + NameTool = dynamic_cast<pawsWidget*> (FindWidget("NameTool")); + SaveButton = dynamic_cast<pawsWidget*> (FindWidget("SaveButton")); + LoadButton = dynamic_cast<pawsWidget*> (FindWidget("LoadButton")); return true; } @@ -72,14 +83,63 @@ currentItemID = msg.ItemID; Notify4(LOG_PAWS,"Got Sketch for item %u: %s\nLimits:%s\n", msg.ItemID, msg.Sketch.GetData(), msg.limits.GetDataSafe()); objlist.Empty(); - - ParseSketch(msg.Sketch); + dirty = false; ParseLimits(msg.limits); - + ParseSketch(msg.Sketch); + // if char does not have the right to edit (ie not the originator-artist)... if (!msg.rightToEdit) readOnly = true; + + if(readOnly) + { + //hide useless widgets in the window so the sketch is more clean + //to whoever looks at it while not being the author + if(FeatherTool) + FeatherTool->Hide(); + if(TextTool) + TextTool->Hide(); + if(LineTool) + LineTool->Hide(); + if(PlusTool) + PlusTool->Hide(); + if(LeftArrowTool) + LeftArrowTool->Hide(); + if(RightArrowTool) + RightArrowTool->Hide(); + if(DeleteTool) + DeleteTool->Hide(); + if(NameTool) + NameTool->Hide(); + if(SaveButton) + SaveButton->Hide(); + if(LoadButton) + LoadButton->Hide(); + } + else //we have editing rights so let's show buttons to do some editing + { + if(FeatherTool) + FeatherTool->Show(); + if(TextTool) + TextTool->Show(); + if(LineTool) + LineTool->Show(); + if(PlusTool) + PlusTool->Show(); + if(LeftArrowTool) + LeftArrowTool->Show(); + if(RightArrowTool) + RightArrowTool->Show(); + if(DeleteTool) + DeleteTool->Show(); + if(NameTool) + NameTool->Show(); + if(SaveButton) + SaveButton->Show(); + if(LoadButton) + LoadButton->Show(); + } sketchName = msg.name; SetTitle(sketchName); @@ -182,6 +242,16 @@ OnKeyDown(0,'n',0); return 0.0; } + else if (!strcasecmp(functionName,"ClickSaveButton")) + { + OnKeyDown(0,'s',0); + return 0.0; + } + else if (!strcasecmp(functionName,"ClickLoadButton")) + { + OnKeyDown(0,'l',0); + return 0.0; + } // else call parent version to inherit other functions return pawsWidget::CalcFunction(functionName,params); @@ -225,6 +295,11 @@ } return true; } + else if (key == 's' && !readOnly) //allow saving also when not in edit mode but check if the player saving the sketch + { //has editing rights over the sketch it's being saved + SaveSketch(); + return true; + } else if (editMode) { if (key == '+') // keycode is the kbd scan code, key is the ASCII @@ -247,6 +322,11 @@ ChangeSketchName(); return true; } + else if (key == 'l') //allow loading only in editing mode + { + LoadSketch(); + return true; + } switch (keyCode) { case CSKEY_DEL: RemoveSelected(); @@ -301,7 +381,6 @@ { int x = (ScreenFrame().xmax + ScreenFrame().xmin)/2 - ScreenFrame().xmin; int y = (ScreenFrame().ymax + ScreenFrame().ymin)/2 - ScreenFrame().ymin; - SketchText *text = new SketchText(x,y,value,this); objlist.Push(text); } @@ -310,7 +389,24 @@ sketchName = value; SetTitle(sketchName); } - + else if (!strcasecmp(name,"FileNameBox")) + { + //we got to load the sketch we were asked for + csRef<iVFS> vfs = psengine->GetVFS(); + csString tempFileName; + tempFileName.Format("/planeshift/userdata/sketches/%s", value); + if (!vfs->Exists(tempFileName)) + { + psSystemMessage msg(0, MSG_ERROR, "File not found!" ); + msg.FireEvent(); + return; + } + csRef<iDataBuffer> buff = vfs->ReadFile(tempFileName); //reads the file + csString sketchxml = buff->operator*(); //converts what we have read in something our ParseSketch function can + //understand + objlist.Empty(); //clears the objlist to start loading our new sketch from clean + ParseSketch(sketchxml); //loads our sketch + } } void pawsSketchWindow::AddSketchLine() @@ -401,6 +497,57 @@ } } +void pawsSketchWindow::SaveSketch() +{ + csString xml; + //generates the xml document from the objects currently displayed in the sketch + xml = "<pages><page "; + xml.AppendFmt("l=\"%d\" t=\"%d\" w=\"%d\" h=\"%d\">", + GetLogicalWidth(screenFrame.xmin), + GetLogicalHeight(screenFrame.ymin), + GetLogicalWidth(screenFrame.xmax-screenFrame.xmin), + GetLogicalHeight(screenFrame.ymax-screenFrame.ymin)); + + for (size_t i=0; i<objlist.GetSize(); i++) + objlist[i]->WriteXml(xml); + + xml += "</page></pages>"; + csRef<iVFS> vfs = psengine->GetVFS(); + unsigned int tempNumber = 0; + //searchs for a free sketch slot in the user directory and write in it + csString tempFileNameTemplate = "/planeshift/userdata/sketches/%s.xml", tempFileName; + if (filenameSafe(sketchName).Length()) + { + tempFileName.Format(tempFileNameTemplate, filenameSafe(sketchName).GetData()); + } + else + { + tempFileNameTemplate = "/planeshift/userdata/books/book%d.txt"; + do + { + tempFileName.Format(tempFileNameTemplate, tempNumber); + tempNumber++; + } while (vfs->Exists(tempFileName)); + } + + vfs->WriteFile(tempFileName, xml, xml.Length()); + psSystemMessage msg(0, MSG_ACK, "Sketch saved to %s", tempFileName.GetData()+30 ); + msg.FireEvent(); +} + +void pawsSketchWindow::LoadSketch() +{ + if (!stringPending) + { + stringPending = true; + + //This window calls OnStringEntered when Ok is pressed. + //Asks to the user the file name of the sketch inside the sketches directory under their user directory + pawsStringPromptWindow::Create("Enter local filename", "", + false, 220, 20, this, "FileNameBox",0,true); + } +} + bool pawsSketchWindow::OnMouseDown( int button, int modifiers, int x, int y ) { if (!editMode) @@ -556,6 +703,8 @@ SketchObject *obj=NULL; csRef<iDocumentNode> tmp = pagenodes->Next(); csString type = tmp->GetValue(); + if((int)objlist.GetSize() >= primCount) //are we under the limitations?... + break; //...it seems we aren't so break before going on, at least one part of sketch is available // Determine what type to create, and create it if (type == "ic") // icon obj = new SketchIcon; @@ -937,3 +1086,23 @@ } } } + +bool pawsSketchWindow::isBadChar(char c) +{ + csString badChars = "/\\?%*:|\"<>"; + if (badChars.FindFirst(c) == (size_t) -1) + return false; + else + return true; +} + +csString pawsSketchWindow::filenameSafe(const csString &original) +{ + csString safe; + size_t len = original.Length(); + for (size_t c = 0; c < len; ++c) { + if (!isBadChar(original[c])) + safe += original[c]; + } + return safe; +} Modified: stable/src/client/gui/pawsilluminationwindow.h =================================================================== --- stable/src/client/gui/pawsilluminationwindow.h 2008-07-28 17:55:07 UTC (rev 1953) +++ stable/src/client/gui/pawsilluminationwindow.h 2008-07-28 18:08:24 UTC (rev 1954) @@ -115,6 +115,17 @@ int primCount; bool readOnly; bool stringPending; + + pawsWidget* FeatherTool; + pawsWidget* TextTool; + pawsWidget* LineTool; + pawsWidget* PlusTool; + pawsWidget* LeftArrowTool; + pawsWidget* RightArrowTool; + pawsWidget* DeleteTool; + pawsWidget* NameTool; + pawsWidget* SaveButton; + pawsWidget* LoadButton; void DrawSketch(); bool ParseSketch(const char *xml); @@ -127,6 +138,10 @@ void NextPrevIcon(int delta); void MoveObject(int dx, int dy); void ChangeSketchName(); + void SaveSketch(); + void LoadSketch(); + bool isBadChar(char c); + csString filenameSafe(const csString &original); csString sketchName; Modified: stable/src/client/gui/pawssmallinventory.cpp =================================================================== --- stable/src/client/gui/pawssmallinventory.cpp 2008-07-28 17:55:07 UTC (rev 1953) +++ stable/src/client/gui/pawssmallinventory.cpp 2008-07-28 18:08:24 UTC (rev 1954) @@ -60,25 +60,39 @@ border->JustTitle(); // Setup our inventory slots in the list box. - pawsListBox * bulkList = dynamic_cast <pawsListBox*> (FindWidget("BulkList")); - for (int i = 0; i < INVENTORY_BULK_COUNT/2; i++) + pawsListBox * bulkList = dynamic_cast <pawsListBox*> (FindWidget("BulkList")); + + int colCount = bulkList->GetTotalColumns(); + int rowCount = (int) ceil(float(INVENTORY_BULK_COUNT)/colCount); + + for(int r = 0; r < rowCount; r ++) { - pawsListBoxRow * listRow = bulkList->NewRow(i); - for (int j = 0; j < 2; j++) + pawsListBoxRow * listRow = bulkList->NewRow(r); + for (int j = 0; j < colCount; j++) { + int i = r*colCount + j; pawsSlot * slot; slot = dynamic_cast <pawsSlot*> (listRow->GetColumn(j)); slot->SetContainer( CONTAINER_INVENTORY_BULK ); - slot->SetSlotID( i*2+j ); + //csString name; + slot->SetSlotID( i ); csString name; - name.Format("invslot_%d",16 + i*2+j); + name.Format("invslot_%d", 16 + i ); // 16 equip slots come first slot->SetSlotName(name); + + if(i >= INVENTORY_BULK_COUNT) + { + slot->Hide(); + continue; + } + + //printf("Subscribing bulk slot to %s.\n",name.GetData() ); PawsManager::GetSingleton().Subscribe( name, slot ); PawsManager::GetSingleton().Subscribe("sigClearInventorySlots", slot); - slot->SetName( name ); - bulkSlots[i*2+j] = slot; - } - } + bulkSlots[i] = slot; + } + } + money = dynamic_cast <pawsMoney*> (FindWidget("Money")); if ( !money ) return false; Modified: stable/src/server/adminmanager.cpp =================================================================== --- stable/src/server/adminmanager.cpp 2008-07-28 17:55:07 UTC (rev 1953) +++ stable/src/server/adminmanager.cpp 2008-07-28 18:08:24 UTC (rev 1954) @@ -5999,7 +5999,7 @@ psCharacter* targetchar = target->GetCharacterData(); psCharacter* sourcechar = source->GetCharacterData(); - if (data.item == "tria") + if (data.item.Downcase() == "tria") { psMoney srcMoney = sourcechar->Money(); psMoney targetMoney = targetchar->Money(); @@ -6030,7 +6030,7 @@ if (target->GetClientNum() != me->clientnum) { psserver->SendSystemOK(target->GetClientNum(), - "%d tria was by GM %s.", value, + "%d tria were given by GM %s.", value, source->GetActor()->GetName()); } @@ -6038,7 +6038,7 @@ if (source->GetClientNum() != me->clientnum) { psserver->SendSystemResult(source->GetClientNum(), - "%d tria was taken by %s.", value, + "%d tria were taken by %s.", value, target->GetActor()->GetName()); } return; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-07-29 15:54:01
|
Revision: 1962 http://planeshift.svn.sourceforge.net/planeshift/?rev=1962&view=rev Author: mgist Date: 2008-07-29 15:54:09 +0000 (Tue, 29 Jul 2008) Log Message: ----------- - Merged r1958,1960-1961 from trunk. Modified Paths: -------------- stable/docs/history.txt stable/src/client/gui/chatwindow.cpp stable/src/client/gui/pawsbookreadingwindow.cpp stable/src/client/gui/pawsilluminationwindow.cpp stable/src/client/gui/pawswritingwindow.cpp stable/src/common/paws/pawslistbox.cpp Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961 Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-07-29 15:50:23 UTC (rev 1961) +++ stable/docs/history.txt 2008-07-29 15:54:09 UTC (rev 1962) @@ -1,3 +1,13 @@ +<<<<<<< .working +======= +*** 2008-07-29 by Andreas Heinchen +- Fixed FS#773 and FS#2030, patch by Weltall + +*** 2008-07-29 by Kenny Graunke +- Fixed bugs caused by using the wrong IDs in r1908. Specifically, items in + containers were failing to load, and most action locations didn't work. + +>>>>>>> .merge-right.r1961 *** 2008-07-28 by Andreas Heinchen - Fix for FS#1692 - fixing 2 bugs that caused entities to get lost in a temporary sector - Cleaned up fix for FS#707 Modified: stable/src/client/gui/chatwindow.cpp =================================================================== --- stable/src/client/gui/chatwindow.cpp 2008-07-29 15:50:23 UTC (rev 1961) +++ stable/src/client/gui/chatwindow.cpp 2008-07-29 15:54:09 UTC (rev 1962) @@ -814,13 +814,23 @@ newtime = localtime(&aclock); strftime(buf, 32, "%a %d-%b-%Y %H:%M:%S", newtime); csString buffer; +#ifdef _WIN32 buffer.Format( + "================================================\r\n" + "%s %s\r\n" + "------------------------------------------------\r\n", + buf, psengine->GetCelClient()->GetMainPlayer()->GetName() + ); + logFile[channel]->Write(buffer.GetData(), buffer.Length()); +#else + buffer.Format( "================================================\n" "%s %s\n" "------------------------------------------------\n", buf, psengine->GetCelClient()->GetMainPlayer()->GetName() ); logFile[channel]->Write(buffer.GetData(), buffer.Length()); +#endif } else { @@ -838,7 +848,11 @@ newtime = localtime(&aclock); strftime(buf, 32, "(%H:%M:%S)", newtime); csString buffer; - buffer.Format("%s %s\n", buf, message); +#ifdef _WIN32 + buffer.Format("%s %s\r\n", buf, message); +#else + buffer.Format("%s %s\n", buf, message); +#endif logFile[channel]->Write(buffer.GetData(), buffer.Length()); logFile[channel]->Flush(); } Modified: stable/src/client/gui/pawsbookreadingwindow.cpp =================================================================== --- stable/src/client/gui/pawsbookreadingwindow.cpp 2008-07-29 15:50:23 UTC (rev 1961) +++ stable/src/client/gui/pawsbookreadingwindow.cpp 2008-07-29 15:54:09 UTC (rev 1962) @@ -156,7 +156,9 @@ } bookFormat = description->GetText(); - +#ifdef _WIN32 + bookFormat.ReplaceAll("\n", "\r\n"); +#endif vfs->WriteFile(tempFileName, bookFormat, bookFormat.Length()); psSystemMessage msg(0, MSG_ACK, "Book saved to %s", tempFileName.GetData()+27 ); Modified: stable/src/client/gui/pawsilluminationwindow.cpp =================================================================== --- stable/src/client/gui/pawsilluminationwindow.cpp 2008-07-29 15:50:23 UTC (rev 1961) +++ stable/src/client/gui/pawsilluminationwindow.cpp 2008-07-29 15:54:09 UTC (rev 1962) @@ -379,8 +379,8 @@ if (!strcasecmp(name,"AddText")) { - int x = (ScreenFrame().xmax + ScreenFrame().xmin)/2 - ScreenFrame().xmin; - int y = (ScreenFrame().ymax + ScreenFrame().ymin)/2 - ScreenFrame().ymin; + int x = (ScreenFrame().xmax - ScreenFrame().xmin)/2; + int y = (ScreenFrame().ymax - ScreenFrame().ymin)/2; SketchText *text = new SketchText(x,y,value,this); objlist.Push(text); } @@ -418,8 +418,8 @@ return; } - int x = (ScreenFrame().xmax + ScreenFrame().xmin)/2 - ScreenFrame().xmin; - int y = (ScreenFrame().ymax + ScreenFrame().ymin)/2 - ScreenFrame().ymin; + int x = (ScreenFrame().xmax - ScreenFrame().xmin)/2; + int y = (ScreenFrame().ymax - ScreenFrame().ymin)/2; int x2 = x + 50; int y2 = y + 50; @@ -441,8 +441,8 @@ // printf("Adding sketch icon now.\n"); - int x = (ScreenFrame().xmax + ScreenFrame().xmin)/2; - int y = (ScreenFrame().ymax + ScreenFrame().ymin)/2; + int x = (ScreenFrame().xmax - ScreenFrame().xmin)/2; + int y = (ScreenFrame().ymax - ScreenFrame().ymin)/2; SketchIcon *icon = new SketchIcon(x,y,iconList[0],this); objlist.Push(icon); Modified: stable/src/client/gui/pawswritingwindow.cpp =================================================================== --- stable/src/client/gui/pawswritingwindow.cpp 2008-07-29 15:50:23 UTC (rev 1961) +++ stable/src/client/gui/pawswritingwindow.cpp 2008-07-29 15:54:09 UTC (rev 1962) @@ -175,6 +175,7 @@ msg.FireEvent(); } csString book(data->GetData(), MIN(data->GetSize(), MAX_BOOK_FILE_SIZE)); + book.ReplaceAll("\r\n", "\n"); lefttext->SetText(book, true); psSystemMessage msg(0, MSG_ACK, "Book Loaded Successfully!" ); Modified: stable/src/common/paws/pawslistbox.cpp =================================================================== --- stable/src/common/paws/pawslistbox.cpp 2008-07-29 15:50:23 UTC (rev 1961) +++ stable/src/common/paws/pawslistbox.cpp 2008-07-29 15:54:09 UTC (rev 1962) @@ -630,9 +630,13 @@ break; } - if ( rows.GetSize() > numberOfRows ) - if ( scrollBar ) + if (scrollBar) + { + if (rows.GetSize() > numberOfRows) scrollBar->Show(); + else + scrollBar->Hide(); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-07-29 20:32:07
|
Revision: 1965 http://planeshift.svn.sourceforge.net/planeshift/?rev=1965&view=rev Author: mgist Date: 2008-07-29 20:32:16 +0000 (Tue, 29 Jul 2008) Log Message: ----------- - Merged r1964 from trunk. Modified Paths: -------------- stable/docs/history.txt stable/src/common/paws/pawstextbox.cpp Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964 Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-07-29 16:37:17 UTC (rev 1964) +++ stable/docs/history.txt 2008-07-29 20:32:16 UTC (rev 1965) @@ -1,5 +1,5 @@ *** 2008-07-29 by Andreas Heinchen -- Fixed FS#773 and FS#2030, patch by Weltall +- Fixed FS#773 and FS#2030, partially fixed FS#1373, patches by Weltall *** 2008-07-28 by Andreas Heinchen - Fix for FS#1692 - fixing 2 bugs that caused entities to get lost in a temporary sector Modified: stable/src/common/paws/pawstextbox.cpp =================================================================== --- stable/src/common/paws/pawstextbox.cpp 2008-07-29 16:37:17 UTC (rev 1964) +++ stable/src/common/paws/pawstextbox.cpp 2008-07-29 20:32:16 UTC (rev 1965) @@ -1147,7 +1147,7 @@ OrganizeText( str.GetData() ); - if ( canDrawLines > lines.GetSize() ) + if ( canDrawLines >= lines.GetSize() ) canDrawLines = lines.GetSize(); else { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-07-30 11:54:46
|
Revision: 1967 http://planeshift.svn.sourceforge.net/planeshift/?rev=1967&view=rev Author: mgist Date: 2008-07-30 11:54:55 +0000 (Wed, 30 Jul 2008) Log Message: ----------- - Merged r1966 from trunk. Modified Paths: -------------- stable/docs/history.txt stable/src/common/paws/pawstextbox.h stable/src/common/paws/pawstextwrap.cpp Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966 Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-07-30 11:23:13 UTC (rev 1966) +++ stable/docs/history.txt 2008-07-30 11:54:55 UTC (rev 1967) @@ -1,3 +1,6 @@ +*** 2008-07-30 by Andreas Heinchen +- completly fixed FS#1373, patch by weltall + *** 2008-07-29 by Andreas Heinchen - Fixed FS#773 and FS#2030, partially fixed FS#1373, patches by Weltall Modified: stable/src/common/paws/pawstextbox.h =================================================================== --- stable/src/common/paws/pawstextbox.h 2008-07-30 11:23:13 UTC (rev 1966) +++ stable/src/common/paws/pawstextbox.h 2008-07-30 11:54:55 UTC (rev 1967) @@ -361,6 +361,7 @@ */ void SetText( const char* text, bool publish = true ); const char* GetText(); + void UpdateScrollBar(); virtual void SetupScrollBar(); bool OnScroll( int direction, pawsScrollBar* widget ); Modified: stable/src/common/paws/pawstextwrap.cpp =================================================================== --- stable/src/common/paws/pawstextwrap.cpp 2008-07-30 11:23:13 UTC (rev 1966) +++ stable/src/common/paws/pawstextwrap.cpp 2008-07-30 11:54:55 UTC (rev 1967) @@ -66,7 +66,6 @@ // Find the line height; int dummy; GetFont()->GetMaxSize( dummy, lineHeight ); - lineHeight -=2; OnResize(); } @@ -201,8 +200,8 @@ parent->OnChange(this); } - if (cursorLine > topLine+canDrawLines) - topLine = cursorLine - canDrawLines; + if (cursorLine >= topLine+canDrawLines) + topLine = cursorLine - canDrawLines+1; else if (cursorLine < topLine) topLine = cursorLine; SetupScrollBar(); @@ -220,9 +219,24 @@ void pawsMultilineEditTextBox::OnResize() { - canDrawLines = (screenFrame.Height()-lineHeight) / lineHeight; + canDrawLines = (screenFrame.Height() / lineHeight); + UpdateScrollBar(); } +void pawsMultilineEditTextBox::UpdateScrollBar() +{ + if(!vScrollBar) return; + + float barPosition = (float)topLine; + vScrollBar->SetMaxValue((int)lineInfo.GetSize() - canDrawLines); + vScrollBar->SetCurrentValue((float)barPosition); + + if (lineInfo.GetSize() <= canDrawLines) + vScrollBar->Hide(); // turn off scrollbar + else + vScrollBar->Show(); +} + void pawsMultilineEditTextBox::SetupScrollBar() { if (!vScrollBar) @@ -237,17 +251,7 @@ AddChild( vScrollBar ); } - if (lineInfo.GetSize() < canDrawLines) - { - // turn off scrollbar - vScrollBar->Hide(); - } - else - { - vScrollBar->SetCurrentValue((float)topLine); - vScrollBar->SetMaxValue((int)lineInfo.GetSize() - canDrawLines ); - vScrollBar->Show(); - } + UpdateScrollBar(); } bool pawsMultilineEditTextBox::OnMouseDown( int button, int modifiers, int x, int y ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-07-30 12:36:32
|
Revision: 1969 http://planeshift.svn.sourceforge.net/planeshift/?rev=1969&view=rev Author: mgist Date: 2008-07-30 12:36:42 +0000 (Wed, 30 Jul 2008) Log Message: ----------- - Merged r1968 from trunk. Modified Paths: -------------- stable/docs/history.txt stable/src/server/gem.cpp Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968 Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-07-30 12:30:06 UTC (rev 1968) +++ stable/docs/history.txt 2008-07-30 12:36:42 UTC (rev 1969) @@ -1,4 +1,6 @@ *** 2008-07-30 by Andreas Heinchen +- Fixed inconsistency between world and database. + Fixed ownership of items moved from world container to world container. - completly fixed FS#1373, patch by weltall *** 2008-07-29 by Andreas Heinchen Modified: stable/src/server/gem.cpp =================================================================== --- stable/src/server/gem.cpp 2008-07-30 12:30:06 UTC (rev 1968) +++ stable/src/server/gem.cpp 2008-07-30 12:36:42 UTC (rev 1969) @@ -4022,7 +4022,17 @@ // If the gemContainer we are dropping the item into is not pickupable then we // guard the item placed inside. Otherwise the item becomes public. - item->SetGuardingCharacterID(item->GetOwningCharacterID()); + if (fromClient) + { + /* put the player behind the client as guard */ + item->SetGuardingCharacterID(fromClient->GetCharacterData()->characterid); + } + if (item->GetOwningCharacterID()) + { + /* item comes from a player () */ + item->SetGuardingCharacterID(item->GetOwningCharacterID()); + } + if (!GetItem()->GetIsNoPickup() && item->GetOwningCharacterID()) GetItem()->SetGuardingCharacterID(item->GetOwningCharacterID()); @@ -4100,6 +4110,9 @@ { // Split out the stack for the required amount. item = itemStack->SplitStack(stackCount); + + // Save the lowered value + itemStack->Save(false); } // Send out messages about the change in the item stack. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-07-30 20:55:43
|
Revision: 1973 http://planeshift.svn.sourceforge.net/planeshift/?rev=1973&view=rev Author: mgist Date: 2008-07-30 20:55:44 +0000 (Wed, 30 Jul 2008) Log Message: ----------- - Merged r1970-1972 from trunk. Modified Paths: -------------- stable/docs/history.txt stable/src/client/gui/pawsilluminationwindow.cpp stable/src/client/gui/pawsilluminationwindow.h stable/src/common/paws/pawstextbox.cpp stable/src/common/paws/pawstextwrap.cpp stable/src/server/bulkobjects/psitem.cpp stable/src/server/bulkobjects/psitem.h stable/src/server/gem.cpp stable/src/server/slotmanager.cpp Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972 Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-07-30 20:07:36 UTC (rev 1972) +++ stable/docs/history.txt 2008-07-30 20:55:44 UTC (rev 1973) @@ -1,7 +1,10 @@ *** 2008-07-30 by Andreas Heinchen - Fixed inconsistency between world and database. Fixed ownership of items moved from world container to world container. -- completly fixed FS#1373, patch by weltall + Fixed FS#1376 splitted stacks in world containers did not update the clients properly +- several fixes for FS#1373, patches by weltall +- fix for FS#1283, patch by weltall, refactoring from me + additionally dropping invisible sketch elements *** 2008-07-29 by Andreas Heinchen - Fixed FS#773 and FS#2030, partially fixed FS#1373, patches by Weltall Modified: stable/src/client/gui/pawsilluminationwindow.cpp =================================================================== --- stable/src/client/gui/pawsilluminationwindow.cpp 2008-07-30 20:07:36 UTC (rev 1972) +++ stable/src/client/gui/pawsilluminationwindow.cpp 2008-07-30 20:55:44 UTC (rev 1973) @@ -149,28 +149,33 @@ Show(); } -void pawsSketchWindow::Hide() +csString pawsSketchWindow::toXML(void ) { - if (dirty) - { - csString xml; + //generates the xml document from the objects currently displayed in the sketch + csString xml; - xml = "<pages><page "; - xml.AppendFmt("l=\"%d\" t=\"%d\" w=\"%d\" h=\"%d\">", - GetLogicalWidth(screenFrame.xmin), - GetLogicalHeight(screenFrame.ymin), - GetLogicalWidth(screenFrame.xmax-screenFrame.xmin), - GetLogicalHeight(screenFrame.ymax-screenFrame.ymin)); + xml = "<pages><page "; + xml.AppendFmt("l=\"%d\" t=\"%d\" w=\"%d\" h=\"%d\">", GetLogicalWidth( + screenFrame.xmin), GetLogicalHeight(screenFrame.ymin), + GetLogicalWidth(screenFrame.xmax - screenFrame.xmin), + GetLogicalHeight(screenFrame.ymax - screenFrame.ymin)); - // Add background and size stuff here - - for (size_t i=0; i<objlist.GetSize(); i++) + // Add background and size stuff here + for (size_t i = 0; i < objlist.GetSize(); i++) + if (objlist[i]->x <= screenFrame.xmax - screenFrame.xmin + && objlist[i]->y <= screenFrame.ymax - screenFrame.ymin) objlist[i]->WriteXml(xml); - xml += "</page></pages>"; + xml += "</page></pages>"; + return xml; +} +void pawsSketchWindow::Hide() +{ + if (dirty) + { + csString xml = toXML(); // printf("Saving sketch as: %s\n",xml.GetDataSafe()); - psSketchMessage sketch(0, currentItemID,0,"", xml, true, sketchName); sketch.SendMessage(); } @@ -189,7 +194,14 @@ } void pawsSketchWindow::DrawSketch() { - for (size_t i=0; i<objlist.GetSize(); i++) + if (selectedIndex != SIZET_NOT_FOUND && IsMouseDown()) + { + psPoint pos = PawsManager::GetSingleton().GetMouse()->GetPosition(); + objlist[selectedIndex]->UpdatePosition(GetLogicalWidth(pos.x + - ScreenFrame().xmin), GetLogicalHeight(pos.y + - ScreenFrame().ymin)); + } + for (size_t i = 0; i < objlist.GetSize(); i++) objlist[i]->Draw(); } @@ -499,19 +511,7 @@ void pawsSketchWindow::SaveSketch() { - csString xml; - //generates the xml document from the objects currently displayed in the sketch - xml = "<pages><page "; - xml.AppendFmt("l=\"%d\" t=\"%d\" w=\"%d\" h=\"%d\">", - GetLogicalWidth(screenFrame.xmin), - GetLogicalHeight(screenFrame.ymin), - GetLogicalWidth(screenFrame.xmax-screenFrame.xmin), - GetLogicalHeight(screenFrame.ymax-screenFrame.ymin)); - - for (size_t i=0; i<objlist.GetSize(); i++) - objlist[i]->WriteXml(xml); - - xml += "</page></pages>"; + csString xml = toXML(); csRef<iVFS> vfs = psengine->GetVFS(); unsigned int tempNumber = 0; //searchs for a free sketch slot in the user directory and write in it @@ -836,7 +836,7 @@ void pawsSketchWindow::SketchText::Draw() { - if (!selected || frame > 15) + if (parent->IsMouseDown() || !selected || frame > 15) { parent->DrawWidgetText(str, parent->GetActualWidth(x)+parent->ScreenFrame().xmin, @@ -871,7 +871,7 @@ pts.GetWordNumber(4,num); y2 = atoi(num.GetDataSafe()); - printf("Line %d,%d to %d, %d\n",x,y,x2,y2); + //printf("Line %d,%d to %d, %d\n",x,y,x2,y2); this->parent = parent; return true; @@ -897,7 +897,7 @@ parent->GetActualHeight(y2)+parent->ScreenFrame().ymin, black ); - if (!selected || frame > 15) + if (parent->IsMouseDown() || !selected || frame > 15) { parent->DrawBlackBox(parent->GetActualWidth(x)+parent->ScreenFrame().xmin-3, parent->GetActualHeight(y)+parent->ScreenFrame().ymin-3); @@ -931,8 +931,8 @@ abs(mouseY-y2) < 3) { dragMode = 2; - offsetX = mouseX - x; - offsetY = mouseY - y; + offsetX = mouseX - x2; + offsetY = mouseY - y2; return true; } @@ -965,10 +965,11 @@ _x -= offsetX; // This backs off the cursor from where it was _y -= offsetY; + + //if we are taking the second point we must check it's position + dx = _x - (dragMode == 2 ? x2 : x); + dy = _y - (dragMode == 2 ? y2 : y); - dx = _x - x; - dy = _y - y; - switch (dragMode) { case 0: @@ -1014,8 +1015,6 @@ } break; } - offsetX = 0; - offsetY = 0; } void pawsSketchWindow::SketchIcon::UpdatePosition (int _x, int _y){ Modified: stable/src/client/gui/pawsilluminationwindow.h =================================================================== --- stable/src/client/gui/pawsilluminationwindow.h 2008-07-30 20:07:36 UTC (rev 1972) +++ stable/src/client/gui/pawsilluminationwindow.h 2008-07-30 20:55:44 UTC (rev 1973) @@ -141,6 +141,9 @@ void SaveSketch(); void LoadSketch(); bool isBadChar(char c); + + csString toXML(); + csString filenameSafe(const csString &original); csString sketchName; Modified: stable/src/common/paws/pawstextbox.cpp =================================================================== --- stable/src/common/paws/pawstextbox.cpp 2008-07-30 20:07:36 UTC (rev 1972) +++ stable/src/common/paws/pawstextbox.cpp 2008-07-30 20:55:44 UTC (rev 1973) @@ -1148,7 +1148,14 @@ OrganizeText( str.GetData() ); if ( canDrawLines >= lines.GetSize() ) + { canDrawLines = lines.GetSize(); + if(scrollBar) //if there is a scrollbar we must setup it correctly else we will scroll in the void + { + scrollBar->SetMaxValue(0); + scrollBar->SetCurrentValue(0); + } + } else { usingScrollBar = true; Modified: stable/src/common/paws/pawstextwrap.cpp =================================================================== --- stable/src/common/paws/pawstextwrap.cpp 2008-07-30 20:07:36 UTC (rev 1972) +++ stable/src/common/paws/pawstextwrap.cpp 2008-07-30 20:55:44 UTC (rev 1973) @@ -227,14 +227,27 @@ { if(!vScrollBar) return; - float barPosition = (float)topLine; - vScrollBar->SetMaxValue((int)lineInfo.GetSize() - canDrawLines); - vScrollBar->SetCurrentValue((float)barPosition); + float barMaxValue; //holds the maximum value of the scrollbar + float barPosition; //holds the current position of the scrollbar - if (lineInfo.GetSize() <= canDrawLines) - vScrollBar->Hide(); // turn off scrollbar - else - vScrollBar->Show(); + + + if (lineInfo.GetSize() <= canDrawLines) //can all the lines stay on screen? + { + vScrollBar->Hide(); //... yes they can then hide the scrollbar and... + barMaxValue = 0; //set the scrollbar max value and position to zero as we have nothing to scroll + barPosition = 0; + } + else //no they can't so... + { + vScrollBar->Show();//... show the scrollbar and... + barMaxValue = (int)lineInfo.GetSize() - canDrawLines; //... set it's max values and position + barPosition = (float)topLine; + } + + //set new values to the scrollbar + vScrollBar->SetMaxValue(barMaxValue); + vScrollBar->SetCurrentValue(barPosition); } void pawsMultilineEditTextBox::SetupScrollBar() Modified: stable/src/server/bulkobjects/psitem.cpp =================================================================== --- stable/src/server/bulkobjects/psitem.cpp 2008-07-30 20:07:36 UTC (rev 1972) +++ stable/src/server/bulkobjects/psitem.cpp 2008-07-30 20:55:44 UTC (rev 1973) @@ -48,6 +48,7 @@ //============================================================================= // Local Includes //============================================================================= +#include "client.h" #include "psitem.h" #include "pscharacter.h" #include "pssectorinfo.h" @@ -2278,6 +2279,24 @@ } } +void psItem::UpdateView(Client *fromClient, uint EntityId, bool clear) +{ + if (!fromClient) + return; + + gemActor *guardian = clear ? 0 : GEMSupervisor::GetSingleton().FindPlayerEntity(GetGuardingCharacterID()); + psViewItemUpdate mesg(fromClient->GetClientNum(), + EntityId, + GetLocInParent(), + clear, + GetName(), + GetImageName(), + GetStackCount(), + guardian ? guardian->GetEntityID() : 0); + + mesg.Multicast(fromClient->GetActor()->GetMulticastClients(),0,5); +} + void psItem::SetGemObject(gemItem *object) { // Unregister previous callbacks if the current gItem is not NULL Modified: stable/src/server/bulkobjects/psitem.h =================================================================== --- stable/src/server/bulkobjects/psitem.h 2008-07-30 20:07:36 UTC (rev 1972) +++ stable/src/server/bulkobjects/psitem.h 2008-07-30 20:55:44 UTC (rev 1973) @@ -42,6 +42,7 @@ //============================================================================= // Local Includes //============================================================================= +#include "client.h" #include "psskills.h" #include "psitemstats.h" #include "deleteobjcallback.h" @@ -214,6 +215,9 @@ /// Handles deleted gem objects. virtual void DeleteObjectCallback(iDeleteNotificationObject * object); + + //inform clients on view updates + void UpdateView(Client *fromClient, uint EntityId, bool clear); private: Modified: stable/src/server/gem.cpp =================================================================== --- stable/src/server/gem.cpp 2008-07-30 20:07:36 UTC (rev 1972) +++ stable/src/server/gem.cpp 2008-07-30 20:55:44 UTC (rev 1973) @@ -4042,22 +4042,7 @@ item->Save(false); itemlist.PushSmart(item); - if (fromClient) - { - gemActor *guardian = GEMSupervisor::GetSingleton().FindPlayerEntity(item->GetGuardingCharacterID()); - - // Update client(s) - psViewItemUpdate mesg(fromClient->GetClientNum(), - GetEntityID(), - slot, - false, - item->GetName(), - item->GetImageName(), - item->GetStackCount(), - guardian ? guardian->GetEntityID() : 0); - - mesg.Multicast(fromClient->GetActor()->GetMulticastClients(),0,5); - } + item->UpdateView(fromClient, GetEntityID(), false); return true; } @@ -4066,25 +4051,7 @@ // printf("Removing %s from container now.\n", item->GetName() ); if (itemlist.Delete(item)) { - uint32_t slot = item->GetLocInParent(); - - if (fromClient) - { - gemActor *guardian = GEMSupervisor::GetSingleton().FindPlayerEntity(item->GetGuardingCharacterID()); - - // printf("Multicasting removal update to nearby clients of %s.\n\n", fromClient->GetName() ); - // Update client(s) - psViewItemUpdate mesg(fromClient->GetClientNum(), - GetEntityID(), - slot, - true, - item->GetName(), - item->GetImageName(), - item->GetStackCount(), - guardian ? guardian->GetEntityID() : 0); - - mesg.Multicast(fromClient->GetActor()->GetMulticastClients(),0,5); - } + item->UpdateView(fromClient, GetEntityID(), true); return true; } else @@ -4115,25 +4082,8 @@ itemStack->Save(false); } - // Send out messages about the change in the item stack. - uint32_t slot = itemStack->GetLocInParent(); - - if (fromClient) - { - // printf("Multicasting removal update to nearby clients of %s.\n\n", fromClient->GetName() ); - // Update client(s) - psViewItemUpdate mesg(fromClient->GetClientNum(), - GetEntityID(), - slot, - clear, - itemStack->GetName(), - itemStack->GetImageName(), - itemStack->GetStackCount(), - 0); - - mesg.Multicast(fromClient->GetActor()->GetMulticastClients(),0,5); - } - + // Send out messages about the change in the item stack. + itemStack->UpdateView(fromClient, GetEntityID(), clear); return item; } Modified: stable/src/server/slotmanager.cpp =================================================================== --- stable/src/server/slotmanager.cpp 2008-07-30 20:07:36 UTC (rev 1972) +++ stable/src/server/slotmanager.cpp 2008-07-30 20:55:44 UTC (rev 1973) @@ -314,16 +314,8 @@ itemProposed->Save(false); // Update client(s) - psViewItemUpdate mesg(fromClient->GetClientNum(), - worldContainer->GetEntityID(), - msg.fromSlot, - true, - itemProposed->GetName(), - itemProposed->GetImageName(), - itemProposed->GetStackCount(), - 0); + itemProposed->UpdateView(fromClient, worldContainer->GetEntityID(), true); - mesg.Multicast(fromClient->GetActor()->GetMulticastClients(),0,5); // psserver->GetCharManager()->SendContainerContents(fromClient, parentItem, containerEntityID); break; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-07-31 13:43:06
|
Revision: 1975 http://planeshift.svn.sourceforge.net/planeshift/?rev=1975&view=rev Author: mgist Date: 2008-07-31 13:43:11 +0000 (Thu, 31 Jul 2008) Log Message: ----------- - Merged r1974 from trunk Modified Paths: -------------- stable/docs/history.txt stable/src/client/pscelclient.cpp stable/src/client/pscelclient.h stable/src/client/psclientdr.h stable/src/client/zonehandler.cpp stable/src/client/zonehandler.h Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974 Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-07-31 13:39:53 UTC (rev 1974) +++ stable/docs/history.txt 2008-07-31 13:43:11 UTC (rev 1975) @@ -1,3 +1,6 @@ +*** 2008-07-31 by Andreas Heinchen +- Fixed FS#426 - stamina drain on map load + *** 2008-07-30 by Andreas Heinchen - Fixed inconsistency between world and database. Fixed ownership of items moved from world container to world container. Modified: stable/src/client/pscelclient.cpp =================================================================== --- stable/src/client/pscelclient.cpp 2008-07-31 13:39:53 UTC (rev 1974) +++ stable/src/client/pscelclient.cpp 2008-07-31 13:43:11 UTC (rev 1975) @@ -1537,6 +1537,16 @@ linmove->GetDRData(on_ground,speed,pos,yrot,sector,vel,worldVel,ang_vel); + ZoneHandler* zonehandler = cel->GetZoneHandler(); + if (zonehandler && zonehandler->IsMapLoadNeeded()) + { + // disable movement to stop stamina drain while map is loading + on_ground = true; + speed = 0; + vel = 0; + ang_vel = 0; + } + // Hack to guarantee out of order packet detection -- KWF //if (DRcounter%20 == 0) //{ Modified: stable/src/client/pscelclient.h =================================================================== --- stable/src/client/pscelclient.h 2008-07-31 13:39:53 UTC (rev 1974) +++ stable/src/client/pscelclient.h 2008-07-31 13:43:11 UTC (rev 1975) @@ -159,6 +159,8 @@ psShadowManager * GetShadowManager() { return shadowManager; } GEMClientActor* GetMainPlayer() { return local_player; } + + ZoneHandler* GetZoneHandler() { return zonehandler; } /* Check if the item has an effect attached to it and process it if so. */ void HandleItemEffect( const char* factName, csRef<iMeshWrapper> mw, bool onGround = true, const char* slot = 0, Modified: stable/src/client/psclientdr.h =================================================================== --- stable/src/client/psclientdr.h 2008-07-31 13:39:53 UTC (rev 1974) +++ stable/src/client/psclientdr.h 2008-07-31 13:43:11 UTC (rev 1975) @@ -36,7 +36,6 @@ class psCelClient; class MsgHandler; -class ZoneHandler; class MsgEntry; class pawsGroupWindow; class pawsPetStatWindow; @@ -70,7 +69,6 @@ bool gotStrings; psCelClient* celclient; - ZoneHandler * zonehandler; csRef<MsgHandler> msghandler; csTicks lastupdate; Modified: stable/src/client/zonehandler.cpp =================================================================== --- stable/src/client/zonehandler.cpp 2008-07-31 13:39:53 UTC (rev 1974) +++ stable/src/client/zonehandler.cpp 2008-07-31 13:43:11 UTC (rev 1975) @@ -53,6 +53,8 @@ #include "iclient/isoundmngr.h" +#include "psclientdr.h" + //============================================================================= // Local Includes //============================================================================= @@ -182,7 +184,7 @@ Notify3(LOG_LOAD, "Crossed from sector %s to sector %s.", msg.oldSector.GetData(), msg.newSector.GetData() ); - if (needsToLoadMaps) + if (IsMapLoadNeeded()) { Warning2(LOG_LOAD, "Still loading maps, ignoring crossing to sector %s.", msg.newSector.GetData()); return; @@ -202,7 +204,7 @@ if (world->NeedsLoading(zone->transitional)) { - needsToLoadMaps = true; + SetMapLoadNeeded(true); sectorToLoad = msg.newSector; haveNewPos = true; newPos = msg.pos; @@ -229,7 +231,7 @@ if(cam && !cam->GetDistanceCfg().adaptive) cam->UseFixedDistanceClipping(cam->GetFixedDistClip()); - if(!needsToLoadMaps) + if(!IsMapLoadNeeded()) psengine->GetModeHandler()->DoneLoading(msg.newSector); } @@ -256,14 +258,24 @@ loadProgressBar->Completed(); } +void ZoneHandler::SetMapLoadNeeded(bool needed) +{ + needsToLoadMaps = needed; + //inform server about status change + psClientDR* clientDr = celclient->GetClientDR(); + if (clientDr) + clientDr->CheckDeadReckoningUpdate(); +} + void ZoneHandler::OnDrawingFinished() { - if (needsToLoadMaps) + if (IsMapLoadNeeded()) { if(ExecuteFlaggedRegions(sectorToLoad)) { - needsToLoadMaps = false; + SetMapLoadNeeded(false); + psengine->SetLoadedMap(true); psengine->GetModeHandler()->FinishLightFade(); // make sure new map gets relit for time of day @@ -341,7 +353,7 @@ void ZoneHandler::LoadZone(const char* sector) { sectorToLoad = sector; - needsToLoadMaps = true; + SetMapLoadNeeded(true); FlagRegions( FindZone(sectorToLoad) ); } Modified: stable/src/client/zonehandler.h =================================================================== --- stable/src/client/zonehandler.h 2008-07-31 13:39:53 UTC (rev 1974) +++ stable/src/client/zonehandler.h 2008-07-31 13:43:11 UTC (rev 1975) @@ -105,6 +105,9 @@ void SetLoadAllMaps(bool v) { loadAllMaps = v; } void SetKeepMapsLoaded(bool v) { keepMapsLoaded = v; } + bool IsMapLoadNeeded(void) { return needsToLoadMaps; } + void SetMapLoadNeeded(bool needed); + protected: csHash<ZoneLoadInfo *, const char*> zonelist; csArray<csString> alllist; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-08-01 14:52:40
|
Revision: 1983 http://planeshift.svn.sourceforge.net/planeshift/?rev=1983&view=rev Author: mgist Date: 2008-08-01 14:52:48 +0000 (Fri, 01 Aug 2008) Log Message: ----------- - Merged r1978-1979,1981-1982 from trunk. Modified Paths: -------------- stable/docs/history.txt stable/src/common/net/connection.cpp stable/src/common/net/netbase.cpp stable/src/common/net/netbase.h stable/src/common/net/netpacket.cpp stable/src/common/net/netpacket.h stable/src/server/netmanager.cpp Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982 Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-08-01 14:34:20 UTC (rev 1982) +++ stable/docs/history.txt 2008-08-01 14:52:48 UTC (rev 1983) @@ -1,5 +1,6 @@ *** 2008-07-31 by Andreas Heinchen - Fixed FS#426 - stamina drain on map load +- refactored the network code to fix leaks and other memory issues *** 2008-07-30 by Andreas Heinchen - Fixed inconsistency between world and database. Modified: stable/src/common/net/connection.cpp =================================================================== --- stable/src/common/net/connection.cpp 2008-08-01 14:34:20 UTC (rev 1982) +++ stable/src/common/net/connection.cpp 2008-08-01 14:52:48 UTC (rev 1983) @@ -128,19 +128,7 @@ server = NULL; } - // Clear awaitingack queue - csHash<psNetPacketEntry*, PacketKey>::GlobalIterator it (awaitingack.GetIterator()); - csArray<psNetPacketEntry *> pkts; - psNetPacketEntry *next =NULL; - while (it.HasNext()) - { - next = it.Next(); - pkts.Push(next); - } - - for(size_t i = 0;i < pkts.GetSize(); i++) - delete pkts.Get(i); - + // with proper refcounting this should kill all members of the hash awaitingack.Empty(); } Modified: stable/src/common/net/netbase.cpp =================================================================== --- stable/src/common/net/netbase.cpp 2008-08-01 14:34:20 UTC (rev 1982) +++ stable/src/common/net/netbase.cpp 2008-08-01 14:52:48 UTC (rev 1983) @@ -237,14 +237,14 @@ } } - //Create new net packet entry and transfere overship of bufpacket to pkt. - psNetPacketEntry* pkt = new psNetPacketEntry( bufpacket, - connection ? connection->clientnum : 0, packetlen); + //Create new net packet entry and transfer ownership of bufpacket to pkt. + csRef<psNetPacketEntry> pkt; + pkt.AttachNew(new psNetPacketEntry( bufpacket, + connection ? connection->clientnum : 0, packetlen)); // ACK packets can get eaten by HandleAck if (HandleAck(pkt, connection, &addr)) { - delete pkt; return true; } @@ -269,29 +269,15 @@ * Now either send this packet to BuildMessage, or loop through * subpackets if they are merged. */ - psNetPacketEntry *splitpacket= pkt; + csRef<psNetPacketEntry> splitpacket = pkt; psNetPacket *packetdata = NULL; do { splitpacket = pkt->GetNextPacket(packetdata); if (splitpacket) - { - if (!BuildMessage(splitpacket, connection, &addr)) - { - // if BuildMessage didn't store it we should delete it now - delete splitpacket; - } - } + BuildMessage(splitpacket, connection, &addr); } while (packetdata); - - /** - * If we split apart a multipacket packet above, remove the merged one - * now, because the loop above doesn't do it in this case - */ - if (splitpacket != pkt) - delete pkt; - return true; } @@ -307,7 +293,7 @@ } -bool NetBase::HandleAck(psNetPacketEntry *pkt, Connection* connection, +bool NetBase::HandleAck(csRef<psNetPacketEntry> pkt, Connection* connection, LPSOCKADDR_IN addr) { psNetPacket* packet = pkt->packet; @@ -332,10 +318,10 @@ connection->pcknumin++; } - psNetPacketEntry * ack = NULL; + csRef<psNetPacketEntry> ack; // The hash only keys on the clientnum and pktid so we need to go looking for the offset - csArray<psNetPacketEntry *> acks = awaitingack.GetAll(PacketKey(pkt->clientnum, pkt->packet->pktid)); + csArray<csRef<psNetPacketEntry> > acks = awaitingack.GetAll(PacketKey(pkt->clientnum, pkt->packet->pktid)); for(size_t i = 0;i < acks.GetSize(); i++) { if(acks[i]->packet->offset == pkt->packet->offset) @@ -359,10 +345,6 @@ Debug2(LOG_NET,0,"No packet in ack queue :%d\n", ack->packet->pktid); #endif } - else - { - delete ack; - } } else // if not found, it is probably a resent ACK which is redundant so do nothing { @@ -382,23 +364,23 @@ if (connection) { - psNetPacketEntry *ack = new psNetPacketEntry(PRIORITY_LOW, - pkt->clientnum, - pkt->packet->pktid, - pkt->packet->offset, - pkt->packet->msgsize, - PKTSIZE_ACK,(char *)NULL); + csRef<psNetPacketEntry> ack; + ack.AttachNew(new psNetPacketEntry(PRIORITY_LOW, + pkt->clientnum, + pkt->packet->pktid, + pkt->packet->offset, + pkt->packet->msgsize, + PKTSIZE_ACK,(char *)NULL)); SendFinalPacket(ack, addr); - delete ack; - + // ack should be unre'd here } } return false; } -bool NetBase::CheckDoublePackets(Connection* connection, psNetPacketEntry* pkt) +bool NetBase::CheckDoublePackets(Connection* connection, csRef<psNetPacketEntry> pkt) { int i; @@ -416,9 +398,9 @@ void NetBase::CheckResendPkts() { - csHash<psNetPacketEntry *, PacketKey>::GlobalIterator it(awaitingack.GetIterator()); - psNetPacketEntry *pkt = NULL; - csArray<psNetPacketEntry *> pkts; + csHash<csRef<psNetPacketEntry> , PacketKey>::GlobalIterator it(awaitingack.GetIterator()); + csRef<psNetPacketEntry> pkt; + csArray<csRef<psNetPacketEntry> > pkts; csTicks currenttime = csGetTicks(); @@ -448,8 +430,6 @@ Debug2(LOG_NET,0,"No packet in ack queue :%d\n", pkt->packet->pktid); #endif } - else - pkt->DecRef(); } } if(pkts.GetSize() > 0) @@ -520,7 +500,7 @@ return true; } -bool NetBase::SendSinglePacket(psNetPacketEntry* pkt) +bool NetBase::SendSinglePacket(csRef<psNetPacketEntry> pkt) { if (!SendFinalPacket (pkt)) { @@ -540,15 +520,12 @@ pkt->packet->pktid, pkt->clientnum); #endif awaitingack.Put(PacketKey(pkt->clientnum, pkt->packet->pktid), pkt); - // queue holds ref now -> don't delete pkt - pkt->IncRef(); - } return true; } -bool NetBase::SendFinalPacket(psNetPacketEntry *pkt) +bool NetBase::SendFinalPacket(csRef<psNetPacketEntry> pkt) { Connection* connection = GetConnByNum(pkt->clientnum); if (!connection) @@ -568,7 +545,7 @@ } -bool NetBase::SendFinalPacket(psNetPacketEntry *pkt, LPSOCKADDR_IN addr) +bool NetBase::SendFinalPacket(csRef<psNetPacketEntry> pkt, LPSOCKADDR_IN addr) { // send packet... #ifdef PACKETDEBUG @@ -977,12 +954,12 @@ void NetBase::CheckFragmentTimeouts(void) { - psNetPacketEntry *pkt = NULL; + csRef<psNetPacketEntry> pkt; // A set of packet ids that should NOT be discarded csSet<unsigned> newids; - psNetPacketEntry *oldpackets[10]; + csRef<psNetPacketEntry> oldpackets[10]; int count=0,index=0; csTicks current = csGetTicks(); @@ -993,7 +970,7 @@ return; // Iterate through all packets in the list searching for old packets - csHash<psNetPacketEntry *, PacketKey>::GlobalIterator it(packets.GetIterator()); + csHash<csRef<psNetPacketEntry> , PacketKey>::GlobalIterator it(packets.GetIterator()); while(it.HasNext()) { pkt = it.Next(); @@ -1021,13 +998,16 @@ /* Drop refcount until the packet is removed from the list. * If we don't do this all at once we'll do this again the very next check since the time wont be altered. */ - while (packets.Delete(PacketKey(oldpackets[index]->clientnum, oldpackets[index]->packet->pktid), oldpackets[index])); - delete oldpackets[index]; + while (packets.Delete(PacketKey(oldpackets[index]->clientnum, oldpackets[index]->packet->pktid), oldpackets[index])) + { + // all oldpackets should be reffed only by the oldpackets array + // previous implementation deleted oldpüackets several times + } } } -bool NetBase::BuildMessage(psNetPacketEntry* pkt, Connection* &connection, +bool NetBase::BuildMessage(csRef<psNetPacketEntry> pkt, Connection* &connection, LPSOCKADDR_IN addr) { if (connection) @@ -1086,8 +1066,8 @@ csPtr<MsgEntry> NetBase::CheckCompleteMessage(uint32_t client, uint32_t id) { - csArray<psNetPacketEntry *> pkts; - psNetPacketEntry *pkt; + csArray<csRef<psNetPacketEntry> > pkts; + csRef<psNetPacketEntry> pkt; // This search is FAST, and without the first packet, you can't build the message. pkts = packets.GetAll(PacketKey(client, id)); @@ -1167,9 +1147,7 @@ offset+=pkt->packet->pktsize; // We don't care how many times it's in the queue, there's a mistake if it's over 1. Let's fix it now. - packets.Delete(PacketKey(client, id), pkt); - // And delete the packet entry object - delete pkt; + packets.Delete(PacketKey(client, id), pkt); } /* If the search offset didnt finish at the end of the packet, we have gaps, not all pieces were deleted, * someone is trying to play games, and we should ignore the message, and @@ -1211,7 +1189,7 @@ } void NetBase::HandleCompletedMessage(MsgEntry *me, Connection* &connection, - LPSOCKADDR_IN addr,psNetPacketEntry* pkt) + LPSOCKADDR_IN addr,csRef<psNetPacketEntry> pkt) { profs->AddReceivedMsg(me); Modified: stable/src/common/net/netbase.h =================================================================== --- stable/src/common/net/netbase.h 2008-08-01 14:34:20 UTC (rev 1982) +++ stable/src/common/net/netbase.h 2008-08-01 14:52:48 UTC (rev 1983) @@ -432,7 +432,7 @@ * This takes incoming packets and examines them for priority. * If pkt is ACK, it finds the awaiting ack pkt and removes it. */ - bool HandleAck(psNetPacketEntry* pkt, Connection* connection, LPSOCKADDR_IN addr); + bool HandleAck(csRef<psNetPacketEntry> pkt, Connection* connection, LPSOCKADDR_IN addr); /** * This cycles through set of pkts awaiting ack and resends old ones. @@ -445,7 +445,7 @@ * This takes incoming packets and rebuilds psMessages from them. If/when a * complete message is reassembled, it calls HandleCompletedMessage(). */ - bool BuildMessage(psNetPacketEntry* pkt,Connection* &connection,LPSOCKADDR_IN addr); + bool BuildMessage(csRef<psNetPacketEntry> pkt,Connection* &connection,LPSOCKADDR_IN addr); /** * This checks the list of packets waiting to be assembled into complete messages. @@ -470,12 +470,12 @@ void HandleCompletedMessage(MsgEntry *me, Connection* &connection, LPSOCKADDR_IN addr, - psNetPacketEntry* pkt); + csRef<psNetPacketEntry> pkt); /** * This tries to drop packets that received doubled */ - bool CheckDoublePackets (Connection* connection, psNetPacketEntry* pkt); + bool CheckDoublePackets (Connection* connection, csRef<psNetPacketEntry> pkt); /** @@ -487,17 +487,17 @@ /** * This does the sending and puts the packet in "awaiting ack" if necessary. */ - bool SendSinglePacket(psNetPacketEntry* pkt); + bool SendSinglePacket(csRef<psNetPacketEntry> pkt); /** * Send packet to the clientnum given by clientnum in psNetPacketEntry */ - bool SendFinalPacket(psNetPacketEntry* pkt); + bool SendFinalPacket(csRef<psNetPacketEntry> pkt); /** * This only sends out a packet */ - bool SendFinalPacket(psNetPacketEntry* pkt, LPSOCKADDR_IN addr); + bool SendFinalPacket(csRef<psNetPacketEntry> pkt, LPSOCKADDR_IN addr); /** Outgoing message queue */ csRef<NetPacketQueueRefCount> NetworkQueue; @@ -509,7 +509,7 @@ csArray<MsgQueue*> inqueues; /** Packets Awaiting Ack pool */ - csHash<psNetPacketEntry *, PacketKey> awaitingack; + csHash<csRef<psNetPacketEntry>, PacketKey> awaitingack; /** System Socket lib initialized? */ static int socklibrefcount; @@ -546,7 +546,7 @@ SOCKET pipe_fd[2]; /** tree holding the outgoing packets */ - csHash<psNetPacketEntry *, PacketKey> packets; + csHash<csRef<psNetPacketEntry> , PacketKey> packets; /** for generating random values (unfortunately the msvc rand() function * is not good at all Modified: stable/src/common/net/netpacket.cpp =================================================================== --- stable/src/common/net/netpacket.cpp 2008-08-01 14:34:20 UTC (rev 1982) +++ stable/src/common/net/netpacket.cpp 2008-08-01 14:52:48 UTC (rev 1983) @@ -75,7 +75,7 @@ cs_free(packet); } -bool psNetPacketEntry::Append(psNetPacketEntry *next) +bool psNetPacketEntry::Append(csRef<psNetPacketEntry> next) { #ifdef PACKETDEBUG Debug5(LOG_NET,0,"Appending packet into MULTIPACKET (ID %d Size: %d). (ID %d Size: %d)\n", @@ -168,7 +168,7 @@ return true; }; -psNetPacketEntry *psNetPacketEntry::GetNextPacket(psNetPacket * &packetdata) +csRef<psNetPacketEntry> psNetPacketEntry::GetNextPacket(psNetPacket * &packetdata) { if (!packet->IsMultiPacket()) { @@ -253,13 +253,14 @@ packetdata->pktid, this, packet->pktid); #endif - psNetPacketEntry *pnew = new psNetPacketEntry (packetdata->flags, + csRef<psNetPacketEntry> pnew; + pnew.AttachNew(new psNetPacketEntry (packetdata->flags, clientnum, packetdata->pktid, packetdata->offset, packetdata->msgsize, packetdata->pktsize, - (const char *)packetdata->data); + (const char *)packetdata->data)); return pnew; } Modified: stable/src/common/net/netpacket.h =================================================================== --- stable/src/common/net/netpacket.h 2008-08-01 14:34:20 UTC (rev 1982) +++ stable/src/common/net/netpacket.h 2008-08-01 14:52:48 UTC (rev 1983) @@ -180,15 +180,15 @@ uint32_t id, uint32_t off, uint32_t totalsize, uint16_t sz, const char *bytes); - psNetPacketEntry (psNetPacketEntry* ) + psNetPacketEntry (csRef<psNetPacketEntry> ) { CS_ASSERT(false); } ~psNetPacketEntry(); - bool Append(psNetPacketEntry *next); - psNetPacketEntry *GetNextPacket(psNetPacket* &packetdata); + bool Append(csRef<psNetPacketEntry> next); + csRef <psNetPacketEntry> GetNextPacket(psNetPacket* &packetdata); void* GetData() @@ -221,15 +221,13 @@ { } bool GetPending() { return false; } - void IncRef() {}; - void DecRef() {}; }; template<> -class csComparator<psNetPacketEntry *, psNetPacketEntry *> +class csComparator<csRef<psNetPacketEntry> , csRef<psNetPacketEntry> > { public: - static int Compare(psNetPacketEntry* const &r1, psNetPacketEntry* const &r2) + static int Compare(csRef<psNetPacketEntry> const &r1, csRef<psNetPacketEntry> const &r2) { return csComparator<psNetPacketEntry, psNetPacketEntry>::Compare(*r1, *r2); } Modified: stable/src/server/netmanager.cpp =================================================================== --- stable/src/server/netmanager.cpp 2008-08-01 14:34:20 UTC (rev 1982) +++ stable/src/server/netmanager.cpp 2008-08-01 14:52:48 UTC (rev 1983) @@ -113,15 +113,13 @@ psPingMsg pong(0,ping.id,flags); pong.msg->msgid = GetRandomID(); - psNetPacketEntry *pkt = new + csRef<psNetPacketEntry> pkt; + pkt.AttachNew(new psNetPacketEntry(pong.msg->priority, 0, 0, 0, (uint32_t) pong.msg->bytes->GetTotalSize(), - (uint16_t) pong.msg->bytes->GetTotalSize(), pong.msg->bytes); + (uint16_t) pong.msg->bytes->GetTotalSize(), pong.msg->bytes)); SendFinalPacket(pkt,addr); - - delete pkt; - return false; } @@ -142,9 +140,9 @@ void NetManager::CheckResendPkts() { - csHash<psNetPacketEntry*, PacketKey>::GlobalIterator it (awaitingack.GetIterator()); - psNetPacketEntry *pkt = NULL; - csArray<psNetPacketEntry *> pkts; + csHash<csRef<psNetPacketEntry>, PacketKey>::GlobalIterator it (awaitingack.GetIterator()); + csRef<psNetPacketEntry> pkt; + csArray<csRef<psNetPacketEntry> > pkts; csTicks currenttime = csGetTicks(); @@ -167,7 +165,6 @@ if (!outqueue) { awaitingack.Delete(PacketKey(pkt->clientnum, pkt->packet->pktid), pkt); - pkt->DecRef(); continue; } @@ -201,8 +198,6 @@ Debug2(LOG_NET,"No packet in ack queue :%d\n", pkt->packet->pktid); #endif } - else - pkt->DecRef(); } if(pkts.GetSize() > 0) @@ -480,13 +475,13 @@ // XXX: This is hacky, but we need to send the message to the client // here and now! Because in the next moment he'll be deleted - psNetPacketEntry* pkt = - new psNetPacketEntry(me->priority, newmsg->clientnum, + + csRef<psNetPacketEntry> pkt; + pkt.AttachNew( new psNetPacketEntry(me->priority, newmsg->clientnum, 0, 0, (uint32_t) newmsg->bytes->GetTotalSize(), - (uint16_t) newmsg->bytes->GetTotalSize(), newmsg->bytes); + (uint16_t) newmsg->bytes->GetTotalSize(), newmsg->bytes)); // this will also delete the pkt SendFinalPacket(pkt); - delete pkt; CHECK_FINAL_DECREF(newmsg, "FinalPacket"); break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-08-02 16:25:08
|
Revision: 1989 http://planeshift.svn.sourceforge.net/planeshift/?rev=1989&view=rev Author: mgist Date: 2008-08-02 16:25:16 +0000 (Sat, 02 Aug 2008) Log Message: ----------- - Merged r1986-1988 from trunk. Modified Paths: -------------- stable/docs/history.txt stable/src/client/gui/pawsilluminationwindow.cpp stable/src/client/gui/pawsilluminationwindow.h Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988 Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-08-02 15:58:10 UTC (rev 1988) +++ stable/docs/history.txt 2008-08-02 16:25:16 UTC (rev 1989) @@ -1,3 +1,8 @@ +*** 2008-08-02 by Andreas Heinchen +- Patch for FS#2048 from Arerano +- Patch for FS#2049 to FS#2055 from Arerano +- Patch for FS#1283 from weltall + *** 2008-07-31 by Andreas Heinchen - Fixed FS#426 - stamina drain on map load - refactored the network code to fix leaks and other memory issues Modified: stable/src/client/gui/pawsilluminationwindow.cpp =================================================================== --- stable/src/client/gui/pawsilluminationwindow.cpp 2008-08-02 15:58:10 UTC (rev 1988) +++ stable/src/client/gui/pawsilluminationwindow.cpp 2008-08-02 16:25:16 UTC (rev 1989) @@ -44,6 +44,7 @@ dirty = false; editMode = false; mouseDown = false; + frame = 0; } pawsSketchWindow::~pawsSketchWindow() @@ -190,6 +191,50 @@ // The close button X overrides the clip region so we have to set it back here ClipToParent(); + // if (editMode && !mouseDown) update "new selection" each nth frame + if (editMode && !mouseDown) + { + frame++; + if(frame > 9) + { + frame = 0; + // Error1("Frame>9"); + psPoint pos = PawsManager::GetSingleton().GetMouse()->GetPosition(); + static int prevMouseX = 0; + static int prevMouseY = 0; + + if( (abs(prevMouseX - pos.x)>1) || (abs(prevMouseY - pos.y)>1) ) // only update if the mouse moved (otherwise keyboard editing will be impossible + { + // Error1("prevMouseX != pos.x || prevMouseY != pos.y"); + prevMouseX = pos.x; + prevMouseY = pos.y; + + for (size_t i=0; i<objlist.GetSize(); i++) + { + if (objlist[i]->IsHit(pos.x,pos.y)) + { + // we have it selected already + if(i == selectedIndex) + { + break; + } + + // Unselect old object + if (selectedIndex != SIZET_NOT_FOUND) + { + objlist[selectedIndex]->Select(false); + } + + // Select new object + selectedIndex = i; + objlist[i]->Select(true); + break; + } + } + } + } + } + DrawSketch(); } void pawsSketchWindow::DrawSketch() @@ -456,8 +501,15 @@ int x = (ScreenFrame().xmax - ScreenFrame().xmin)/2; int y = (ScreenFrame().ymax - ScreenFrame().ymin)/2; + // deselect the previous object, if any + if (selectedIndex != SIZET_NOT_FOUND) + { + objlist[selectedIndex]->Select(false); + } + SketchIcon *icon = new SketchIcon(x,y,iconList[0],this); - objlist.Push(icon); + selectedIndex = objlist.Push(icon); + objlist[selectedIndex]->Select(true); } void pawsSketchWindow::NextPrevIcon(int delta) @@ -494,6 +546,8 @@ { objlist.DeleteIndex(selectedIndex); selectedIndex = SIZET_NOT_FOUND; + if (IsMouseDown()) //if the mouse is being used we need to restore it's shape + PawsManager::GetSingleton().GetMouse()->ChangeImage("Skins Normal Mouse Pointer"); } } @@ -522,7 +576,7 @@ } else { - tempFileNameTemplate = "/planeshift/userdata/books/book%d.txt"; + tempFileNameTemplate = "/planeshift/userdata/sketches/sketch%d.xml"; do { tempFileName.Format(tempFileNameTemplate, tempNumber); @@ -582,6 +636,8 @@ objlist[selectedIndex]->Select(false); selectedIndex = SIZET_NOT_FOUND; } + // MouseUp doesn't get fired here IF MouseDown was handled by pawsWidget. + mouseDown = false; // thus we need to prevent having a wrong "mouseDown" state. return pawsWidget::OnMouseDown(button, modifiers,x,y); } @@ -594,7 +650,6 @@ if (selectedIndex != SIZET_NOT_FOUND) { - objlist[selectedIndex]->UpdatePosition(GetLogicalWidth(x-ScreenFrame().xmin),GetLogicalHeight(y-ScreenFrame().ymin)); PawsManager::GetSingleton().GetMouse()->ChangeImage("Skins Normal Mouse Pointer"); dirty = true; return true; @@ -889,21 +944,38 @@ { iGraphics2D *graphics2D = parent->GetG2D(); - int black = graphics2D->FindRGB( 0,0,0 ); + //int black = graphics2D->FindRGB( 0,0,0 ); + int color; + bool showBoxes, showFirstBox, showSecondBox; + if(selected) + color = graphics2D->FindRGB( 150,0,0 ); + else + color = graphics2D->FindRGB( 0,0,0 ); + showBoxes = (!selected || (frame > 15 && !parent->mouseDown)); + showFirstBox = (showBoxes || dragMode == 2); + showSecondBox = (showBoxes || dragMode == 1); + + graphics2D->DrawLine( parent->GetActualWidth(x)+parent->ScreenFrame().xmin, parent->GetActualHeight(y)+parent->ScreenFrame().ymin, parent->GetActualWidth(x2)+parent->ScreenFrame().xmin, parent->GetActualHeight(y2)+parent->ScreenFrame().ymin, - black ); - - if (parent->IsMouseDown() || !selected || frame > 15) + color ); + + //if (parent->IsMouseDown() || !selected || frame > 15) + //{ + if(showFirstBox) { parent->DrawBlackBox(parent->GetActualWidth(x)+parent->ScreenFrame().xmin-3, parent->GetActualHeight(y)+parent->ScreenFrame().ymin-3); + } + if(showSecondBox) + { parent->DrawBlackBox(parent->GetActualWidth(x2)+parent->ScreenFrame().xmin-3, parent->GetActualHeight(y2)+parent->ScreenFrame().ymin-3); } + //} if (selected) frame = (frame > 29) ? 0 : frame+1; } @@ -943,9 +1015,52 @@ rect.Normalize(); + int xDiff, yDiff; + xDiff = rect.xmax - rect.xmin; + yDiff = rect.ymax - rect.ymin; + + // give a chance to select horizontal Lines + if(xDiff < 3) + { + rect.xmax += 3 -xDiff; //correct would be 3-xDiff/2 (but we an expensive division isn't really required here. a diff of 6 or 5 doesn't really make a difference. + rect.xmin -= 3 -xDiff; + } + + // give a chance to select vertical Lines + if(yDiff < 3) + { + rect.ymax += 3 -yDiff; + rect.ymin -= 3 -yDiff; + } + if (!rect.Contains(mouseX,mouseY)) return false; + // calculate the normal distance of the point (mouse pos) to the line: + // A (vector) + // .-'| normalDist + // .-' | + // B-------------------B1 (vector B, origin at x, y of this line) + csVector2 b1(x, y); + csVector2 a(mouseX, mouseY); + a-=b1; + csVector2 b(x2, y2); + b-=b1; + + csVector2 c; + float dotab = ( a.x * b.x ) + ( a.y * b.y ); + float dotb = ( b.x * b.x ) + ( b.y * b.y ); + float dotabDivb = dotab / dotb; + c.x = b.x * dotabDivb; + c.y = b.y * dotabDivb; + + csVector2 e(a - c); + float distFromLine = e.Norm(); + if(!(distFromLine <= 2.5 && distFromLine >= -2.5)) + { + return false; + } + offsetX = mouseX - x; offsetY = mouseY - y; return true; @@ -962,13 +1077,21 @@ rect.ymin = 0; rect.Normalize(); - - _x -= offsetX; // This backs off the cursor from where it was - _y -= offsetY; - //if we are taking the second point we must check it's position - dx = _x - (dragMode == 2 ? x2 : x); - dy = _y - (dragMode == 2 ? y2 : y); + if(parent->IsMouseDown()) //if we are using the mouse to move this thing in real time we must do some changes from when the keyboard is used + { + _x -= offsetX; // This backs off the cursor from where it was + _y -= offsetY; + + //if we are taking the second point we must check it's position + dx = _x - (dragMode == 2 ? x2 : x); + dy = _y - (dragMode == 2 ? y2 : y); + } + else //the keyboard is being used + { + dx = _x - x; + dy = _y - y; + } switch (dragMode) { Modified: stable/src/client/gui/pawsilluminationwindow.h =================================================================== --- stable/src/client/gui/pawsilluminationwindow.h 2008-08-02 15:58:10 UTC (rev 1988) +++ stable/src/client/gui/pawsilluminationwindow.h 2008-08-02 16:25:16 UTC (rev 1989) @@ -115,6 +115,8 @@ int primCount; bool readOnly; bool stringPending; + + int frame; // incremented each frame till 10 (to update selection without clicking) pawsWidget* FeatherTool; pawsWidget* TextTool; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-08-02 18:17:27
|
Revision: 1992 http://planeshift.svn.sourceforge.net/planeshift/?rev=1992&view=rev Author: mgist Date: 2008-08-02 18:17:35 +0000 (Sat, 02 Aug 2008) Log Message: ----------- - Merged r1990-1991 from trunk. Modified Paths: -------------- stable/docs/history.txt stable/src/client/pscelclient.cpp stable/src/server/adminmanager.cpp Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988,1990-1991 Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-08-02 18:11:54 UTC (rev 1991) +++ stable/docs/history.txt 2008-08-02 18:17:35 UTC (rev 1992) @@ -1,7 +1,7 @@ *** 2008-08-02 by Andreas Heinchen - Patch for FS#2048 from Arerano - Patch for FS#2049 to FS#2055 from Arerano -- Patch for FS#1283 from weltall +- Patch for FS#1283, FS#1731, FS#2045 from weltall *** 2008-07-31 by Andreas Heinchen - Fixed FS#426 - stamina drain on map load Modified: stable/src/client/pscelclient.cpp =================================================================== --- stable/src/client/pscelclient.cpp 2008-08-02 18:11:54 UTC (rev 1991) +++ stable/src/client/pscelclient.cpp 2008-08-02 18:17:35 UTC (rev 1992) @@ -1725,6 +1725,9 @@ fadein = 0.0; fadeout = 1.5; } + + //removes the idle_var animation if it's in execution to avoid interferences. + cal3dstate->GetCal3DModel()->getMixer()->removeAction(cal3dstate->FindAnim("idle_var")); return cal3dstate->SetAnimAction(anim,fadein,fadeout); } @@ -1755,11 +1758,11 @@ SetIdleAnimation(psengine->GetCharControl()->GetMovementManager()->GetModeIdleAnim(movementMode)); break; case psModeMessage::SPELL_CASTING: - SetIdleAnimation("cast"); break; case psModeMessage::COMBAT: // TODO: Get stance and set anim for that stance + cal3dstate->ClearAllAnims(); SetIdleAnimation("combat stand"); break; Modified: stable/src/server/adminmanager.cpp =================================================================== --- stable/src/server/adminmanager.cpp 2008-08-02 18:11:54 UTC (rev 1991) +++ stable/src/server/adminmanager.cpp 2008-08-02 18:17:35 UTC (rev 1992) @@ -5259,7 +5259,7 @@ } // If the first name should be unique, check it - if (checkFirst && type == PSCHARACTER_TYPE_PLAYER) + if (data.uniqueName && checkFirst && type == PSCHARACTER_TYPE_PLAYER) { if (!psCharCreationManager::IsUnique(data.newName)) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-08-03 15:22:16
|
Revision: 1995 http://planeshift.svn.sourceforge.net/planeshift/?rev=1995&view=rev Author: mgist Date: 2008-08-03 15:22:24 +0000 (Sun, 03 Aug 2008) Log Message: ----------- - Merged r1994 from trunk. Modified Paths: -------------- stable/data/help.xml stable/docs/history.txt stable/src/client/gui/pawsgmgui.cpp stable/src/server/adminmanager.cpp stable/src/server/adminmanager.h Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988,1990-1991 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988,1990-1991,1994 Modified: stable/data/help.xml =================================================================== --- stable/data/help.xml 2008-08-03 14:34:51 UTC (rev 1994) +++ stable/data/help.xml 2008-08-03 15:22:24 UTC (rev 1995) @@ -402,9 +402,9 @@ <topic name="/changeguildname">/changeguildname Change the selected guilds name.</topic> - <topic name="/changename">/changename [name] [unique] [new name] [new last name | no] + <topic name="/changename">/changename name [force|forceall] new name [new lastname] -Changes the player's name to something else. The unique parameter is either no or nothing, if it is no, the name doesn't have to have a unique first and last name (Used for weddings). If the lastname is no the lastname will be removed</topic> +Changes the player's name. If force is given, the lastname doesn't have to be unique. If forceall is given name and lastname doesn't have to be unique. If the lastname is not given the lastname will be preseved. If no is given as lastname, the lastname will be removed.</topic> <topic name="/charlist">/charlist player Informs the GM of the IDs and names of all characters on the same account as the account of the given character.</topic> Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-08-03 14:34:51 UTC (rev 1994) +++ stable/docs/history.txt 2008-08-03 15:22:24 UTC (rev 1995) @@ -1,4 +1,7 @@ *** 2008-08-02 by Andreas Heinchen +- Fixing FS#2045, GMs can now take monster names. "/changename" syntax changed! + +*** 2008-08-02 by Andreas Heinchen - Patch for FS#2048 from Arerano - Patch for FS#2049 to FS#2055 from Arerano - Patch for FS#1283, FS#1731, FS#2045 from weltall Modified: stable/src/client/gui/pawsgmgui.cpp =================================================================== --- stable/src/client/gui/pawsgmgui.cpp 2008-08-03 14:34:51 UTC (rev 1994) +++ stable/src/client/gui/pawsgmgui.cpp 2008-08-03 15:22:24 UTC (rev 1995) @@ -322,7 +322,7 @@ first = NormalizeCharacterName(first); last = NormalizeCharacterName(last); - cmd.Format("/changename %s no %s %s",GetSelectedName(),first.GetData(),last.GetData()); + cmd.Format("/changename %s force %s %s",GetSelectedName(),first.GetData(),last.GetData()); updateAfter = true; break; @@ -999,6 +999,7 @@ csString firstName,lastName; + // TODO Does this make sense? Split the name to concat it? if (place == -1) { firstName = text; @@ -1010,7 +1011,7 @@ } csString cmd; - cmd.Format("/changename %s no %s %s", GetSelectedName(), firstName.GetData(), lastName.GetData()); + cmd.Format("/changename %s force %s %s", GetSelectedName(), firstName.GetData(), lastName.GetData()); psengine->GetCmdHandler()->Execute(cmd); //Need to update our list QueryServer(); Modified: stable/src/server/adminmanager.cpp =================================================================== --- stable/src/server/adminmanager.cpp 2008-08-03 14:34:51 UTC (rev 1994) +++ stable/src/server/adminmanager.cpp 2008-08-03 15:22:24 UTC (rev 1995) @@ -372,13 +372,25 @@ { player = words[1]; - if (words[2] == "no") + int param = 2; + + uniqueName = true; + uniqueFirstName = true; + + if (words[param] == "force") + { uniqueName = false; - else - uniqueName = true; + param++; + } + else if (words[param] == "forceall") + { + uniqueName = false; + uniqueFirstName = false; + param++; + } - newName = words[3]; - newLastName = words[4]; + newName = words[param++]; + newLastName = words[param++]; return true; } @@ -5126,51 +5138,44 @@ void AdminManager::ChangeName(MsgEntry* me, psAdminCmdMessage& msg, AdminCmdData& data,Client *client) -{ - WordArray words (msg.cmd, false); - csString pid_str = words[1]; // Player is changed to string so no point in testing that if multiple entites with same name. - +{ if (!data.player.Length() || !data.newName.Length()) { - psserver->SendSystemInfo(me->clientnum,"Syntax: \"/changename <OldName|pid:[id]> <yes|no> <NewName> [NewLastName|No]\""); + psserver->SendSystemInfo(me->clientnum,"Syntax: \"/changename <OldName|pid:[id]> [force|forceall] <NewName> [NewLastName]\""); return; } unsigned int pid = 0; + Client* target = NULL; - if (pid_str.StartsWith("pid:",true) && pid_str.Length() > 4) // Find by player ID + if (data.player.StartsWith("pid:",true) && data.player.Length() > 4) // Find by player ID { - pid = atoi( pid_str.Slice(4).GetData() ); + pid = atoi( data.player.Slice(4).GetData() ); if (!pid) { psserver->SendSystemError(me->clientnum,"Error, bad PID"); return; } - + else + { + target = clients->FindPlayer(pid); + } } + else + { + target = clients->Find(data.player); + } + bool online = (target != NULL); // Fix names data.newName = NormalizeCharacterName(data.newName); data.newLastName = NormalizeCharacterName(data.newLastName); csString name = NormalizeCharacterName(data.player); - bool online; unsigned int id = 0; unsigned int type = 0; unsigned int gid = 0; - Client* target = NULL; - - if (pid) - { - target = clients->FindPlayer(pid); - } - else - { - target = clients->Find(data.player); - } - online = (target != NULL); - csString prevFirstName,prevLastName; // Check the DB if the player isn't online @@ -5194,7 +5199,7 @@ } else if (result.Count() != 1) { - psserver->SendSystemError(me->clientnum,"Multiple characters with same name '%s' use pid.",name.GetData()); + psserver->SendSystemError(me->clientnum,"Multiple characters with same name '%s'. Use pid.",name.GetData()); return; } else @@ -5235,49 +5240,50 @@ checkLast = false; } - if (data.player == data.newName) + if (data.newName == name) checkFirst = false; if (!checkFirst && !checkLast && data.newLastName.Length() != 0) return; - if(checkFirst) + if(checkFirst && !psCharCreationManager::FilterName(data.newName)) { - if (!psCharCreationManager::FilterName(data.newName)) - { - psserver->SendSystemError(me->clientnum,"The name %s is invalid!",data.newName.GetData()); - return; - } + psserver->SendSystemError(me->clientnum,"The name %s is invalid!",data.newName.GetData()); + return; + } + + if(checkLast && !psCharCreationManager::FilterName(data.newLastName)) + { + psserver->SendSystemError(me->clientnum,"The last name %s is invalid!",data.newLastName.GetData()); + return; } - if(checkLast) - { - if (!psCharCreationManager::FilterName(data.newLastName)) - { - psserver->SendSystemError(me->clientnum,"The last name %s is invalid!",data.newLastName.GetData()); - return; - } - } + bool nameUnique = psCharCreationManager::IsUnique(data.newName); // If the first name should be unique, check it - if (data.uniqueName && checkFirst && type == PSCHARACTER_TYPE_PLAYER) + if (checkFirst && data.uniqueFirstName && type == PSCHARACTER_TYPE_PLAYER && !nameUnique) { - if (!psCharCreationManager::IsUnique(data.newName)) - { - psserver->SendSystemError(me->clientnum,"The name %s is not unique!",data.newName.GetData()); - return; - } + psserver->SendSystemError(me->clientnum,"The name %s is not unique!",data.newName.GetData()); + return; } + bool secondNameUnique = psCharCreationManager::IsLastNameUnique(data.newLastName); // If the last name should be unique, check it - if (data.uniqueName && checkLast && data.newLastName.Length()) + if (checkLast && data.uniqueName && data.newLastName.Length() && !secondNameUnique) { - if (!psCharCreationManager::IsLastNameUnique(data.newLastName)) - { - psserver->SendSystemError(me->clientnum,"The last name %s is not unique!",data.newLastName.GetData()); - return; - } + psserver->SendSystemError(me->clientnum,"The last name %s is not unique!",data.newLastName.GetData()); + return; } + + if (checkFirst && !data.uniqueFirstName && type == PSCHARACTER_TYPE_PLAYER && !nameUnique) + { + psserver->SendSystemResult(me->clientnum,"WARNING: Changing despite the name %s is not unique!",data.newName.GetData()); + } + if (checkLast && !data.uniqueName && data.newLastName.Length() && !secondNameUnique) + { + psserver->SendSystemResult(me->clientnum,"Changing despite the last name %s is not unique!",data.newLastName.GetData()); + } + // Apply csString fullName; PS_ID actorId = 0; Modified: stable/src/server/adminmanager.h =================================================================== --- stable/src/server/adminmanager.h 2008-08-03 14:34:51 UTC (rev 1994) +++ stable/src/server/adminmanager.h 2008-08-03 15:22:24 UTC (rev 1995) @@ -128,7 +128,7 @@ int rainDrops, density, fade; unsigned int mins, hours, days; float amt, x, y, z, rot; - bool uniqueName,help,insert; + bool uniqueName, uniqueFirstName,help,insert; float radius, range; unsigned short stackCount; INSTANCE_ID instance; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-08-06 16:49:33
|
Revision: 2005 http://planeshift.svn.sourceforge.net/planeshift/?rev=2005&view=rev Author: mgist Date: 2008-08-06 16:49:38 +0000 (Wed, 06 Aug 2008) Log Message: ----------- - Merged r1996-2001,2003-2004 from trunk. Modified Paths: -------------- stable/configure.ac stable/data/gui/gmspawn.xml stable/docs/compiling.html stable/docs/history.txt stable/mk/autoconf/checkcommon.m4 stable/mk/autoconf/crystal.m4 stable/mk/autoconf/progver.m4 stable/mk/autoconf/qualify.m4 stable/mk/jam/flags.jam stable/mk/jam/msvcgen.jam stable/mk/jam/static.jam stable/src/client/gui/pawsgmspawn.cpp stable/src/client/gui/pawsgmspawn.h stable/src/client/psmovement.cpp stable/src/common/paws/pawslistbox.cpp stable/src/common/paws/pawstree.cpp Removed Paths: ------------- stable/mk/autoconf/checkpython.m4 Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988,1990-1991,1994 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988,1990-1991,1994,1996-2001,2003-2004 Modified: stable/configure.ac =================================================================== --- stable/configure.ac 2008-08-06 16:41:21 UTC (rev 2004) +++ stable/configure.ac 2008-08-06 16:49:38 UTC (rev 2005) @@ -91,15 +91,23 @@ case $cs_host_target in macosx) - CS_CHECK_BUILD_FLAGS([for -msse flag], [cs_cv_prog_cc_msse], [CS_CREATE_TUPLE([-msse])]) - AS_IF([test -n "$cs_cv_prog_cc_msse"], [CS_EMIT_BUILD_PROPERTY([COMPILER.CFLAGS], - [$cs_cv_prog_cc_msse], [+])]) + CS_CHECK_BUILD_FLAGS([for -msse flag], [cs_cv_prog_cc_msse], + [CS_CREATE_TUPLE([-msse])]) + AS_IF([test -n "$cs_cv_prog_cc_msse"], + [CS_EMIT_BUILD_PROPERTY([COMPILER.CFLAGS], + [$cs_cv_prog_cc_msse], [+])]) - CS_CHECK_BUILD_FLAGS([for -msse2 flag], [cs_cv_prog_cc_msse2], [CS_CREATE_TUPLE([-msse2])]) - AS_IF([test -n "$cs_cv_prog_cc_msse2"], [CS_EMIT_BUILD_PROPERTY([COMPILER.CFLAGS], - [$cs_cv_prog_cc_msse2], [+]) - CS_EMIT_BUILD_PROPERTY([COMPILER.CFLAGS], - ["-mfpmath=sse"], [+])]) + CS_CHECK_BUILD_FLAGS([for -msse2 flag], [cs_cv_prog_cc_msse2], + [CS_CREATE_TUPLE([-msse2])]) + AS_IF([test -n "$cs_cv_prog_cc_msse2"], + [CS_EMIT_BUILD_PROPERTY([COMPILER.CFLAGS], + [$cs_cv_prog_cc_msse2], [+])]) + + CS_CHECK_BUILD_FLAGS([for -mfpmath=sse flag], [cs_cv_prog_cc_mfpmath_sse], + [CS_CREATE_TUPLE([-mfpmath=sse])]) + AS_IF([test -n "$cs_cv_prog_cc_mfpmath_sse"], + [CS_EMIT_BUILD_PROPERTY([COMPILER.CFLAGS], + [$cs_cv_prog_cc_mfpmath_sse], [+])]) ;; esac @@ -324,7 +332,7 @@ AS_IF([test -z "$with_cs"], [with_cs=yes]) AS_IF([test $with_cs != no], -[CS_PATH_CRYSTAL_EMIT([1.3], [], +[CS_PATH_CRYSTAL_EMIT([1.4], [], [AC_MSG_ERROR([ *** Crystal Space could not be found or was unusable. The latest version is *** always available from http://www.crystalspace3d.org/ Modified: stable/data/gui/gmspawn.xml =================================================================== --- stable/data/gui/gmspawn.xml 2008-08-06 16:41:21 UTC (rev 2004) +++ stable/data/gui/gmspawn.xml 2008-08-06 16:49:38 UTC (rev 2005) @@ -80,9 +80,24 @@ </widget> <widget name="Spawn" factory="pawsButton" id ="1000" visible="no"> - <frame x="310" y="430" width="150" height="20" border="no" /> + <frame x="310" y="410" width="150" height="20" border="no" /> <bgimage resource="Blue Title" alpha="0" fade="no" /> <label text="Spawn item"/> </widget> + + <widget name="meshfactname" factory="pawsTextBox" visible="no" tooltip="Name of the mesh fact"> + <frame x="310" y="430" width="380" height="20" border="no" /> + <text string="none"/> + </widget> + + <widget name="meshname" factory="pawsTextBox" visible="no" tooltip="Name of the mesh"> + <frame x="310" y="450" width="380" height="20" border="no" /> + <text string="none"/> + </widget> + + <widget name="imagename" factory="pawsTextBox" visible="no" tooltip="Name of the pic"> + <frame x="310" y="470" width="380" height="20" border="no" /> + <text string="none"/> + </widget> </widget> </widget_description> Modified: stable/docs/compiling.html =================================================================== --- stable/docs/compiling.html 2008-08-06 16:41:21 UTC (rev 2004) +++ stable/docs/compiling.html 2008-08-06 16:49:38 UTC (rev 2005) @@ -9,15 +9,15 @@ // Source versions are listed here and automatically updated in the body. // Standard revisions (CSrev) are the ones that are compatible with Laanx. // An additional CS revision (CSrev_HEAD) may be specified for the latest version of PS. - var CSrev = "30463"; // CS_SOURCE_REV + var CSrev = "30564"; // CS_SOURCE_REV var CAL3Drev = "493"; // CAL3D_SOURCE_REV - var CSrev_HEAD = "30463"; // CS_SOURCE_REV_HEAD + var CSrev_HEAD = "30564"; // CS_SOURCE_REV_HEAD var CAL3Drev_HEAD = "493"; // CAL3D_SOURCE_REV_HEAD var csWinLibsVersionStab = "1.3_004"; // cs win32 libs version. var csWinLibsVersion = "1.3_004"; // cs win32 libs version. //Update date and author, to be changed everytime and updates occurred - var UpdateDate = "21 July 2008"; //Date when the update occurred - var UpdateAuthor = "Steven Patrick"; //Author of the update + var UpdateDate = "05 Aug 2008"; //Date when the update occurred + var UpdateAuthor = "Andreas Heinchen"; //Author of the update --> </script> Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-08-06 16:41:21 UTC (rev 2004) +++ stable/docs/history.txt 2008-08-06 16:49:38 UTC (rev 2005) @@ -1,3 +1,10 @@ +*** 2008-08-04 by Andreas Heinchen +- Addition to FS#2069 and FS#1373 by weltall +- Fixed FS#2076, patch by weltall + +*** 2008-08-04 by Andreas Heinchen +- Fixed FS#2069, fix by weltall + *** 2008-08-02 by Andreas Heinchen - Fixing FS#2045, GMs can now take monster names. "/changename" syntax changed! Modified: stable/mk/autoconf/checkcommon.m4 =================================================================== --- stable/mk/autoconf/checkcommon.m4 2008-08-06 16:41:21 UTC (rev 2004) +++ stable/mk/autoconf/checkcommon.m4 2008-08-06 16:49:38 UTC (rev 2005) @@ -1,5 +1,5 @@ #============================================================================== -# Copyright (C)2003-2006 by Eric Sunshine <sun...@su...> +# Copyright (C)2003-2008 by Eric Sunshine <sun...@su...> # # This library is free software; you can redistribute it and/or modify it # under the terms of the GNU Library General Public License as published by @@ -19,116 +19,150 @@ AC_PREREQ([2.56]) #------------------------------------------------------------------------------ -# CS_CHECK_COMMON_TOOLS_LINK -# Checks for common tools related to linking. +# CS_CHECK_COMMON_TOOLS_LINK([EMITTER]) +# Checks for common tools related to linking. Results of the checks are +# recorded with CS_EMIT_BUILD_PROPERTY() via the optional EMITTER. If +# EMITTER is omitted, then CS_EMIT_BUILD_PROPERTY()'s default emitter is +# employed. #------------------------------------------------------------------------------ AC_DEFUN([CS_CHECK_COMMON_TOOLS_LINK], - [ - # The default RANLIB in Jambase is wrong on some platforms, and is also - # unsuitable during cross-compilation, so we set the value unconditionally - # (sixth argument of CS_EMIT_BUILD_PROPERTY). + [# The default RANLIB in Jambase is wrong on some platforms, and is also + # unsuitable during cross-compilation, so value is set unconditionally. AC_PROG_RANLIB - CS_EMIT_BUILD_PROPERTY([RANLIB], [$RANLIB], [], [], [], [Y]) + CS_EMIT_BUILD_PROPERTY([RANLIB], [$RANLIB], [unconditional], [], [$1]) CS_CHECK_TOOLS([DLLTOOL], [dlltool]) - CS_EMIT_BUILD_PROPERTY([CMD.DLLTOOL], [$DLLTOOL]) + CS_EMIT_BUILD_PROPERTY([CMD.DLLTOOL], [$DLLTOOL], [], [], [$1]) CS_CHECK_TOOLS([DLLWRAP], [dllwrap]) AS_IF([test "$cs_mno_cygwin" = "yes"], [DLLWRAP="$DLLWRAP --target i386-mingw32"]) - CS_EMIT_BUILD_PROPERTY([CMD.DLLWRAP], [$DLLWRAP]) + CS_EMIT_BUILD_PROPERTY([CMD.DLLWRAP], [$DLLWRAP], [], [], [$1]) CS_CHECK_TOOLS([WINDRES], [windres]) - CS_EMIT_BUILD_PROPERTY([CMD.WINDRES], [$WINDRES]) + CS_EMIT_BUILD_PROPERTY([CMD.WINDRES], [$WINDRES], [], [], [$1]) CS_CHECK_TOOLS([STRINGS], [strings]) - CS_EMIT_BUILD_PROPERTY([CMD.STRINGS], [$STRINGS]) + CS_EMIT_BUILD_PROPERTY([CMD.STRINGS], [$STRINGS], [], [], [$1]) CS_CHECK_TOOLS([OBJCOPY], [objcopy]) - CS_EMIT_BUILD_PROPERTY([CMD.OBJCOPY], [$OBJCOPY]) + CS_EMIT_BUILD_PROPERTY([CMD.OBJCOPY], [$OBJCOPY], [], [], [$1]) CS_CHECK_LIBTOOL - CS_EMIT_BUILD_PROPERTY([LIBTOOL], [$LIBTOOL]) - CS_EMIT_BUILD_PROPERTY([APPLE_LIBTOOL], [$APPLE_LIBTOOL]) - ]) + CS_EMIT_BUILD_PROPERTY([LIBTOOL], [$LIBTOOL], [], [], [$1]) + CS_EMIT_BUILD_PROPERTY([APPLE_LIBTOOL], [$APPLE_LIBTOOL], [], [], [$1])]) #------------------------------------------------------------------------------ -# CS_CHECK_COMMON_TOOLS_BASIC -# Checks for basic tools for building things. +# CS_CHECK_COMMON_TOOLS_BASIC([EMITTER]) +# Checks for basic tools for building things. Results of the checks are +# recorded with CS_EMIT_BUILD_PROPERTY() via the optional EMITTER. If +# EMITTER is omitted, then CS_EMIT_BUILD_PROPERTY()'s default emitter is +# employed. #------------------------------------------------------------------------------ AC_DEFUN([CS_CHECK_COMMON_TOOLS_BASIC], [CS_CHECK_MKDIR - CS_EMIT_BUILD_PROPERTY([CMD.MKDIR], [$MKDIR]) - CS_EMIT_BUILD_PROPERTY([CMD.MKDIRS], [$MKDIRS]) + CS_EMIT_BUILD_PROPERTY([CMD.MKDIR], [$MKDIR], [], [], [$1]) + CS_EMIT_BUILD_PROPERTY([CMD.MKDIRS], [$MKDIRS], [], [], [$1]) - CS_CHECK_PROGS([INSTALL], [install]) - CS_EMIT_BUILD_PROPERTY([INSTALL], [$INSTALL]) + CS_CHECK_PROGS([INSTALL], [install], [], [], [$1]) + CS_EMIT_BUILD_PROPERTY([INSTALL], [$INSTALL], [], [], [$1]) AC_PROG_LN_S - CS_EMIT_BUILD_PROPERTY([LN_S], [$LN_S])]) + CS_EMIT_BUILD_PROPERTY([LN_S], [$LN_S], [], [], [$1])]) #------------------------------------------------------------------------------ -# CS_CHECK_COMMON_TOOLS_DOC_TEXINFO -# Checks for tools to generate documentation from texinfo files. +# CS_CHECK_COMMON_TOOLS_DOC_TEXINFO([EMITTER]) +# Checks for tools to generate documentation from texinfo files. Results +# of the checks are recorded with CS_EMIT_BUILD_PROPERTY() via the +# optional EMITTER. If EMITTER is omitted, then +# CS_EMIT_BUILD_PROPERTY()'s default emitter is employed. #------------------------------------------------------------------------------ AC_DEFUN([CS_CHECK_COMMON_TOOLS_DOC_TEXINFO], [CS_CHECK_PROGS([TEXI2DVI], [texi2dvi]) - CS_EMIT_BUILD_PROPERTY([CMD.TEXI2DVI], [$TEXI2DVI]) + CS_EMIT_BUILD_PROPERTY([CMD.TEXI2DVI], [$TEXI2DVI], [], [], [$1]) CS_CHECK_PROGS([TEXI2PDF], [texi2pdf]) - CS_EMIT_BUILD_PROPERTY([CMD.TEXI2PDF], [$TEXI2PDF]) + CS_EMIT_BUILD_PROPERTY([CMD.TEXI2PDF], [$TEXI2PDF], [], [], [$1]) CS_CHECK_PROGS([DVIPS], [dvips]) - CS_EMIT_BUILD_PROPERTY([CMD.DVIPS], [$DVIPS]) + CS_EMIT_BUILD_PROPERTY([CMD.DVIPS], [$DVIPS], [], [], [$1]) CS_CHECK_PROGS([DVIPDF], [dvipdf]) - CS_EMIT_BUILD_PROPERTY([CMD.DVIPDF], [$DVIPDF]) + CS_EMIT_BUILD_PROPERTY([CMD.DVIPDF], [$DVIPDF], [], [], [$1]) CS_CHECK_PROGS([MAKEINFO], [makeinfo]) - CS_EMIT_BUILD_PROPERTY([CMD.MAKEINFO], [$MAKEINFO])]) + CS_EMIT_BUILD_PROPERTY([CMD.MAKEINFO], [$MAKEINFO], [], [], [$1])]) #------------------------------------------------------------------------------ -# CS_CHECK_COMMON_TOOLS_DOC_DOXYGEN -# Checks for tools to generate source documentation via doxygen. +# CS_CHECK_COMMON_TOOLS_DOC_DOXYGEN([EMITTER]) +# Checks for tools to generate source documentation via doxygen. Results +# of the checks are recorded with CS_EMIT_BUILD_PROPERTY() via the +# optional EMITTER. If EMITTER is omitted, then +# CS_EMIT_BUILD_PROPERTY()'s default emitter is employed. #------------------------------------------------------------------------------ AC_DEFUN([CS_CHECK_COMMON_TOOLS_DOC_DOXYGEN], [CS_CHECK_PROGS([DOXYGEN], [doxygen]) - CS_EMIT_BUILD_PROPERTY([CMD.DOXYGEN], [$DOXYGEN]) + CS_EMIT_BUILD_PROPERTY([CMD.DOXYGEN], [$DOXYGEN], [], [], [$1]) CS_CHECK_TOOLS([DOT], [dot]) - CS_EMIT_BUILD_PROPERTY([CMD.DOT], [$DOT])]) + CS_EMIT_BUILD_PROPERTY([CMD.DOT], [$DOT], [], [], [$1])]) #------------------------------------------------------------------------------ -# CS_CHECK_COMMON_TOOLS_ICONS -# Checks for tools required by the icon generation rules from icons.jam. +# CS_CHECK_COMMON_TOOLS_ICONS([EMITTER]) +# Checks for tools required by the icon generation rules from +# icons.jam. Results of the checks are recorded with +# CS_EMIT_BUILD_PROPERTY() via the optional EMITTER. If EMITTER is +# omitted, then CS_EMIT_BUILD_PROPERTY()'s default emitter is employed. #------------------------------------------------------------------------------ AC_DEFUN([CS_CHECK_COMMON_TOOLS_ICONS], [# rsvg: for svg to png conversion CS_CHECK_PROGS([RSVG], [rsvg]) - CS_EMIT_BUILD_PROPERTY([CMD.RSVG], [$RSVG]) + CS_EMIT_BUILD_PROPERTY([CMD.RSVG], [$RSVG], [], [], [$1]) # icotool: for creating Win32 ICO files CS_CHECK_PROGS([ICOTOOL], [icotool]) - CS_EMIT_BUILD_PROPERTY([CMD.ICOTOOL], [$ICOTOOL]) + CS_EMIT_BUILD_PROPERTY([CMD.ICOTOOL], [$ICOTOOL], [], [], [$1]) # convert: for various image manipulations from both the svg conversion and # ICO creation. CS_CHECK_PROGS([CONVERT], [convert]) - CS_EMIT_BUILD_PROPERTY([CMD.CONVERT], [$CONVERT])]) + CS_EMIT_BUILD_PROPERTY([CMD.CONVERT], [$CONVERT], [], [], [$1])]) #------------------------------------------------------------------------------ -# CS_CHECK_COMMON_LIBS -# Check for typical required libraries (libm, libmx, libdl, libnsl). +# CS_CHECK_COMMON_LIBS([EMITTER]) +# Check for typical required libraries (libc, libm, libmx, libdl, +# libnsl). Results of the checks are recorded under build key +# "COMPILER.LFLAGS" via CS_EMIT_BUILD_PROPERTY() using the optional +# EMITTER. If EMITTER is omitted, then CS_EMIT_BUILD_PROPERTY()'s default +# emitter is employed. #------------------------------------------------------------------------------ AC_DEFUN([CS_CHECK_COMMON_LIBS], [AC_LANG_PUSH([C]) + + AC_CHECK_LIB([c], [fopen]) + AS_IF([test $ac_cv_lib_c_fopen = yes], + [CS_EMIT_BUILD_PROPERTY([COMPILER.LFLAGS], [-lc], [append],[],[$1])]) + AC_CHECK_LIB([m], [pow], [cs_cv_libm_libs=-lm], [cs_cv_libm_libs=]) AC_CHECK_LIB([m], [cosf], [cs_cv_libm_libs=-lm]) + AS_IF([test $ac_cv_lib_m_pow = yes || test $ac_cv_lib_m_cosf = yes], + [CS_EMIT_BUILD_PROPERTY([COMPILER.LFLAGS], [-lm], [append],[],[$1])]) + AC_CHECK_LIB([mx], [cosf]) + AS_IF([test $ac_cv_lib_mx_cosf = yes], + [CS_EMIT_BUILD_PROPERTY([COMPILER.LFLAGS], [-lmx], [append],[],[$1])]) + AC_CHECK_LIB([dl], [dlopen], [cs_cv_libdl_libs=-ldl], [cs_cv_libdl_libs=]) + AS_IF([test $ac_cv_lib_dl_dlopen = yes], + [CS_EMIT_BUILD_PROPERTY([COMPILER.LFLAGS], [-ldl], [append],[],[$1])]) + AC_CHECK_LIB([nsl], [gethostbyname]) - AC_LANG_POP([C])]) + AS_IF([test $ac_cv_lib_nsl_gethostbyname = yes], + [CS_EMIT_BUILD_PROPERTY([COMPILER.LFLAGS], [-lnsl], [append],[],[$1])]) + + AC_LANG_POP([C]) +]) Deleted: stable/mk/autoconf/checkpython.m4 =================================================================== --- stable/mk/autoconf/checkpython.m4 2008-08-06 16:41:21 UTC (rev 2004) +++ stable/mk/autoconf/checkpython.m4 2008-08-06 16:49:38 UTC (rev 2005) @@ -1,185 +0,0 @@ -# checkpython.m4 -*- Autoconf -*- -#============================================================================== -# Copyright (C)2003,2004 by Eric Sunshine <sun...@su...> -# -# This library is free software; you can redistribute it and/or modify it -# under the terms of the GNU Library General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at your -# option) any later version. -# -# This library is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public -# License for more details. -# -# You should have received a copy of the GNU Library General Public License -# along with this library; if not, write to the Free Software Foundation, -# Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -#============================================================================== -AC_PREREQ([2.56]) - -#------------------------------------------------------------------------------ -# CS_CHECK_PYTHON([EMITTER], [SDK-CHECK-DEFAULT], [WITH-DESCRIPTION]) -# Check for Python and a working Python SDK. Sets the shell variable -# PYTHON to the name of the Python interpreter and invokes AC_SUBST(). -# The shell variable cs_cv_python is set to "yes" if a working Python SDK -# is discovered, else "no". If available, then the variables -# cs_cv_python_cflags, cs_cv_python_lflags, and cs_cv_python_libs are -# set. (As a convenience, these variables can be emitted to an output -# file with CS_EMIT_BUILD_RESULT() by passing "cs_cv_python" as its -# CACHE-VAR argument.) As a convenience, the shell variable -# cs_cv_python_ext is set to the suffix of Python extension modules (with -# leading dot; typically ".dll" or ".so"). The SDK check can be enabled -# or disabled with --with[out]-python. SDK-CHECK-DEFAULT should be -# "with" or "without". If SDK-CHECK-DEFAULT is "with" or if it is -# ommitted, then --with-python is the default, else --without-python is -# the default. WITH-DESCRIPTION is the description to use for the -# --with[out]-python option. The literal string "use" (or "do not use") -# is prepended to WITH-DESCRIPTION. If omitted, WITH-DESCRIPTION defaults -# to "Python". If EMITTER is provided, then CS_EMIT_BUILD_RESULT() is -# invoked with EMITTER in order to record the results in an output -# file. As a convenience, if EMITTER is the literal value "emit" or -# "yes", then CS_EMIT_BUILD_RESULT()'s default emitter will be used. -# When EMITTER is provided, the following properties are emitted to the -# output file: PYTHON (the actual interpreter), PYTHON.AVAILABLE ("yes" -# or "no"), PYTHON.CFLAGS, PYTHON.LFLAGS, PYTHON.VERSION, -# and PYTHON.MODULE_EXT. -#------------------------------------------------------------------------------ -AC_DEFUN([CS_CHECK_PYTHON], - [AC_REQUIRE([CS_CHECK_PTHREAD]) - CS_COMPILER_IGNORE_LONG_DOUBLE([C++], [cs_cv_prog_cxx_ignore_long_double]) - - AC_ARG_WITH([python], - [AC_HELP_STRING([--]m4_if([$2],[without],[with],[without])[-python], - m4_if([$2],[without],[use],[do not use]) - m4_default([$3],[Python]))]) - AS_IF([test -z "$with_python"], - [with_python=m4_if([$2], [without], [no], [yes])]) - - CS_CHECK_TOOLS([PYTHON], [python]) - AC_SUBST([PYTHON]) - CS_EMIT_BUILD_PROPERTY([PYTHON],[$PYTHON],[],[],CS_EMITTER_OPTIONAL([$1])) - - AS_IF([test -n "$PYTHON" && test "$with_python" != no], - [AC_CACHE_CHECK([for python SDK], [cs_cv_python_sdk], - [cs_pyver=`AC_RUN_LOG([$PYTHON -c 'import sys, string; \ - print string.join(map(str,sys.version_info[[:2]]),".")'])` - cs_cv_pybase="python${cs_pyver}" - - CS_EMIT_BUILD_PROPERTY([PYTHON.VERSION],[$cs_pyver],[],[], - CS_EMITTER_OPTIONAL([$1])) - - cs_cv_pybase_cflags=CS_RUN_PATH_NORMALIZE([$PYTHON -c \ - 'import distutils.sysconfig; \ - print "-I" + distutils.sysconfig.get_python_inc()']) - cs_cv_pybase_cflags="$cs_cv_pybase_cflags \ - $cs_cv_prog_cxx_ignore_long_double" - - # Depending upon platform and installation, link library might - # reside in "get_python_lib()", "get_python_lib()/config", - # "${prefix}/lib" (Unix), or "${prefix}/libs" (Windows). - cs_cv_pybase_syslib=CS_RUN_PATH_NORMALIZE([$PYTHON -c \ - 'import distutils.sysconfig; \ - print distutils.sysconfig.get_python_lib(0,1)']) - cs_cv_pybase_sysprefix=CS_RUN_PATH_NORMALIZE([$PYTHON -c \ - 'import sys; print sys.prefix']) - cs_cv_pybase_lflags_base='' - _CS_CHECK_PYTHON_LIBDIR([cs_cv_pybase_lflags_base], - [cs_cv_pybase_syslib]) - cs_cv_pybase_lflags_ext="$cs_cv_pybase_lflags_base" - _CS_CHECK_PYTHON_LIBDIR([cs_cv_pybase_lflags_ext], - [cs_cv_pybase_syslib], [config]) - _CS_CHECK_PYTHON_LIBDIR([cs_cv_pybase_sysprefix_lflags], - [cs_cv_pybase_sysprefix], [lib]) - _CS_CHECK_PYTHON_LIBDIR([cs_cv_pybase_sysprefix_lflags], - [cs_cv_pybase_sysprefix], [libs]) - - cs_cv_pybase_libs=CS_RUN_PATH_NORMALIZE([$PYTHON -c \ - 'import distutils.sysconfig; \ - print (distutils.sysconfig.get_config_var("LIBS") or "")+" "+ \ - (distutils.sysconfig.get_config_var("SYSLIBS") or "")']) - - cs_cv_python_ext=`AC_RUN_LOG([$PYTHON -c \ - 'import distutils.sysconfig; \ - print (distutils.sysconfig.get_config_var("SO") or "")'])` - - AS_IF([test -n "$cs_pyver" && - test -n "$cs_cv_pybase_cflags" && - test -n "$cs_cv_pybase_lflags_base$cs_cv_pybase_sysprefix_lflags"], - [cs_cv_python_sdk=yes], [cs_cv_python_sdk=no])]) - - # Check if Python SDK is usable. The most common library name is the - # basename with a few decorations (for example, libpython2.2.a), - # however some Windows libraries lack the decimal point (for example, - # libpython22.a or python22.lib), so we must check for both variations. - # Furthermore, MacOS/X 10.3 supplies a Python.framework, however, - # earlier releases did not. Instead, Python on MacOS/X pre-10.3 uses a - # one-level linker namespace, which means that loadable Python modules - # do not link against the Python library; instead, unresolved symbols - # in the modules are satisfied automatically by the Python executable - # when the module is loaded into the executable. For this reason, - # Python on MacOS/X does not even provide a Python link library. We - # account for this by trying -bundle, rather than linking against the - # library. - AS_IF([test $cs_cv_python_sdk = yes], - [CS_EMIT_BUILD_PROPERTY([PYTHON.MODULE_EXT], [$cs_cv_python_ext], - [], [], CS_EMITTER_OPTIONAL([$1])) - cs_pywinlib=`echo "$cs_cv_pybase" | sed 's/\.//g'` - cs_pyflags="$cs_pyflags CS_CREATE_TUPLE([],[], - [$cs_cv_pybase_lflags_base -framework Python])" - cs_pyflags="$cs_pyflags CS_CREATE_TUPLE([],[], - [$cs_cv_pybase_sysprefix_lflags -framework Python])" - cs_pyflags="$cs_pyflags CS_CREATE_TUPLE([],[], - [$cs_cv_pybase_lflags_ext -framework Python])" - - cs_pyflags="$cs_pyflags CS_CREATE_TUPLE([],[], - [$cs_cv_pybase_lflags_base -l$cs_cv_pybase])" - cs_pyflags="$cs_pyflags CS_CREATE_TUPLE([],[], - [$cs_cv_pybase_sysprefix_lflags -l$cs_cv_pybase])" - cs_pyflags="$cs_pyflags CS_CREATE_TUPLE([],[], - [$cs_cv_pybase_lflags_ext -l$cs_cv_pybase])" - - cs_pyflags="$cs_pyflags CS_CREATE_TUPLE([],[], - [$cs_cv_pybase_lflags_base -l$cs_pywinlib])" - cs_pyflags="$cs_pyflags CS_CREATE_TUPLE([],[], - [$cs_cv_pybase_sysprefix_lflags -l$cs_pywinlib])" - cs_pyflags="$cs_pyflags CS_CREATE_TUPLE([],[], - [$cs_cv_pybase_lflags_ext -l$cs_pywinlib])" - - cs_pyflags="$cs_pyflags CS_CREATE_TUPLE( - [],[-bundle -flat_namespace -undefined suppress], - [$cs_cv_pybase_lflags_base])" - cs_pyflags="$cs_pyflags CS_CREATE_TUPLE( - [],[-bundle -flat_namespace -undefined suppress], - [$cs_cv_pybase_sysprefix_lflags])" - cs_pyflags="$cs_pyflags CS_CREATE_TUPLE( - [],[-bundle -flat_namespace -undefined suppress], - [$cs_cv_pybase_lflags_ext])" - - CS_CHECK_BUILD([if python SDK is usable], [cs_cv_python], - [AC_LANG_PROGRAM([[#include <Python.h>]], - [Py_Initialize(); Py_Finalize();])], - [$cs_pyflags], [], - [CS_EMIT_BUILD_RESULT([cs_cv_python], [PYTHON], - CS_EMITTER_OPTIONAL([$1]))], [], [], - [$cs_cv_pybase_cflags $cs_cv_sys_pthread_cflags], - [ $cs_cv_sys_pthread_lflags], - [$cs_cv_pybase_libs $cs_cv_sys_pthread_libs])], - [cs_cv_python=no])], - [cs_cv_python=no])]) - -# _CS_CHECK_PYTHON_LIBDIR(LFLAGS-VAR, DIR-VAR, [SUBDIR]) -AC_DEFUN([_CS_CHECK_PYTHON_LIBDIR], - [AS_IF([test -d "$$2[]m4_ifval([$3],[/$3],[])"], - [$1="$$1 -L$$2[]m4_ifval([$3],[/$3],[])"])]) - - - -#------------------------------------------------------------------------------ -# CS_EMIT_CHECK_PYTHON([SDK-CHECK-DEFAULT], [WITH-DESCRIPTION], [EMITTER]) -# DEPRECATED: Previously, layered EMITTER functionality atop -# CS_CHECK_PYTHON() before CS_CHECK_PYTHON() supported emitters directly. -#------------------------------------------------------------------------------ -AC_DEFUN([CS_EMIT_CHECK_PYTHON], - [CS_CHECK_PYTHON(m4_ifval([$3], [$3], [emit]), [$1], [$2])]) Modified: stable/mk/autoconf/crystal.m4 =================================================================== --- stable/mk/autoconf/crystal.m4 2008-08-06 16:41:21 UTC (rev 2004) +++ stable/mk/autoconf/crystal.m4 2008-08-06 16:49:38 UTC (rev 2005) @@ -20,7 +20,7 @@ AC_PREREQ([2.56]) # Should stay in sync with csver.h -m4_define([cs_min_version_default], [1.3]) +m4_define([cs_min_version_default], [1.4]) #------------------------------------------------------------------------------ # CS_PATH_CRYSTAL_CHECK([DESIRED-VERSION], [ACTION-IF-FOUND], Modified: stable/mk/autoconf/progver.m4 =================================================================== --- stable/mk/autoconf/progver.m4 2008-08-06 16:41:21 UTC (rev 2004) +++ stable/mk/autoconf/progver.m4 2008-08-06 16:49:38 UTC (rev 2005) @@ -147,22 +147,22 @@ # ** CS_VCHK_EXTRACTVERSION(EXTRACT_CALL, MIN_VERSION, PATTERN, PRGPREFIX, COMPARISION) ** # **************************************************************************************** m4_define([CS_VCHK_EXTRACTVERSION], -[cs_prog_$4_is_version= +[cs_cv_prog_$4_is_version= cs_prog_$4_min_version= cs_prog_$4_is_suffix= cs_prog_$4_min_suffix= cs_prog_$4_is_suffix_done= cs_prog_$4_min_suffix_done= CS_VCHK_CYCLEOPT([$3], [], -[test -z $cs_prog_$4_is_version && cs_prog_$4_is_version=`$1 | sed 'CS_VCHK_SEDEXPRALL([i])'` -test -n "$cs_prog_$4_is_version" && test -z $cs_prog_$4_is_suffix_done && { cs_prog_$4_is_suffix_done=yes ; cs_prog_$4_is_suffix=j ; } +[test -z $cs_cv_prog_$4_is_version && cs_cv_prog_$4_is_version=`$1 | sed 'CS_VCHK_SEDEXPRALL([i])'` +test -n "$cs_cv_prog_$4_is_version" && test -z $cs_prog_$4_is_suffix_done && { cs_prog_$4_is_suffix_done=yes ; cs_prog_$4_is_suffix=j ; } ]) CS_VCHK_CYCLEOPT([$3], , [test -z $cs_prog_$4_min_version && cs_prog_$4_min_version=`echo $2 | sed 'CS_VCHK_SEDEXPRALL([i])'` test -n "$cs_prog_$4_min_version" && test -z $cs_prog_$4_min_suffix_done && { cs_prog_$4_min_suffix_done=yes ; cs_prog_$4_min_suffix=j ; } ]) CS_VCHK_RUNTH([CS_VCHK_PATCOUNT([$3])], - [cs_prog_$4_is_ver_[]i=`echo ${cs_prog_$4_is_version}${cs_prog_$4_is_suffix} | sed 'CS_VCHK_SEDEXPRNTH([CS_VCHK_RMALL([$3])], [i])'` + [cs_prog_$4_is_ver_[]i=`echo ${cs_cv_prog_$4_is_version}${cs_prog_$4_is_suffix} | sed 'CS_VCHK_SEDEXPRNTH([CS_VCHK_RMALL([$3])], [i])'` ]) CS_VCHK_RUNTH([CS_VCHK_PATCOUNT([$3])], [cs_prog_$4_min_ver_[]i=`echo $cs_prog_$4_min_version${cs_prog_$4_min_suffix} | sed 'CS_VCHK_SEDEXPRNTH([CS_VCHK_RMALL([$3])], [i])'` @@ -177,14 +177,9 @@ || AS_TR_SH([cs_cv_prog_$4_version_$2_ok])=yes ; } ]) AS_IF([test -z "$AS_TR_SH([cs_cv_prog_$4_version_$2_ok])"], [AS_TR_SH([cs_cv_prog_$4_version_$2_ok])=yes]) -AS_IF([test "$AS_TR_SH([cs_cv_prog_$4_version_$2_ok])" = yes], - [AS_TR_SH([cs_prog_$4_version_ok])=yes], - [AS_TR_SH([cs_prog_$4_version_ok])=no]) AS_TR_SH([cs_cv_prog_$4_version_$2_ok_annotated])="$AS_TR_SH([cs_cv_prog_$4_version_$2_ok])" -AS_IF([test -n "$cs_prog_$4_is_version"], - [AS_TR_SH([cs_cv_prog_$4_version_$2_ok_annotated])="$AS_TR_SH([cs_cv_prog_$4_version_$2_ok_annotated]) (version $cs_prog_$4_is_version)" - AS_TR_SH([cs_prog_$4_version])="$AS_TR_SH([cs_prog_$4_is_version])"], - [AS_TR_SH([cs_prog_$4_version])='']) +AS_IF([test -n "$cs_cv_prog_$4_is_version"], + [AS_TR_SH([cs_cv_prog_$4_version_$2_ok_annotated])="$AS_TR_SH([cs_cv_prog_$4_version_$2_ok_annotated]) (version $cs_cv_prog_$4_is_version)"]) ]) ############################################################################## @@ -222,4 +217,10 @@ [AS_TR_SH([cs_cv_prog_$1_version_$3_ok_annotated])], [CS_VCHK_EXTRACTVERSION([$2], [$3], [$4], AS_TR_SH([$1]), m4_default([$7],[>=]))]) -AS_IF([test "$AS_TR_SH([cs_cv_prog_$1_version_$3_ok])" = yes], [$5], [$6])]) +AS_IF([test "$AS_TR_SH([cs_cv_prog_$1_version_$3_ok])" = yes], + [AS_TR_SH([cs_prog_$1_version_ok])=yes + AS_TR_SH([cs_prog_$1_version])="$AS_TR_SH([cs_cv_prog_$1_is_version])" + $5], + [AS_TR_SH([cs_prog_$1_version_ok])=no + AS_TR_SH([cs_prog_$1_version])='' + $6])]) Modified: stable/mk/autoconf/qualify.m4 =================================================================== --- stable/mk/autoconf/qualify.m4 2008-08-06 16:41:21 UTC (rev 2004) +++ stable/mk/autoconf/qualify.m4 2008-08-06 16:49:38 UTC (rev 2005) @@ -1,6 +1,6 @@ # qualify.m4 -*- Autoconf -*- #============================================================================== -# Copyright (C)2005 by Eric Sunshine <sun...@su...> +# Copyright (C)2005,2008 by Eric Sunshine <sun...@su...> # # This library is free software; you can redistribute it and/or modify it # under the terms of the GNU Library General Public License as published by @@ -40,7 +40,7 @@ [AS_IF([test "$$2" = no], [CS_BUILD_IFELSE( [AC_LANG_PROGRAM( - [cs_symbol_qualifier m4_default([$4],[void f()]);], + [m4_default([$4],[void f()]) cs_symbol_qualifier;], [])], [], [$5], [$2='cs_symbol_qualifier'], [$2='no'])])])]) AS_IF([test $$2 != no], [$6], [$7])]) Modified: stable/mk/jam/flags.jam =================================================================== --- stable/mk/jam/flags.jam 2008-08-06 16:41:21 UTC (rev 2004) +++ stable/mk/jam/flags.jam 2008-08-06 16:49:38 UTC (rev 2005) @@ -79,6 +79,10 @@ NEEDLIBS on $($(target)_TARGET) = [ RemoveDupFlags [ on $($(target)_TARGET) GetVar NEEDLIBS ] $(flags) ] ; $(target).LFLAGS = [ RemoveDupFlags $($(target).LFLAGS) $(flags) ] ; + if ! [ IsElem noexternal : $(3) ] + { + $(target).LFLAGS.EXTERNAL = [ RemoveDupFlags $($(target).LFLAGS.EXTERNAL) $(flags) ] ; + } UnitTestLFlags $(target) : $(flags) : $(options) ; } @@ -131,38 +135,19 @@ Clean clean : $(>) ; } -## RelayLibs target : indentifier : relaylibs -## Link external libraries identified by 'identifier' with 'target' with -## the help of "relaytool". This tool provides a wrapper object file that -## dynamically loads the requested library at runtime. The client code can -## check if a library is actually available and react gracefully if not. -## This is much more end-user friendly than a refusal by the application to -## start due to a missing dependency. -## From the external dependency identified by 'identifier' the individual -## libraries specified in 'relaylibs' will be dynamically loaded. For each -## library 'foo' a symbol 'libfoo_is_present' will be provided. -rule RelayLibs +## RelayLFlags lflags : relaylibs +## Get LFLAGS for relay-linking libraries. See RelayLibs for +## more information. +rule RelayLFlags { if ! $(CMD.RELAYTOOL) { - # Create fake libwhatever_is_present() symbols - local stubfile = [ DoObjectGrist $(>).fake_stub.c ] ; - MakeLocate $(stubfile) : $(LOCATE_TARGET) ; - WHATEVER on $(stubfile) = $(3) ; - WriteRelayLibStub $(stubfile) ; - Clean $(<)clean : $(stubfile) ; - - local stub_object = [ CompileObjects $(stubfile) ] ; - MakeLocate $(stub_object) : $(LOCATE_TARGET) ; - Depends $($(<)_TARGET) : $(stub_object) ; - Clean $(<)clean : $(stub_object) ; - EXTRAOBJECTS on $($(<)_TARGET) += $(stub_object) ; - - ExternalLibs $(<) : $(>) ; + return $(1) ; } else { - local relayparamslist = "--relay $(3)" ; + local relayparamslist = "--relay $(2)" ; + local lflags = $(1) ; local relayparam = $(relayparamslist[1]) ; local r ; for r in $(relayparamslist[2-]) @@ -175,18 +160,64 @@ { cflags = "$(cflags) $(c)" ; } - local extlib ; - for extlib in $(>) - { - CFlags $(<) : $($(extlib).CFLAGS) ; - LFlags $(<) : - "`CFLAGS=\"$(cflags)\" $(CMD.RELAYTOOL) --out-dir $(LOCATE_TARGET) $(relayparam) $($(extlib).LFLAGS)`" ; - - $(<).EXTERNALLIBS += $(extlib) ; - } + local extlib result_lflags ; + result_lflags += + "`CFLAGS=\"$(cflags)\" $(CMD.RELAYTOOL) --out-dir $(LOCATE_TARGET) $(relayparam) $(lflags)`" ; + return $(result_lflags) ; } } +## RelayObjs target : relaylibs : identifier +rule RelayObjs +{ + if ! $(CMD.RELAYTOOL) + { + # Create fake libwhatever_is_present() symbols + local stubfile = [ DoObjectGrist $(3).fake_stub.c ] ; + MakeLocate $(stubfile) : $(LOCATE_TARGET) ; + WHATEVER on $(stubfile) = $(2) ; + WriteRelayLibStub $(stubfile) ; + Clean $(<)clean : $(stubfile) ; + + local stub_object = [ CompileObjects $(stubfile) ] ; + MakeLocate $(stub_object) : $(LOCATE_TARGET) ; + Depends $($(<)_TARGET) : $(stub_object) ; + Clean $(<)clean : $(stub_object) ; + #EXTRAOBJECTS on $($(<)_TARGET) += $(stub_object) ; + + return $(stub_object) ; + } + else + { + return ; + } +} + +## RelayLibs target : identifier : relaylibs +## Link external libraries identified by 'identifier' with 'target' with +## the help of "relaytool". This tool provides a wrapper object file that +## dynamically loads the requested library at runtime. The client code can +## check if a library is actually available and react gracefully if not. +## This is much more end-user friendly than a refusal by the application to +## start due to a missing dependency. +## From the external dependency identified by 'identifier' the individual +## libraries specified in 'relaylibs' will be dynamically loaded. For each +## library 'foo' a symbol 'libfoo_is_present' will be provided. +rule RelayLibs +{ + local extlib ; + for extlib in $(>) + { + ExtraObjects $(<) : [ RelayObjs $(<) : $(3) : $(2) ] ; + CFlags $(<) : $($(extlib).CFLAGS) ; + LFlags $(<) : [ RelayLFlags $($(extlib).LFLAGS) : $(3) ] ; + + $(<).EXTERNALLIBS += $(extlib) ; + $(<).RELAYDEPS += $(extlib) ; + $(<).RELAYLIBS.$(extlib) = $(3) ; + } +} + actions WriteRelayLibStub { echo "" > $(<) Modified: stable/mk/jam/msvcgen.jam =================================================================== --- stable/mk/jam/msvcgen.jam 2008-08-06 16:41:21 UTC (rev 2004) +++ stable/mk/jam/msvcgen.jam 2008-08-06 16:49:38 UTC (rev 2005) @@ -775,7 +775,7 @@ $(MSVCGEN_VARIABLES) : notfile : $(respdir) ; MsvcRmTemps msvcgen : $(respfile) ; - + # Only include source and headers files for now. In the future, we also # want to include .cfg files and any other textual resources which which the # user might care to read/view in the MSVC IDE. @@ -1446,6 +1446,31 @@ } } +rule RelayLibs +{ + local extlib ; + + local outdir = [ Property msvcgen : outdir$(MSVC_VERSION) ] ; + local outdircommon = [ Property msvcgen : outdircommon ] ; + if "$(outdircommon)" = "" + { + outdircommon = $(outdir) ; + } + + for extlib in $(>) + { + local relayfile = $(extlib).fake_stub.c ; + MakeLocate $(relayfile) : $(outdircommon) ; + WHATEVER on $(relayfile) = $(3) ; + WriteRelayLibStub $(relayfile) ; + Depends msvcgen : $(relayfile) ; + + MsvcExtraFile1 $(<) : $(relayfile:R=$(outdircommon)) ; + } + + ExternalLibs $(<) : $(>) ; +} + rule MsvcClassifyMode { local c ; Modified: stable/mk/jam/static.jam =================================================================== --- stable/mk/jam/static.jam 2008-08-06 16:41:21 UTC (rev 2004) +++ stable/mk/jam/static.jam 2008-08-06 16:49:38 UTC (rev 2005) @@ -208,7 +208,25 @@ optplugins = $(3) ; package = $(4) ; - local target_link_with target_lflags ; + local target_link_with target_lflags lflags_target relayobjs ; + if ( $(BUILD_SHARED_LIBS) = "yes" ) && ( $(TRUE_STATIC_PLUGINS) != "yes" ) + { + local plugin_lib_name ; + if $(package) + { + plugin_lib_name = $(target)_plugins_$(package) ; + } + else + { + plugin_lib_name = $(target)_plugins ; + } + + lflags_target = $(plugin_lib_name) ; + } + else + { + lflags_target = $(target) ; + } if $(package) { @@ -242,6 +260,17 @@ } CFlags $(target) : $(STATICPLUGIN.$(p).CFLAGS) ; lflags = [ MergeRemovingDups $(lflags) : $(STATICPLUGIN.$(p).LFLAGS) ] ; + + local relaydeps = $(STATICPLUGIN.$(p).RELAYDEPS) ; + for relaydep in $(relaydeps) + { + CFlags $(target) : $(STATICPLUGIN.$(p).RELAYCFLAGS.$(relaydep)) ; + lflags = [ MergeRemovingDups $(lflags) : + [ RelayLFlags $(STATICPLUGIN.$(p).RELAYLFLAGS.$(relaydep)) : + $(STATICPLUGIN.$(p).RELAYLIBS.$(relaydep)) ] ] ; + relayobjs += [ RelayObjs $(lflags_target) : + $(STATICPLUGIN.$(p).RELAYLIBS.$(relaydep)) : $(relaydep) ] ; + } } target_lflags = $(lflags) ; } @@ -275,30 +304,23 @@ # This is done to be more LGPL-friendly. if ( $(BUILD_SHARED_LIBS) = "yes" ) && ( $(TRUE_STATIC_PLUGINS) != "yes" ) { - local plugin_lib_name appglue libglue ; - if $(package) - { - plugin_lib_name = $(target)_plugins_$(package) ; - } - else - { - plugin_lib_name = $(target)_plugins ; - } - - libglue = [ BuildStaticGlueFile $(target) : $(plugin_lib_name) + local libglue appglue ; + libglue = [ BuildStaticGlueFile $(target) : $(lflags_target) : $(package) : lib ] ; - Library $(plugin_lib_name) : $(libglue) $(staticobject) : + Library $(lflags_target) : $(libglue) $(staticobject) + $(relayobjs) : noinstall notest independent nohelp shared ; - LibDepends $(plugin_lib_name) : $(target_link_with) ; - LFlags $(plugin_lib_name) : $(target_lflags) ; + LibDepends $(lflags_target) : $(target_link_with) ; + LFlags $(lflags_target) : $(target_lflags) ; # We need to get the external libs for the plugin lib; but they have to be # specified after LinkStaticPlugins - $(target).PROPAGATE_EXTERNALLIBS += $(plugin_lib_name) ; + $(target).PROPAGATE_EXTERNALLIBS += $(lflags_target) ; - appglue = [ BuildStaticGlueFile $(target) : $(plugin_lib_name) + appglue = [ BuildStaticGlueFile $(target) : $(lflags_target) : $(package) : app ] ; ExtraObjects $(target) : $(appglue) : inheritcflags ; - LinkWith $(target) : $(plugin_lib_name) ; + LinkWith $(target) : $(lflags_target) ; + LFlags $(target) : $(target_lflags) ; } else { @@ -421,7 +443,7 @@ cflags += $($(l).CFLAGS) ; lflags = [ MergeRemovingDups $(lflags) : [ Filter $($(l).LFLAGS) : $(LINKLIBS) $(PLUGIN.LFLAGS) ] ] ; } - lflags = [ MergeRemovingDups $(lflags) : [ Filter $($(plugin).LFLAGS) : $(LINKLIBS) $(PLUGIN.LFLAGS) ] ] ; + lflags = [ MergeRemovingDups $(lflags) : [ Filter $($(plugin).LFLAGS.EXTERNAL) : $(LINKLIBS) $(PLUGIN.LFLAGS) ] ] ; CFLAGS on $(depfile_gristed) = "$(cflags)" ; LFLAGS on $(depfile_gristed) = "$(lflags)" ; @@ -434,7 +456,23 @@ { WriteDepFlags2 $(depfile_gristed) : $(plugin) ; } + Depends $(depfile) : $(depfile_gristed) ; + + RELAYDEPS on $(depfile_gristed) = "$($(plugin).RELAYDEPS)" ; + WriteRelayDeps $(depfile_gristed) : $(plugin) ; + for relaydep in $($(plugin).RELAYDEPS) + { + local depfile_gristed2 = $(depfile_gristed:G=$(plugin).$(relaydep)) ; + MakeLocate $(depfile_gristed2) : [ on $(depfile) GetVar LOCATE ] ; + Depends $(depfile) : $(depfile_gristed2) ; + + RELAYDEP on $(depfile_gristed2) = $(relaydep) ; + RELAYCFLAGS on $(depfile_gristed2) = "$($(relaydep).CFLAGS)" ; + RELAYLFLAGS on $(depfile_gristed2) = "$($(relaydep).LFLAGS)" ; + RELAYLIBS on $(depfile_gristed2) = "$($(plugin).RELAYLIBS.$(relaydep))" ; + WriteRelayDepFlags $(depfile_gristed2) : $(plugin) ; + } } actions WriteDepFlags1 @@ -455,6 +493,22 @@ EOT } +actions WriteRelayDeps +{ + cat << EOT >> $(<) +STATICPLUGIN.$(>).RELAYDEPS = $(RELAYDEPS) ; +EOT +} + +actions WriteRelayDepFlags +{ + cat << EOT >> $(<) +STATICPLUGIN.$(>).RELAYLIBS.$(RELAYDEP) = $(RELAYLIBS) ; +STATICPLUGIN.$(>).RELAYCFLAGS.$(RELAYDEP) = $(RELAYCFLAGS) ; +STATICPLUGIN.$(>).RELAYLFLAGS.$(RELAYDEP) = $(RELAYLFLAGS) ; +EOT +} + actions piecemeal GenerateStaticPluginRegistration1 { echo 'namespace csStaticPluginInit' >> $(<) Modified: stable/src/client/gui/pawsgmspawn.cpp =================================================================== --- stable/src/client/gui/pawsgmspawn.cpp 2008-08-06 16:41:21 UTC (rev 2004) +++ stable/src/client/gui/pawsgmspawn.cpp 2008-08-06 16:49:38 UTC (rev 2005) @@ -72,6 +72,9 @@ cbCollidable = (pawsCheckBox*)FindWidget("Collidable"); lockSkill = (pawsEditTextBox*)FindWidget("LockSkill"); lockStr = (pawsEditTextBox*)FindWidget("LockStr"); + factname = (pawsTextBox*)FindWidget("meshfactname"); + meshname = (pawsTextBox*)FindWidget("meshname"); + imagename = (pawsTextBox*)FindWidget("imagename"); // creates tree: itemTree = new pawsSimpleTree; @@ -172,7 +175,6 @@ if (!psengine->GetFileNameByFact(item.mesh, filename)) { Error2("Mesh Factory %s not found", item.mesh.GetData() ); - return false; } loaded = false; CheckMeshLoad(); @@ -200,6 +202,10 @@ cbCollidable->SetState(false); lockSkill->SetText("Lockpicking"); lockStr->SetText("5"); + imagename->SetText(item.icon); + factname->SetText(item.mesh); + //we need to check if the factory was found and get the updated filename to show it + meshname->SetText(item.mesh && psengine->GetFileNameByFact(item.mesh, filename) ? filename: ""); cbLockable->Show(); cbLocked->Show(); @@ -207,6 +213,9 @@ cbCollidable->Show(); lockStr->Hide(); lockSkill->Hide(); + imagename->Show(); + meshname->Show(); + factname->Show(); currentItem = item.name; return true; Modified: stable/src/client/gui/pawsgmspawn.h =================================================================== --- stable/src/client/gui/pawsgmspawn.h 2008-08-06 16:41:21 UTC (rev 2004) +++ stable/src/client/gui/pawsgmspawn.h 2008-08-06 16:49:38 UTC (rev 2005) @@ -56,6 +56,9 @@ pawsEditTextBox* itemCount; pawsEditTextBox* lockSkill; pawsEditTextBox* lockStr; + pawsTextBox* factname; + pawsTextBox* meshname; + pawsTextBox* imagename; struct Item { Modified: stable/src/client/psmovement.cpp =================================================================== --- stable/src/client/psmovement.cpp 2008-08-06 16:41:21 UTC (rev 2004) +++ stable/src/client/psmovement.cpp 2008-08-06 16:49:38 UTC (rev 2005) @@ -397,9 +397,6 @@ void psMovementManager::Start(const psCharMode* mode) { - if (locked) - return; - #ifdef MOVE_DEBUG printf("Starting mode %s\n", mode->name.GetData() ); #endif @@ -410,9 +407,6 @@ void psMovementManager::Stop(const psCharMode* mode) { - if (locked) - return; - #ifdef MOVE_DEBUG printf("Stopping mode %s\n", mode->name.GetData() ); #endif Modified: stable/src/common/paws/pawslistbox.cpp =================================================================== --- stable/src/common/paws/pawslistbox.cpp 2008-08-06 16:41:21 UTC (rev 2004) +++ stable/src/common/paws/pawslistbox.cpp 2008-08-06 16:49:38 UTC (rev 2005) @@ -264,6 +264,7 @@ scrollBar->UseBorder(); scrollBar->PostSetup(); scrollBar->SetTickValue( 1.0 ); + scrollBar->Hide(); AddChild( scrollBar ); // Add horizontal scollie Modified: stable/src/common/paws/pawstree.cpp =================================================================== --- stable/src/common/paws/pawstree.cpp 2008-08-06 16:41:21 UTC (rev 2004) +++ stable/src/common/paws/pawstree.cpp 2008-08-06 16:49:38 UTC (rev 2005) @@ -1217,9 +1217,31 @@ { layout->GetTreeSize(width, height); if (horizScrollBar != NULL) - horizScrollBar -> SetMaxValue(MAX(0, width - screenFrame.Width())); + { + if( width > screenFrame.Width()) + { + horizScrollBar -> SetMaxValue(MAX(0, width - screenFrame.Width())); + vertScrollBar->Show(); + } + else + { + horizScrollBar->Hide(); + vertScrollBar->SetMaxValue(0); + } + } if (vertScrollBar != NULL) - vertScrollBar -> SetMaxValue(MAX(0, height - screenFrame.Height())); + { + if(height > screenFrame.Height()) + { + vertScrollBar -> SetMaxValue(MAX(0, height - screenFrame.Height())); + vertScrollBar->Show(); + } + else + { + vertScrollBar->Hide(); + vertScrollBar->SetMaxValue(0); + } + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-08-06 17:32:15
|
Revision: 2009 http://planeshift.svn.sourceforge.net/planeshift/?rev=2009&view=rev Author: mgist Date: 2008-08-06 17:32:21 +0000 (Wed, 06 Aug 2008) Log Message: ----------- - Merged r2008 from trunk. Modified Paths: -------------- stable/docs/history.txt stable/src/client/chatbubbles.cpp stable/src/client/gui/chatwindow.h stable/src/common/effects/pseffect.h stable/src/common/paws/pawstree.cpp Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988,1990-1991,1994,1996-2001,2003-2004 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988,1990-1991,1994,1996-2001,2003-2004,2008 Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-08-06 17:28:12 UTC (rev 2008) +++ stable/docs/history.txt 2008-08-06 17:32:21 UTC (rev 2009) @@ -1,3 +1,8 @@ +*** 2008-08-06 by Mike Gist +- Fixed FS#1373, patch from weltall. +- Fixed FS#2084, patch from weltall. +- Possible fix for FS#1901, patch from Kaerli. + *** 2008-08-04 by Andreas Heinchen - Addition to FS#2069 and FS#1373 by weltall - Fixed FS#2076, patch by weltall Modified: stable/src/client/chatbubbles.cpp =================================================================== --- stable/src/client/chatbubbles.cpp 2008-08-06 17:28:12 UTC (rev 2008) +++ stable/src/client/chatbubbles.cpp 2008-08-06 17:32:21 UTC (rev 2009) @@ -312,10 +312,14 @@ static csArray<psEffectTextRow> rowBuffer; rowBuffer.Empty(); - // build the text rows - const size_t textLen = chatMsg.sText.Length(); - const char * text = chatMsg.sText.GetData(); + csString inText = chatMsg.sText; + if (chatWindow->GetSettings().enableBadWordsFilterIncoming) //check for badwords filtering + chatWindow->BadWordsFilter(inText); //if enabled apply it + + const size_t textLen = inText.Length(); + const char * text = inText.GetData(); + psEffectTextRow chat = type->textSettings; // create a row character by character while calculating word wrap Modified: stable/src/client/gui/chatwindow.h =================================================================== --- stable/src/client/gui/chatwindow.h 2008-08-06 17:28:12 UTC (rev 2008) +++ stable/src/client/gui/chatwindow.h 2008-08-06 17:32:21 UTC (rev 2009) @@ -172,6 +172,9 @@ pawsIgnoreWindow* GetIgnoredList() { return IgnoredList; } + /// Remove bad words from the output string + void BadWordsFilter(csString& s); + protected: void HandleSystemMessage( MsgEntry* message ); @@ -189,9 +192,6 @@ /// If currently selected chat tab is not in 'allowedTabs', switch to 'defaultTab' void AutoselectChatTabIfNeeded(const csArray<csString> &allowedTabs, const char * defaultTab); - /// Remove bad words from the output string - void BadWordsFilter(csString& s); - /// Output text to a specific tab. void ChatOutput(pawsMessageTextBox *pmtb, const char *data, int colour = -1, bool flashEnabled = true, const char *bname = NULL); Modified: stable/src/common/effects/pseffect.h =================================================================== --- stable/src/common/effects/pseffect.h 2008-08-06 17:28:12 UTC (rev 2008) +++ stable/src/common/effects/pseffect.h 2008-08-06 17:32:21 UTC (rev 2009) @@ -178,19 +178,17 @@ class psEffectMovableListener : public scfImplementation1<psEffectMovableListener,iMovableListener> { private: - iSectorList * moveSectors; - csVector3 movePos; - csMatrix3 transf; bool movableDead; + bool movableChanged; + iMovable* movable; public: psEffectMovableListener() : scfImplementationType(this) { - moveSectors = 0; - movePos = csVector3(0,0,0); - transf.Identity(); movableDead = false; + movableChanged = false; + movable = 0; } virtual ~psEffectMovableListener() {} @@ -199,9 +197,8 @@ */ virtual void MovableChanged(iMovable * movable) { - movePos = movable->GetFullPosition(); - moveSectors = movable->GetSectors(); - transf = movable->GetFullTransform().GetT2O(); + movableChanged = true; + this->movable = movable; } /** Implementation of the iMovableListener function, allows us to detect if the movable was destroyed @@ -209,6 +206,8 @@ virtual void MovableDestroyed(iMovable * movable) { movableDead = true; + this->movable = 0; + movableChanged = false; } /** Checks to see if the movable has disappeared @@ -227,14 +226,14 @@ */ bool GrabNewData(iSectorList *& newSectors, csVector3 & newPos, csMatrix3 & newTransf) { - if (!moveSectors) + if (!movableChanged || !movable) return false; - newSectors = moveSectors; - newPos = movePos; - newTransf = transf; + newPos = movable->GetFullPosition(); + newSectors = movable->GetSectors(); + newTransf = movable->GetFullTransform().GetT2O(); - moveSectors = 0; + movableChanged = false; return true; } @@ -245,18 +244,21 @@ */ bool GrabNewData(csVector3 & newPos, csMatrix3 & newTransf) { - if (!moveSectors) + if (!movableChanged || !movable) return false; - newPos = movePos; - newTransf = transf; - moveSectors = 0; + newPos = movable->GetFullPosition(); + newTransf = movable->GetFullTransform().GetT2O(); + movableChanged = false; return true; } csVector3 GetPosition() { - return movePos; + if (movable) + return movable->GetFullPosition(); + else + return csVector3(0, 0, 0); } }; Modified: stable/src/common/paws/pawstree.cpp =================================================================== --- stable/src/common/paws/pawstree.cpp 2008-08-06 17:28:12 UTC (rev 2008) +++ stable/src/common/paws/pawstree.cpp 2008-08-06 17:32:21 UTC (rev 2009) @@ -1221,12 +1221,14 @@ if( width > screenFrame.Width()) { horizScrollBar -> SetMaxValue(MAX(0, width - screenFrame.Width())); - vertScrollBar->Show(); + if(!horizScrollBar->IsVisible()) //as this function is called continually we have to check if + horizScrollBar->Show(); //the widget is already shown to avoid flickering } else { - horizScrollBar->Hide(); - vertScrollBar->SetMaxValue(0); + if(horizScrollBar->IsVisible()) + horizScrollBar->Hide(); + horizScrollBar->SetMaxValue(0); } } if (vertScrollBar != NULL) @@ -1234,11 +1236,13 @@ if(height > screenFrame.Height()) { vertScrollBar -> SetMaxValue(MAX(0, height - screenFrame.Height())); - vertScrollBar->Show(); + if(!vertScrollBar->IsVisible()) + vertScrollBar->Show(); } else { - vertScrollBar->Hide(); + if(vertScrollBar->IsVisible()) + vertScrollBar->Hide(); vertScrollBar->SetMaxValue(0); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-08-07 01:34:35
|
Revision: 2020 http://planeshift.svn.sourceforge.net/planeshift/?rev=2020&view=rev Author: mgist Date: 2008-08-07 01:34:44 +0000 (Thu, 07 Aug 2008) Log Message: ----------- - Merged r2019 from trunk. Modified Paths: -------------- stable/docs/history.txt stable/src/server/bulkobjects/psquest.cpp Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988,1990-1991,1994,1996-2001,2003-2004,2008 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988,1990-1991,1994,1996-2001,2003-2004,2008,2019 Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-08-07 01:30:50 UTC (rev 2019) +++ stable/docs/history.txt 2008-08-07 01:34:44 UTC (rev 2020) @@ -1,3 +1,6 @@ +*** 2008-08-06 by Andreas Heinchen +- Fixed a wrong handling of a referenced object + *** 2008-08-06 by Mike Gist - Fixed FS#1373, patch from weltall. - Fixed FS#2084, patch from weltall. Modified: stable/src/server/bulkobjects/psquest.cpp =================================================================== --- stable/src/server/bulkobjects/psquest.cpp 2008-08-07 01:30:50 UTC (rev 2019) +++ stable/src/server/bulkobjects/psquest.cpp 2008-08-07 01:34:44 UTC (rev 2020) @@ -59,9 +59,6 @@ psQuest::~psQuest() { - if (prerequisite) - delete prerequisite; - prerequisite = NULL; for(size_t i = 0;i < triggerPairs.GetSize(); i++) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lpa...@us...> - 2008-08-07 21:18:56
|
Revision: 2029 http://planeshift.svn.sourceforge.net/planeshift/?rev=2029&view=rev Author: lpancallo Date: 2008-08-07 21:19:05 +0000 (Thu, 07 Aug 2008) Log Message: ----------- merged 2026-2028 from trunk Modified Paths: -------------- stable/src/server/database/mysql/accounts.sql Property Changed: ---------------- stable/ stable/src/server/database/mysql/accounts.sql Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988,1990-1991,1994,1996-2001,2003-2004,2008,2019 + /trunk:2026-2028 Modified: stable/src/server/database/mysql/accounts.sql =================================================================== --- stable/src/server/database/mysql/accounts.sql 2008-08-07 21:13:46 UTC (rev 2028) +++ stable/src/server/database/mysql/accounts.sql 2008-08-07 21:19:05 UTC (rev 2029) @@ -18,7 +18,7 @@ # Table structure for table accounts # -CREATE TABLE `planeshift`.`accounts` ( +CREATE TABLE `accounts` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL DEFAULT '0', `password` varchar(32) NOT NULL DEFAULT '0', Property changes on: stable/src/server/database/mysql/accounts.sql ___________________________________________________________________ Modified: svn:mergeinfo - /trunk/src/server/database/mysql/accounts.sql:2026 + /trunk/src/server/database/mysql/accounts.sql:2026-2028 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-08-09 17:09:14
|
Revision: 2039 http://planeshift.svn.sourceforge.net/planeshift/?rev=2039&view=rev Author: mgist Date: 2008-08-09 17:09:23 +0000 (Sat, 09 Aug 2008) Log Message: ----------- - Fixed last merge. Modified Paths: -------------- stable/src/server/database/mysql/create_indexes.sql Property Changed: ---------------- stable/ stable/src/server/database/mysql/accounts.sql Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:2026-2028 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988,1990-1991,1994,1996-2001,2003-2004,2008,2019,2026-2031 Property changes on: stable/src/server/database/mysql/accounts.sql ___________________________________________________________________ Deleted: svn:mergeinfo - /trunk/src/server/database/mysql/accounts.sql:2026-2028 Modified: stable/src/server/database/mysql/create_indexes.sql =================================================================== --- stable/src/server/database/mysql/create_indexes.sql 2008-08-09 04:26:24 UTC (rev 2038) +++ stable/src/server/database/mysql/create_indexes.sql 2008-08-09 17:09:23 UTC (rev 2039) @@ -12,7 +12,6 @@ create index indx_item_instance_char_id_owner on item_instances (char_id_owner); create index indx_item_instance_location_in_parent on item_instances (location_in_parent); - -#Duplicates -#create unique index indx_accounts_username on accounts (username); -#create index indx_accounts_ip on accounts (last_login_ip); +#Duplicates +#create unique index indx_accounts_username on accounts (username); +#create index indx_accounts_ip on accounts (last_login_ip); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-08-09 17:38:11
|
Revision: 2040 http://planeshift.svn.sourceforge.net/planeshift/?rev=2040&view=rev Author: mgist Date: 2008-08-09 17:38:19 +0000 (Sat, 09 Aug 2008) Log Message: ----------- - Merged r2023,2037-2038 from trunk. Modified Paths: -------------- stable/docs/history.txt stable/src/server/database/mysql/command_access.sql stable/src/server/spellmanager.cpp Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988,1990-1991,1994,1996-2001,2003-2004,2008,2019,2026-2031 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988,1990-1991,1994,1996-2001,2003-2004,2008,2019,2023,2026-2031,2037-2038 Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-08-09 17:09:23 UTC (rev 2039) +++ stable/docs/history.txt 2008-08-09 17:38:19 UTC (rev 2040) @@ -1,4 +1,10 @@ +*** 2008-08-09 by Steven Patrick +- Added the "view stats" permission to GM1, patch by Kerol + *** 2008-08-06 by Andreas Heinchen +- Fixed FS#190, patch by Peeg + +*** 2008-08-06 by Andreas Heinchen - Fixed a wrong handling of a referenced object *** 2008-08-06 by Mike Gist Modified: stable/src/server/database/mysql/command_access.sql =================================================================== --- stable/src/server/database/mysql/command_access.sql 2008-08-09 17:09:23 UTC (rev 2039) +++ stable/src/server/database/mysql/command_access.sql 2008-08-09 17:38:19 UTC (rev 2040) @@ -230,11 +230,6 @@ INSERT INTO command_group_assignment VALUES( "/inspect", 24 ); INSERT INTO command_group_assignment VALUES( "/inspect", 23 ); INSERT INTO command_group_assignment VALUES( "/inspect", 22 ); -INSERT INTO command_group_assignment VALUES( "view stats", 30 ); -INSERT INTO command_group_assignment VALUES( "view stats", 25 ); -INSERT INTO command_group_assignment VALUES( "view stats", 24 ); -INSERT INTO command_group_assignment VALUES( "view stats", 23 ); -INSERT INTO command_group_assignment VALUES( "view stats", 22 ); INSERT INTO command_group_assignment VALUES( "quest list others", 30 ); INSERT INTO command_group_assignment VALUES( "quest list others", 25 ); INSERT INTO command_group_assignment VALUES( "quest list others", 24 ); @@ -254,6 +249,12 @@ # GM1 and above +INSERT INTO command_group_assignment VALUES( "view stats", 30 ); +INSERT INTO command_group_assignment VALUES( "view stats", 25 ); +INSERT INTO command_group_assignment VALUES( "view stats", 24 ); +INSERT INTO command_group_assignment VALUES( "view stats", 23 ); +INSERT INTO command_group_assignment VALUES( "view stats", 22 ); +INSERT INTO command_group_assignment VALUES( "view stats", 21 ); INSERT INTO command_group_assignment VALUES( "/teleport", 30 ); INSERT INTO command_group_assignment VALUES( "/teleport", 25 ); INSERT INTO command_group_assignment VALUES( "/teleport", 24 ); Modified: stable/src/server/spellmanager.cpp =================================================================== --- stable/src/server/spellmanager.cpp 2008-08-09 17:09:23 UTC (rev 2039) +++ stable/src/server/spellmanager.cpp 2008-08-09 17:38:19 UTC (rev 2040) @@ -461,13 +461,6 @@ if (glyph->GetStackCount() > 1) { - if ( !character->Inventory().HowManyCanFit(glyph) ) - { - psserver->SendSystemError(client->GetClientNum(), "Your inventory is full!" ); - SendGlyphs(client); - return; - } - psGlyph* stackOfGlyphs = glyph; glyph = dynamic_cast <psGlyph*> (stackOfGlyphs->SplitStack(1)); @@ -479,15 +472,14 @@ psItem *glyphItem = glyph; // Needed for reference in next function if (!character->Inventory().Add(glyphItem,false,false)) { - Error2("Failed to move purifying glyph to bulk slot for %s", client->GetName() ); + // Notify the player that and why purification failed + psserver->SendSystemError(client->GetClientNum(), "You can't purify %s because your inventory is full!", glyph->GetName()); + CacheManager::GetSingleton().RemoveInstance(glyphItem); // Reset the stack count to account for the one that was destroyed. stackOfGlyphs->SetStackCount(stackOfGlyphs->GetStackCount() + 1); - csString status; - status.Format("Warning: New glpyh created in StartPurifying for %s, stack count now %d", - (const char *) client->GetName(), stackOfGlyphs->GetStackCount()); - psserver->GetLogCSV()->Write(CSV_STATUS, status); + SendGlyphs(client); return; } stackOfGlyphs->Save(false); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-08-18 12:52:06
|
Revision: 2079 http://planeshift.svn.sourceforge.net/planeshift/?rev=2079&view=rev Author: mgist Date: 2008-08-18 12:52:15 +0000 (Mon, 18 Aug 2008) Log Message: ----------- - Merged r2078 from trunk. Modified Paths: -------------- stable/docs/history.txt stable/src/server/combatmanager.cpp Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988,1990-1991,1994,1996-2001,2003-2004,2008,2019,2023,2026-2031,2037-2038 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988,1990-1991,1994,1996-2001,2003-2004,2008,2019,2023,2026-2031,2037-2038,2078 Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-08-18 12:46:18 UTC (rev 2078) +++ stable/docs/history.txt 2008-08-18 12:52:15 UTC (rev 2079) @@ -1,3 +1,5 @@ +*** 2008-08-15 by Andreas Heinchen +- Added messages in combat manager to see why attacks are stopped *** 2008-08-09 by Steven Patrick - Added the "view stats" permission to GM1, patch by Kerol Modified: stable/src/server/combatmanager.cpp =================================================================== --- stable/src/server/combatmanager.cpp 2008-08-18 12:46:18 UTC (rev 2078) +++ stable/src/server/combatmanager.cpp 2008-08-18 12:52:15 UTC (rev 2079) @@ -734,7 +734,10 @@ bool skipThisRound = false; if (!event->GetAttacker() || !event->GetTarget()) // disconnected and deleted + { + psserver->SendSystemError(event->AttackerCID, "Combat stopped as one participant logged of."); return; + } gemActor *gemAttacker = dynamic_cast<gemActor*> ((gemObject *) event->attacker); gemActor *gemTarget = dynamic_cast<gemActor*> ((gemObject *) event->target); @@ -742,18 +745,35 @@ attacker_data=event->GetAttackerData(); target_data=event->GetTargetData(); - // If the attacker is no longer in attack mode or target is dead, abort. - if (attacker_data->GetMode() != PSCHARACTER_MODE_COMBAT || !gemTarget->IsAlive() ) + // If the attacker is no longer in attack mode abort. + if (attacker_data->GetMode() != PSCHARACTER_MODE_COMBAT) + { + psserver->SendSystemError(event->AttackerCID, + "Combat stopped as you left combat mode."); return; - + } + + // If target is dead, abort. + if (!gemTarget->IsAlive() ) + { + psserver->SendSystemResult(event->AttackerCID, "Combat stopped as one participant logged of."); + return; + } + // If the slot is no longer attackable, abort if (!attacker_data->Inventory().CanItemAttack(event->GetWeaponSlot())) + { + psserver->SendSystemError(event->AttackerCID, "Combat stopped as you have no longer an attackable item equipped."); return; - + } + // If the slot next attack time is not yet up, abort (another event sequence should have been started) if (attacker_data->GetSlotNextAttackTime(event->GetWeaponSlot()) > csGetTicks()) + { + psserver->SendSystemError(event->AttackerCID, "Combat stopped as you have no longer an item to attack equipped."); return; - + } + psItem* weapon = attacker_data->Inventory().GetEffectiveWeaponInSlot(event->GetWeaponSlot()); // weapon became unwieldable @@ -798,14 +818,20 @@ // If the target has changed, abort (assume another combat event has started since we are still in attack mode) if (gemTarget != attacker_client->GetTargetObject()) + { + psserver->SendSystemError(event->AttackerCID, "Target changed."); return; + } } else { // Check if the npc's target has changed (if it has, then assume another combat event has started.) gemNPC* npcAttacker = dynamic_cast<gemNPC*>(gemAttacker); if (npcAttacker && npcAttacker->GetTarget() != gemTarget) + { + psserver->SendSystemError(event->AttackerCID, "NPC's target changed."); return; + } } if (attacker_data->IsSpellCasting()) @@ -907,6 +933,10 @@ // CPrintf(CON_DEBUG, "Queueing Slot %d for %s's next combat event.\n",event->GetWeaponSlot(), event->attacker->GetName() ); QueueNextEvent(event); } + else + { + psserver->SendSystemError(event->AttackerCID, "Item %s is not a auto attack item.",attacker_data->Inventory().GetEffectiveWeaponInSlot(event->GetWeaponSlot())->GetName()); + } // else // CPrintf(CON_DEBUG, "Slot %d for %s not an auto-attack slot.\n",event->GetWeaponSlot(), event->attacker->GetName() ); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-08-18 13:11:05
|
Revision: 2081 http://planeshift.svn.sourceforge.net/planeshift/?rev=2081&view=rev Author: mgist Date: 2008-08-18 13:11:14 +0000 (Mon, 18 Aug 2008) Log Message: ----------- - Merged r2080 from trunk. Modified Paths: -------------- stable/src/server/combatmanager.cpp Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988,1990-1991,1994,1996-2001,2003-2004,2008,2019,2023,2026-2031,2037-2038,2078 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988,1990-1991,1994,1996-2001,2003-2004,2008,2019,2023,2026-2031,2037-2038,2078,2080 Modified: stable/src/server/combatmanager.cpp =================================================================== --- stable/src/server/combatmanager.cpp 2008-08-18 13:06:09 UTC (rev 2080) +++ stable/src/server/combatmanager.cpp 2008-08-18 13:11:14 UTC (rev 2081) @@ -770,7 +770,7 @@ // If the slot next attack time is not yet up, abort (another event sequence should have been started) if (attacker_data->GetSlotNextAttackTime(event->GetWeaponSlot()) > csGetTicks()) { - psserver->SendSystemError(event->AttackerCID, "Combat stopped as you have no longer an item to attack equipped."); + psserver->SendSystemError(event->AttackerCID, "Combat stopped as you have attacked several times."); return; } @@ -789,6 +789,7 @@ if (event->WeaponID != weapon->GetUID()) { Debug2(LOG_COMBAT, gemAttacker->GetClientID(),"%s has changed weapons mid battle", gemAttacker->GetName() ); + psserver->SendSystemError(event->AttackerCID, "Weapon changed. Skipping"); skipThisRound = true; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mg...@us...> - 2008-08-20 15:48:52
|
Revision: 2088 http://planeshift.svn.sourceforge.net/planeshift/?rev=2088&view=rev Author: mgist Date: 2008-08-20 15:48:59 +0000 (Wed, 20 Aug 2008) Log Message: ----------- - Merged r2086 from trunk. Modified Paths: -------------- stable/docs/history.txt stable/src/common/util/eventmanager.cpp stable/src/common/util/eventmanager.h Property Changed: ---------------- stable/ Property changes on: stable ___________________________________________________________________ Modified: svn:mergeinfo - /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988,1990-1991,1994,1996-2001,2003-2004,2008,2019,2023,2026-2031,2037-2038,2078,2080 + /trunk:1911,1915-1916,1918-1919,1923-1927,1930,1934,1936,1939,1941,1945-1949,1951-1953,1958,1960-1961,1964,1966,1968,1970-1972,1974,1978-1979,1981-1982,1986-1988,1990-1991,1994,1996-2001,2003-2004,2008,2019,2023,2026-2031,2037-2038,2078,2080,2086 Modified: stable/docs/history.txt =================================================================== --- stable/docs/history.txt 2008-08-19 19:19:34 UTC (rev 2087) +++ stable/docs/history.txt 2008-08-20 15:48:59 UTC (rev 2088) @@ -1,3 +1,5 @@ +*** 2008-08-19 by Andreas Heinchen +- added some sanity checks to event manager *** 2008-08-15 by Andreas Heinchen - Added messages in combat manager to see why attacks are stopped *** 2008-08-09 by Steven Patrick Modified: stable/src/common/util/eventmanager.cpp =================================================================== --- stable/src/common/util/eventmanager.cpp 2008-08-19 19:19:34 UTC (rev 2087) +++ stable/src/common/util/eventmanager.cpp 2008-08-20 15:48:59 UTC (rev 2088) @@ -38,6 +38,7 @@ // Setting up the static pointer in psGameEvent. Used so // that an event can be fired without needing to look up // the event manager first. + lastTick = 0; psGameEvent::eventmanager = this; } @@ -56,6 +57,17 @@ // This inserts the event into the priority queue, sorted by timestamp eventqueue.Insert(event); + + /*check if events are inserted late*/ + if (event->triggerticks < lastTick) + { + // yelp and adjust lastTick to avoid wrong warning + CPrintf( + CON_DEBUG, + "Event %d scheduled at %d is being inserted late. Last processed event was scheduled for %d.\n", + event->id, event->triggerticks, lastTick); + lastTick = event->triggerticks; + } } // Process events at least every 250 tick @@ -85,7 +97,23 @@ break; } eventqueue.DeleteMin(); + + /*check if events arrive in order*/ + if (event->triggerticks < lastTick) + { + /* this should not happen at all */ + CPrintf( + CON_DEBUG, + "Event %d scheduled at %d is being processed out of order at time %d! Last processed event was scheduled for %d.\n", + event->id, event->triggerticks, now, lastTick); + } + else + { + lastTick = event->triggerticks; + } + } + csTicks start = csGetTicks(); Modified: stable/src/common/util/eventmanager.h =================================================================== --- stable/src/common/util/eventmanager.h 2008-08-19 19:19:34 UTC (rev 2087) +++ stable/src/common/util/eventmanager.h 2008-08-20 15:48:59 UTC (rev 2088) @@ -42,6 +42,8 @@ /** thread main loop */ virtual void Run (); + csTicks lastTick; + public: EventManager(); virtual ~EventManager(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |