pingus-cvs
[Top][All Lists]
Advanced

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

[Pingus-CVS] [pingus] 2 new revisions pushed by address@hidden on 2011-1


From: pingus
Subject: [Pingus-CVS] [pingus] 2 new revisions pushed by address@hidden on 2011-10-17 22:13 GMT
Date: Mon, 17 Oct 2011 22:13:56 +0000

2 new revisions:

Revision: b37232484175
Author:   Ingo Ruhnke <address@hidden>
Date:     Mon Oct 17 14:54:34 2011
Log:      Cleaned up some init code in EditorLevel
http://code.google.com/p/pingus/source/detail?r=b37232484175

Revision: b4b49dba9e5e
Author:   Ingo Ruhnke <address@hidden>
Date:     Mon Oct 17 15:13:14 2011
Log: Replaced load() and clear() member function in EditorLevel with constr...
http://code.google.com/p/pingus/source/detail?r=b4b49dba9e5e

==============================================================================
Revision: b37232484175
Author:   Ingo Ruhnke <address@hidden>
Date:     Mon Oct 17 14:54:34 2011
Log:      Cleaned up some init code in EditorLevel

http://code.google.com/p/pingus/source/detail?r=b37232484175

Modified:
 /src/editor/editor_level.cpp
 /src/editor/editor_level.hpp

=======================================
--- /src/editor/editor_level.cpp        Mon Oct 17 14:44:35 2011
+++ /src/editor/editor_level.cpp        Mon Oct 17 14:54:34 2011
@@ -22,7 +22,6 @@
 #include "editor/level_obj.hpp"
 #include "editor/level_obj_factory.hpp"
 #include "editor/generic_level_obj.hpp"
-#include "editor/level_data.hpp"
 #include "pingus/pingus_level.hpp"
 #include "pingus/prefab_file.hpp"
 #include "util/log.hpp"
@@ -40,16 +39,26 @@
     levelname(),
     description(),
     ambient_light(255, 255, 255),
-    size(),
-    number_of_pingus(),
-    number_to_save(),
-    actions(),
-    time(),
+    size(1920, 1200),
+    number_of_pingus(50),
+    number_to_save(20),
+    actions({
+        { "basher",   20 },
+        { "blocker",  20 },
+        { "bomber",   20 },
+        { "bridger",  20 },
+        { "climber",  20 },
+        { "digger",   20 },
+        { "floater",  20 },
+        { "jumper",   20 },
+        { "miner",    20 },
+        { "slider",   20 }
+      }),
+    time(-1),
     author(),
     music(),
     objects()
   {
-    // Do nothing
   }

   /** Destructor */
@@ -91,52 +100,13 @@
 EditorLevel::EditorLevel() :
   impl(new LevelImpl)
 {
-  set_impl_defaults();
 }

-/** simply replace the current level implementation with a new blank
-    one */
 void
-EditorLevel::clear_impl()
+EditorLevel::clear()
 {
   impl.reset(new LevelImpl);
 }
-
-/** assuming we have a valid implementation, set default values */
-void
-EditorLevel::set_impl_defaults()
-{
-  impl->levelname   = "";
-  impl->description = "";
-  impl->author = "";
-  impl->music   = "";
-
-  impl->ambient_light = Color(255,255,255);
-  impl->size = Size(1920, 1200);
-
-  impl->number_of_pingus = 50;
-  impl->number_to_save   = 20;
-
-  impl->actions.clear();
-  impl->actions["basher"]  = 20;
-  impl->actions["blocker"] = 20;
-  impl->actions["bomber"]  = 20;
-  impl->actions["bridger"] = 20;
-  impl->actions["climber"] = 20;
-  impl->actions["digger"]  = 20;
-  impl->actions["floater"] = 20;
-  impl->actions["jumper"]  = 20;
-  impl->actions["miner"]   = 20;
-  impl->actions["slider"]  = 20;
-
-  impl->time = -1;
-}
-
-void
-EditorLevel::clear() {
-  clear_impl();
-  set_impl_defaults();
-}

 // Default Destructor
 EditorLevel::~EditorLevel()
=======================================
--- /src/editor/editor_level.hpp        Mon Sep 12 16:30:49 2011
+++ /src/editor/editor_level.hpp        Mon Oct 17 14:54:34 2011
@@ -45,13 +45,6 @@
   /** Destructor */
   ~EditorLevel();

-  /** get a new, blank level implementation without any valid settings */
-  void clear_impl();
-
-  /** Set valid default level implementation settings, assuming an
-      existing implementation */
-  void set_impl_defaults();
-
   /** get a new implementation with default settings */
   void clear();


