Beispiel #1
0
 private void putChips()
 {
     changedAfterSave = true;
     if (selecting_type == SelectingType.Mapchip)
     {
         Tuple <int, int> t     = cursor.OriginalIndex();
         Tuple <int, int> t_ter = cursor.TerminalIndex();
         Point            refp  = MainForm.mainform.CurrentMapchip();
         if (refp.X != -1)
         {
             for (int y = t.Item2; y <= t_ter.Item2; y++)
             {
                 for (int x = t.Item1; x <= t_ter.Item1; x++)
                 {
                     Mapchip c = new Mapchip();
                     c.width   = c.height = 64;
                     c.p       = new Point(x * 64, y * 64);
                     c.refx    = refp.X;
                     c.refy    = refp.Y;
                     data[c.p] = c;
                 }
             }
         }
     }
     else if (selecting_type == SelectingType.Object)
     {
         Tuple <int, int> t     = cursor.OriginalIndex();
         Tuple <int, int> t_ter = cursor.TerminalIndex();
         Point            refp  = MainForm.mainform.CurrentObjchip();
         if (refp.X != -1)
         {
             for (int y = t.Item2; y <= t_ter.Item2; y++)
             {
                 for (int x = t.Item1; x <= t_ter.Item1; x++)
                 {
                     Mapchip c = new Mapchip();
                     c.width = c.height = 32;
                     c.p     = new Point(x * 32, y * 32);
                     c.refx  = refp.X;
                     c.refy  = refp.Y;
                     data.setObject(c.p, c);
                 }
             }
         }
     }
     else if (selecting_type == SelectingType.Billboard)
     {
         Billboard b = MainForm.mainform.bbs.getBillboard();
         Point     p = cursor.getOrigin();
         b.x = p.X;
         b.y = p.Y;
         b.translate_rate_y = 1;
         b.translate_rate_x = 0.6;
         billboards.Add(b);
     }
 }
Beispiel #2
0
 public void setObject(Point p, Mapchip c)
 {
     if (objects.ContainsKey(p))
     {
         objects[p] = c;
     }
     else
     {
         objects.Add(p, c);
     }
 }
Beispiel #3
0
 public void setChips(MapData src, int x, int y, int w, int h)
 {
     data        = new MapData();
     data.Width  = w;
     data.Height = h;
     picbox.Size = new Size(64 * w, 64 * h);
     for (int j = y; j < y + h; j++)
     {
         for (int i = x; i < x + w; i++)
         {
             Point   p    = new Point((i) * 64, (j) * 64);
             Point   newp = new Point((i - x) * 64, (j - y) * 64);
             Mapchip c    = src[p];
             if (c != null)
             {
                 data[newp] = c;
             }
         }
     }
     Refresh();
 }
Beispiel #4
0
        static public MapData MapForTest()
        {
            MapData map = new MapData();

            map.name   = "test";
            map.width  = 10;
            map.height = 8;
            for (int y = 0; y < map.height; y++)
            {
                for (int x = 0; x < map.width; x++)
                {
                    Mapchip chip = new Mapchip();
                    chip.width = chip.height = 64;
                    chip.refx  = chip.refy = 0;
                    Point p = new Point(x * chip.width, y * chip.height);
                    chip.p = p;
                    map[p] = chip;
                }
            }
            return(map);
        }
