windstille-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Windstille-devel] rev 396 - trunk/src


From: Ingo Ruhnke
Subject: [Windstille-devel] rev 396 - trunk/src
Date: Sun, 06 Jun 2004 20:18:55 +0200

Author: grumbel
Date: 2004-06-06 20:18:55 +0200 (Sun, 06 Jun 2004)
New Revision: 396

Added:
   trunk/src/gui.rb
Log:
- first startable version of ruby-flexlay

Added: trunk/src/gui.rb
===================================================================
--- trunk/src/gui.rb    2004-06-06 18:15:10 UTC (rev 395)
+++ trunk/src/gui.rb    2004-06-06 18:18:55 UTC (rev 396)
@@ -0,0 +1,279 @@
+class BadGuy
+  def initialize(type)
+    @type = type
+  end
+end
+
+class SuperTuxGUI
+  quit_button = nil
+  menu        = nil
+  
+  selector_window = nil
+  tileselector    = nil
+  objectselector  = nil
+
+  def initialize(tileset, gui)
+    @selector_window = Panel.new(CL_Rect.new(CL_Point.new(800-134, 23+33), 
CL_Size.new(128 + 6, 558)),
+                                 gui.get_component())
+    @tileselector = TileSelector.new(CL_Rect.new(CL_Point.new(3, 3), 
CL_Size.new(128, 552)), @selector_window)
+    @tileselector.set_tileset(tileset)
+    @tileselector.set_tiles((1..100).to_a)
+    @tileselector.show(false)
+    
+    @objectselector = ObjectSelector.new(CL_Rect.new(0, 0, 128, 256), 42, 42, 
@selector_window)
+    @objectselector.show(true)
+
+    for object in $game_objects
+      @objectselector.add_brush(ObjectBrush.new(make_sprite($datadir + 
object[1]),
+                                                
make_metadata(BadGuy.new(object[0]))))
+    end
+  end
+
+  def show_objects()
+    @tileselector.show(false)        
+    @objectselector.show(true)
+  end
+
+  def show_tiles()
+    @tileselector.show(true)        
+    @objectselector.show(false)
+  end
+
+  def show_none()
+    @tileselector.show(false)        
+    @objectselector.show(false)
+  end
+end
+
+def gui_level_save_as()
+  save_dialog.set_filename(os.path.dirname(save_dialog.get_filename()) + "/")
+  save_dialog.run(supertux_save_level)
+end
+
+def gui_level_save()
+  if $workspace.get_map().get_metadata().filename
+    save_dialog.set_filename($workspace.get_map().get_metadata().filename)
+  else
+    save_dialog.set_filename(os.path.dirname(save_dialog.get_filename())  + 
"/")
+  end
+  
+  save_dialog.run(supertux_save_level)
+end   
+
+def gui_level_load()
+  load_dialog.run(supertux_load_level)
+end
+
+def gui_toggle_minimap()
+  if $minimap.is_visible()
+    $minimap.show(false)
+    $minimap_icon.set_up()
+  else
+    $minimap.show(true)
+    $minimap_icon.set_down()
+  end
+end
+
+def gui_toggle_grid()
+  tilemap = $workspace.get_map().get_metadata().foreground;
+  tilemap.set_draw_grid(!tilemap.get_draw_grid())
+
+  if tilemap.get_draw_grid()
+    grid_icon.set_down()
+  else
+    grid_icon.set_up()
+  end
+end
+
+def on_map_change()
+  if ($workspace.get_map().undo_stack_size() > 0)
+    undo_icon.enable()
+  else
+    undo_icon.disable()
+  end
+
+  if ($workspace.get_map().redo_stack_size() > 0)
+    redo_icon.enable()
+  else
+    redo_icon.disable()        
+  end
+end
+
+def set_tilemap_paint_tool()
+  $workspace.set_tool($tilemap_paint_tool.to_tool())
+  $paint.set_down()
+  $select.set_up()
+  $zoom.set_up()
+  $object.set_up()
+  $supertux.show_tiles()
+end
+
+def set_tilemap_select_tool()
+  $workspace.set_tool($tilemap_select_tool.to_tool())
+  $paint.set_up()
+  $select.set_down()
+  $zoom.set_up()
+  $object.set_up()
+  $supertux.show_none()
+end
+
+def set_zoom_tool()
+  $workspace.set_tool($zoom_tool.to_tool())
+  $paint.set_up()
+  $select.set_up()
+  $zoom.set_down()
+  $object.set_up()
+  $supertux.show_none()
+end
+
+def set_objmap_select_tool()
+  $workspace.set_tool($objmap_select_tool.to_tool())
+  $paint.set_up()
+  $select.set_up()
+  $zoom.set_up()
+  $object.set_down()
+  $supertux.show_objects()
+end
+
+def gui_show_foreground()
+  $display_properties.layer = FOREGROUND_LAYER
+  $display_properties.set($workspace.get_map().get_metadata())
+  TilemapLayer.set_current($workspace.get_map().get_metadata().foreground)
+  $foreground_icon.set_down()
+  $interactive_icon.set_up()
+  $background_icon.set_up()
+  $minimap.update_minimap()
+end
+
+def gui_show_background()
+  $display_properties.layer = BACKGROUND_LAYER
+  $display_properties.set($workspace.get_map().get_metadata())
+  TilemapLayer.set_current($workspace.get_map().get_metadata().background)
+  $foreground_icon.set_up()
+  $interactive_icon.set_up()
+  $background_icon.set_down()
+  $minimap.update_minimap()
+end
+
+def gui_show_interactive()
+  $display_properties.layer = INTERACTIVE_LAYER
+  $display_properties.set($workspace.get_map().get_metadata())
+  TilemapLayer.set_current($workspace.get_map().get_metadata().interactive)
+  $foreground_icon.set_up()
+  $interactive_icon.set_down()
+  $background_icon.set_up()
+  $minimap.update_minimap()
+end
+
+def gui_show_all()
+  $display_properties.show_all = true
+  $display_properties.current_only = false
+  $display_properties.set($workspace.get_map().get_metadata())
+end
+
+def gui_show_current()
+  $display_properties.show_all = false
+  $display_properties.current_only = false
+  $display_properties.set($workspace.get_map().get_metadata())
+end
+
+def gui_show_only_current()
+  $display_properties.show_all = false
+  $display_properties.current_only = true
+  $display_properties.set($workspace.get_map().get_metadata())
+end
+
+def gui_toggle_display_props()
+  if $display_properties.show_all
+    $display_properties.show_all = false
+  elsif not($display_properties.current_only)
+    $display_properties.current_only = true
+  else
+    $display_properties.show_all = true
+    $display_properties.current_only = false
+  end
+  
+  $display_properties.set($workspace.get_map().get_metadata())    
+end
+
+def gui_resize_level()
+  level = $workspace.get_map().get_data()
+  dialog = GenericDialog.new("Resize Level", gui.get_component())
+  dialog.add_int("Width: ", level.width)
+  dialog.add_int("Height: ", level.height)
+  dialog.add_int("X: ", 0)
+  dialog.add_int("Y: ", 0)
+  dialog.set_callback(proc{|w, h, x, y| 
+                        level.resize(CL_Size.new(w, h), CL_Point.new(x, y))})
+end
+
+def gui_resize_level_to_selection()
+  level = $workspace.get_map().get_data()
+  rect  = tilemap_select_tool.get_selection_rect()
+  if (rect.get_width() > 2 and rect.get_height() > 2)
+    level.resize(rect.get_size(), CL_Point.new(-rect.left, -rect.top))
+  end
+end
+
+def supertux_load_level(filename)
+  print "Loading: ", filename
+  level = Level(filename)
+  level.activate(workspace)
+  
+  if not(config.recent_files.find(filename)) then
+    config.recent_files.append(filename)
+    recent_files_menu.add_item($mysprite, filename, 
+                               proc { supertux_load_level(filename) })
+  end
+
+  minimap.update_minimap()
+end
+
+def gui_set_zoom(zoom)
+  gc = $editor_map.get_workspace().get_gc_state()
+  pos = gc.get_pos()
+  gc.set_zoom(zoom)
+  gc.set_pos(pos)
+end
+
+def menu_file_open()
+  print "File/Open"
+  level = 
Level('/home/ingo/cvs/supertux/supertux/data/levels/world1/level2.stl')
+  print "Loading done"
+  level.activate(workspace)
+  connect(level.editormap.sig_change(), on_map_change)
+  print "Activation done"
+end
+
+def supertux_save_level(filename)
+  $workspace.get_map().get_metadata().save(filename)
+end
+
+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()
+    mymenu.add_item($mysprite, "Sector (%s)" % i,
+                    proc { 
$workspace.get_map().get_metadata().parent.activate_sector(i, workspace) })
+  end
+  mymenu.run()
+end
+
+def gui_add_sector()
+  level = $workspace.get_map().get_data().get_level()
+  dialog = GenericDialog.new("Add Sector", gui.get_component())
+
+  name = "newsector"
+  width  = 50
+  height = 20
+  
+  dialog.add_string("Name: ", name)
+  dialog.add_int("Width: ",   width)
+  dialog.add_int("Height: ",  height)
+  
+  dialog.set_callback(proc { |name, w, h|
+                        sector = Sector().new(w, h)
+                        sector.name = name
+                        level.add_sector(sector) })
+end  
+
+# EOF #





reply via email to

[Prev in Thread] Current Thread [Next in Thread]