==============================================================================
Revision: b4b49dba9e5e
Author:   Ingo Ruhnke <address@hidden>
Date:     Mon Oct 17 15:13:14 2011
Log: Replaced load() and clear() member function in EditorLevel with constructor functions, first step to an MDI interface

http://code.google.com/p/pingus/source/detail?r=b4b49dba9e5e

Modified:
 /src/editor/editor_level.cpp
 /src/editor/editor_level.hpp
 /src/editor/editor_screen.cpp

=======================================
--- /src/editor/editor_level.cpp        Mon Oct 17 14:54:34 2011
+++ /src/editor/editor_level.cpp        Mon Oct 17 15:13:14 2011
@@ -90,7 +90,88 @@
   LevelImpl (const LevelImpl&);
   LevelImpl& operator= (const LevelImpl&);
 };
-
+
+std::unique_ptr<EditorLevel>
+EditorLevel::from_level_file(const Pathname& pathname)
+{
+  log_info(pathname.str());
+
+  // Load the level from the file - we don't care what it's res_name is.
+  PingusLevel plf(pathname);
+
+  std::unique_ptr<EditorLevel> level(new EditorLevel);
+
+  // Assign all of the level information to our LevelImpl
+  level->impl->levelname        = plf.get_levelname();
+  level->impl->description      = plf.get_description();
+  level->impl->ambient_light    = plf.get_ambient_light();
+  level->impl->size             = plf.get_size();
+  level->impl->number_of_pingus = plf.get_number_of_pingus();
+  level->impl->number_to_save   = plf.get_number_to_save();
+  level->impl->actions          = plf.get_actions();
+  level->impl->time             = plf.get_time();
+  level->impl->author           = plf.get_author();
+  level->impl->music            = plf.get_music();
+
+  // remove obsolete "none" tag
+  if (level->impl->music == "none")
+  {
+    level->impl->music = "";
+  }
+
+  // Get the objects
+  std::vector<FileReader> objs = plf.get_objects();
+ for (std::vector<FileReader>::const_iterator i = objs.begin(); i != objs.end(); i++)
+  {
+    LevelObjPtr obj = LevelObjFactory::create(*i);
+    if (obj)
+    {
+      level->add_object(obj);
+    }
+  }
+
+  level->sort();
+
+  return level;
+}
+
+std::unique_ptr<EditorLevel>
+EditorLevel::from_prefab_file(const Pathname& pathname)
+{
+  log_info(pathname.str());
+
+  // Load the level from the file - we don't care what it's res_name is.
+  PrefabFile prefab = PrefabFile::from_path(pathname);
+
+  std::unique_ptr<EditorLevel> level(new EditorLevel);
+
+  // FIMXE: there would be better way to handle prefab size, but it's
+  // probably not worth the effort
+  level->impl->size.width  = 1920;
+  level->impl->size.height = 1200;
+
+  // FIXME: overrides are getting ignored
+
+  // Get the objects
+  const std::vector<FileReader>& objs = prefab.get_objects();
+  for (auto i = objs.begin(); i != objs.end(); i++)
+  {
+    LevelObjPtr obj = LevelObjFactory::create(*i);
+    if (obj)
+    {
+      // move origin of the level to the center of it
+ obj->set_pos(obj->get_pos() + Vector3f(static_cast<float>(level->impl->size.width)/2.0f, + static_cast<float>(level->impl->size.height)/2.0f));
+
+      level->add_object(obj);
+    }
+  }
+
+  level->sort();
+
+  return level;
+}
+
 static bool LevelObjSort(const LevelObjPtr& a, const LevelObjPtr& b)
 {
   return (a->get_pos().z < b->get_pos().z);
@@ -102,13 +183,6 @@
 {
 }

-void
-EditorLevel::clear()
-{
-  impl.reset(new LevelImpl);
-}
-
-// Default Destructor
 EditorLevel::~EditorLevel()
 {
 }
@@ -209,87 +283,6 @@
   // Write the file
   System::write_file(filename, out_file.str());
 }