Beispiel #5
0
        private void setChipProperty()
        {
            PropertyForm     f  = new PropertyForm();
            Tuple <int, int> tt = cursor.OriginalIndex();
            //Point pp = selectingMapchips ? new Point(tt.Item1 * 64, tt.Item2 * 64) : new Point(tt.Item1 * 32, tt.Item2 * 32);
            Point pp;// = selectingMapchips ? new Point(tt.Item1 * 64, tt.Item2 * 64) : new Point(tt.Item1 * 32, tt.Item2 * 32);

            if (selecting_type == SelectingType.Mapchip)
            //if (selectingMapchips)
            {
                pp = new Point(tt.Item1 * 64, tt.Item2 * 64);
                if (data[pp] != null)
                {
                    //f.Text = data[pp].etc;
                    if (f.PropertyText != data[pp].etc)
                    {
                        changedAfterSave = true;
                    }
                    f.PropertyText = data[pp].etc;
                }
            }
            else if (selecting_type == SelectingType.Object)
            {
                pp = new Point(tt.Item1 * 32, tt.Item2 * 32);
                if (data.getObject(pp) != null)
                {
                    //f.Text = data[pp].etc;
                    if (f.PropertyText != data.getObject(pp).etc)
                    {
                        changedAfterSave = true;
                    }
                    f.PropertyText = data.getObject(pp).etc;
                }
            }
            else if (selecting_type == SelectingType.Billboard)
            {
            }

            if (f.ShowDialog() == DialogResult.OK)
            {
                if (selecting_type == SelectingType.Mapchip)
                {
                    Mapchip c = new Mapchip();
                    c.width = c.height = 64;
                    Tuple <int, int> t     = cursor.OriginalIndex();
                    Tuple <int, int> t_ter = cursor.TerminalIndex();

                    for (int y = t.Item2; y <= t_ter.Item2; y++)
                    {
                        for (int x = t.Item1; x <= t_ter.Item1; x++)
                        {
                            Point p = new Point(x * 64, y * 64);
                            if (data[p] != null)
                            {
                                if (f.PropertyText != data[p].etc)
                                {
                                    changedAfterSave = true;
                                }
                                data[p].etc = f.PropertyText;
                            }
                        }
                    }
                }
                else if (selecting_type == SelectingType.Object)
                {
                    Tuple <int, int> t     = cursor.OriginalIndex();
                    Tuple <int, int> t_ter = cursor.TerminalIndex();
                    Point            refp  = MainForm.mainform.CurrentObjchip();
                    if (refp.X != -1)
                    {
                        for (int y = t.Item2; y <= t_ter.Item2; y++)
                        {
                            for (int x = t.Item1; x <= t_ter.Item1; x++)
                            {
                                Point   p    = new Point(x * 32, y * 32);
                                Mapchip chip = data.getObject(p);
                                if (chip != null)
                                {
                                    if (f.PropertyText != chip.etc)
                                    {
                                        changedAfterSave = true;
                                    }
                                    chip.etc = f.PropertyText;
                                }
                            }
                        }
                    }
                }
            }
        }
Beispiel #6
0
        private void deleteChips()
        {
            changedAfterSave = true;
            //if (selectingMapchips == true)
            if (selecting_type == SelectingType.Mapchip)
            {
                Mapchip c = new Mapchip();
                c.width = c.height = 64;
                Tuple <int, int> t     = cursor.OriginalIndex();
                Tuple <int, int> t_ter = cursor.TerminalIndex();

                for (int y = t.Item2; y <= t_ter.Item2; y++)
                {
                    for (int x = t.Item1; x <= t_ter.Item1; x++)
                    {
                        c.p = new Point(x * 64, y * 64);
                        Point prt = new Point(x * 64 + 32, y * 64);
                        Point plb = new Point(x * 64 + 32, y * 64 + 32);
                        Point prb = new Point(x * 64 + 32, y * 64 + 32);
                        c.refx    = -1;
                        c.refy    = -1;
                        data[c.p] = c;

                        /*data.setObject(c.p, c);
                        *  data.setObject(prt, c);
                        *  data.setObject(prb, c);
                        *  data.setObject(plb, c);*/
                    }
                }
            }
            else if (selecting_type == SelectingType.Object)
            {
                Tuple <int, int> t     = cursor.OriginalIndex();
                Tuple <int, int> t_ter = cursor.TerminalIndex();
                Point            refp  = MainForm.mainform.CurrentObjchip();
                if (refp.X != -1)
                {
                    for (int y = t.Item2; y <= t_ter.Item2; y++)
                    {
                        for (int x = t.Item1; x <= t_ter.Item1; x++)
                        {
                            Mapchip c = new Mapchip();
                            c.width = c.height = 32;
                            c.p     = new Point(x * 32, y * 32);
                            c.refx  = -1;
                            c.refy  = -1;
                            data.setObject(c.p, c);
                        }
                    }
                }
            }
            else if (selecting_type == SelectingType.Billboard)
            {
                Point p = cursor.getOrigin();
                foreach (Billboard b in billboards)
                {
                    Rectangle rect = new Rectangle(b.x, b.y, b.w, b.h);
                    if (rect.Contains(p))
                    {
                        billboards.Remove(b);
                        break;
                    }
                }
            }
        }
