summaryrefslogtreecommitdiff
path: root/saedit/main.h
diff options
context:
space:
mode:
Diffstat (limited to 'saedit/main.h')
-rw-r--r--saedit/main.h101
1 files changed, 56 insertions, 45 deletions
diff --git a/saedit/main.h b/saedit/main.h
index 01b60e8..ab6a9cc 100644
--- a/saedit/main.h
+++ b/saedit/main.h
@@ -22,7 +22,10 @@ const int MIN_HEIGHT = 600;
const int SPRITE_WIDTH_DEFAULT = 64;
const int SPRITE_HEIGHT_DEFAULT = 64;
const int GRID_SIZE = 32;
+
const gchar *DIR_GROUNDS = "grounds";
+const gchar *DIR_PLAYERS = "players/";
+
const gchar *FILE_ICON = "icon.svg";
const gchar *FILE_CONFIG = "saedit/config.ini";
const gchar *POSTFIX_FOLDER = "...";
@@ -36,18 +39,62 @@ const int IMAGESET_PREVIEW_WINDOW_WIDTH = 200;
const int IMAGESET_PREVIEW_WINDOW_HEIGHT = 300;
typedef struct {
+ XMLNode *node;
+ int offsetX;
+ int offsetY;
+ int width;
+ int height;
+ int spriteset_width;
+ int spriteset_height;
+ GdkPixbuf *spriteset;
+} ImagesetInfo;
+
+typedef struct {
+ int index;
+ int offsetX;
+ int offsetY;
+} SpriteInfo;
+static SpriteInfo *sprite_info_new(int index, int offsetX, int offsetY);
+
+static ImagesetInfo *imageset_info_new() {
+ ImagesetInfo *res = g_new0(ImagesetInfo, 1);
+ res->width = SPRITE_WIDTH_DEFAULT;
+ res->height = SPRITE_HEIGHT_DEFAULT;
+ return res;
+}
+
+typedef struct {
+ GList *imagesets;
+ GList *actions;
+ GList *animations;
+ ImagesetInfo *imageset;
+ SpriteInfo *sprite;
+ guint anim_tag;
+ XMLNode *root;
+ GtkWidget *imagesets_combo_box;
+ GtkWidget *actions_combo_box;
+ GtkWidget *animations_combo_box;
+ GdkPixbuf *ground;
+ int offsetX;
+ int offsetY;
+} SAEInfo;
+
+
+typedef struct {
GList *sub_nodes;
guint *anim_tag;
+ SAEInfo *sae_info;
} AnimationInfo;
static AnimationInfo *animation_info_new() {
return g_new0(AnimationInfo, 1);
}
-static AnimationInfo *animation_info_new_with_params(GList *sub_nodes_new, guint *anim_tag_new) {
- AnimationInfo *res = g_new0(AnimationInfo, 1);
+static AnimationInfo *animation_info_new_with_params(GList *sub_nodes_new, guint *anim_tag_new, SAEInfo *sae_info) {
+ AnimationInfo *res = animation_info_new();
res->sub_nodes = sub_nodes_new;
res->anim_tag = anim_tag_new;
+ res->sae_info = sae_info;
return res;
}
@@ -72,13 +119,6 @@ static SequenceInfo *sequence_info_new(XMLNode *node, int start, int end, guint
}
typedef struct {
- int index;
- int offsetX;
- int offsetY;
-} SpriteInfo;
-static SpriteInfo *sprite_info_new(int index, int offsetX, int offsetY);
-
-typedef struct {
gchar *sprites;
} Options;
@@ -94,36 +134,6 @@ static Keys *keys_new() {
return res;
}
-typedef struct {
- XMLNode *node;
- int offsetX;
- int offsetY;
- int width;
- int height;
- GdkPixbuf *spriteset;
-} ImagesetInfo;
-
-static ImagesetInfo *imageset_info_new() {
- ImagesetInfo *res = g_new0(ImagesetInfo, 1);
- res->width = SPRITE_WIDTH_DEFAULT;
- res->height = SPRITE_HEIGHT_DEFAULT;
- return res;
-}
-
-typedef struct {
- GList *imagesets;
- GList *actions;
- GList *animations;
- ImagesetInfo *imageset;
- SpriteInfo *sprite;
- guint anim_tag;
- XMLNode *root;
- GtkWidget *imagesets_combo_box;
- GtkWidget *actions_combo_box;
- GtkWidget *animations_combo_box;
- GdkPixbuf *ground;
-} SAEInfo;
-
static GdkPixbuf *sae_info_ground_new() {
GdkPixbuf *ground = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, GRID_SIZE * 3, GRID_SIZE * 3);
gdk_pixbuf_fill(ground, 0x00000000);
@@ -133,11 +143,11 @@ static GdkPixbuf *sae_info_ground_new() {
static SAEInfo *sae_info_new() {
SAEInfo *res = g_new0(SAEInfo, 1);
res->ground = sae_info_ground_new();
+ res->sprite = sprite_info_new(-1, 0, 0);
+ res->imageset = imageset_info_new();
return res;
}
-int spriteset_width, spriteset_height;
-int offsetX = 0, offsetY = 0;
GtkWidget *win = NULL;
GtkWidget *darea = NULL;
@@ -153,7 +163,8 @@ GtkSourceBuffer *source_buffer = NULL;
//GList *imagesets = NULL;
//GList *actions = NULL;
//GList *animations = NULL;
-SAEInfo *gen_sae_info;
+SAEInfo *gen_sae_info = NULL;
+SAEInfo *player = NULL;
GdkPixbuf *icon = NULL;
@@ -178,8 +189,8 @@ static gint xml_node_compare_with_name(gconstpointer a, gconstpointer b);
static gint xml_node_compare_with_action_node_by_imageset_name_func(gconstpointer a, gconstpointer b);
static gint xml_node_compare_with_direction_attr(gconstpointer node, gconstpointer direction);
static gint xml_node_compare_with_name_attr(gconstpointer node, gconstpointer name);
-static GdkPixbuf* get_sprite_by_index(size_t index);
-static void set_sprite_by_index(size_t index);
+static GdkPixbuf* get_sprite_by_index(size_t index, SAEInfo *sae_info);
+static void set_sprite_by_index(size_t index, SAEInfo *sae_info);
static void set_up_actions_by_imageset_name(gchar *imageset_name, SAEInfo *sae_info);
static gboolean set_up_imagesets(SAEInfo *sae_info);
static gboolean sequence_source_func(SequenceInfo *seq);
@@ -195,7 +206,7 @@ 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);
+static gboolean darea_expose_event(GtkWidget *widget, GdkEventExpose *event, SAEInfo *sae_info);
static void load_config();
static void save_config_and_quit();
static void load_options();