//void ParseBlocks(string[] bloques_str, List<Block> blocks){ void ParseBlocks(string[] bloques_str, Dictionary <int, Block> blocks) { Dictionary <int, bool> cur = new Dictionary <int, bool> (); foreach (string b in bloques_str) { string[] bdata = b.Split('#'); if (bdata.Length == 0 || bdata[0] == "") { continue; } int id = d2i(bdata[0]); cur[id] = true; if (!blocks.ContainsKey(id)) { //if (!blocks.Contains (x => x.id == id)) { MakeBlock(id, bdata, blocks); } else { //UpdateBlock (id, bdata, blocks.Find (x => x.id == id)); UpdateBlock(id, bdata, blocks[id]); } } Dictionary <int, Block> .KeyCollection k = blocks.Keys; for (int i = k.Count - 1; i >= 0; i--) { //if (!cur.ContainsKey (blocks [i].id)) { if (!cur.ContainsKey(k.ElementAt(i))) { //ClientEvents.OnBlockExit(blocks [i].id); //blocks.RemoveAt (i); ClientEvents.OnBlockExit(k.ElementAt(i)); blocks.Remove(k.ElementAt(i)); } } /*foreach (int i in blocks.Keys) { * if (!cur.ContainsKey (i)) { * ClientEvents.OnBlockExit(i); * blocks.Remove(i); * } * }*/ }