From 3d71e400c0d30510ef3d15cca10241b217c7d91b Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Fri, 27 Nov 2009 04:58:37 +0000
Subject: [PATCH] better ToME intro game menu with modules listing

git-svn-id: http://svn.net-core.org/repos/t-engine4@50 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/data/font/VeraBd.ttf            | Bin 0 -> 58716 bytes
 game/data/gfx/border_1_sel.png       | Bin 0 -> 249 bytes
 game/data/gfx/border_3_sel.png       | Bin 0 -> 227 bytes
 game/data/gfx/border_7_sel.png       | Bin 0 -> 205 bytes
 game/data/gfx/border_9_sel.png       | Bin 0 -> 255 bytes
 game/engine/ButtonList.lua           | 133 +++++++++++++++++++++++++++
 game/engine/Dialog.lua               |   6 +-
 game/engine/Game.lua                 |   7 ++
 game/engine/Module.lua               |  46 +++++++++
 game/engine/Mouse.lua                |  15 ++-
 game/engine/init.lua                 |  19 ++--
 game/engine/utils.lua                |   2 +-
 game/modules/tome/class/Game.lua     |  52 +++++------
 game/modules/tome/init.lua           |  23 ++++-
 game/special/mainmenu/class/Game.lua |  93 +++++++++++++++++++
 src/main.c                           |  27 +++++-
 16 files changed, 378 insertions(+), 45 deletions(-)
 create mode 100644 game/data/font/VeraBd.ttf
 create mode 100644 game/data/gfx/border_1_sel.png
 create mode 100644 game/data/gfx/border_3_sel.png
 create mode 100644 game/data/gfx/border_7_sel.png
 create mode 100644 game/data/gfx/border_9_sel.png
 create mode 100644 game/engine/ButtonList.lua
 create mode 100644 game/engine/Module.lua
 create mode 100644 game/special/mainmenu/class/Game.lua

diff --git a/game/data/font/VeraBd.ttf b/game/data/font/VeraBd.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..51d6111d722981a86766cc99c53f1956e5c0a229
GIT binary patch
literal 58716
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
ZpvJ#@o~VO<IAj}YngRVS`B3ul{{W@ppD6$U

literal 0
HcmV?d00001

diff --git a/game/data/gfx/border_1_sel.png b/game/data/gfx/border_1_sel.png
new file mode 100644
index 0000000000000000000000000000000000000000..99ced49ab8ad309a82057719a9135b4fd7e8df7e
GIT binary patch
literal 249
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqjKx9jP7LeL$-D$|I14-?iy0WW
zg+Z8+Vb&Z8pdfpRr>`sfO>Svs2G(juA330qWQl7;iF1B#Zfaf$gL6@8Vo7R>LV0FM
zhJw4NZ$Nk>pEyuanx~6nh{WZoXAJoq3>aD;?tjF^m!MY2pc1y)A|hW|*6Jd&z}(pp
zvWu3Lt#JHvS$dz%!l_@Dm#(?(XDzlQwdM=|jHh*tHa+{YSF9Flcx)udv33c&#aiYL
n4W<L<FAKz9VtK&G<W<ek*&xZXU8HUz&_)JNS3j3^P6<r_&SguJ

literal 0
HcmV?d00001

diff --git a/game/data/gfx/border_3_sel.png b/game/data/gfx/border_3_sel.png
new file mode 100644
index 0000000000000000000000000000000000000000..6872c673de9d862059813e92ad48447483d8dde9
GIT binary patch
literal 227
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqjKx9jP7LeL$-D$|I14-?iy0WW
zg+Z8+Vb&Z8pdfpRr>`sfO>Su>Ytw`kKlcKKBuiW)N}Tg^b5rw57@Uhz6H8K46v{J8
zG8EiBeFMT9`NV;W0z6$DLnJOIznL%lYd$0Ii<6PYF*~c~Km0JUo5zQTh2bUFmnUlq
zwHrL+c2>#j9cx<0tXBEsglh*=%2fk~$uXPXF)(xYH1l0sV|@Sw7#RA5WKz;^&wLFu
Oo59o7&t;ucLK6Uq^GE~$

