Quantcast
Channel: Latest Questions by aymeric
Viewing all articles
Browse latest Browse all 4

Hashtable Bejeweled movement

$
0
0
I have a field with cubes generated from a hash table like bejeweled. When i click a cube, the cube is being removed from the hash table and i remove the object. I want the cubes above the just removed cube to move down. This is the code i have: My code is a bit of a mess because i couldn't remove a key from the hash table in a for each loop. The method remove adds all the id's from the selected cubes to a array list. after that is done the Removegroup function removes the cubes from the hash table. After that the MoveDown function is called. It adds all the cubes without a cube underneath (exept the bottom row) to a array lists and the method remove, moves all that cubes a position down and calls MoveDown again. I think the problem is in the Remove function (renaming the cubes position in the hash table) public Hashtable cubes; public void Remove () { verwijderGroep.Clear (); foreach (string id in cubes.Keys) { GameObject blokje = (GameObject)cubes[id]; if (blokje.GetComponent ().isSelected == true) { verwijderGroep.Add (id); Destroy (blokje); } } RemoveGroup (verwijderGroep); } public void RemoveGroup (IEnumerable verwijder) { foreach (string id in verwijder) { cubes.Remove (id); } } public void Verplaats () { foreach (string id in verwijder) { blokje2 = (GameObject)cubes[id]; Vector3 underCube = new Vector3 (blokje2.transform.position.x, blokje2.transform.position.y - 1, blokje2.transform.position.z); cubes.Remove (id); cubes.Add (underCube.ToString (), blokje2); iTween.MoveTo (blokje2, new Vector3 (blokje2.transform.position.x, blokje2.transform.position.y - 1, 0), 1); } MoveDown (); } public int nogverkeerd = 0; public void MoveDown () { nogverkeerd = 0; verwijder.Clear (); foreach (string id in cubes.Keys) { GameObject blokje = (GameObject)cubes[id]; Vector3 underCube = new Vector3 (blokje.transform.position.x, blokje.transform.position.y - 1, blokje.transform.position.z); if (!cubes.Contains (underCube.ToString ()) && blokje.transform.position.y != 0.0) { verwijder.Add (id); nogverkeerd = 1; //Debug.Log (id); } } if (nogverkeerd == 1) Verplaats (); } Thanks

Viewing all articles
Browse latest Browse all 4

Latest Images

Trending Articles





Latest Images