[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pingus-CVS] r3153 - in trunk/pingus: . src/editor
From: |
grumbel at BerliOS |
Subject: |
[Pingus-CVS] r3153 - in trunk/pingus: . src/editor |
Date: |
Sat, 15 Sep 2007 05:53:37 +0200 |
Author: grumbel
Date: 2007-09-15 05:53:35 +0200 (Sat, 15 Sep 2007)
New Revision: 3153
Modified:
trunk/pingus/TODO
trunk/pingus/src/editor/editor_level.cpp
trunk/pingus/src/editor/editor_level.hpp
trunk/pingus/src/editor/editor_screen.cpp
trunk/pingus/src/editor/editor_viewport.cpp
trunk/pingus/src/editor/editor_viewport.hpp
trunk/pingus/src/editor/level_impl.hpp
trunk/pingus/src/editor/level_objs.cpp
trunk/pingus/src/editor/object_selector_list.cpp
Log:
- removed the double data holding of objects in both the EditorLevel and the
EditorViewport
Modified: trunk/pingus/TODO
===================================================================
--- trunk/pingus/TODO 2007-09-15 02:06:52 UTC (rev 3152)
+++ trunk/pingus/TODO 2007-09-15 03:53:35 UTC (rev 3153)
@@ -120,7 +120,7 @@
f - flip
r - rotate
--
+- implement a minimap (just rects when surfaces are to tricky)
- implement proper tmpfile Support (including backup use?)
Modified: trunk/pingus/src/editor/editor_level.cpp
===================================================================
--- trunk/pingus/src/editor/editor_level.cpp 2007-09-15 02:06:52 UTC (rev
3152)
+++ trunk/pingus/src/editor/editor_level.cpp 2007-09-15 03:53:35 UTC (rev
3153)
@@ -21,6 +21,7 @@
#include <iostream>
#include <string>
#include <fstream>
+#include "editor_viewport.hpp"
#include "editor_level.hpp"
#include "level_impl.hpp"
#include "level_objs.hpp"
@@ -30,9 +31,15 @@
namespace Editor {
+static bool LevelObjSort(LevelObj *a, LevelObj *b)
+{
+ return (a->get_pos().z < b->get_pos().z);
+}
+
// Default constructor
-EditorLevel::EditorLevel() :
- impl(new LevelImpl())
+EditorLevel::EditorLevel(EditorScreen* editor_)
+ : editor(editor_),
+ impl(new LevelImpl())
{
impl->levelname = "none";
impl->description = "none";
@@ -139,8 +146,9 @@
// Write the objects
fw.begin_section("objects");
- for (unsigned i = 0; i < impl->objects.size(); i++)
- impl->objects[i]->write_properties(fw);
+ std::vector<LevelObj*>* objects = editor->get_viewport()->get_objects();
+ for (unsigned i = 0; i < objects->size(); i++)
+ (*objects)[i]->write_properties(fw);
fw.end_section(); // objects
fw.end_section(); // pingus-level
@@ -269,20 +277,16 @@
obj->set_release_rate(tmp_int);
}
- impl->objects.push_back((LevelObj*)obj);
+ editor->get_viewport()->add_object(obj);
}
// Sort by Z coordinate
- impl->sort_objs();
+ std::stable_sort(editor->get_viewport()->get_objects()->begin(),
+ editor->get_viewport()->get_objects()->end(),
+ LevelObjSort);
}
void
-EditorLevel::add_object(LevelObj* obj)
-{
- impl->objects.push_back(obj);
-}
-
-void
EditorLevel::set_description(const std::string& str)
{
impl->description = str;
Modified: trunk/pingus/src/editor/editor_level.hpp
===================================================================
--- trunk/pingus/src/editor/editor_level.hpp 2007-09-15 02:06:52 UTC (rev
3152)
+++ trunk/pingus/src/editor/editor_level.hpp 2007-09-15 03:53:35 UTC (rev
3153)
@@ -29,12 +29,16 @@
namespace Editor {
class LevelObj;
+class EditorScreen;
class EditorLevel
{
+private:
+ EditorScreen* editor;
+
public:
/** Construct new blank level */
- EditorLevel();
+ EditorLevel(EditorScreen* editor);
/** Destructor */
~EditorLevel();
@@ -48,12 +52,6 @@
/** Load an existing level from a file */
void load_level(const Pathname& pathname);
- /** Return all objects in the level */
- std::vector<LevelObj*> get_objects() const { return impl->objects; }
-
- /** Add an object to the level */
- void add_object(LevelObj* obj);
-
Size get_size() const;
void set_size(const Size& s);
Modified: trunk/pingus/src/editor/editor_screen.cpp
===================================================================
--- trunk/pingus/src/editor/editor_screen.cpp 2007-09-15 02:06:52 UTC (rev
3152)
+++ trunk/pingus/src/editor/editor_screen.cpp 2007-09-15 03:53:35 UTC (rev
3153)
@@ -49,7 +49,7 @@
// Default constructor
EditorScreen::EditorScreen()
- : plf(new EditorLevel()),
+ : plf(new EditorLevel(this)),
panel(0),
viewport(0),
object_selector(0),
@@ -206,7 +206,6 @@
void
EditorScreen::add_object(LevelObj* obj)
{
- plf->add_object(obj);
viewport->add_object(obj);
}
Modified: trunk/pingus/src/editor/editor_viewport.cpp
===================================================================
--- trunk/pingus/src/editor/editor_viewport.cpp 2007-09-15 02:06:52 UTC (rev
3152)
+++ trunk/pingus/src/editor/editor_viewport.cpp 2007-09-15 03:53:35 UTC (rev
3153)
@@ -105,24 +105,25 @@
selected_objs.clear();
obj->select();
- obj->set_orig_pos(obj->get_pos());
-
selected_objs.push_back(obj);
selection_changed(selected_objs);
}
+ for (unsigned i = 0; i < selected_objs.size(); i++)
+ selected_objs[i]->set_orig_pos(selected_objs[i]->get_pos());
+
// Allow dragging of the currently selected objects
current_action = DRAGGING;
drag_world_pos = mouse_world_pos;
}
else
{
- selected_objs.clear();
current_action = HIGHLIGHTING;
highlighted_area.left = highlighted_area.right = mouse_world_pos.x;
highlighted_area.top = highlighted_area.bottom = mouse_world_pos.y;
+ selected_objs.clear();
selection_changed(selected_objs);
}
}
@@ -288,7 +289,6 @@
void
EditorViewport::refresh()
{
- objs = editor->get_level()->get_objects();
state.set_limit(Rect(Vector2i(0,0),
editor->get_level()->get_size()).grow(256));
std::cout << editor->get_level()->get_size().width << ", "
<< editor->get_level()->get_size().height
Modified: trunk/pingus/src/editor/editor_viewport.hpp
===================================================================
--- trunk/pingus/src/editor/editor_viewport.hpp 2007-09-15 02:06:52 UTC (rev
3152)
+++ trunk/pingus/src/editor/editor_viewport.hpp 2007-09-15 03:53:35 UTC (rev
3153)
@@ -27,7 +27,6 @@
#include <vector>
#include <string>
-
class Vector3f;
class DrawingContext;
class SceneContext;
@@ -149,6 +148,8 @@
void update_layout();
+ std::vector<LevelObj*>* get_objects() { return &objs; }
+
boost::signal<void (const std::vector<LevelObj*>&)> selection_changed;
private:
EditorViewport();
Modified: trunk/pingus/src/editor/level_impl.hpp
===================================================================
--- trunk/pingus/src/editor/level_impl.hpp 2007-09-15 02:06:52 UTC (rev
3152)
+++ trunk/pingus/src/editor/level_impl.hpp 2007-09-15 03:53:35 UTC (rev
3153)
@@ -25,15 +25,11 @@
#include <string>
#include <vector>
#include <algorithm>
+#include "editor_screen.hpp"
#include "level_objs.hpp"
namespace Editor {
-static bool LevelObjSort(LevelObj *a, LevelObj *b)
-{
- return (a->get_pos().z < b->get_pos().z);
-}
-
class LevelImpl
{
public:
@@ -48,11 +44,8 @@
/** Destructor */
~LevelImpl()
{
- for (unsigned i = 0; i < objects.size(); i++)
- delete objects[i];
- objects.clear();
}
-
+
std::string resname;
std::string levelname;
@@ -73,14 +66,6 @@
std::string comment;
std::string music;
- std::vector<LevelObj*> objects;
-
- /** Sort the objects by their z position */
- void sort_objs()
- {
- std::stable_sort(objects.begin(), objects.end(), LevelObjSort);
- }
-
private:
LevelImpl (const LevelImpl&);
LevelImpl& operator= (const LevelImpl&);
Modified: trunk/pingus/src/editor/level_objs.cpp
===================================================================
--- trunk/pingus/src/editor/level_objs.cpp 2007-09-15 02:06:52 UTC (rev
3152)
+++ trunk/pingus/src/editor/level_objs.cpp 2007-09-15 03:53:35 UTC (rev
3153)
@@ -159,7 +159,9 @@
if (attribs & HAS_SURFACE)
{
sprite = Resource::load_sprite(desc);
-
+ }
+ set_translated_pos();
+
#if 0
Surface pb;
@@ -199,8 +201,6 @@
sprite = Sprite(pb);
#endif
- }
- set_translated_pos();
}
// Set the modifier and actually modify the sprite loaded in memory
Modified: trunk/pingus/src/editor/object_selector_list.cpp
===================================================================
--- trunk/pingus/src/editor/object_selector_list.cpp 2007-09-15 02:06:52 UTC
(rev 3152)
+++ trunk/pingus/src/editor/object_selector_list.cpp 2007-09-15 03:53:35 UTC
(rev 3153)
@@ -125,13 +125,14 @@
LevelObj* create(const Vector2i& pos, LevelImpl* impl) {
LevelObj* obj = new LevelObj("surface-background", impl);
- obj->set_pos(pos);
+ obj->set_pos(Vector3f(pos.x, pos.y, -1000.0f)); // FIXME: Hack, z-pos
handling is messed up
obj->set_para_x(1.0f);
obj->set_para_y(1.0f);
obj->set_scroll_x(0.0f);
obj->set_scroll_y(0.0f);
obj->set_res_desc(desc);
// obj->set_para();
+
return obj;
}
};
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pingus-CVS] r3153 - in trunk/pingus: . src/editor,
grumbel at BerliOS <=