literal 0
HcmV?d00001

diff --git a/game/data/gfx/border_7_sel.png b/game/data/gfx/border_7_sel.png
new file mode 100644
index 0000000000000000000000000000000000000000..a92fc2194f7ed252a37fead220f03ff226b922ce
GIT binary patch
literal 205
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1SGw4HSYi^#^NA%Cx&(BWL^R}oCO|{#S9GG
z!XV7ZFl&wkP>{XE)7O>#Cbu+`wfbbij;}x=$r9Iy66gHf+|;}h2Ir#G#FEq$h4Rdj
z3<Y;j-+=H&K5?KTD^C~45RU7~DG4BOV|OtVvsOY&cihe@c~_>$FCQj$7jTN11ZMjO
pcCZMyI0?IYEa+V1v4C-o5CfB{Sg(}GI#Zx244$rjF6*2UngH%WHTD1i

literal 0
HcmV?d00001

diff --git a/game/data/gfx/border_9_sel.png b/game/data/gfx/border_9_sel.png
new file mode 100644
index 0000000000000000000000000000000000000000..e5c46af2864ab728971d972dcfb315d2e898e16f
GIT binary patch
literal 255
zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqjKx9jP7LeL$-D$|I14-?iy0WW
zg+Z8+Vb&Z8pdfpRr>`sfO>Svs2I)q=!djq^WQl7;iF1B#Zfaf$gL6@8Vo7R>LV0FM
zhJw4NZ$Nk>pEyuaj;D)bh{WaOJG+Yy)wAgwxVg8X5d;d8;_cd)WOH42D5c5eoojRN
zk25;3Vb2_v!>g~$OB^}EBDt^j_rU`xZ#7Rb9OeOn_WqcZ1R&T^^wo|T1cWzTG;lT0
kHV{$JKD3fSRv?6dp*2U|^{r8;70_M=Pgg&ebxsLQ0I2v(x&QzG

literal 0
HcmV?d00001

diff --git a/game/engine/ButtonList.lua b/game/engine/ButtonList.lua
new file mode 100644
index 0000000000..2e2bfcdfff
--- /dev/null
+++ b/game/engine/ButtonList.lua
@@ -0,0 +1,133 @@
+require "engine.class"
+require "engine.Tiles"
+require "engine.Mouse"
+require "engine.KeyCommand"
+
+--- Handles dialog windows
+module(..., package.seeall, class.make)
+
+tiles = engine.Tiles.new(16, 16)
+
+--- Create a buttons list
+function _M:init(list, x, y, w, h, font, separator)
+	self.separator = separator or 20
+	self.w, self.h = w, h
+	self.display_x = x or (game.w - self.w) / 2
+	self.display_y = y or (game.h - self.h) / 2
+	self.font = font
+	self.list = list
+	if not font then self.font = core.display.newFont("/data/font/VeraBd.ttf", 16) end
+	self.surface = core.display.newSurface(w, h)
+	self.surface:erase()
+
+	self.selected = 0
+	self:select(1)
+
+	for i, b in ipairs(self.list) do
+		assert(b.name, "no button name")
+		assert(b.fct, "no button function")
+		local bw, bh = self.font:size(b.name)
+		b.w, b.h = w, h / (#list + 1)
+		b.susel = self:makeButton(b.name, b.w, b.h, false)
+		b.ssel = self:makeButton(b.name, b.w, b.h, true)
+		b.mouse_over = function(button)
+			self:select(i)
+
+			if button == "left" then
+				self:click(i)
+			end
+		end
+	end
+
+	self.changed = true
+end
+
+function _M:close()
+	if self.old_key then self.old_key:setCurrent() end
+	if self.old_mouse then self.old_mouse:setCurrent() end
+end
+
+function _M:setKeyHandling()
+	self.old_key = engine.KeyCommand.current
+	self.key = engine.KeyCommand.new()
+	self.key:setCurrent()
+	self.key:addCommands
+	{
+		_UP = function()
+			self:select(-1, true)
+		end,
+		_DOWN = function()
+			self:select(1, true)
+		end,
+		_RETURN = function()
+			self:click()
+		end,
+	}
+end
+
+function _M:setMouseHandling()
+	self.old_mouse = engine.Mouse.current
+	self.mouse = engine.Mouse.new()
+	self.mouse:setCurrent()
+	for i, b in ipairs(self.list) do
+		self.mouse:registerZone(self.display_x, self.display_y + (i - 1) * (b.h + self.separator), b.w, b.h, b.mouse_over)
+	end
+end
+
+function _M:select(i, offset)
+	local old = self.selected
+
+	if offset then
+		self.selected = self.selected + i
+	else
+		self.selected = i
+	end
+	if self.selected > #self.list then self.selected = 1 end
+	if self.selected < 1 then self.selected = #self.list end
+	if old ~= self.selected and self.list[self.selected].onSelect then self.list[self.selected].onSelect() end
+	self.changed = true
+end
+
+function _M:click(i)
+	self.list[i or self.selected].fct()
+end
+
+function _M:display()
+	if not self.changed then return self.surface end
+
+	for i, b in ipairs(self.list) do
+		if i == self.selected then
+			self.surface:merge(b.ssel, 0, (i - 1) * (b.h + self.separator))
+		else
+			self.surface:merge(b.susel, 0, (i - 1) * (b.h + self.separator))
+		end
+	end
+
+	return self.surface
+end
+
+function _M:makeButton(name, w, h, sel)
+	local s = core.display.newSurface(w, h)
+	if sel then
+		s:erase(143, 155, 85)
+	end
+	s:alpha(255)
+
+	s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_7"..(sel and "_sel" or "")..".png"), 0, 0)
+	s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_9"..(sel and "_sel" or "")..".png"), w - 8, 0)
+	s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_1"..(sel and "_sel" or "")..".png"), 0, h - 8)
+	s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_3"..(sel and "_sel" or "")..".png"), w - 8, h - 8)
+	for i = 8, w - 9 do
+		s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_8.png"), i, 0)
+		s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_8.png"), i, h - 3)
+	end
+	for i = 8, h - 9 do
+		s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_4.png"), 0, i)
+		s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_4.png"), w - 3, i)
+	end
+
+	local sw, sh = self.font:size(name)
+	s:drawColorString(self.font, name, (w - sw) / 2, (h - sh) / 2)
+
+	return s
+end
diff --git a/game/engine/Dialog.lua b/game/engine/Dialog.lua
index dd3d68d2b3..2168716406 100644
--- a/game/engine/Dialog.lua
+++ b/game/engine/Dialog.lua
@@ -75,6 +75,8 @@ function _M:keyCommands(t)
 end
 
 function _M:unload()
-	game.key = self.old_key
-	game.key:setCurrent()
+	if self.old_key then
+		game.key = self.old_key
+		game.key:setCurrent()
+	end
 end
diff --git a/game/engine/Game.lua b/game/engine/Game.lua
index 66d520b6ed..230a21e369 100644
--- a/game/engine/Game.lua
+++ b/game/engine/Game.lua
@@ -75,3 +75,10 @@ function _M:unregisterDialog(d)
 	self.dialogs[d] = nil
 	d:unload()
 end
+
+--- The C core gives us command line arguments
+function _M:commandLineArgs(args)
+	for i, a in ipairs(args) do
+		print("Command line: ", a)
+	end
+end
diff --git a/game/engine/Module.lua b/game/engine/Module.lua
new file mode 100644
index 0000000000..a7f9fb8c54
--- /dev/null
+++ b/game/engine/Module.lua
@@ -0,0 +1,46 @@
+require "engine.class"
+
+--- Handles dialog windows
+module(..., package.seeall, class.make)
+
+--- List all available modules
+-- Static
+function _M:listModules()
+	local ms = {}
+	for i, short_name in ipairs(fs.list("/modules/")) do
+		local dir = "/modules/"..short_name
+		if fs.exists(dir.."/init.lua") then
+			local mod = self:loadDefinition(dir.."/init.lua")
+			-- Make a function to activate it
+			mod.load = function()
+				fs.mount(fs.getRealPath(dir), "/mod", false);
+				fs.mount(fs.getRealPath(dir).."/data/", "/data", false);
+
+				return require(mod.starter)
+			end
+			table.insert(ms, mod)
+		end
+	end
+
+	table.sort(ms, function(a, b)
+		if a.short_name == "tome" then return 1
+		elseif b.short_name == "tome" then return nil
+		else return a.name < b.name
+		end
+	end)
+
+	return ms
+end
+
+function _M:loadDefinition(file)
+	local mod_def = loadfile(file)
+	if mod_def then
+		-- Call the file body inside its own private environment
+		local mod = {}
+		setfenv(mod_def, mod)
+		mod_def()
+
+		if not mod.long_name or not mod.name or not mod.short_name or not mod.version or not mod.starter then return end
+		return mod
+	end
+end
diff --git a/game/engine/Mouse.lua b/game/engine/Mouse.lua
index eb5779811f..0791456afc 100644
--- a/game/engine/Mouse.lua
+++ b/game/engine/Mouse.lua
@@ -14,13 +14,18 @@ end
 -- @param y coordinate of the click
 function _M:receiveMouse(button, x, y)
 	for i, m in ipairs(self.areas) do
-		if x >= m.x1 and x < m.x2 and y >= m.y1 and y < m.y2 then
+		if (not m.mode or m.mode.button) and (x >= m.x1 and x < m.x2 and y >= m.y1 and y < m.y2) then
 			m.fct(button, x, y)
 		end
 	end
 end
 
 function _M:receiveMouseMotion(button, x, y, xrel, yrel)
+	for i, m in ipairs(self.areas) do
+		if (not m.mode or m.mode.move) and (x >= m.x1 and x < m.x2 and y >= m.y1 and y < m.y2) then
+			m.fct(button, x, y, xrel, yrel)
+		end
+	end
 end
 
 --- Setups as the current game keyhandler
@@ -30,12 +35,12 @@ function _M:setCurrent()
 end
 
 --- Registers a click zone that when clicked will call the object's "onClick" method
-function _M:registerZoneClick(x, y, w, h, fct)
-	table.insert(self.areas, {x1=x,y1=y,x2=x+w,y2=y+h, fct=fct})
+function _M:registerZone(x, y, w, h, fct, mode)
+	table.insert(self.areas, 1, {x1=x,y1=y,x2=x+w,y2=y+h, fct=fct, mode})
 end
 
-function _M:unregisterZoneClick(fct)
+function _M:unregisterZone(fct)
 	for i, m in ipairs(self.areas) do
-		if m.obj == obj then self.areas[fct] = nil break end
+		if m.fct == fct then table.remove(self.areas, i) break end
 	end
 end
diff --git a/game/engine/init.lua b/game/engine/init.lua
index 14e98ee4dc..d65d8ac832 100644
--- a/game/engine/init.lua
+++ b/game/engine/init.lua
@@ -22,6 +22,12 @@ key:addCommand(key._RETURN, {"alt"}, function() core.display.fullscreen() end)
 
 -- Load the game module
 game = false
+
+local Menu = require("special.mainmenu.class.Game")
+game = Menu.new()
+game:run()
+
+--[[
 local mod_def = loadfile("/mod/init.lua")
 if mod_def then
 	-- Call the file body inside its own private environment
@@ -34,13 +40,14 @@ if mod_def then
 	core.display.setWindowTitle(mod.name)
 
 	local Game = require(mod.starter)
---	game = Game.new()
--- [[
-	local save = engine.Savefile.new("player")
-	game = save:loadGame()
-	save:close()
--- ]]
+	game = Game.new()
+
+--	local save = engine.Savefile.new("player")
+--	game = save:loadGame()
+--	save:close()
+
 	game:run()
 else
 	os.exit()
 end
+]]
diff --git a/game/engine/utils.lua b/game/engine/utils.lua
index fa721e5c66..58cc7ae0b0 100644
--- a/game/engine/utils.lua
+++ b/game/engine/utils.lua
@@ -70,7 +70,7 @@ end
 
 function string.splitLines(str, max_width, font)
 	local lines = {}
-	for v in str:gmatch("([^\n]+)") do
+	for v in str:gmatch("([^\n]*)") do
 		local ls = v:splitLine(max_width, font)
 		for i, l in ipairs(ls) do
 			lines[#lines+1] = l
diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua
index 24e7eb0598..16dac53928 100644
--- a/game/modules/tome/class/Game.lua
+++ b/game/modules/tome/class/Game.lua
@@ -19,7 +19,7 @@ local NPC = require "mod.class.NPC"
 module(..., package.seeall, class.inherit(engine.GameTurnBased))
 
 function _M:init()
-	engine.GameTurnBased.init(self, engine.Key.current, 1000, 100)
+	engine.GameTurnBased.init(self, engine.KeyCommand.new(), 1000, 100)
 
 	-- Same init as when loaded from a savefile
 	self:loaded()
@@ -60,6 +60,7 @@ function _M:loaded()
 	Zone:setup{npc_class="mod.class.NPC", grid_class="mod.class.Grid", object_class="engine.Entity"}
 	Map:setViewPort(0, 0, self.w, math.floor(self.h * 0.80), 16, 16)
 	engine.GameTurnBased.loaded(self)
+	self.key = engine.KeyCommand.new()
 end
 
 function _M:save()
@@ -276,7 +277,10 @@ function _M:setupCommands()
 end
 
 function _M:setupMouse()
-	self.mouse:registerZoneClick(Map.display_x, Map.display_y, Map.viewport.width, Map.viewport.height, function(button, mx, my)
+	-- Those 2 locals will be "absorbed" into the mosue event handler function, this is a closure
+	local derivx, derivy = 0, 0
+
+	self.mouse:registerZone(Map.display_x, Map.display_y, Map.viewport.width, Map.viewport.height, function(button, mx, my, xrel, yrel)
 		-- Compute map coordonates
 		if button == "right" then
 			local tmx, tmy = math.floor(mx / self.level.map.tile_w) + self.level.map.mx, math.floor(my / self.level.map.tile_h) + self.level.map.my
@@ -292,34 +296,30 @@ function _M:setupMouse()
 				self.target.target.y = tmy
 				self:targetMode(true, true)
 			end
+		elseif button == "left" and xrel and yrel then
+			derivx = derivx + xrel
+			derivy = derivy + yrel
+			game.level.map.changed = true
+			if derivx >= game.level.map.tile_w then
+				game.level.map.mx = game.level.map.mx - 1
+				derivx = derivx - game.level.map.tile_w
+			elseif derivx <= -game.level.map.tile_w then
+				game.level.map.mx = game.level.map.mx + 1
+				derivx = derivx + game.level.map.tile_w
+			end
+			if derivy >= game.level.map.tile_h then
+				game.level.map.my = game.level.map.my - 1
+				derivy = derivy - game.level.map.tile_h
+			elseif derivy <= -game.level.map.tile_h then
+				game.level.map.my = game.level.map.my + 1
+				derivy = derivy + game.level.map.tile_h
+			end
 		end
 	end)
-	self.mouse:registerZoneClick(self.log.display_x, self.log.display_y, self.w, self.h, function(button)
+	self.mouse:registerZone(self.log.display_x, self.log.display_y, self.w, self.h, function(button)
 		if button == "wheelup" then self.log:scrollUp(1) end
 		if button == "wheeldown" then self.log:scrollUp(-1) end
-	end)
-
-	local derivx, derivy = 0, 0
-	self.mouse.receiveMouseMotion = function(self, button, x, y, xrel, yrel)
-		if button ~= "left" then return end
-		derivx = derivx + xrel
-		derivy = derivy + yrel
-		game.level.map.changed = true
-		if derivx >= game.level.map.tile_w then
-			game.level.map.mx = game.level.map.mx - 1
-			derivx = derivx - game.level.map.tile_w
-		elseif derivx <= -game.level.map.tile_w then
-			game.level.map.mx = game.level.map.mx + 1
-			derivx = derivx + game.level.map.tile_w
-		end
-		if derivy >= game.level.map.tile_h then
-			game.level.map.my = game.level.map.my - 1
-			derivy = derivy - game.level.map.tile_h
-		elseif derivy <= -game.level.map.tile_h then
-			game.level.map.my = game.level.map.my + 1
-			derivy = derivy + game.level.map.tile_h
-		end
-	end
+	end, {button=true})
 end
 
 --- Ask if we realy want to close, if so, save the game first
diff --git a/game/modules/tome/init.lua b/game/modules/tome/init.lua
index 9e2bf1d1ca..2e4d42b549 100644
--- a/game/modules/tome/init.lua
+++ b/game/modules/tome/init.lua
@@ -1,14 +1,31 @@
-name = "Tales of Middle Earth: The Fourth Age"
+name = "T.o.M.E"
+long_name = "Tales of Middle Earth: The Fourth Age"
 short_name = "tome"
 author = { "DarkGod", "darkgod@t-o-m-e.net" }
 description = [[
-Morgoth is banned in the Void, Sauron has been vanquished, the One Ring destroyed.
+Morgoth is banned in the Void, Sauron has been vanquished, the #ff0000#One Ring#ffffff# destroyed.
 The nations of Men, Dwarves, Elves and Hobbits are freed from the tyranny of the Rings.
+
+For over one hundred and twenty two years peace has prevailed in the West under the
+rule of the High King of the Reunited Kingdom, #14fffc#Aragorn II Elessar#ffffff# and his wife #14fffc#Arwen Evenstar#ffffff#.
+The High King died of old age two years ago and his son, #14fffc#Eldarion#ffffff#, is now king.
+
+#14fffc#Elrond and Galadriel#ffffff#, the great leaders of the Elves left Middle-earth for Valinor.
+But still, many elfes dwell in Middle-earth, for some of them love this land they fought so hard for.
+
+In the the Lonely Mountain, the dwarves prosper along with their human allies of Dale
+under the guidance of #14fffc#Thorin III Stonehelm#ffffff#, the King under the Moutain,
+
+In the Shire, life is... as usual, simple and full of joy and pipeweed!
+If such thing as ruling exists for Hobbits, then it is #14fffc#Thain Faramir I and Mayor Tolman Gardner#ffffff#
+that should handle it.
+
 This is a golden age, or at least it should be...
+
 Trouble is brewing in the east. Rumours in Lake-town near the Lonely Mountain have it
 that some power is growing in the far east, orc have started to multiply in sigthings.
 
-However you do not think this concerns you, you set out to discover the old, explore
+However you do not think this concerns you, you are set out to discover wonders, explore
 old places, venture into the unknown for wealth and glory.
 But beware, the eastern troubles could be yours all too soon...
 ]]
diff --git a/game/special/mainmenu/class/Game.lua b/game/special/mainmenu/class/Game.lua
new file mode 100644
index 0000000000..b3d85ad505
--- /dev/null
+++ b/game/special/mainmenu/class/Game.lua
@@ -0,0 +1,93 @@
+require "engine.class"
+require "engine.Game"
+require "engine.Module"
+require "engine.KeyCommand"
+local Savefile = require "engine.Savefile"
+local Dialog = require "engine.Dialog"
+local ButtonList = require "engine.ButtonList"
+
+module(..., package.seeall, class.inherit(engine.Game))
+
+function _M:init()
+	engine.Game.init(self, engine.KeyCommand.new())
+end
+
+function _M:run()
+	self.mod_list = engine.Module:listModules()
+
+	-- Setup display
+	self:selectStepMain()
+
+	-- Ok everything is good to go, activate the game in the engine!
+	self:setCurrent()
+end
+
+function _M:display()
+	self.step:display():toScreen(self.step.display_x, self.step.display_y)
+
+	engine.Game.display(self)
+end
+
+--- Ask if we realy want to close, if so, save the game first
+function _M:onQuit()
+	os.exit()
+end
+
+function _M:selectStepMain()
+	if self.step and self.step.close then self.step:close() end
+
+	self.step = ButtonList.new({
+		{
+			name = "Play a new game",
+			fct = function()
+				self:selectStepNew()
+			end,
+		},
+		{
+			name = "Load a saved game",
+			fct = function()
+				print("load")
+			end,
+		},
+		{
+			name = "Exit",
+			fct = function()
+				os.exit()
+			end,
+		},
+	}, self.w * 0.3, self.h * 0.2, self.w * 0.4, self.h * 0.3)
+	self.step:setKeyHandling()
+	self.step:setMouseHandling()
+end
+
+function _M:selectStepNew()
+	if self.step and self.step.close then self.step:close() end
+
+	local display_module = Dialog.new("", self.w * 0.73, self.h, self.w * 0.26, 0, 255)
+
+	for i, mod in ipairs(self.mod_list) do
+		mod.fct = function()
+			local M = mod.load()
+			_G.game = M.new()
+			_G.game:run()
+		end
+		mod.onSelect = function()
+			display_module.title = mod.long_name
+			display_module.changed = true
+			print("plop")
+		end
+	end
+
+	display_module.drawDialog = function(self, s)
+		local lines = game.mod_list[game.step.selected].description:splitLines(self.w - 8, self.font)
+		for i = 1, #lines do
+			s:drawColorString(self.font, lines[i], 0, i * self.font:lineSkip())
+		end
+	end
+	self:registerDialog(display_module)
+
+	self.step = ButtonList.new(self.mod_list, 10, 10, self.w * 0.24, (5 + 35) * #self.mod_list, nil, 5)
+	self.step:setKeyHandling()
+	self.step:setMouseHandling()
+	self.step.key:addCommand("_ESCAPE", function() self:unregisterDialog(display_module) self:selectStepMain() end)
+end
diff --git a/src/main.c b/src/main.c
index 0703c06a31..2ba6b3ae34 100644
--- a/src/main.c
+++ b/src/main.c
@@ -224,6 +224,29 @@ void on_redraw()
 	}
 }
 
+void pass_command_args(int argc, char *argv[])
+{
+	int i;
+
+	if (current_game != LUA_NOREF)
+	{
+		lua_rawgeti(L, LUA_REGISTRYINDEX, current_game);
+		lua_pushstring(L, "commandLineArgs");
+		lua_gettable(L, -2);
+		lua_remove(L, -2);
+		lua_rawgeti(L, LUA_REGISTRYINDEX, current_game);
+		lua_newtable(L);
+
+		for (i = 1; i <= argc; i++)
+		{
+			lua_pushnumber(L, i);
+			lua_pushstring(L, argv[i]);
+			lua_settable(L, -3);
+		}
+		docall(L, 2, 0);
+	}
+}
+
 /**
  * Program entry point.
  */
@@ -236,8 +259,6 @@ int main(int argc, char *argv[])
 	PHYSFS_init(argv[0]);
 	PHYSFS_mount("game/thirdparty", "/", 1);
 	PHYSFS_mount("game/", "/", 1);
-	PHYSFS_mount("game/modules/tome", "/mod", 1);
-	PHYSFS_mount("game/modules/tome/data", "/data", 1);
 	PHYSFS_mount("/home/dg/.tengine/4.0/tome/", "/", 1);
 	PHYSFS_setWriteDir("/home/dg/.tengine/4.0/tome/");
 
@@ -273,6 +294,8 @@ int main(int argc, char *argv[])
 	luaL_loadfile(L, "/engine/init.lua");
 	docall(L, 0, 0);
 
+	pass_command_args(argc, argv);
+
 	// Filter events, to catch the quit event
 	SDL_SetEventFilter(event_filter);
 
-- 
GitLab