[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Windstille-devel] rev 400 - trunk/src
From: |
Ingo Ruhnke |
Subject: |
[Windstille-devel] rev 400 - trunk/src |
Date: |
Mon, 07 Jun 2004 13:08:58 +0200 |
Author: grumbel
Date: 2004-06-07 13:08:57 +0200 (Mon, 07 Jun 2004)
New Revision: 400
Modified:
trunk/src/flexlay.rb
trunk/src/gui.rb
trunk/src/gui2.rb
trunk/src/level.rb
trunk/src/sector.rb
trunk/src/supertux.rb
Log:
- fixed load/save and multisector support a bit
Modified: trunk/src/flexlay.rb
===================================================================
--- trunk/src/flexlay.rb 2004-06-06 21:57:44 UTC (rev 399)
+++ trunk/src/flexlay.rb 2004-06-07 11:08:57 UTC (rev 400)
@@ -30,8 +30,8 @@
end
end
+# Very simple FileDialog, mainly a placeholder until the real thing gets ready.
class SimpleFileDialog
- """Very simple FileDialog, mainly a placeholder until the real thing gets
ready."""
@window = nil
@inputbox = nil
@ok_button = nil
@@ -145,7 +145,7 @@
def update()
y = 10
- for (type, label, comp) in @items
+ @items.each do |(type, label, comp)|
if type == "int" or type == "string"
label.set_position(10, y)
comp.set_position(110, y)
Modified: trunk/src/gui.rb
===================================================================
--- trunk/src/gui.rb 2004-06-06 21:57:44 UTC (rev 399)
+++ trunk/src/gui.rb 2004-06-07 11:08:57 UTC (rev 400)
@@ -23,7 +23,7 @@
@objectselector = ObjectSelector.new(CL_Rect.new(0, 0, 128, 256), 42, 42,
@selector_window)
@objectselector.show(true)
- for object in $game_objects
+ $game_objects.each do |object|
@objectselector.add_brush(ObjectBrush.new(make_sprite($datadir +
object[1]),
make_metadata(BadGuy.new(object[0]))))
end
@@ -46,7 +46,12 @@
end
def gui_level_save_as()
- $save_dialog.set_filename(File.dirname($save_dialog.get_filename()) + "/")
+ filename = $save_dialog.get_filename()
+ if filename[-1] == "/"[0]
+ $save_dialog.set_filename(filename)
+ else
+ $save_dialog.set_filename(File.dirname(filename) + "/")
+ end
$save_dialog.run(proc{|filename| supertux_save_level(filename) })
end
@@ -54,8 +59,13 @@
filename = $workspace.get_map().get_metadata().parent.filename
if filename
$save_dialog.set_filename(filename)
- else # FIXME
- $save_dialog.set_filename(File.dirname($save_dialog.get_filename()) + "/")
+ else
+ filename = $save_dialog.get_filename()
+ if filename[-1] == "/"[0]
+ $save_dialog.set_filename(filename)
+ else
+ $save_dialog.set_filename(File.dirname(filename) + "/")
+ end
end
$save_dialog.run(proc{|filename| supertux_save_level(filename) })
@@ -252,10 +262,17 @@
def gui_switch_sector_menu()
mymenu = Menu.new(CL_Point.new(530, 54), $gui.get_component())
- for i in $workspace.get_map().get_metadata().parent.get_sectors()
- print "Sectors: ", i, "\n"
- mymenu.add_item($mysprite, "Sector (%s)" % i,
- proc {
$workspace.get_map().get_metadata().parent.activate_sector(i, $workspace) })
+ sector = $workspace.get_map().get_metadata()
+ sector.parent.get_sectors().each do |i|
+ if sector.name == i then
+ current = " [current]"
+ else
+ current = ""
+ end
+ mymenu.add_item($mysprite, ("Sector (%s)%s" % [i, current]), proc {
+ print "Switching to %s\n" % i
+
$workspace.get_map().get_metadata().parent.activate_sector(i, $workspace)
+ })
end
mymenu.run()
end
@@ -273,8 +290,15 @@
dialog.add_int("Height: ", height)
dialog.set_callback(proc { |name, w, h|
- sector = Sector().new(w, h)
- sector.name = name
+ uniq_name = name
+ i = 1
+ while level.get_sectors().index(uniq_name)
+ uniq_name = name + "<%d>" % i
+ i += 1
+ end
+
+ sector = Sector.new(level)
+ sector.new_from_size(uniq_name, width, height)
level.add_sector(sector) })
end
Modified: trunk/src/gui2.rb
===================================================================
--- trunk/src/gui2.rb 2004-06-06 21:57:44 UTC (rev 399)
+++ trunk/src/gui2.rb 2004-06-07 11:08:57 UTC (rev 400)
@@ -165,7 +165,7 @@
print "Connecting path nodes"
pathnodes = []
for i in objmap_select_tool.get_selection()
- obj = get_python_object(i.get_metadata())
+ obj = get_ruby_object(i.get_metadata())
if obj.__class__ == PathNode
pathnodes.push(obj.node)
end
Modified: trunk/src/level.rb
===================================================================
--- trunk/src/level.rb 2004-06-06 21:57:44 UTC (rev 399)
+++ trunk/src/level.rb 2004-06-07 11:08:57 UTC (rev 400)
@@ -1,35 +1,24 @@
class Level
- version = 2
- filename = nil
+ attr_reader :version, :filename, :name, :author, :theme, :time, :objects,
:sectors, :current_sector
+ attr_writer :version, :filename, :name, :author, :theme, :time, :objects,
:sectors, :current_sector
- name = "no name"
- author = "no author"
- theme = "antarctica"
- time = 999
- music = "Mortimers_chipdisko.mod"
-
- objects = nil
- camera = nil
-
- sectors = nil
- current_sector = nil
-
- attr_reader :version, :filename, :name, :author, :theme, :time, :music,
:objects, :camera, :sectors, :current_sector
- attr_writer :version, :filename, :name, :author, :theme, :time, :music,
:objects, :camera, :sectors, :current_sector
-
def initialize(*params)
+ @name = "No Name"
+ @author = "No Author"
+ @theme = "antarctica"
+ @time = 999
+ @filename = nil
+ @version = 2
+
if params.length() == 2 then
# New Level
(width, height) = params
- @name = "No Name"
- @author = "No Author"
-
@width = width
@height = height
-
+
@current_sector = Sector.new(self)
- @current_sector.new_from_size(width, height)
+ @current_sector.new_from_size("main", width, height)
@sectors = []
@sectors.push(@current_sector)
@@ -39,14 +28,14 @@
tree = sexpr_read_from_file(@filename)
if tree == nil
- raise("Couldn't load level: ", filename)
+ raise("Couldn't load level: %s" % filename)
end
data = tree[1..-1]
@version = get_value_from_tree(["version", "_"], data, 0)
- print "VERSION: ", @version, "\n"
+ print "VERSION: ", @filename, " ", @version, "\n"
if (@version == 1) then
parse_v1(data)
@@ -67,7 +56,6 @@
@sectors = []
for sec in sexpr_filter("sector", data)
sector = Sector.new(self)
- print("DATA: ", sec, "\n")
sector.load_v2(sec)
@sectors.push(sector)
if sector.name == "main"
@@ -105,7 +93,7 @@
f.write(" (version 2)\n")
f.write(" (name \"%s\")\n" % @name)
f.write(" (author \"%s\")\n" % @author)
- f.write(" (time \"%s\")\n" % @time)
+ f.write(" (time %d)\n" % @time)
for sector in @sectors
f.write(" (sector\n")
@@ -114,6 +102,7 @@
end
f.write(" )\n\n;; EOF ;;\n")
+ f.close()
end
def save_v1(filename)
@@ -123,13 +112,13 @@
f.write(" (version 1)\n")
f.write(" (name \"%s\")\n" % @name)
f.write(" (author \"%s\")\n" % @author)
- f.write(" (width %s)\n" % @width)
- f.write(" (height %s)\n" % @height)
+ f.write(" (width %d)\n" % @width)
+ f.write(" (height %d)\n" % @height)
f.write(" (music \"%s\")\n" % @music)
- f.write(" (time \"%s\")\n" % @time)
+ f.write(" (time %d)\n" % @time)
- f.write(" (gravity %d)\n" % @gravity)
+ f.write(" (gravity %f)\n" % @gravity)
f.write(" (theme \"%s\")\n" % @theme)
@@ -155,7 +144,7 @@
f.write(" (mode \"autoscroll\")\n")
f.write(" (path\n")
for obj in @objects.get_objects()
- pathnode = get_python_object(obj.get_metadata())
+ pathnode = get_ruby_object(obj.get_metadata())
if (pathnode.__class__ == PathNode)
f.write(" (point (x %d) (y %d) (speed 1))\n" % obj.get_pos().x,
obj.get_pos().y)
end
@@ -164,7 +153,7 @@
f.write(" (objects\n")
for obj in @objects.get_objects()
- badguy = get_python_object(obj.get_metadata())
+ badguy = get_ruby_object(obj.get_metadata())
if (badguy.__class__ == BadGuy)
pos = obj.get_pos()
if (badguy.type != "resetpoint")
@@ -176,7 +165,7 @@
f.write(" (reset-points\n")
for obj in @objects.get_objects()
- badguy = get_python_object(obj.get_metadata())
+ badguy = get_ruby_object(obj.get_metadata())
if (badguy.__class__ == BadGuy)
pos = obj.get_pos()
if (badguy.type == "resetpoint")
@@ -187,6 +176,7 @@
f.write(" )\n\n")
f.write(" )\n\n;; EOF ;;\n")
+ f.close()
end
def activate_sector(sector, workspace)
Modified: trunk/src/sector.rb
===================================================================
--- trunk/src/sector.rb 2004-06-06 21:57:44 UTC (rev 399)
+++ trunk/src/sector.rb 2004-06-07 11:08:57 UTC (rev 400)
@@ -33,8 +33,8 @@
@foreground.resize(size, pos)
end
- def new_from_size(width, height)
- @name = "<No Name>"
+ def new_from_size(name, width, height)
+ @name = name
@song = "<No Song>"
@gravity = 10.0
@@ -123,9 +123,8 @@
@foreground = nil
@objects = ObjectLayer.new()
- print "Data: ", data, "\n"
+
for i in data
- print "I: ", i, "\n"
(name,data) = i[0], i[1..-1]
if name == "name"
@name = data[0]
@@ -141,7 +140,6 @@
tilemap = TilemapLayer.new($tileset, width, height)
tilemap.set_data(get_value_from_tree(["tiles"], data, []))
- print "Solid: ", solid
if solid
@interactive = tilemap
@width = width
@@ -201,36 +199,43 @@
connect(@editormap.sig_change(), proc{on_map_change()})
end
+ def save_tilemap(f, tilemap, name, solid = nil)
+ f.write(" (tilemap\n")
+ f.write(" (layer \"%s\")\n" % name)
+ f.write(" (solid %s)\n" % if solid == :solid then "#t" else "#f" end)
+ f.write(" (speed %f)\n" % 1.0)
+ f.write(" (width %d)\n" % tilemap.get_width())
+ f.write(" (height %d)\n" % tilemap.get_height())
+ f.write(" (tiles\n")
+ f.write(" ")
+ x = 0
+ for i in tilemap.get_data()
+ f.write("%d " % i)
+ x += 1
+ if x == width then
+ f.write("\n ")
+ x = 0
+ end
+ end
+ f.write("))\n")
+ end
+
def save(f)
f.write(" (name \"%s\")\n" % @name)
- f.write(" (width %s)\n" % @width)
- f.write(" (height %s)\n" % @height)
+ f.write(" (width %d)\n" % @width)
+ f.write(" (height %d)\n" % @height)
f.write(" (music \"%s\")\n" % @song)
- f.write(" (gravity %d)\n" % @gravity)
-
- f.write(" (interactive-tm\n")
- for i in interactive.get_data()
- f.write("%d " % i)
- end
- f.write(" )\n\n")
+ f.write(" (gravity %f)\n" % @gravity)
- f.write(" (background-tm\n")
- for i in background.get_data()
- f.write("%d " % i)
- end
- f.write(" )\n\n")
+ save_tilemap(f, @background, "background")
+ save_tilemap(f, @interactive, "main", :solid)
+ save_tilemap(f, @foreground, "foreground")
- f.write(" (foreground-tm\n")
- for i in foreground.get_data()
- f.write("%d " % i)
- end
- f.write(" )\n\n")
-
f.write(" (camera\n")
f.write(" (mode \"autoscroll\")\n")
f.write(" (path\n")
for obj in @objects.get_objects()
- pathnode = get_python_object(obj.get_metadata())
+ pathnode = get_ruby_object(obj.get_metadata())
if (pathnode.__class__ == PathNode)
f.write(" (point (x %d) (y %d) (speed 1))\n" % obj.get_pos().x,
obj.get_pos().y)
end
@@ -239,7 +244,7 @@
f.write(" (objects\n")
for obj in @objects.get_objects()
- badguy = get_python_object(obj.get_metadata())
+ badguy = get_ruby_object(obj.get_metadata())
if (badguy.__class__ == BadGuy)
pos = obj.get_pos()
if (badguy.type != "resetpoint")
@@ -251,7 +256,7 @@
f.write(" (reset-points\n")
for obj in @objects.get_objects()
- badguy = get_python_object(obj.get_metadata())
+ badguy = get_ruby_object(obj.get_metadata())
if (badguy.__class__ == BadGuy)
pos = obj.get_pos()
if (badguy.type == "resetpoint")
Modified: trunk/src/supertux.rb
===================================================================
--- trunk/src/supertux.rb 2004-06-06 21:57:44 UTC (rev 399)
+++ trunk/src/supertux.rb 2004-06-07 11:08:57 UTC (rev 400)
@@ -24,7 +24,7 @@
$editor = Editor.new()
$gui = $editor.get_gui_manager()
-myrect = CL_Rect.new(CL_Point.new(0, 56), CL_Size.new(665, 488+56))
+myrect = CL_Rect.new(CL_Point.new(0, 56), CL_Size.new(665, 488+56))
$editor_map = EditorMapComponent.new(myrect, $gui.get_component())
$workspace = Workspace.new(myrect.get_width(), myrect.get_height())
$editor_map.set_workspace($workspace)
@@ -63,11 +63,14 @@
attr_reader :layer, :show_all, :current_only
attr_writer :layer, :show_all, :current_only
- layer = INTERACTIVE_LAYER
- show_all = false
- current_only = false
+ def initialize()
+ @layer = INTERACTIVE_LAYER
+ @show_all = false
+ @current_only = false
+ end
def set(map)
+
if @current_only
active = CL_Color.new(255, 255, 255)
deactive = CL_Color.new(0, 0, 0, 10)
@@ -102,8 +105,8 @@
end
end
+# Load game tiles from filename into tileset
def Tileset_load(tileset, filename)
- "Load game tiles from filename into tileset"
tree = sexpr_read_from_file(filename)
tree = tree[1..-1]
for i in tree
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Windstille-devel] rev 400 - trunk/src,
Ingo Ruhnke <=