From f98c4e81481ca08453b39979d190a0e317b015b6 Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Wed, 27 Jun 2012 21:53:16 +0000
Subject: [PATCH] If there is room on the screen a new pane will appear in the
 levelup dialog to replace the tooltip

git-svn-id: http://svn.net-core.org/repos/t-engine4@5309 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/modules/tome/dialogs/LevelupDialog.lua   | 39 ++++++++++++++++---
 .../tome/dialogs/elements/TalentTrees.lua     |  7 ++--
 2 files changed, 37 insertions(+), 9 deletions(-)

diff --git a/game/modules/tome/dialogs/LevelupDialog.lua b/game/modules/tome/dialogs/LevelupDialog.lua
index 5e3e83d1e8..a65175b38a 100644
--- a/game/modules/tome/dialogs/LevelupDialog.lua
+++ b/game/modules/tome/dialogs/LevelupDialog.lua
@@ -22,6 +22,7 @@ require "mod.class.interface.TooltipsData"
 
 local Dialog = require "engine.ui.Dialog"
 local Textzone = require "engine.ui.Textzone"
+local TextzoneList = require "engine.ui.TextzoneList"
 local TalentTrees = require "mod.dialogs.elements.TalentTrees"
 local Separator = require "engine.ui.Separator"
 local DamageType = require "engine.DamageType"
@@ -58,7 +59,10 @@ function _M:init(actor, on_finish, on_birth)
 		if v.type == "subclass" and v.name == actor.descriptor.subclass then self.desc_def = v break end
 	end
 
-	Dialog.init(self, "Levelup: "..actor.name, 740, game.h * 0.9, game.w * 0.05, game.h * 0.05)
+	Dialog.init(self, "Levelup: "..actor.name, game.w * 0.9, game.h * 0.9, game.w * 0.05, game.h * 0.05)
+	if game.w * 0.9 >= 1000 then
+		self.no_tooltip = true
+	end
 
 	self:generateList()
 
@@ -551,14 +555,19 @@ function _M:createDisplay()
 	self.c_tree = TalentTrees.new{
 		tiles=game.uiset.hotkeys_display_icons,
 		tree=self.tree,
-		width=self.iw-200-10, height=self.ih-10,
+		width=530, height=self.ih-10,
 		tooltip=function(item)
 			local x = self.display_x + self.uis[3].x - game.tooltip.max
 			if self.display_x + self.w + game.tooltip.max <= game.w then x = self.display_x + self.w end
-			return self:getTalentDesc(item), x, nil
+			local ret = self:getTalentDesc(item), x, nil
+			if self.no_tooltip then
+				self.c_desc:erase()
+				self.c_desc:switchItem(ret, ret)
+			end
+			return ret
 		end,
 		on_use = function(item, inc) self:onUseTalent(item, inc) end,
-		scrollbar = true,
+		scrollbar = true, no_tooltip = self.no_tooltip,
 	}
 
 	self.c_stat = TalentTrees.new{
@@ -569,10 +578,16 @@ function _M:createDisplay()
 		tooltip=function(item)
 			local x = self.display_x + self.uis[1].x + self.uis[1].ui.w
 			if self.display_x + self.w + game.tooltip.max <= game.w then x = self.display_x + self.w end
-			return self:getStatDesc(item), x, nil
+			local ret = self:getStatDesc(item), x, nil
+			if self.no_tooltip then
+				self.c_desc:erase()
+				self.c_desc:switchItem(ret, ret)
+			end
+			return ret
 		end,
 		on_use = function(item, inc) self:onUseTalent(item, inc) end,
 		on_expand = function(item) self.actor.__hidden_talent_types[item.type] = not item.shown end,
+		no_tooltip = self.no_tooltip,
 	}
 
 	self.c_points = Textzone.new{
@@ -583,7 +598,7 @@ function _M:createDisplay()
 	local vsep = Separator.new{dir="horizontal", size=self.ih - 20}
 	local hsep = Separator.new{dir="vertical", size=180}
 
-	return {
+	local ret = {
 		{left=0, top=0, ui=self.c_stat},
 		{left=self.c_stat, top=10, ui=vsep},
 		{left=vsep, top=0, ui=self.c_tree},
@@ -591,6 +606,18 @@ function _M:createDisplay()
 		{left=10, top=210, ui=hsep},
 		{left=0, top=hsep, ui=self.c_points},
 	}
+
+	if self.no_tooltip then
+		local vsep2 = Separator.new{dir="horizontal", size=self.ih - 20}
+		self.c_desc = TextzoneList.new{
+			width=self.iw - 200 - 530 - 40, height = self.ih,
+			scrollbar = true,
+		}
+		ret[#ret+1] = {right=0, top=0, ui=self.c_desc}
+		ret[#ret+1] = {right=self.c_desc.w, top=0, ui=vsep2}
+	end
+
+	return ret
 end
 
 function _M:getStatDesc(item)
diff --git a/game/modules/tome/dialogs/elements/TalentTrees.lua b/game/modules/tome/dialogs/elements/TalentTrees.lua
index 6cf364d1e6..cdc5a78061 100644
--- a/game/modules/tome/dialogs/elements/TalentTrees.lua
+++ b/game/modules/tome/dialogs/elements/TalentTrees.lua
@@ -36,6 +36,7 @@ function _M:init(t)
 	self.scrollbar = t.scrollbar
 	self.no_cross = t.no_cross
 	self.dont_select_top = t.dont_select_top
+	self.no_tooltip = t.no_tooltip
 
 	self.icon_size = 48
 	self.frame_size = 50
@@ -71,7 +72,7 @@ function _M:updateTooltip()
 	end
 	local mz = self.last_mz
 	local str = self.tooltip(mz.item)
-	game:tooltipDisplayAtMap(mz.tx or (self.last_display_x + mz.x2), mz.ty or (self.last_display_y + mz.y1), str)
+	if not self.no_tooltip then game:tooltipDisplayAtMap(mz.tx or (self.last_display_x + mz.x2), mz.ty or (self.last_display_y + mz.y1), str) end
 end
 
 function _M:doScroll(v)
@@ -130,7 +131,7 @@ function _M:moveSel(i, j)
 	if not self.last_mz then return end
 	local str, fx, fy = self.tooltip(self.last_mz.item)
 	self.last_mz.tx, self.last_mz.ty = fx or (self.last_display_x + self.last_mz.x2), fy or (self.last_display_y + self.last_mz.y1)
-	game:tooltipDisplayAtMap(self.last_mz.tx, self.last_mz.ty, str)
+	if not self.no_tooltip then game:tooltipDisplayAtMap(self.last_mz.tx, self.last_mz.ty, str) end
 end
 
 function _M:generate()
@@ -164,7 +165,7 @@ function _M:generate()
 				if not self.last_mz or mz.item ~= self.last_mz.item then
 					local str, fx, fy = self.tooltip(mz.item)
 					mz.tx, mz.ty = fx or (self.last_display_x + mz.x2), fy or (self.last_display_y + mz.y1)
-					game:tooltipDisplayAtMap(mz.tx, mz.ty, str)
+					if not self.no_tooltip then game:tooltipDisplayAtMap(mz.tx, mz.ty, str) end
 				end
 
 				if event == "button" and (button == "left" or button == "right") then
-- 
GitLab