Beispiel #7
0
        public bool save(String filename, List <Billboard> billboards)
        {
            StreamWriter sw = new StreamWriter(filename, false);

            sw.WriteLine("name " + this.name);
            sw.WriteLine("width " + this.width);
            sw.WriteLine("height " + this.height);
            sw.WriteLine("background " + this.background);
            sw.WriteLine("bg_image_width " + this.bg_image_width);
            sw.WriteLine("bg_image_height " + this.bg_image_height);
            sw.WriteLine("bg_offset_x " + this.bg_offset_x);
            sw.WriteLine("bg_offset_y " + this.bg_offset_y);
            sw.WriteLine("bg_x_min " + this.bg_x_min);
            sw.WriteLine("bg_x_max " + this.bg_x_max);
            sw.WriteLine("bg_y_min " + this.bg_y_min);
            sw.WriteLine("bg_y_max " + this.bg_y_max);
            sw.WriteLine("bg_translate_rate_x " + this.bg_translate_rate_x);
            sw.WriteLine("bg_translate_rate_y " + this.bg_translate_rate_y);
            sw.WriteLine("bgm " + this.bgm_name + " " + this.bgm_segno);
            foreach (KeyValuePair <Point, Mapchip> kv in chips)
            {
                Mapchip c = kv.Value;
                if (c.refx >= 0)
                {
                    sw.WriteLine("mapchip " + c.p.X.ToString() + " " + c.p.Y.ToString() + " "
                                 + c.refx.ToString() + " " + c.refy.ToString() + " "
                                 + c.width.ToString() + " " + c.height.ToString() + " " + c.etc);
                }
            }
            foreach (KeyValuePair <Point, Mapchip> kv in objects)
            {
                Mapchip c = kv.Value;
                if (c.refx >= 0)
                {
                    sw.WriteLine("object " + c.p.X.ToString() + " " + c.p.Y.ToString() + " "
                                 + c.refx.ToString() + " " + c.refy.ToString() + " "
                                 + c.width.ToString() + " " + c.height.ToString() + " " + c.etc);
                }
            }

            foreach (Billboard b in billboards)
            {
                String[] tokens = b.file_name.Split('\\');
                String   file_name;
                if (tokens.Length > 2)
                {
                    file_name = tokens[tokens.Length - 2] + "\\" + tokens[tokens.Length - 1];
                }
                else
                {
                    file_name = "images" + "\\" + tokens[tokens.Length - 1];
                }
                sw.WriteLine("billboard " + b.x.ToString() + " " + b.y.ToString() + " "
                             + b.refx.ToString() + " " + b.refy.ToString() + " "
                             + b.w.ToString() + " " + b.h.ToString() + " "
                             + b.translate_rate_x + " " + b.translate_rate_y + " " + file_name);
            }

            sw.Close();
            return(true);
        }
