public CSFolder GetCreateSubfolder(String name) { for (int i = 0; i < Tiles.Count; i++) { if (Tiles[i] is CSFolder && Tiles[i].Text == name) { return(Tiles[i] as CSFolder); } } CSFolder f = new CSFolder(); f.Text = name; if (ComponentSelector.folderTextures.ContainsKey(f.Text)) { Texture = ResourceManager.Load <Texture2D>(ComponentSelector.folderTextures[f.Text]); } else { Texture = GraphicsEngine.pixel; } f.position = new Vector2(4 + position.X + 40, position.Y + Tiles.Count * 40); f.parent = null; f.localIndex = Tiles.Count; f.isVisible = true; f.Color = Color.White; GUIEngine.s_componentSelector.allTiles.Add(f); Tiles.Add(f); return(f); }
public bool LoadStructure(System.IO.BinaryReader br) { String s = ""; while (true) { s = br.ReadString(); if (s.StartsWith("0"))//CSC { var a = GUIEngine.s_componentSelector._getComponent(s.Substring(1)); if (a == null) { return(false); } GUIEngine.s_componentSelector.AddComponent(this, a); continue; } if (s.StartsWith("1"))//CSF { CSFolder f = GetCreateSubfolder(s.Substring(1)); if (!f.LoadStructure(br)) { return(false); } continue; } if (s.StartsWith("2"))//folder end { break; } } return(true); }
public Vector2 TilePosition(String t) { var a = t.Split('/'); if (a.Length == 1) { foreach (var c in rootTiles) { if (c is CSComponentCopy && c.Text == t) { return(c.Position); } } return(new Vector2(-1, -1)); } CSFolder cur = null; foreach (var c in rootTiles) { if (c is CSFolder && c.Text == a[0] && (c as CSFolder).IsOpened) { cur = c as CSFolder; break; } } if (cur == null) { return(new Vector2(-1, -1)); } bool found = false; for (int i = 1; i < a.Length - 1; i++) { found = false; for (int j = 0; j < cur.Tiles.Count; j++) { if (cur.Tiles[j] is CSFolder && cur.Tiles[j].Text == a[i] && (cur as CSFolder).IsOpened) { cur = cur.Tiles[j] as CSFolder; found = true; break; } } if (!found) { return(new Vector2(-1, -1)); } } for (int i = 0; i < cur.Tiles.Count; i++) { if (cur.Tiles[i] is CSComponentCopy && cur.Tiles[i].Text == a[a.Length - 1]) { return(cur.Tiles[i].Position); } } return(new Vector2(-1, -1)); }
public CSComponentCopy TileExists(String t) { var a = t.Split('/'); if (a.Length == 1) { foreach (var c in rootTiles) { if (c is CSComponentCopy && c.Text == t) { return(c as CSComponentCopy); } } return(null); } CSFolder cur = null; foreach (var c in rootTiles) { if (c is CSFolder && c.Text == a[0]) { cur = c as CSFolder; break; } } if (cur == null) { return(null); } bool found = false; for (int i = 1; i < a.Length - 1; i++) { found = false; for (int j = 0; j < cur.Tiles.Count; j++) { if (cur.Tiles[j] is CSFolder && cur.Tiles[j].Text == a[i]) { cur = cur.Tiles[j] as CSFolder; found = true; break; } } if (!found) { return(null); } } for (int i = 0; i < cur.Tiles.Count; i++) { if (cur.Tiles[i] is CSComponentCopy && cur.Tiles[i].Text == a[a.Length - 1]) { return(cur.Tiles[i] as CSComponentCopy); } } return(null); }
public CSTile(CSTile t) { localIndex = t.localIndex; parent = t.parent; texture = t.texture; text = t.text; color = t.color; onTileClicked = t.onTileClicked; }
public CSTile(CSTile t) { localIndex = t.localIndex; parent = t.parent; texture = t.texture; text = t.text; color = t.color; onTileClicked = t.onTileClicked; }
public void RemoveFav() { CSFolder f = GUIEngine.s_componentSelector.GetFavFolder(); if (f == null) { return; } GUIEngine.s_componentSelector.RemoveComponent(f, this); }
public void AddFav() { CSFolder f = GUIEngine.s_componentSelector.GetFavFolder(); if (f == null) { f = GUIEngine.s_componentSelector.AddRootFolder("Favourite"); } GUIEngine.s_componentSelector.AddComponent(f, this); }
public String GetFullPath() { String r = Text; CSFolder cur = parent; while (cur != null) { r = cur.Text + "/" + r; cur = cur.parent; } return(r); }
public void RemoveComponent(CSFolder parent, CSComponent component) { if (parent == null) { for (int i = 0; i < rootTiles.Count; i++) { if (rootTiles[i] is CSComponentCopy && (rootTiles[i] as CSComponentCopy).component == component) { if (rootTiles[i].position == selectedComponent.position) { ResetSelection(); } allTiles.Remove(rootTiles[i]); rootTiles.RemoveAt(i); break; } } for (int i = 0; i < rootTiles.Count; i++) { rootTiles[i].localIndex = i; } } else { for (int i = 0; i < parent.Tiles.Count; i++) { if (parent.Tiles[i] is CSComponentCopy && (parent.Tiles[i] as CSComponentCopy).component == component) { if (parent.Tiles[i].position == selectedComponent.position) { ResetSelection(); } allTiles.Remove(parent.Tiles[i]); parent.Tiles.RemoveAt(i); break; } } for (int i = 0; i < parent.Tiles.Count; i++) { parent.Tiles[i].localIndex = i; } } }
public void AddComponent(CSFolder parent, CSComponent component) { var copy = new CSComponentCopy(component); copy.parent = parent; if (parent == null) { copy.Position = new Vector2(4, 4 + rootTiles.Count * 40); copy.localIndex = rootTiles.Count; copy.isVisible = true; rootTiles.Add(copy); } else { copy.Position = new Vector2(6 + parent.position.X + 40, 4 + parent.Tiles.Count * 40); copy.localIndex = parent.Tiles.Count; copy.isVisible = false; parent.Tiles.Add(copy); } copy.Color = Color.White; allTiles.Add(copy); }
public CSFolder AddRootFolder(String text) { var f = new CSFolder(); f.Text = text; if (folderTextures.ContainsKey(f.Text)) { f.Texture = ResourceManager.Load <Texture2D>(folderTextures[f.Text]); } else { f.Texture = GraphicsEngine.pixel; } f.Position = new Vector2(4, 4 + rootTiles.Count * 40); f.parent = null; f.localIndex = rootTiles.Count; f.isVisible = true; f.Color = Color.White; allTiles.Add(f); rootTiles.Add(f); return(f); }
public Rectangle[] GetClickabilityRectangles() { List <Rectangle> t = new List <Rectangle>(); CSFolder cur = null; for (int i = 0; i < clickable.Count; i++) { if (clickable[i].isVisible) { t.Add(new Rectangle((int)clickable[i].position.X, (int)clickable[i].position.Y, CSTile.SIZE_X + 2, CSTile.SIZE_Y + 2)); } cur = clickable[i].parent; while (cur != null) { if (cur.isVisible) { t.Add(new Rectangle((int)cur.position.X, (int)cur.position.Y, CSTile.SIZE_X + 2, CSTile.SIZE_Y + 2)); } cur = cur.parent; } } return(t.ToArray()); }
public CSFolder GetCreateSubfolder(String name) { for (int i = 0; i < Tiles.Count; i++) { if (Tiles[i] is CSFolder && Tiles[i].Text == name) { return Tiles[i] as CSFolder; } } CSFolder f = new CSFolder(); f.Text = name; if (ComponentSelector.folderTextures.ContainsKey(f.Text)) Texture = ResourceManager.Load<Texture2D>(ComponentSelector.folderTextures[f.Text]); else Texture = GraphicsEngine.pixel; f.position = new Vector2(4 + position.X + 40, position.Y + Tiles.Count * 40); f.parent = null; f.localIndex = Tiles.Count; f.isVisible = true; f.Color = Color.White; GUIEngine.s_componentSelector.allTiles.Add(f); Tiles.Add(f); return f; }
public void RemoveComponent(CSFolder parent, CSComponent component) { if (parent == null) { for (int i = 0; i < rootTiles.Count; i++) { if (rootTiles[i] is CSComponentCopy && (rootTiles[i] as CSComponentCopy).component == component) { if (rootTiles[i].position == selectedComponent.position) ResetSelection(); allTiles.Remove(rootTiles[i]); rootTiles.RemoveAt(i); break; } } for (int i = 0; i < rootTiles.Count; i++) { rootTiles[i].localIndex = i; } } else { for (int i = 0; i < parent.Tiles.Count; i++) { if (parent.Tiles[i] is CSComponentCopy && (parent.Tiles[i] as CSComponentCopy).component == component) { if (parent.Tiles[i].position == selectedComponent.position) ResetSelection(); allTiles.Remove(parent.Tiles[i]); parent.Tiles.RemoveAt(i); break; } } for (int i = 0; i < parent.Tiles.Count; i++) { parent.Tiles[i].localIndex = i; } } }
public bool LoadStructure() { IO.Log.Write(" CS load structure"); rootTiles.Clear(); allTiles.Clear(); if (!Directory.Exists("Saves")) return false; if (!File.Exists("Saves/cs.prf")) return false; IO.Log.Write(" Reading from file..."); BinaryReader br = new BinaryReader(new FileStream("Saves/cs.prf", FileMode.Open)); int t = br.ReadInt32(); IO.Log.Write(" " + t.ToString() + " components in checksum"); if (t != components.Count) { br.Close(); return false; } String s = ""; while (true) { s = br.ReadString(); if (s.StartsWith("0"))//CSC { var a = _getComponent(s.Substring(1)); if (a == null) { br.Close(); return false; } AddComponent(null, a); continue; } if (s.StartsWith("1"))//CSF { CSFolder f = new CSFolder(); f.Text = s.Substring(1); if (ComponentSelector.folderTextures.ContainsKey(f.Text)) f.Texture = ResourceManager.Load<Texture2D>(ComponentSelector.folderTextures[f.Text]); else f.Texture = GraphicsEngine.pixel; f.position = new Vector2(4, 4 + rootTiles.Count * 40); f.parent = null; f.localIndex = rootTiles.Count; f.isVisible = true; f.Color = Color.White; rootTiles.Add(f); allTiles.Add(f); if (!f.LoadStructure(br)) { br.Close(); return false; } continue; } if (s.StartsWith("3"))//file end break; } br.Close(); //scan fav folder IO.Log.Write(" Scanning for favourites"); CSFolder fav = GetFavFolder(); if (fav != null) { for (int i = 0; i < fav.Tiles.Count; i++) { for (int j = 0; j < components.Count; j++) { if (components[j].Text == fav.Tiles[i].Text) { components[j].isFavourite = true; } } } } return true; }
public CSFolder AddRootFolder(String text) { var f = new CSFolder(); f.Text = text; if (folderTextures.ContainsKey(f.Text)) f.Texture = ResourceManager.Load<Texture2D>(folderTextures[f.Text]); else f.Texture = GraphicsEngine.pixel; f.Position = new Vector2(4, 4 + rootTiles.Count * 40); f.parent = null; f.localIndex = rootTiles.Count; f.isVisible = true; f.Color = Color.White; allTiles.Add(f); rootTiles.Add(f); return f; }
public void AddComponent(CSFolder parent, CSComponent component) { var copy = new CSComponentCopy(component); copy.parent = parent; if (parent == null) { copy.Position = new Vector2(4, 4 + rootTiles.Count * 40); copy.localIndex = rootTiles.Count; copy.isVisible = true; rootTiles.Add(copy); } else { copy.Position = new Vector2(6 + parent.position.X + 40, 4 + parent.Tiles.Count * 40); copy.localIndex = parent.Tiles.Count; copy.isVisible = false; parent.Tiles.Add(copy); } copy.Color = Color.White; allTiles.Add(copy); }
public bool LoadStructure() { IO.Log.Write(" CS load structure"); rootTiles.Clear(); allTiles.Clear(); if (!Directory.Exists("Saves")) { return(false); } if (!File.Exists("Saves/cs.prf")) { return(false); } IO.Log.Write(" Reading from file..."); BinaryReader br = new BinaryReader(new FileStream("Saves/cs.prf", FileMode.Open)); int t = br.ReadInt32(); IO.Log.Write(" " + t.ToString() + " components in checksum"); if (t != components.Count) { br.Close(); return(false); } String s = ""; while (true) { s = br.ReadString(); if (s.StartsWith("0"))//CSC { var a = _getComponent(s.Substring(1)); if (a == null) { br.Close(); return(false); } AddComponent(null, a); continue; } if (s.StartsWith("1"))//CSF { CSFolder f = new CSFolder(); f.Text = s.Substring(1); if (ComponentSelector.folderTextures.ContainsKey(f.Text)) { f.Texture = ResourceManager.Load <Texture2D>(ComponentSelector.folderTextures[f.Text]); } else { f.Texture = GraphicsEngine.pixel; } f.position = new Vector2(4, 4 + rootTiles.Count * 40); f.parent = null; f.localIndex = rootTiles.Count; f.isVisible = true; f.Color = Color.White; rootTiles.Add(f); allTiles.Add(f); if (!f.LoadStructure(br)) { br.Close(); return(false); } continue; } if (s.StartsWith("3"))//file end { break; } } br.Close(); //scan fav folder IO.Log.Write(" Scanning for favourites"); CSFolder fav = GetFavFolder(); if (fav != null) { for (int i = 0; i < fav.Tiles.Count; i++) { for (int j = 0; j < components.Count; j++) { if (components[j].Text == fav.Tiles[i].Text) { components[j].isFavourite = true; } } } } return(true); }
public void GenerateStructure() { IO.Log.Write(" CS genereting structure"); if (LoadStructure())//load saved settings. sorts if can't load { return; } allTiles.Clear(); rootTiles.Clear(); String path = ""; for (int i = 0; i < components.Count; i++) { path = components[i].componentGraphics.GetComponentSelectorPath(); if (path == null) { AddComponent(null, components[i]); } else { var ps = path.Split(':'); foreach (var p2 in ps) { String p = p2; if (p.EndsWith("/")) { p = p.Substring(0, p.Length - 1); } if (p.Length == 0) { AddComponent(null, components[i]); } else { var a = p.Split('/'); CSFolder curFolder = null; for (int j = 0; j < rootTiles.Count; j++) { if (rootTiles[j].Text == a[0] && rootTiles[j] is CSFolder) { curFolder = rootTiles[j] as CSFolder; } } if (curFolder == null) { curFolder = AddRootFolder(a[0]); } for (int j = 1; j < a.Length; j++) { curFolder = curFolder.GetCreateSubfolder(a[j]); } AddComponent(curFolder, components[i]); //curFolder.Tiles.Add(components[i]); } } } } AddRootFolder("Favourite"); Sort(); SaveStructure(); }