[Scummvm-cvs-logs] SF.net SVN: scummvm: [26992] scummvm/trunk/engines/lure

dreammaster at users.sourceforge.net dreammaster at users.sourceforge.net
Mon May 28 13:36:59 CEST 2007


Revision: 26992
          http://scummvm.svn.sourceforge.net/scummvm/?rev=26992&view=rev
Author:   dreammaster
Date:     2007-05-28 04:36:59 -0700 (Mon, 28 May 2007)

Log Message:
-----------
Implemented new script methods

Modified Paths:
--------------
    scummvm/trunk/engines/lure/scripts.cpp
    scummvm/trunk/engines/lure/scripts.h

Modified: scummvm/trunk/engines/lure/scripts.cpp
===================================================================
--- scummvm/trunk/engines/lure/scripts.cpp	2007-05-28 11:36:08 UTC (rev 26991)
+++ scummvm/trunk/engines/lure/scripts.cpp	2007-05-28 11:36:59 UTC (rev 26992)
@@ -463,6 +463,34 @@
 	fields.numGroats() -= numGroats;
 }
 
+// Sets a character moving to the player's room (if they're not already there)
+
+void Script::moveCharacterToPlayer(uint16 characterId, uint16 v2, uint16 v3) {
+	Resources &res = Resources::getReference();
+	Hotspot *playerHotspot = res.getActiveHotspot(PLAYER_ID);
+	Hotspot *charHotspot = res.getActiveHotspot(characterId);
+	assert(charHotspot); 
+
+	// If character in same room as player, then no need to do anything
+	if (!charHotspot->currentActions().isEmpty() &&
+		(charHotspot->currentActions().top().roomNumber() == playerHotspot->roomNumber()))
+		return;
+
+	uint16 destRoom = playerHotspot->roomNumber();
+	RoomTranslationRecord *rec; 
+	for (rec = &roomTranslations[0]; rec->srcRoom != 0; ++rec) {
+		if (rec->srcRoom == destRoom) {
+			destRoom = rec->destRoom;
+			break;
+		}
+	}
+
+	if (charHotspot->currentActions().isEmpty())
+		charHotspot->currentActions().addFront(DISPATCH_ACTION,  destRoom);
+	else
+		charHotspot->currentActions().top().setRoomNumber(destRoom);
+}
+
 // Sets the tick handler for the village Skorl to an alternate handler
 
 void Script::setVillageSkorlTickProc(uint16 v1, uint16 v2, uint16 v3) {
@@ -510,6 +538,13 @@
 	g2->actions = 1 << (TALK_TO - 1);
 }
 
+// Flags the player as dead
+
+void Script::killPlayer(uint16 v1, uint16 v2, uint16 v3) {
+	Game &game = Game::getReference();
+	game.setState(GS_RESTORE_RESTART);
+}
+
 // Loads the specified animation, completely bypassing the standard process
 // of checking for a load proc/sequence
 
@@ -600,11 +635,13 @@
 	{49, Script::setSupportData},
 	{50, Script::givePlayerItem},
 	{51, Script::decreaseNumGroats},
+	{53, Script::moveCharacterToPlayer},
 	{54, Script::setVillageSkorlTickProc},
 	{55, Script::freeGoewin},
 	{56, Script::barmanServe},
 	{57, Script::getNumGroats},
 	{59, Script::enableGargoylesTalk},
+	{61, Script::killPlayer},
 	{62, Script::animationLoad},
 	{63, Script::addActions},
 	{64, Script::randomToGeneral},

Modified: scummvm/trunk/engines/lure/scripts.h
===================================================================
--- scummvm/trunk/engines/lure/scripts.h	2007-05-28 11:36:08 UTC (rev 26991)
+++ scummvm/trunk/engines/lure/scripts.h	2007-05-28 11:36:59 UTC (rev 26992)
@@ -118,11 +118,13 @@
 	static void setSupportData(uint16 hotspotId, uint16 index, uint16 v3);
 	static void givePlayerItem(uint16 hotspotId, uint16 v2, uint16 v3);
 	static void decreaseNumGroats(uint16 characterId, uint16 numGroats, uint16 v3);
+	static void moveCharacterToPlayer(uint16 characterId, uint16 v2, uint16 v3);
 	static void setVillageSkorlTickProc(uint16 v1, uint16 v2, uint16 v3);
 	static void freeGoewin(uint16 v1, uint16 v2, uint16 v3);
 	static void barmanServe(uint16 v1, uint16 v2, uint16 v3);
 	static void getNumGroats(uint16 v1, uint16 v2, uint16 v3);
 	static void enableGargoylesTalk(uint16 v1, uint16 v2, uint16 v3);
+	static void killPlayer(uint16 v1, uint16 v2, uint16 v3);
 	static void animationLoad(uint16 hotspotId, uint16 v2, uint16 v3);
 	static void addActions(uint16 hotspotId, uint16 actions, uint16 v3);
 	static void randomToGeneral(uint16 maxVal, uint16 minVal, uint16 v3);


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list