Beispiel #8
0
        static public MapData fromFile(String filename, List <Billboard> billboards)
        {
            MapData      rtn = new MapData();
            StreamReader sr  = new StreamReader(filename, System.Text.Encoding.GetEncoding("shift_jis"));

            billboards.Clear();
            while (!sr.EndOfStream)
            {
                String   line   = sr.ReadLine();
                String[] tokens = line.Split(' ');
                String   verb   = tokens[0];
                if (verb.Equals("name"))
                {
                    rtn.name = tokens[1];
                }
                else if (verb.Equals("width"))
                {
                    rtn.width = int.Parse(tokens[1]);
                }
                else if (verb.Equals("height"))
                {
                    rtn.height = int.Parse(tokens[1]);
                }
                else if (verb.Equals("mapchip"))
                {
                    Mapchip c = new Mapchip();
                    if (tokens.Length <= 6)
                    {
                        continue;
                    }
                    c.p      = new Point(int.Parse(tokens[1]), int.Parse(tokens[2]));
                    c.refx   = int.Parse(tokens[3]);
                    c.refy   = int.Parse(tokens[4]);
                    c.width  = int.Parse(tokens[5]);
                    c.height = int.Parse(tokens[6]);
                    if (c.refx >= 0)
                    {
                        rtn.chips.Add(c.p, c);
                    }
                    if (tokens.Length >= 8)
                    {
                        c.etc = tokens[7];
                    }
                }
                else if (verb.Equals("object"))
                {
                    Mapchip c = new Mapchip();
                    if (tokens.Length <= 6)
                    {
                        continue;
                    }
                    c.p      = new Point(int.Parse(tokens[1]), int.Parse(tokens[2]));
                    c.refx   = int.Parse(tokens[3]);
                    c.refy   = int.Parse(tokens[4]);
                    c.width  = int.Parse(tokens[5]);
                    c.height = int.Parse(tokens[6]);
                    if (tokens.Length == 8)
                    {
                        c.etc = tokens[7];
                    }
                    if (c.refx >= 0)
                    {
                        rtn.objects.Add(c.p, c);
                    }
                }
                else if (verb.Equals("billboard"))
                {
                    Billboard c = new Billboard();
                    if (tokens.Length <= 7)
                    {
                        continue;
                    }
                    c.x                = int.Parse(tokens[1]);
                    c.y                = int.Parse(tokens[2]);
                    c.refx             = int.Parse(tokens[3]);
                    c.refy             = int.Parse(tokens[4]);
                    c.w                = int.Parse(tokens[5]);
                    c.h                = int.Parse(tokens[6]);
                    c.translate_rate_x = double.Parse(tokens[7]);
                    c.translate_rate_y = double.Parse(tokens[8]);
                    c.file_name        = (tokens[9]);
                    c.file_name        = Path.GetFileName(c.file_name);

                    for (int i = 10; i < tokens.Length; i++)
                    {
                        c.file_name += (" " + tokens[i]);
                    }
                    if (c.refx >= 0)
                    {
                        billboards.Add(c);
                    }
                }
                else if (verb.Equals("background"))
                {
                    rtn.background = tokens[1];
                }
                else if (verb.Equals("bg_offset_x"))
                {
                    rtn.bg_offset_x = int.Parse(tokens[1]);
                }
                else if (verb.Equals("bg_offset_y"))
                {
                    rtn.bg_offset_y = int.Parse(tokens[1]);
                }
                else if (verb.Equals("bg_x_min"))
                {
                    rtn.bg_x_min = int.Parse(tokens[1]);
                }
                else if (verb.Equals("bg_x_max"))
                {
                    rtn.bg_x_max = int.Parse(tokens[1]);
                }
                else if (verb.Equals("bg_y_min"))
                {
                    rtn.bg_y_min = int.Parse(tokens[1]);
                }
                else if (verb.Equals("bg_y_max"))
                {
                    rtn.bg_y_max = int.Parse(tokens[1]);
                }
                else if (verb.Equals("bg_image_width"))
                {
                    rtn.bg_image_width = int.Parse(tokens[1]);
                }
                else if (verb.Equals("bg_image_height"))
                {
                    rtn.bg_image_height = int.Parse(tokens[1]);
                }
                else if (verb.Equals("bg_translate_rate"))
                {
                    rtn.bg_translate_rate_x             = rtn.bg_translate_rate_y
                                                        = double.Parse(tokens[1]);
                }
                else if (verb.Equals("bg_translate_rate"))
                {
                    rtn.bg_translate_rate_x
                          = rtn.bg_translate_rate_y
                          = double.Parse(tokens[1]);
                }
                else if (verb.Equals("bg_translate_rate_x"))
                {
                    rtn.bg_translate_rate_x = double.Parse(tokens[1]);
                }
                else if (verb.Equals("bg_translate_rate_y"))
                {
                    rtn.bg_translate_rate_y = double.Parse(tokens[1]);
                }
                else if (verb.Equals("bg_translate_rate_y"))
                {
                    rtn.bg_translate_rate_y = double.Parse(tokens[1]);
                }
                else if (verb.Equals("bgm"))
                {
                    rtn.bgm_name  = tokens[1];
                    rtn.bgm_segno = double.Parse(tokens[2]);
                }
            }
            sr.Close();
            return(rtn);
        }