[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pingus-CVS] r3140 - in trunk/pingus/src: editor math
From: |
grumbel at BerliOS |
Subject: |
[Pingus-CVS] r3140 - in trunk/pingus/src: editor math |
Date: |
Thu, 13 Sep 2007 13:55:56 +0200 |
Author: grumbel
Date: 2007-09-13 13:55:55 +0200 (Thu, 13 Sep 2007)
New Revision: 3140
Modified:
trunk/pingus/src/editor/editor_screen.cpp
trunk/pingus/src/editor/editor_viewport.cpp
trunk/pingus/src/editor/level_objs.cpp
trunk/pingus/src/editor/object_properties.cpp
trunk/pingus/src/editor/object_properties.hpp
trunk/pingus/src/editor/object_selector.cpp
trunk/pingus/src/editor/object_selector.hpp
trunk/pingus/src/math/rect.hpp
Log:
- some more object properties hocked up
- added border that shows the level size
- fixed drag&drop bug
- fixed default SurfaceBackground values
- ObjectProperties dialog resizes depending on the number of properties
Modified: trunk/pingus/src/editor/editor_screen.cpp
===================================================================
--- trunk/pingus/src/editor/editor_screen.cpp 2007-09-13 05:36:51 UTC (rev
3139)
+++ trunk/pingus/src/editor/editor_screen.cpp 2007-09-13 11:55:55 UTC (rev
3140)
@@ -92,6 +92,7 @@
level_properties->set_level(plf);
action_properties->set_level(plf);
gui_manager->add(level_properties, true);
+ viewport->refresh();
}
// Destructor
@@ -351,18 +352,28 @@
EditorScreen::toggle_action_properties()
{
if (action_properties->is_visible())
- action_properties->hide();
+ {
+ action_properties->hide();
+ }
else
- action_properties->show();
+ {
+ action_properties->show();
+ level_properties->hide();
+ }
}
void
EditorScreen::toggle_level_properties()
{
if (level_properties->is_visible())
+ {
level_properties->hide();
+ }
else
+ {
level_properties->show();
+ action_properties->hide();
+ }
}
void
Modified: trunk/pingus/src/editor/editor_viewport.cpp
===================================================================
--- trunk/pingus/src/editor/editor_viewport.cpp 2007-09-13 05:36:51 UTC (rev
3139)
+++ trunk/pingus/src/editor/editor_viewport.cpp 2007-09-13 11:55:55 UTC (rev
3140)
@@ -122,8 +122,12 @@
{
for (unsigned i = 0; i < selected_objs.size(); i++)
selected_objs[i]->unselect();
+
selected_objs.clear();
obj->select();
+
+ obj->set_orig_pos(obj->get_pos());
+
selected_objs.push_back(obj);
selection_changed(selected_objs);
@@ -235,8 +239,12 @@
EditorViewport::draw(DrawingContext &gc)
{
drawing_context->clear();
- drawing_context->fill_screen(Color(255,0,255));
+ drawing_context->fill_screen(Color(155,0,155));
state.push(*drawing_context);
+ drawing_context->draw_rect(Rect(Vector2i(0,0),
editor->get_level()->get_size()), Color(255,255,255), 5000.0f);
+ drawing_context->draw_rect(Rect(Vector2i(0,0),
editor->get_level()->get_size()).grow(1), Color(0,0,0), 5000.0f);
+
+ drawing_context->draw_rect(Rect(Vector2i(0,0),
editor->get_level()->get_size()).grow(-100), Color(155,155,155), 5000.0f);
// Draw the level objects
for (unsigned i = 0; i < objs.size(); i++)
@@ -314,7 +322,7 @@
EditorViewport::refresh()
{
objs = editor->get_level()->get_objects();
- state.set_limit(Rect(Vector2i(0, 0), editor->get_level()->get_size()));
+ 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
<< std::endl;
Modified: trunk/pingus/src/editor/level_objs.cpp
===================================================================
--- trunk/pingus/src/editor/level_objs.cpp 2007-09-13 05:36:51 UTC (rev
3139)
+++ trunk/pingus/src/editor/level_objs.cpp 2007-09-13 11:55:55 UTC (rev
3140)
@@ -107,6 +107,7 @@
for(int x = int(pos.x); x < pos.x + width; x += sprite.get_width())
gc.draw(sprite, Vector3f(static_cast<float>(x), pos.y, pos.z));
}
+#if 0
else if(attribs & HAS_STRETCH)
{
// Surface Background - tile it
@@ -114,6 +115,7 @@
for (int y = 0; y < level->size.height; y += sprite.get_height())
gc.draw(sprite, Vector3f((float)x, (float)y, pos.z));
}
+#endif
else
{
gc.draw(sprite, pos);
@@ -157,9 +159,7 @@
if (attribs & HAS_SURFACE)
{
sprite = Resource::load_sprite(desc);
- ////int x, y;
- ////sprite.get_alignment(origin, x, y);
-
+#if 0
PixelBuffer pb;
// Apply modifier, then change the sprite loaded for this object in
memory.
@@ -196,11 +196,8 @@
else // No stretch involved
pb = Resource::load_pixelbuffer(desc);
- ////SpriteDescription sprite_desc;
- ////sprite_desc.add_frame(pb);
- ////sprite = Sprite(sprite_desc);
sprite = Sprite(pb);
- ////sprite.set_alignment(origin, x, y);
+#endif
}
set_translated_pos();
}
Modified: trunk/pingus/src/editor/object_properties.cpp
===================================================================
--- trunk/pingus/src/editor/object_properties.cpp 2007-09-13 05:36:51 UTC
(rev 3139)
+++ trunk/pingus/src/editor/object_properties.cpp 2007-09-13 11:55:55 UTC
(rev 3140)
@@ -38,11 +38,11 @@
editor(editor_)
{
add(type_label = new Label(Rect(Vector2i(4, 4), Size(120, 20)), "Object:"),
true);
- add(mesg_label = new Label(Rect(Vector2i(40, rect.get_height()/2- 20),
Size(120, 20)), "nothing selected"), true);
+ add(mesg_label = new Label(Rect(Vector2i(10, 0), Size(180, 20)), "Nothing
selected"), true);
Rect label_rect(10,0, 80, 20);
Rect box_rect(80,0, 190, 20);
-
+
// Groundpiece Type
add(gptype_label = new Label(label_rect, "GPType:"), true);
add(gptype_type = new Combobox(box_rect), true);
@@ -57,7 +57,7 @@
gptype_type->set_selected_item(Groundtype::GP_GROUND);
gptype_type->on_select.connect(boost::bind(&ObjectProperties::on_gptype_change,
this, _1));
-
+
add(entrance_direction_label = new Label(label_rect, "Direction:"), true);
add(entrance_direction = new Combobox(box_rect), true);
entrance_direction->add(0, "Left");
@@ -66,10 +66,12 @@
entrance_direction->set_selected_item(0);
entrance_direction->on_select.connect(boost::bind(&ObjectProperties::on_entrance_direction_change,
this, _1));
-
+
add(release_rate_label = new Label(label_rect, "ReleaseRate:"), true);
add(release_rate_inputbox = new Inputbox(box_rect), true);
-
+
+
release_rate_inputbox->on_change.connect(boost::bind(&ObjectProperties::on_release_rate_change,
this, _1));
+
// Background Stretch
add(stretch_label = new Label(label_rect, "Stretch:"), true);
add(stretch_x_checkbox = new Checkbox(Rect(Vector2i(box_rect.left,
box_rect.top),
@@ -81,22 +83,29 @@
stretch_x_checkbox->on_change.connect(boost::bind(&ObjectProperties::on_stretch_x_change,
this, _1));
stretch_y_checkbox->on_change.connect(boost::bind(&ObjectProperties::on_stretch_y_change,
this, _1));
-
+
add(para_x_label = new Label(label_rect, "Para-X:"), true);
add(para_y_label = new Label(label_rect, "Para-Y:"), true);
add(para_x_inputbox = new Inputbox(box_rect), true);
add(para_y_inputbox = new Inputbox(box_rect), true);
-
+
+
para_x_inputbox->on_change.connect(boost::bind(&ObjectProperties::on_para_x_change,
this, _1));
+
para_y_inputbox->on_change.connect(boost::bind(&ObjectProperties::on_para_y_change,
this, _1));
+
add(scroll_x_label = new Label(label_rect, "Scroll-X:"), true);
add(scroll_y_label = new Label(label_rect, "Scroll-Y:"), true);
add(scroll_x_inputbox = new Inputbox(box_rect), true);
add(scroll_y_inputbox = new Inputbox(box_rect), true);
-
+
+
scroll_x_inputbox->on_change.connect(boost::bind(&ObjectProperties::on_scroll_x_change,
this, _1));
+
scroll_y_inputbox->on_change.connect(boost::bind(&ObjectProperties::on_scroll_y_change,
this, _1));
+
add(owner_label = new Label(label_rect, "Owner Id:"), true);
add(owner_inputbox = new Inputbox(box_rect), true);
-
+
owner_inputbox->on_change.connect(boost::bind(&ObjectProperties::on_owner_change,
this, _1));
+
set_object(0);
}
@@ -146,6 +155,8 @@
void
ObjectProperties::hide_all()
{
+ y_pos = 30;
+
// Hide everything
mesg_label->hide();
@@ -187,7 +198,6 @@
if (obj)
{
unsigned int attr = obj->get_attribs();
- y_pos = 30;
if (attr & HAS_TYPE)
{
gptype_type->set_selected_item(Groundtype::string_to_type(obj->get_type()));
@@ -267,8 +277,10 @@
}
else
{
- mesg_label->show();
+ place(mesg_label);
+ advance();
}
+ finalize();
}
void
@@ -303,6 +315,12 @@
}
void
+ObjectProperties::finalize()
+{
+ set_rect(Rect(rect.left, rect.bottom - y_pos - 10, rect.right, rect.bottom));
+}
+
+void
ObjectProperties::on_gptype_change(const ComboItem& item)
{
for(Objects::iterator i = objects.begin(); i != objects.end(); ++i)
@@ -331,11 +349,53 @@
if (item.id == 0)
(*i)->set_direction("left");
else if (item.id == 1)
- (*i)->set_direction("left");
+ (*i)->set_direction("misc");
else // (item.id == 2)
(*i)->set_direction("right");
}
}
+
+void
+ObjectProperties::on_owner_change(const std::string& str)
+{
+ for(Objects::iterator i = objects.begin(); i != objects.end(); ++i)
+ (*i)->set_owner(StringUtil::to<int>(str));
+}
+
+void
+ObjectProperties::on_para_x_change(const std::string& str)
+{
+ for(Objects::iterator i = objects.begin(); i != objects.end(); ++i)
+ (*i)->set_para_x(StringUtil::to<float>(str));
+}
+
+void
+ObjectProperties::on_para_y_change(const std::string& str)
+{
+ for(Objects::iterator i = objects.begin(); i != objects.end(); ++i)
+ (*i)->set_para_y(StringUtil::to<float>(str));
+}
+
+void
+ObjectProperties::on_scroll_x_change(const std::string& str)
+{
+ for(Objects::iterator i = objects.begin(); i != objects.end(); ++i)
+ (*i)->set_scroll_x(StringUtil::to<float>(str));
+}
+
+void
+ObjectProperties::on_scroll_y_change(const std::string& str)
+{
+ for(Objects::iterator i = objects.begin(); i != objects.end(); ++i)
+ (*i)->set_scroll_y(StringUtil::to<float>(str));
+}
+
+void
+ObjectProperties::on_release_rate_change(const std::string& str)
+{
+ for(Objects::iterator i = objects.begin(); i != objects.end(); ++i)
+ (*i)->set_release_rate(StringUtil::to<int>(str));
+}
} // namespace Editor
Modified: trunk/pingus/src/editor/object_properties.hpp
===================================================================
--- trunk/pingus/src/editor/object_properties.hpp 2007-09-13 05:36:51 UTC
(rev 3139)
+++ trunk/pingus/src/editor/object_properties.hpp 2007-09-13 11:55:55 UTC
(rev 3140)
@@ -81,8 +81,10 @@
void set_objects(const std::vector<LevelObj*>& objs);
+ // GUI Placement functions
void hide_all();
void advance();
+ void finalize();
void place(GUI::RectComponent* comp);
void place(GUI::RectComponent* comp1, GUI::RectComponent* comp2);
@@ -90,6 +92,12 @@
void on_stretch_x_change(bool t);
void on_stretch_y_change(bool t);
void on_entrance_direction_change(const ComboItem& item);
+ void on_owner_change(const std::string& str);
+ void on_para_x_change(const std::string& str);
+ void on_para_y_change(const std::string& str);
+ void on_scroll_x_change(const std::string& str);
+ void on_scroll_y_change(const std::string& str);
+ void on_release_rate_change(const std::string& str);
};
Modified: trunk/pingus/src/editor/object_selector.cpp
===================================================================
--- trunk/pingus/src/editor/object_selector.cpp 2007-09-13 05:36:51 UTC (rev
3139)
+++ trunk/pingus/src/editor/object_selector.cpp 2007-09-13 11:55:55 UTC (rev
3140)
@@ -48,7 +48,8 @@
std::string type;
Groundpiece(const std::string& name, const std::string& type)
- : Object(Resource::load_thumb_sprite(name)),
+ : Object(Resource::load_sprite(name),
+ Resource::load_thumb_sprite(name)),
desc(name),
type(type)
{}
@@ -65,7 +66,8 @@
struct Entrance : public ObjectSelector::Object
{
Entrance()
- : Object(Resource::load_thumb_sprite("entrances/generic"))
+ : Object(Resource::load_sprite("entrances/generic"),
+ Resource::load_thumb_sprite("entrances/generic"))
{}
LevelObj* create(const Vector2i& pos, LevelImpl* impl) {
@@ -84,7 +86,8 @@
ResDescriptor desc;
Exit(const std::string& name)
- : Object(Resource::load_thumb_sprite(name)),
+ : Object(Resource::load_sprite(name),
+ Resource::load_thumb_sprite(name)),
desc(name)
{}
@@ -102,7 +105,8 @@
ResDescriptor desc;
Hotspot(const std::string& name)
- : Object(Resource::load_thumb_sprite(name)),
+ : Object(Resource::load_sprite(name),
+ Resource::load_thumb_sprite(name)),
desc(name)
{}
@@ -120,13 +124,18 @@
ResDescriptor desc;
SurfaceBackground(const std::string& name)
- : Object(Resource::load_thumb_sprite(name)),
+ : Object(Resource::load_sprite(name),
+ Resource::load_thumb_sprite(name)),
desc(name)
{}
LevelObj* create(const Vector2i& pos, LevelImpl* impl) {
LevelObj* obj = new LevelObj("surface-background", impl);
obj->set_pos(pos);
+ 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;
@@ -299,7 +308,7 @@
Color(155,155,155), 10000);
}
- gc.draw((*i)->sprite,
+ gc.draw((*i)->thumbnail,
Vector2i(x * 48 + std::max(0, (48 -
(*i)->sprite.get_width())/2),
y * 48 + std::max(0, (48 -
(*i)->sprite.get_height())/2)));
++i;
@@ -441,10 +450,10 @@
for(std::vector<std::string>::const_iterator i = lst.begin(); i !=
lst.end(); ++i)
{
std::cout << "Objects: " << *i << std::endl;
- Sprite sprite = Resource::load_sprite(*i);
//sprite.scale(48, 48);
// need to reset the align to top/left
- objects.push_back(new Object(sprite));
+ objects.push_back(new Object(Resource::load_sprite(*i),
+ Resource::load_thumb_sprite(*i)));
}
}
@@ -528,7 +537,8 @@
for(std::vector<std::string>::const_iterator i = lst.begin(); i !=
lst.end(); ++i)
{
//sprite.scale(48, 48);
- objects.push_back(new Hotspot(*i));
+ if (*i != "entrances/generic")
+ objects.push_back(new Hotspot(*i));
}
}
Modified: trunk/pingus/src/editor/object_selector.hpp
===================================================================
--- trunk/pingus/src/editor/object_selector.hpp 2007-09-13 05:36:51 UTC (rev
3139)
+++ trunk/pingus/src/editor/object_selector.hpp 2007-09-13 11:55:55 UTC (rev
3140)
@@ -40,9 +40,11 @@
public:
struct Object {
Sprite sprite;
+ Sprite thumbnail;
- Object(const Sprite& sprite_)
- : sprite(sprite_)
+ Object(const Sprite& sprite_, const Sprite& thumbnail_)
+ : sprite(sprite_),
+ thumbnail(thumbnail_)
{}
virtual ~Object() {}
Modified: trunk/pingus/src/math/rect.hpp
===================================================================
--- trunk/pingus/src/math/rect.hpp 2007-09-13 05:36:51 UTC (rev 3139)
+++ trunk/pingus/src/math/rect.hpp 2007-09-13 11:55:55 UTC (rev 3140)
@@ -64,6 +64,14 @@
Rect(const Rect &rect)
{ left = rect.left; top = rect.top; right = rect.right; bottom =
rect.bottom; }
+ // Moves each edge b away from the center, thus width = old_width + 2*b
+ Rect grow(int b) const {
+ return Rect(left - b,
+ top - b,
+ right + b,
+ bottom + b);
+ }
+
//: Rect += Rect operator.
Rect &operator+=(const Rect &r)
{ left += r.left; top += r.top; right += r.right; bottom += r.bottom; return
*this; }
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pingus-CVS] r3140 - in trunk/pingus/src: editor math,
grumbel at BerliOS <=