[Scummvm-git-logs] scummvm master -> 33d1a4f8b0bbbebb8bb40c566d0405cc60b4ba6a

dreammaster noreply at scummvm.org
Tue Mar 14 03:12:13 UTC 2023


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
9365613ee4 NUVIE: Fix Ultima 6 item order in containers
461ca0cbbf NUVIE: Fix Ultima 6 item order when player searches containers
33d1a4f8b0 NUVIE: Fix Ultima 6 item order in containers when saving


Commit: 9365613ee4f5ddc1707a964b6b547ee032921477
    https://github.com/scummvm/scummvm/commit/9365613ee4f5ddc1707a964b6b547ee032921477
Author: PushmePullyu (127053144+PushmePullyu at users.noreply.github.com)
Date: 2023-03-13T20:12:08-07:00

Commit Message:
NUVIE: Fix Ultima 6 item order in containers

Add items to containers in the correct order when loading a chunk.

Changed paths:
    engines/ultima/nuvie/core/obj.cpp
    engines/ultima/nuvie/core/obj.h
    engines/ultima/nuvie/core/obj_manager.cpp


diff --git a/engines/ultima/nuvie/core/obj.cpp b/engines/ultima/nuvie/core/obj.cpp
index ba0ec3eb116..17e8476fa36 100644
--- a/engines/ultima/nuvie/core/obj.cpp
+++ b/engines/ultima/nuvie/core/obj.cpp
@@ -192,21 +192,24 @@ Actor *Obj::get_actor_holding_obj() {
 }
 
 //Add child object into container, stacking if required
-void Obj::add(Obj *obj, bool stack) {
+void Obj::add(Obj *obj, bool stack, bool addAtTail) {
 	if (container == NULL)
 		make_container();
 
 	if (stack && Game::get_game()->get_obj_manager()->is_stackable(obj))
-		add_and_stack(obj);
+		add_and_stack(obj, addAtTail);
 	else
-		container->addAtPos(0, obj);
+		if (!addAtTail)
+			container->addAtPos(0, obj);
+		else
+			container->add(obj);
 
 	obj->set_in_container(this);
 
 	return;
 }
 
-void Obj::add_and_stack(Obj *obj) {
+void Obj::add_and_stack(Obj *obj, bool addAtTail) {
 	U6Link *link;
 	Obj *cont_obj;
 
@@ -224,7 +227,10 @@ void Obj::add_and_stack(Obj *obj) {
 		}
 	}
 
-	container->addAtPos(0, obj); // add the object as we couldn't find another object to stack with.
+	if (!addAtTail)
+		container->addAtPos(0, obj); // add the object as we couldn't find another object to stack with.
+	else
+		container->add(obj);
 
 	return;
 }
diff --git a/engines/ultima/nuvie/core/obj.h b/engines/ultima/nuvie/core/obj.h
index 02ecccdcb92..e92f49fdedc 100644
--- a/engines/ultima/nuvie/core/obj.h
+++ b/engines/ultima/nuvie/core/obj.h
@@ -173,7 +173,7 @@ public:
 	void set_in_script(bool flag);
 	void set_actor_obj(bool flag);
 
-	void add(Obj *obj, bool stack = false);
+	void add(Obj *obj, bool stack = false, bool addAtTail = false);
 
 	bool remove(Obj *obj);
 
@@ -183,7 +183,7 @@ public:
 
 protected:
 
-	void add_and_stack(Obj *obj);
+	void add_and_stack(Obj *obj, bool addAtTail = false);
 
 };
 
