/// <summary> /// Method to save the Patrol Path using the Patrol ID and the Component /// </summary> /// <param name="pathID"></param> /// <param name="path"></param> /// <param name="component"></param> public static void SavePatrolPath(string pathID, PathPoint path, GameKeepComponent component) { if (path == null) return; pathID.Replace('\'', '/'); // we must replace the ', found no other way yet foreach (DBPath pp in GameServer.Database.SelectObjects<DBPath>("PathID='" + GameServer.Database.Escape(pathID) + "'")) { GameServer.Database.DeleteObject(pp); } PathPoint root = MovementMgr.FindFirstPathPoint(path); //Set the current pathpoint to the rootpoint! path = root; DBPath dbp = new DBPath(pathID, ePathType.Loop); GameServer.Database.AddObject(dbp); int i = 1; do { DBPathPoint dbpp = new DBPathPoint(path.X, path.Y, path.Z, path.MaxSpeed); int x, y; SaveXY(component, dbpp.X, dbpp.Y, out x, out y); dbpp.X = x; dbpp.Y = y; dbpp.Z = dbpp.Z - component.Z; dbpp.Step = i++; dbpp.PathID = pathID; dbpp.WaitTime = path.WaitTime; GameServer.Database.AddObject(dbpp); path = path.Next; } while (path != null && path != root); }
/// <summary> /// Saves the path into the database /// </summary> /// <param name="pathID">The path ID</param> /// <param name="path">The path waypoint</param> public static void SavePath(string pathID, PathPoint path) { if (path == null) return; pathID.Replace('\'', '/'); // First delete any path with this pathID from the database DBPath dbpath = GameServer.Database.SelectObject<DBPath>("PathID='" + GameServer.Database.Escape(pathID) + "'"); if (dbpath != null) { GameServer.Database.DeleteObject(dbpath); } foreach (DBPathPoint pp in GameServer.Database.SelectObjects<DBPathPoint>("PathID='" + GameServer.Database.Escape(pathID) + "'")) { GameServer.Database.DeleteObject(pp); } // Now add this path and iterate through the PathPoint linked list to add all the path points PathPoint root = FindFirstPathPoint(path); //Set the current pathpoint to the rootpoint! path = root; dbpath = new DBPath(pathID, root.Type); GameServer.Database.AddObject(dbpath); int i = 1; do { DBPathPoint dbpp = new DBPathPoint(path.X, path.Y, path.Z, path.MaxSpeed); dbpp.Step = i++; dbpp.PathID = pathID; dbpp.WaitTime = path.WaitTime; GameServer.Database.AddObject(dbpp); path = path.Next; } while (path != null && path != root); UpdatePathInCache(pathID); }