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); } }
public void setObject(Point p, Mapchip c) { if (objects.ContainsKey(p)) { objects[p] = c; } else { objects.Add(p, c); } }
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(); }
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); }
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; } } } } } } }
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; } } } }
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); }
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); }