diff --git a/engines/ultima/nuvie/core/obj_manager.cpp b/engines/ultima/nuvie/core/obj_manager.cpp
index 6eb08cbd8a0..ef82fd0781a 100644
--- a/engines/ultima/nuvie/core/obj_manager.cpp
+++ b/engines/ultima/nuvie/core/obj_manager.cpp
@@ -1623,7 +1623,7 @@ bool ObjManager::addObjToContainer(U6LList *llist, Obj *obj) {
 		c_obj = (Obj *)link->data;
 
 	if (c_obj) { // we've found our container.
-		c_obj->add(obj);
+		c_obj->add(obj, false, true); //add at tail position
 
 		//DEBUG(0,LEVEL_DEBUGGING,"Cont: %s\n", tile_manager->lookAtTile(get_obj_tile_num(c_obj->obj_n)+c_obj->frame_n,0,false));
 		//DEBUG(0,LEVEL_DEBUGGING,"Add to container %s", tile_manager->lookAtTile(get_obj_tile_num(obj->obj_n)+obj->frame_n,0,false));


Commit: 461ca0cbbfbe5cfb11c92f9f189328cb80640988
    https://github.com/scummvm/scummvm/commit/461ca0cbbfbe5cfb11c92f9f189328cb80640988
Author: PushmePullyu (127053144+PushmePullyu at users.noreply.github.com)
Date: 2023-03-13T20:12:08-07:00

Commit Message:
NUVIE: Fix Ultima 6 item order when player searches containers

Traverse container content list from the start instead of the end
so items get moved to the map in the correct order.

Fixes #13514

Changed paths:
    engines/ultima/nuvie/usecode/usecode.cpp


diff --git a/engines/ultima/nuvie/usecode/usecode.cpp b/engines/ultima/nuvie/usecode/usecode.cpp
index ac368d63a8d..cec1e1c92bd 100644
--- a/engines/ultima/nuvie/usecode/usecode.cpp
+++ b/engines/ultima/nuvie/usecode/usecode.cpp
@@ -163,11 +163,11 @@ bool UseCode::search_container(Obj *obj, bool show_string) {
 
 	/* Test whether this object has items inside it. */
 	if ((obj->container != NULL) &&
-	        ((obj_link = obj->container->end()) != NULL)) {
+	        ((obj_link = obj->container->start()) != NULL)) {
 		/* Add objects to obj_list. */
 		for (; obj_link != NULL;) {
 			temp_obj = (Obj *)obj_link->data;
-			obj_link = obj_link->prev;
+			obj_link = obj_link->next;
 			/*
 			obj_list->add(temp_obj);
 			temp_obj->status |= OBJ_STATUS_OK_TO_TAKE;
@@ -180,7 +180,7 @@ bool UseCode::search_container(Obj *obj, bool show_string) {
 			if (show_string) {
 				scroll->display_string(obj_manager->look_obj(temp_obj, true));
 				if (obj_link) // more objects left
-					scroll->display_string(obj_link->prev ? ", " : ", and ");
+					scroll->display_string(obj_link->next ? ", " : ", and ");
 			}
 		}
 		/* Remove objects from the container. */


Commit: 33d1a4f8b0bbbebb8bb40c566d0405cc60b4ba6a
    https://github.com/scummvm/scummvm/commit/33d1a4f8b0bbbebb8bb40c566d0405cc60b4ba6a
Author: PushmePullyu (127053144+PushmePullyu at users.noreply.github.com)
Date: 2023-03-13T20:12:08-07:00

Commit Message:
NUVIE: Fix Ultima 6 item order in containers when saving

Traverse container content list from the start instead of the end
when saving chunks so the items are stored in the correct order.

Changed paths:
    engines/ultima/nuvie/core/obj_manager.cpp


diff --git a/engines/ultima/nuvie/core/obj_manager.cpp b/engines/ultima/nuvie/core/obj_manager.cpp
index ef82fd0781a..b9c94c92196 100644
--- a/engines/ultima/nuvie/core/obj_manager.cpp
+++ b/engines/ultima/nuvie/core/obj_manager.cpp
@@ -382,7 +382,7 @@ bool ObjManager::save_obj(NuvieIO *save_buf, Obj *obj, uint16 parent_objblk_n) {
 	obj_save_count += 1;
 
 	if (obj->container) {
-		for (link = obj->container->end(); link != NULL; link = link->prev)
+		for (link = obj->container->start(); link != NULL; link = link->next)
 			save_obj(save_buf, (Obj *)link->data, objblk_n);
 	}
 




More information about the Scummvm-git-logs mailing list