public void releaseHeavySpot(BaseCoreSpot spot) { List<BaseCoreSpot> s = hevNeighbors(spots.IndexOf(spot)); foreach (BaseCoreSpot spo in s) spo.taken = false; spot.taken = false; }
public List<Vector3> coordsToSpot(BaseCoreSpot b, Vector3 currentPos, Vector3 corePos) { List<Vector3> temp = new List<Vector3>(); if(b.rot <= MathHelper.PiOver4*0.5f || b.rot >= MathHelper.PiOver4*7.5f) { if(currentPos.X > pos.X+15) { temp.Add(pos + new Vector3(30, 0, -30)); } else if(currentPos.X < pos.X-15) { temp.Add(pos + new Vector3(-30, 0, -30)); } temp.Add(pos + new Vector3(0, 0, -30)); temp.Add(corePos); } else if (b.rot > MathHelper.PiOver4*0.5f && b.rot <= MathHelper.PiOver4*1.5f) { if (currentPos.X < pos.X) { temp.Add(pos + new Vector3(-30, 0, -30)); } else { temp.Add(pos + new Vector3(30, 0, -30)); temp.Add(pos + new Vector3(0, 0, -30)); temp.Add(pos + new Vector3(-30, 0, -30)); } temp.Add(corePos); } else if (b.rot > MathHelper.PiOver4 * 1.5f && b.rot <= MathHelper.PiOver4 * 2.5f) { if (currentPos.X < pos.X) { temp.Add(pos + new Vector3(-30, 0, -30)); } else { temp.Add(pos + new Vector3(30, 0, -30)); temp.Add(pos + new Vector3(0, 0, -30)); temp.Add(pos + new Vector3(-30, 0, -30)); } temp.Add(pos + new Vector3(-30, 0, 0)); temp.Add(corePos); } else if (b.rot > MathHelper.PiOver4 * 2.5f && b.rot <= MathHelper.PiOver4 * 3.5f) { if (currentPos.X < pos.X) { temp.Add(pos + new Vector3(-30, 0, -30)); } else { temp.Add(pos + new Vector3(30, 0, -30)); temp.Add(pos + new Vector3(0, 0, -30)); temp.Add(pos + new Vector3(-30, 0, -30)); } temp.Add(pos + new Vector3(-30, 0, 0)); temp.Add(pos + new Vector3(-30, 0, 30)); temp.Add(corePos); } else if (b.rot > MathHelper.PiOver4 * 3.5f && b.rot <= MathHelper.PiOver4 * 4.5f) { if (currentPos.X < pos.X) { temp.Add(pos + new Vector3(-30, 0, -30)); temp.Add(pos + new Vector3(-30, 0, 0)); temp.Add(pos + new Vector3(-30, 0, 30)); } else { temp.Add(pos + new Vector3(30, 0, -30)); temp.Add(pos + new Vector3(30, 0, 0)); temp.Add(pos + new Vector3(30, 0, 30)); } temp.Add(pos + new Vector3(0, 0, 30)); temp.Add(corePos); } else if (b.rot > MathHelper.PiOver4 * 4.5f && b.rot <= MathHelper.PiOver4 * 5.5f) { if (currentPos.X < pos.X) { temp.Add(pos + new Vector3(-30, 0, -30)); temp.Add(pos + new Vector3(0, 0, -30)); } else { } temp.Add(pos + new Vector3(30, 0, -30)); temp.Add(pos + new Vector3(30, 0, 0)); temp.Add(pos + new Vector3(30, 0, 30)); temp.Add(corePos); } else if (b.rot > MathHelper.PiOver4 * 5.5f && b.rot <= MathHelper.PiOver4 * 6.5f) { if (currentPos.X < pos.X) { temp.Add(pos + new Vector3(-30, 0, -30)); temp.Add(pos + new Vector3(0, 0, -30)); temp.Add(pos + new Vector3(30, 0, -30)); } else { temp.Add(pos + new Vector3(30, 0, -30)); } temp.Add(pos + new Vector3(30, 0, 0)); temp.Add(corePos); } else//above 4pi*6.5 and less than 4pi*7.5 { if (currentPos.X < pos.X) { temp.Add(pos + new Vector3(-30, 0, -30)); temp.Add(pos + new Vector3(0, 0, -30)); temp.Add(pos + new Vector3(30, 0, -30)); } else { temp.Add(pos + new Vector3(30, 0, -30)); } temp.Add(corePos); } return temp; }
public List<Vector3> coordsToWait(BaseCoreSpot b, Vector3 currentPos, Vector3 corePos) { List<Vector3> temp = new List<Vector3>(); if(corePos.X < pos.X) { if(currentPos.X < pos.X) { temp.Add(pos+new Vector3(-30,0,-35)); } else { if(waitSpots.ElementAt(1).taken) { temp.Add(pos + new Vector3(30, 0, -15)); temp.Add(pos + new Vector3(0, 0, -15)); } else { temp.Add(pos + new Vector3(30, 0, -35)); } } } else { if(currentPos.X > pos.X) { temp.Add(pos + new Vector3(30, 0, -35)); } else { if (waitSpots.ElementAt(0).taken) { temp.Add(pos + new Vector3(-30, 0, -15)); temp.Add(pos + new Vector3(0, 0, -15)); } else { temp.Add(pos + new Vector3(-30, 0, -35)); } } } temp.Add(corePos); return temp; }