From: <ma...@us...> - 2010-04-17 18:42:50
|
Revision: 6310 http://exult.svn.sourceforge.net/exult/?rev=6310&view=rev Author: marzojr Date: 2010-04-17 18:42:44 +0000 (Sat, 17 Apr 2010) Log Message: ----------- * Patches applied: #2843338 Use official min/max functions instead of proprietary ones #2975693 fix for bug, Walking speed doesn't change to reflect fps Modified Paths: -------------- exult/trunk/ChangeLog exult/trunk/audio/VocAudioSample.cc exult/trunk/files/utils.h exult/trunk/gamewin.cc exult/trunk/gamewin.h exult/trunk/keyactions.cc exult/trunk/keyactions.h exult/trunk/mouse.cc exult/trunk/shapeid.cc Modified: exult/trunk/ChangeLog =================================================================== --- exult/trunk/ChangeLog 2010-04-15 21:09:45 UTC (rev 6309) +++ exult/trunk/ChangeLog 2010-04-17 18:42:44 UTC (rev 6310) @@ -1,3 +1,8 @@ +2010-04-17 Marzo Sette Torres Junior <ma...@ya...> + * Patches applied: + #2843338 Use official min/max functions instead of proprietary ones + #2975693 fix for bug, Walking speed doesn't change to reflect fps + 2010-04-12 Marzo Sette Torres Junior <ma...@ya...> * Bugs fixed: #1500917 --disable-mt32emu doesn't disable building mt32emu Modified: exult/trunk/audio/VocAudioSample.cc =================================================================== --- exult/trunk/audio/VocAudioSample.cc 2010-04-15 21:09:45 UTC (rev 6309) +++ exult/trunk/audio/VocAudioSample.cc 2010-04-17 18:42:44 UTC (rev 6310) @@ -23,6 +23,13 @@ #define TRAILING_VOC_SLOP 32 #define LEADING_VOC_SLOP 32 +#ifndef min +using std::min; +#endif +#ifndef max +using std::max; +#endif + namespace Pentagram { VocAudioSample::VocAudioSample(uint8* buffer_, uint32 size_) Modified: exult/trunk/files/utils.h =================================================================== --- exult/trunk/files/utils.h 2010-04-15 21:09:45 UTC (rev 6309) +++ exult/trunk/files/utils.h 2010-04-17 18:42:44 UTC (rev 6310) @@ -37,22 +37,6 @@ #endif /* - * Smallest of two values. - */ -inline int min(int i1, int i2) - { - return i1 < i2 ? i1 : i2; - } - -/* - * Largest of two values. - */ -inline int max(int i1, int i2) - { - return i1 > i2 ? i1 : i2; - } - -/* * Read a 1-byte value. */ Modified: exult/trunk/gamewin.cc =================================================================== --- exult/trunk/gamewin.cc 2010-04-15 21:09:45 UTC (rev 6309) +++ exult/trunk/gamewin.cc 2010-04-17 18:42:44 UTC (rev 6310) @@ -83,6 +83,7 @@ #include "party.h" #include "Notebook_gump.h" #include "AudioMixer.h" +#include "combat.h" #ifdef USE_EXULTSTUDIO #include "server.h" @@ -3127,3 +3128,38 @@ } } #endif + +bool Game_window::is_hostile_nearby() +{ + /* If there is a hostile NPC nearby, the avatar isn't allowed to + * move very fast + * Note that the range at which this occurs in the original is + * less than the "potential target" range- that is, if I go into + * combat mode, even when I'm allowed to run at full speed, + * I'll sometime charge off to kill someone "too far away" + * to affect a speed limit. + * I don't know whether this is taken into account by + * get_nearby_npcs, but on the other hand, its a negligible point. + */ + Actor_vector nearby; + if (!cheat.in_god_mode()) + get_nearby_npcs( nearby ); + + bool nearby_hostile = false; + for( Actor_vector::const_iterator it = nearby.begin(); it != nearby.end(); ++it ) { + Actor *actor = *it; + + if( !actor->is_dead() && actor->get_schedule() && + actor->get_alignment() >= Npc_actor::hostile && + actor->get_schedule_type() == Schedule::combat && + static_cast<Combat_schedule*>(actor->get_schedule())-> + has_started_battle()) + { + /* TODO- I think invisibles still trigger the + * slowdown, verify this. */ + nearby_hostile = true; + break; /* No need to bother checking the rest :P */ + } + } + return nearby_hostile; +} Modified: exult/trunk/gamewin.h =================================================================== --- exult/trunk/gamewin.h 2010-04-15 21:09:45 UTC (rev 6309) +++ exult/trunk/gamewin.h 2010-04-17 18:42:44 UTC (rev 6310) @@ -2,7 +2,7 @@ * gamewin.h - X-windows Ultima7 map browser. * * Copyright (C) 1998-1999 Jeffrey S. Freedman - * Copyright (C) 2000-2001 The Exult Team + * Copyright (C) 2000-2010 The Exult Team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -328,6 +328,7 @@ void theft(); // Handle thievery. void call_guards(Actor *witness = 0); void attack_avatar(int num_guards = 0); + bool is_hostile_nearby(); // detects if hostiles are nearby for movement speed /* * Rendering: */ Modified: exult/trunk/keyactions.cc =================================================================== --- exult/trunk/keyactions.cc 2010-04-15 21:09:45 UTC (rev 6309) +++ exult/trunk/keyactions.cc 2010-04-17 18:42:44 UTC (rev 6310) @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001-2004 The Exult Team + * Copyright (C) 2001-2010 The Exult Team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -544,11 +544,25 @@ gwin->view_down(); } +int get_walking_speed(int *params) +{ + Game_window *gwin = Game_window::get_instance(); + int parm = params ? params[0] : 0; + int speed; + if (parm == 2) + speed = Mouse::slow_speed_factor; + else if (gwin->in_combat() || gwin->is_hostile_nearby()) + speed = Mouse::medium_combat_speed_factor; + else + speed = parm==1 ? Mouse::medium_speed_factor : Mouse::fast_speed_factor; + return (200*gwin->get_std_delay()/speed); +} + // { ActionWalkWest, 0, "Walk west", normal_keys, NONE }, void ActionWalkWest(int *params) { Game_window *gwin = Game_window::get_instance(); - int speed = params[0]<0?166:50; + int speed = get_walking_speed(params); gwin->start_actor(gwin->get_width()/2-50, gwin->get_height()/2,speed); } @@ -556,7 +570,7 @@ void ActionWalkEast(int *params) { Game_window *gwin = Game_window::get_instance(); - int speed = params[0]<0?166:50; + int speed = get_walking_speed(params); gwin->start_actor(gwin->get_width()/2+50, gwin->get_height()/2, speed); } @@ -564,7 +578,7 @@ void ActionWalkNorth(int *params) { Game_window *gwin = Game_window::get_instance(); - int speed = params[0]<0?166:50; + int speed = get_walking_speed(params); gwin->start_actor(gwin->get_width()/2, gwin->get_height()/2-50, speed); } @@ -572,7 +586,7 @@ void ActionWalkSouth(int *params) { Game_window *gwin = Game_window::get_instance(); - int speed = params[0]<0?166:50; + int speed = get_walking_speed(params); gwin->start_actor(gwin->get_width()/2, gwin->get_height()/2+50, speed); } @@ -580,7 +594,7 @@ void ActionWalkNorthEast(int *params) { Game_window *gwin = Game_window::get_instance(); - int speed = params[0]<0?166:50; + int speed = get_walking_speed(params); gwin->start_actor(gwin->get_width()/2+50, gwin->get_height()/2-50, speed); } @@ -588,7 +602,7 @@ void ActionWalkSouthEast(int *params) { Game_window *gwin = Game_window::get_instance(); - int speed = params[0]<0?166:50; + int speed = get_walking_speed(params); gwin->start_actor(gwin->get_width()/2+50, gwin->get_height()/2+50, speed); } @@ -596,7 +610,7 @@ void ActionWalkNorthWest(int *params) { Game_window *gwin = Game_window::get_instance(); - int speed = params[0]<0?166:50; + int speed = get_walking_speed(params); gwin->start_actor(gwin->get_width()/2-50, gwin->get_height()/2-50, speed); } @@ -604,7 +618,7 @@ void ActionWalkSouthWest(int *params) { Game_window *gwin = Game_window::get_instance(); - int speed = params[0]<0?166:50; + int speed = get_walking_speed(params); gwin->start_actor(gwin->get_width()/2-50, gwin->get_height()/2+50, speed); } Modified: exult/trunk/keyactions.h =================================================================== --- exult/trunk/keyactions.h 2010-04-15 21:09:45 UTC (rev 6309) +++ exult/trunk/keyactions.h 2010-04-17 18:42:44 UTC (rev 6310) @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001 The Exult Team + * Copyright (C) 2001-2010 The Exult Team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -62,6 +62,7 @@ void ActionScrollRight(int* params); void ActionScrollUp(int* params); void ActionScrollDown(int* params); +int get_walking_speed(int* params); void ActionWalkWest(int* params); void ActionWalkEast(int* params); void ActionWalkNorth(int* params); Modified: exult/trunk/mouse.cc =================================================================== --- exult/trunk/mouse.cc 2010-04-15 21:09:45 UTC (rev 6309) +++ exult/trunk/mouse.cc 2010-04-17 18:42:44 UTC (rev 6310) @@ -1,7 +1,7 @@ /* * mouse.cc - Mouse pointers. * - * Copyright (C) 2000-2002 The Exult Team + * Copyright (C) 2000-2010 The Exult Team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -37,12 +37,9 @@ #include "schedule.h" /* To get Schedule::combat */ #include "ucsched.h" -#ifndef _MSC_VER +#ifndef max using std::max; #endif -#ifdef UNDER_CE -using std::max; -#endif short Mouse::short_arrows[8] = {8, 9, 10, 11, 12, 13, 14, 15}; short Mouse::med_arrows[8] = {16, 17, 18, 19, 20, 21, 22, 23}; @@ -301,38 +298,7 @@ Direction dir = Get_direction(dy, dx); Rectangle gamewin_dims = gwin->get_win_rect(); float speed_section = max( max( -static_cast<float>(dx)/ax, static_cast<float>(dx)/(gamewin_dims.w-ax)), max(static_cast<float>(dy)/ay, -static_cast<float>(dy)/(gamewin_dims.h-ay)) ); - - /* If there is a hostile NPC nearby, the avatar isn't allowed to - * move very fast - * Note that the range at which this occurs in the original is - * less than the "potential target" range- that is, if I go into - * combat mode, even when I'm allowed to run at full speed, - * I'll sometime charge off to kill someone "too far away" - * to affect a speed limit. - * I don't know whether this is taken into account by - * get_nearby_npcs, but on the other hand, its a negligible point. - */ - Actor_vector nearby; - if (!cheat.in_god_mode()) - gwin->get_nearby_npcs( nearby ); - - bool nearby_hostile = false; - for( Actor_vector::const_iterator it = nearby.begin(); it != nearby.end(); ++it ) { - Actor *actor = *it; - - if( !actor->is_dead() && actor->get_schedule() && - actor->get_alignment() >= Npc_actor::hostile && - actor->get_schedule_type() == Schedule::combat && - static_cast<Combat_schedule*>(actor->get_schedule())-> - has_started_battle()) - { - /* TODO- I think invisibles still trigger the - * slowdown, verify this. */ - nearby_hostile = true; - break; /* No need to bother checking the rest :P */ - } - } - + bool nearby_hostile = gwin->is_hostile_nearby(); bool has_active_nohalt_scr = false; Usecode_script *scr = 0; Actor *act = gwin->get_main_actor(); Modified: exult/trunk/shapeid.cc =================================================================== --- exult/trunk/shapeid.cc 2010-04-15 21:09:45 UTC (rev 6309) +++ exult/trunk/shapeid.cc 2010-04-17 18:42:44 UTC (rev 6310) @@ -47,6 +47,14 @@ using std::vector; using std::pair; +// These MIGHT be macros! +#ifndef min +using std::min; +#endif +#ifndef max +using std::max; +#endif + Shape_manager *Shape_manager::instance = 0; /* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |