From: <ave...@us...> - 2009-11-30 21:37:51
|
Revision: 7440 http://gemrb.svn.sourceforge.net/gemrb/?rev=7440&view=rev Author: avenger_teambg Date: 2009-11-30 21:37:16 +0000 (Mon, 30 Nov 2009) Log Message: ----------- implemented SetToken2DA (yet unused gemrb specific action) Modified Paths: -------------- gemrb/trunk/gemrb/override/shared/gemact.ids gemrb/trunk/gemrb/plugins/Core/Actions.cpp gemrb/trunk/gemrb/plugins/Core/GameScript.cpp gemrb/trunk/gemrb/plugins/Core/GameScript.h Modified: gemrb/trunk/gemrb/override/shared/gemact.ids =================================================================== --- gemrb/trunk/gemrb/override/shared/gemact.ids 2009-11-30 20:48:06 UTC (rev 7439) +++ gemrb/trunk/gemrb/override/shared/gemact.ids 2009-11-30 21:37:16 UTC (rev 7440) @@ -3,3 +3,4 @@ 399 ApplySpellPointRES(P:Target*,S:SpellName*) 398 ChangeDestination(O:Object*,S:Destination*) 397 UnmakeGlobal(O:Object*) +396 SetToken2DA(S:ResRef*) Modified: gemrb/trunk/gemrb/plugins/Core/Actions.cpp =================================================================== --- gemrb/trunk/gemrb/plugins/Core/Actions.cpp 2009-11-30 20:48:06 UTC (rev 7439) +++ gemrb/trunk/gemrb/plugins/Core/Actions.cpp 2009-11-30 21:37:16 UTC (rev 7440) @@ -6680,8 +6680,8 @@ //TODO: investigate what happens with * values void GameScript::SetupWish(Scriptable* Sender, Action* parameters) { - int count = 0; - char varname[33]; + int count; + ieVariable varname; AutoTable tm("wish"); if (!tm) { @@ -6730,6 +6730,31 @@ } } +//GemRB specific action +//Sets up multiple tokens randomly (one per 2da row) +//the row label column sets the token names +void GameScript::SetToken2DA(Scriptable* /*Sender*/, Action* parameters) +{ + int count; + int i,j; + ieVariable tokenname; + + AutoTable tm(parameters->string0Parameter); + if (!tm) { + printStatus( "ERROR", LIGHT_RED ); + printf( "Cannot find %s.2da.\n", parameters->string0Parameter); + return; + } + + count = tm->GetRowCount(); + for(i=0;i<count;i++) { + //roll a random number between 0 and column # + j = core->Roll(1,tm->GetColumnCount(i),-1); + strnuprcpy(tokenname, tm->GetRowName(i), 32); + core->GetTokenDictionary()->SetAtCopy( tokenname, tm->QueryField(i, j) ); + } +} + //this is a gemrb extension for scriptable tracks void GameScript::SetTrackString(Scriptable* Sender, Action* parameters) { @@ -6757,3 +6782,4 @@ { core->GetGame()->BanterBlockTime = parameters->int0Parameter; } + Modified: gemrb/trunk/gemrb/plugins/Core/GameScript.cpp =================================================================== --- gemrb/trunk/gemrb/plugins/Core/GameScript.cpp 2009-11-30 20:48:06 UTC (rev 7439) +++ gemrb/trunk/gemrb/plugins/Core/GameScript.cpp 2009-11-30 21:37:16 UTC (rev 7440) @@ -807,6 +807,7 @@ {"settextcolor", GameScript::SetTextColor, 0}, {"settrackstring", GameScript::SetTrackString, 0}, {"settoken", GameScript::SetToken, 0}, + {"settoken2da", GameScript::SetToken2DA, 0}, //GemRB specific {"settokenglobal", GameScript::SetTokenGlobal,AF_MERGESTRINGS}, {"setupwish", GameScript::SetupWish, 0}, {"setvisualrange", GameScript::SetVisualRange, 0}, Modified: gemrb/trunk/gemrb/plugins/Core/GameScript.h =================================================================== --- gemrb/trunk/gemrb/plugins/Core/GameScript.h 2009-11-30 20:48:06 UTC (rev 7439) +++ gemrb/trunk/gemrb/plugins/Core/GameScript.h 2009-11-30 21:37:16 UTC (rev 7440) @@ -1353,6 +1353,7 @@ static void SetTeamBit(Scriptable* Sender, Action* parameters); static void SetTextColor(Scriptable* Sender, Action* parameters); static void SetToken(Scriptable* Sender, Action* parameters); + static void SetToken2DA(Scriptable* Sender, Action* parameters); static void SetTokenGlobal(Scriptable* Sender, Action* parameters); static void SetTrackString(Scriptable* Sender, Action* parameters); static void SetupWish(Scriptable* Sender, Action* parameters); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |