summaryrefslogtreecommitdiff
path: root/saedit
diff options
context:
space:
mode:
authorVasily_Makarov <danilka.pro@gmail.com>2011-06-10 18:59:05 +0400
committerVasily_Makarov <danilka.pro@gmail.com>2011-06-10 18:59:05 +0400
commitb6c7454b3b63c0df36888995d0079c45527b5515 (patch)
tree94ea1708ab57d044647bd954e1808a64bfd082c6 /saedit
parentee04e07a08e2f26878de3c1830e7a4e364c4aeda (diff)
downloadtools-b6c7454b3b63c0df36888995d0079c45527b5515.tar.gz
tools-b6c7454b3b63c0df36888995d0079c45527b5515.tar.bz2
tools-b6c7454b3b63c0df36888995d0079c45527b5515.tar.xz
tools-b6c7454b3b63c0df36888995d0079c45527b5515.zip
saedit: Add player-stand offset support
Diffstat (limited to 'saedit')
-rw-r--r--saedit/main.c16
-rw-r--r--saedit/main.h2
2 files changed, 15 insertions, 3 deletions
diff --git a/saedit/main.c b/saedit/main.c
index 688d0b7..55152ba 100644
--- a/saedit/main.c
+++ b/saedit/main.c
@@ -44,7 +44,7 @@ cairo_surface_t *get_grid_surface(int w, int h) {
return surface;
}
-gboolean on_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data) {
+gboolean darea_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data) {
int width = widget->allocation.width,
height = widget->allocation.height;
@@ -58,7 +58,7 @@ gboolean on_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data
GdkPixbuf *pbuf = get_sprite_by_index(current_sprite->index);
if (pbuf == NULL) return FALSE;
- gdk_cairo_set_source_pixbuf(cr, pbuf, width/2 - sprite_width/2 + current_sprite->offsetX + imageset->offsetX, height/2 - sprite_height/2 + current_sprite->offsetY + imageset->offsetY);
+ gdk_cairo_set_source_pixbuf(cr, pbuf, width/2 - sprite_width/2 + offsetX + current_sprite->offsetX + imageset->offsetX, height/2 - sprite_height/2 + offsetY + current_sprite->offsetY + imageset->offsetY);
cairo_paint(cr);
cairo_destroy(cr);
@@ -399,6 +399,16 @@ void parse_xml_buffer(GtkWidget *button, GtkSourceBuffer *buffer) {
show_wrong_source_buffer_dialog();
return;
}
+
+ offsetX = 0;
+ offsetY = 0;
+ gchar *name_attr = xml_node_get_attr_value(root, "name");
+ gchar *action_attr = xml_node_get_attr_value(root, "action");
+ if (name_attr != NULL && action_attr != NULL)
+ if (g_strcmp0(name_attr, "player") == 0 &&
+ g_strcmp0(action_attr, "stand") == 0)
+ offsetY = -16;
+
if (!set_up_imagesets(root)) {
show_wrong_source_buffer_dialog();
return;
@@ -527,7 +537,7 @@ void set_up_interface() {
darea = gtk_drawing_area_new();
gtk_paned_pack1(GTK_PANED(vbox), darea, FALSE, FALSE);
gtk_widget_set_size_request(darea, -1, 120);
- g_signal_connect(darea, "expose-event", G_CALLBACK(on_expose_event), NULL);
+ g_signal_connect(darea, "expose-event", G_CALLBACK(darea_expose_event), NULL);
text = gtk_source_view_new_with_buffer(sbuf);
gtk_source_view_set_show_line_numbers(GTK_SOURCE_VIEW(text), TRUE);
diff --git a/saedit/main.h b/saedit/main.h
index 5c37058..69f5348 100644
--- a/saedit/main.h
+++ b/saedit/main.h
@@ -53,6 +53,7 @@ static imageset_info *imageset_info_new() {
int sprite_width = 64, sprite_height = 64;
int spriteset_width, spriteset_height;
+int offsetX = 0, offsetY = 0;
GtkWidget *win = NULL;
GtkWidget *darea = NULL;
@@ -106,3 +107,4 @@ static void show_about_dialog();
static void show_imageset_window();
static gboolean frame_image_button_press_event(GtkWidget *widget, GdkEventButton *button, int index);
static cairo_surface_t *get_grid_surface(int w, int h);
+static gboolean darea_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data);