-
-void
-EditorLevel::load_prefab(const Pathname& pathname)
-{
-  log_info("EditorLevel::load_level: " << pathname.str());
-
-  // Get a new level implementation with default settings. It is a
-  // good idea to set the level defaults first, in case the level file
-  // doesn't set everything.
-  clear();
-
-  // Load the level from the file - we don't care what it's res_name is.
-  PrefabFile prefab = PrefabFile::from_path(pathname);
-
-  // FIMXE: there would be better way to handle prefab size, but it's
-  // probably not worth the effort
-  impl->size.width  = 1920;
-  impl->size.height = 1200;
-
-  // FIXME: overrides are getting ignored
-
-  // Get the objects
-  const std::vector<FileReader>& objs = prefab.get_objects();
-  for (auto i = objs.begin(); i != objs.end(); i++)
-  {
-    LevelObjPtr obj = LevelObjFactory::create(*i);
-    if (obj)
-    {
-      // move origin of the level to the center of it
- obj->set_pos(obj->get_pos() + Vector3f(static_cast<float>(impl->size.width)/2.0f, - static_cast<float>(impl->size.height)/2.0f));
-
-      add_object(obj);
-    }
-  }
-
-  sort();
-}
-
-// Load an existing level from a file
-void
-EditorLevel::load_level(const Pathname& pathname)
-{
-  log_info("EditorLevel::load_level: " << pathname.str());
-
-  // Get a new level implementation with default settings. It is a
-  // good idea to set the level defaults first, in case the level file
-  // doesn't set everything.
-  clear();
-
-  // Load the level from the file - we don't care what it's res_name is.
-  PingusLevel level(pathname);
-
-  // Assign all of the level information to our LevelImpl
-  impl->levelname        = level.get_levelname();
-  impl->description      = level.get_description();
-  impl->ambient_light    = level.get_ambient_light();
-  impl->size             = level.get_size();
-  impl->number_of_pingus = level.get_number_of_pingus();
-  impl->number_to_save   = level.get_number_to_save();
-  impl->actions          = level.get_actions();
-  impl->time             = level.get_time();
-  impl->author           = level.get_author();
-  impl->music            = level.get_music();
-
-  if (impl->music == "none")
-    impl->music = "";
-
-  // Get the objects
-  std::vector<FileReader> objs = level.get_objects();
- for (std::vector<FileReader>::const_iterator i = objs.begin(); i != objs.end(); i++)
-  {
-    LevelObjPtr obj = LevelObjFactory::create(*i);
-    if (obj)
-    {
-      add_object(obj);
-    }
-  }
-
-  sort();
-}

 void
 EditorLevel::sort()
=======================================
--- /src/editor/editor_level.hpp        Mon Oct 17 14:54:34 2011
+++ /src/editor/editor_level.hpp        Mon Oct 17 15:13:14 2011
@@ -36,26 +36,20 @@

 class EditorLevel
 {
+public:
+ static std::unique_ptr<EditorLevel> from_level_file(const Pathname& pathname); + static std::unique_ptr<EditorLevel> from_prefab_file(const Pathname& pathname);
+
 public:
   typedef std::list<LevelObjPtr> Objects;

-  /** Construct new blank level */
   EditorLevel();
-
-  /** Destructor */
   ~EditorLevel();

-  /** get a new implementation with default settings */
-  void clear();
-
   /** Save the level to a file.  Returns true if successful */
   void save_level(const std::string& filename);
   void save_prefab(const std::string& filename);

-  /** Load an existing level from a file */
-  void load_level(const Pathname& pathname);
-  void load_prefab(const Pathname& pathname);
-
   Size get_size() const;
   void set_size(const Size& s);

=======================================
--- /src/editor/editor_screen.cpp       Tue Oct 11 08:42:27 2011
+++ /src/editor/editor_screen.cpp       Mon Oct 17 15:13:14 2011
@@ -176,7 +176,7 @@
     {
       level_pathname = file;
       viewport->clear_selection();
-      plf->load_prefab(level_pathname);
+      plf = EditorLevel::from_prefab_file(level_pathname);
       level_properties->set_level(plf.get());
       action_properties->set_level(plf.get());
       viewport->refresh();
@@ -185,7 +185,7 @@
     {
       level_pathname = file;
       viewport->clear_selection();
-      plf->load_level(level_pathname);
+      plf = EditorLevel::from_level_file(level_pathname);
       level_properties->set_level(plf.get());
       action_properties->set_level(plf.get());
       viewport->refresh();
@@ -316,10 +316,10 @@
   // FIXME: dialogs don't update
   level_pathname = Pathname();
   viewport->clear_selection();
-  plf->clear();
+  plf.reset(new EditorLevel);
   level_properties->set_level(plf.get());
   action_properties->set_level(plf.get());
-  viewport->refresh();
+  viewport->refresh();
 }

 void



reply via email to

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