protected void Display_AddEdit() { RegionData rRegion = new RegionData(); if (m_iID > 0) { rRegion = m_refRegion.GetItem(this.m_iID); } Util_BindCountries(); txt_name.Text = rRegion.Name; lbl_id.Text = rRegion.Id.ToString(); chk_enabled.Checked = (countryId > 0) || rRegion.Enabled; txt_code.Text = rRegion.Code; drp_country.SelectedIndex = Util_GetCountryIndex(Convert.ToInt32(rRegion.CountryId)); chk_addanother.Checked = countryId > 0; tr_addanother.Visible = m_iID == 0; tr_id.Visible = m_iID > 0; pnl_view.Visible = true; pnl_viewall.Visible = false; TotalPages.Visible = false; CurrentPage.Visible = false; lnkBtnPreviousPage.Visible = false; NextPage.Visible = false; LastPage.Visible = false; FirstPage.Visible = false; PageLabel.Visible = false; OfLabel.Visible = false; }
public RegionCombinerLargeLandChannel(RegionData regData, ILandChannel rootRegionLandChannel, List<RegionData> regionConnections) { RegData = regData; RootRegionLandChannel = rootRegionLandChannel; RegionConnections = regionConnections; }
public Region(int id) { _creaturesRWLS = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion); _propsRWLS = new ReaderWriterLockSlim(); _itemsRWLS = new ReaderWriterLockSlim(); this.Id = id; _creatures = new Dictionary<long, Creature>(); _props = new Dictionary<long, Prop>(); _items = new Dictionary<long, Item>(); _clients = new HashSet<ChannelClient>(); _regionData = AuraData.RegionInfoDb.Find(this.Id); if (_regionData == null) { Log.Warning("Region: No data found for '{0}'.", this.Id); return; } this.Collissions = new RegionCollision(_regionData.X1, _regionData.Y1, _regionData.X2, _regionData.Y2); this.Collissions.Init(_regionData); this.LoadClientProps(); }
public RegionCombinerLargeLandChannel(RegionData regData, IParcelManagementModule rootRegionLandChannel, List<RegionData> regionConnections) { RegData = regData; RootRegionLandChannel = rootRegionLandChannel; RegionConnections = regionConnections; }
public void AddRegion(RegionData rData, ITerrainChannel thisRegionTerrainChannel) { if (RegData == null) { //Root region RegData = rData; } RegionConnections.Add(rData, thisRegionTerrainChannel); RegData.RegionScene.Heightmap = this; }
public void AddRegion(RegionData rData, ITerrainChannel thisRegionTerrainChannel) { if (RegData == null) { //Root region RegData = rData; } RegionConnections.Add(rData, thisRegionTerrainChannel); RegData.RegionScene.RegisterModuleInterface<ITerrainChannel>(this); }
protected void Button1_Click(object sender, EventArgs e) { RegionData<DateTime> regionSource = new RegionData<DateTime>(new DateTime(2012,12,10),new DateTime(2012,12,20)); RegionData<DateTime> regionTarget1 = new RegionData<DateTime>(new DateTime(2012,12,15),new DateTime(2012,12,18)); this.Literal1.Text = string.Format("时间15-18号,跟目标区间10-20号,有交集:{0}<br/>", RegionHelper.HasOverlap(regionSource, regionTarget1)); RegionData<DateTime> regionTarget2 = new RegionData<DateTime>(new DateTime(2012, 12, 15), new DateTime(2012, 12, 22)); this.Literal1.Text += string.Format("时间15-22号,跟目标区间10-20号,有交集:{0}<br/>", RegionHelper.HasOverlap(regionSource, regionTarget2)); RegionData<DateTime> regionTarget3 = new RegionData<DateTime>(new DateTime(2012, 12, 9), new DateTime(2012, 12, 18)); this.Literal1.Text += string.Format("时间9-18号,跟目标区间10-22号,有交集:{0}<br/>", RegionHelper.HasOverlap(regionSource, regionTarget3)); RegionData<DateTime> regionTarget4 = new RegionData<DateTime>(new DateTime(2012, 12, 9), new DateTime(2012, 12, 22)); this.Literal1.Text += string.Format("时间9-22号,跟目标区间10-22号,有交集:{0}<br/>", RegionHelper.HasOverlap(regionSource, regionTarget4)); RegionData<DateTime> regionTarget5 = new RegionData<DateTime>(new DateTime(2012, 12, 8), new DateTime(2012, 12, 9)); this.Literal1.Text += string.Format("时间8-9号,跟目标区间10-22号,有交集:{0}<br/>", RegionHelper.HasOverlap(regionSource, regionTarget5)); }
public override float getDTime(RegionData d) { return(0.1f); }
/// <summary> /// Loads the regions. /// </summary> /// <returns>The regions.</returns> /// <param name="account">Account who wants the load the regions.</param> /// <param name="regionPositions">Positions of the regions.</param> public RegionData LoadRegions( Core.Models.Account account, Core.Models.RegionPosition[] regionPositions) { // List<@base.model.Region>, List<@base.control.action.Action> var controller = Core.Controllers.Controller.Instance; var regionManagerC = controller.RegionManagerController; var accountC = (Server.Controllers.AccountController)account.Control; var entityDict = new LinkedList<LinkedList<Core.Models.Entity>>(); var actionDict = new LinkedList<LinkedList<Core.Models.Action>>(); var lockedRegions = new LinkedList<Core.Models.Region>(); try { foreach (var regionPosition in regionPositions) { var region = regionManagerC.GetRegion(regionPosition); if (region.Exist) { region.LockReader(); lockedRegions.AddLast(region); } } foreach (var regionPosition in regionPositions) { var region = regionManagerC.GetRegion(regionPosition); if (!region.Exist) { continue; } var status = accountC.GetRegionStatus(regionPosition); var newStatus = new DateTime(); // account has't loaded the region /*if (status == null) { var entities = region.GetEntities(); entityDict.AddFirst(entities.Entities); newStatus = entities.DateTime; } else*/ { // account has already loaded the region - now just load changes (actions) var actions = region.GetCompletedActions(status.Value); actionDict.AddFirst(actions.Actions); newStatus = actions.DateTime; } accountC.RefreshRegion(regionPosition, newStatus); } } finally { foreach (var region in lockedRegions) { region.ReleaseReader(); } } var regionData = new RegionData(); regionData.ActionDict = actionDict; regionData.EntityDict = entityDict; return regionData; }
public TaskDungeonInstance(ushort ID, GameTimer.TimeManager time, RegionData dat) : base(ID, time, dat) { }
public bool Store(RegionData data) { if (m_useStaticInstance && Instance != this) return Instance.Store(data); // m_log.DebugFormat( // "[NULL REGION DATA]: Storing region {0} {1}, scope {2}", data.RegionName, data.RegionID, data.ScopeID); m_regionData[data.RegionID] = data; return true; }
public List <RegionData> RunCommand(MySqlCommand cmd) { List <RegionData> retList = new List <RegionData>(); using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) { dbcon.Open(); cmd.Connection = dbcon; using (IDataReader result = cmd.ExecuteReader()) { while (result.Read()) { RegionData ret = new RegionData(); ret.Data = new Dictionary <string, object>(); ret.RegionID = DBGuid.FromDB(result["uuid"]); ret.ScopeID = DBGuid.FromDB(result["ScopeID"]); ret.RegionName = result["regionName"].ToString(); ret.posX = Convert.ToInt32(result["locX"]); ret.posY = Convert.ToInt32(result["locY"]); ret.sizeX = Convert.ToInt32(result["sizeX"]); ret.sizeY = Convert.ToInt32(result["sizeY"]); if (m_ColumnNames == null) { m_ColumnNames = new List <string>(); DataTable schemaTable = result.GetSchemaTable(); foreach (DataRow row in schemaTable.Rows) { if (row["ColumnName"] != null) { m_ColumnNames.Add(row["ColumnName"].ToString()); } } } foreach (string s in m_ColumnNames) { if (s == "uuid") { continue; } if (s == "ScopeID") { continue; } if (s == "regionName") { continue; } if (s == "locX") { continue; } if (s == "locY") { continue; } ret.Data[s] = result[s].ToString(); } retList.Add(ret); } } } return(retList); }
protected void Process_AddEdit() { RegionData rRegion = null; if (this.m_iID > 0) { rRegion = m_refRegion.GetItem(this.m_iID); rRegion.Name = (string)txt_name.Text; rRegion.CountryId = Convert.ToInt64(drp_country.SelectedValue); rRegion.Code = (string)txt_code.Text; rRegion.Enabled = System.Convert.ToBoolean(chk_enabled.Checked); m_refRegion.Update(rRegion); Response.Redirect(m_sPageName + "?action=view&id=" + m_iID.ToString(), false); } else { rRegion = new RegionData(txt_name.Text, Convert.ToInt64(drp_country.SelectedValue), txt_code.Text, chk_enabled.Checked); m_refRegion.Add(rRegion); if (chk_addanother.Checked) { Response.Redirect(m_sPageName + "?action=addedit&country=" + drp_country.SelectedValue, false); } else { Response.Redirect(m_sPageName, false); } } TotalPages.Visible = false; CurrentPage.Visible = false; lnkBtnPreviousPage.Visible = false; NextPage.Visible = false; LastPage.Visible = false; FirstPage.Visible = false; PageLabel.Visible = false; OfLabel.Visible = false; }
public override double buffSwitch(RegionData a) { return(a.earthquakeBuff); }
protected void Process_ViewAddress() { AddressData aAddress = null; long originalAddressId = this.m_iID; //need to get customer before address update to see if default addresses have changed. cCustomer = CustomerManager.GetItem(m_iCustomerId); aAddress = this.m_iID > 0 ? (AddressManager.GetItem(this.m_iID)) : (new AddressData()); aAddress.Name = (string)txt_address_name.Text; aAddress.Company = (string)txt_address_company.Text; aAddress.AddressLine1 = (string)txt_address_line1.Text; aAddress.AddressLine2 = (string)txt_address_line2.Text; aAddress.City = (string)txt_address_city.Text; RegionData rData = new RegionData(); rData.Id = Convert.ToInt64(drp_address_region.SelectedValue); aAddress.Region = rData; aAddress.PostalCode = (string)txt_address_postal.Text; CountryData cData = new CountryData(); cData.Id = System.Convert.ToInt32(drp_address_country.SelectedValue); aAddress.Country = cData; aAddress.Phone = (string)txt_address_phone.Text; if (this.m_iID > 0) { AddressManager.Update(aAddress); } else { AddressManager.Add(aAddress, m_iCustomerId); } this.m_iID = aAddress.Id; bool updateBilling = false; bool updateShipping = false; if (chk_default_billing.Checked) { cCustomer.BillingAddressId = aAddress.Id; updateBilling = true; } if (chk_default_shipping.Checked) { cCustomer.ShippingAddressId = aAddress.Id; updateShipping = true; } //if the default addresses have been unchecked - need to reset them to 0. if (!chk_default_billing.Checked && cCustomer.BillingAddressId == originalAddressId) { cCustomer.BillingAddressId = 0; updateBilling = true; } if (!chk_default_shipping.Checked && cCustomer.ShippingAddressId == originalAddressId) { cCustomer.ShippingAddressId = 0; updateShipping = true; } if (updateBilling) { CustomerManager.ChangeBillingAddress(m_iCustomerId, cCustomer.BillingAddressId); } if (updateShipping) { CustomerManager.ChangeShippingAddress(m_iCustomerId, cCustomer.ShippingAddressId); } string pagemode = (string)("&page=" + Request.QueryString["page"]); Response.Redirect(this.m_sPageName + "?action=viewaddress&id=" + this.m_iID.ToString() + "&customerid=" + this.m_iCustomerId.ToString() + pagemode, false); }
public abstract void refreshLevel(RegionData data);
public void ObjectsShouldMergeProperties() { RegionData rdMerged = rd1WithCorruptionData.merge(rd1WithPopulationData); Assert.AreEqual(rd1WithCorruptionAndPopulationData, rdMerged); }
/// <summary> /// 初始化区域管理器 /// </summary> /// <param name="slotContainerList">插槽容器链表</param> /// <param name="connectorContainerList">连接线链表</param> /// <param name="canvasSize">绘图板的大小</param> public void Init(List<SlotContainer> slotContainerList, List<ConnectorContainer> connectorContainerList, Size canvasSize, int gridWidth) { regionDataList.Clear(); for (int i = 0; i < canvasSize.Width; i += 600) { for (int j = 0; j < canvasSize.Height; j += 600) { Rectangle regionRectangle = Rectangle.Empty; regionRectangle.Location = new Point(i, j); int regionWidth = 600; int regionHeight = 600; if (i + 600 > canvasSize.Width) { regionWidth = canvasSize.Width - i; } if (j + 600 > canvasSize.Height) { regionHeight = canvasSize.Height - j; } regionRectangle.Size = new Size(regionWidth, regionHeight); RegionData regionData = new RegionData(regionRectangle); regionDataList.Add(regionData); } } foreach (SlotContainer slotContainer in slotContainerList) { foreach (RegionData regionData in regionDataList) { if (regionData.IsInRegion(slotContainer.InvalidRectangle)) { regionData.Add(slotContainer); } } } foreach (ConnectorContainer line in connectorContainerList) { foreach (RegionData regionData in regionDataList) { if (regionData.IsInRegion(line.InvalidRectangle)) { regionData.Add(line); } } } InitCanvasGridBoard(slotContainerList, canvasSize, gridWidth); backupRegionData = new RegionData(Rectangle.Empty); }
// String describing name and region location of passed region private String RegionString(RegionData reg) { return(String.Format("{0}/{1} at <{2},{3}>", reg.RegionName, reg.RegionID, reg.coordX, reg.coordY)); }
public string RegisterRegion(UUID scopeID, GridRegion regionInfos) { IConfig gridConfig = m_config.Configs["GridService"]; if (regionInfos.RegionID == UUID.Zero) { return("Invalid RegionID - cannot be zero UUID"); } if (regionInfos.RegionLocY <= Constants.MaximumRegionSize) { return("Region location reserved for HG links coord Y must be higher than " + (Constants.MaximumRegionSize / 256).ToString()); } String reason = "Region overlaps another region"; List <RegionData> rdatas = m_Database.Get( regionInfos.RegionLocX, regionInfos.RegionLocY, regionInfos.RegionLocX + regionInfos.RegionSizeX - 1, regionInfos.RegionLocY + regionInfos.RegionSizeY - 1, scopeID); RegionData region = null; if (rdatas.Count > 1) { m_log.WarnFormat("{0} Register region overlaps with {1} regions", LogHeader, scopeID, rdatas.Count); return(reason); } else if (rdatas.Count == 1) { region = rdatas[0]; } if ((region != null) && (region.RegionID != regionInfos.RegionID)) { // If not same ID and same coordinates, this new region has conflicts and can't be registered. m_log.WarnFormat("{0} Register region conflict in scope {1}. {2}", LogHeader, scopeID, reason); return(reason); } if (region != null) { // There is a preexisting record // // Get it's flags // OpenSim.Framework.RegionFlags rflags = (OpenSim.Framework.RegionFlags)Convert.ToInt32(region.Data["flags"]); // Is this a reservation? // if ((rflags & OpenSim.Framework.RegionFlags.Reservation) != 0) { // Regions reserved for the null key cannot be taken. if ((string)region.Data["PrincipalID"] == UUID.Zero.ToString()) { return("Region location is reserved"); } // Treat it as an auth request // // NOTE: Fudging the flags value here, so these flags // should not be used elsewhere. Don't optimize // this with the later retrieval of the same flags! rflags |= OpenSim.Framework.RegionFlags.Authenticate; } if ((rflags & OpenSim.Framework.RegionFlags.Authenticate) != 0) { // Can we authenticate at all? // if (m_AuthenticationService == null) { return("No authentication possible"); } if (!m_AuthenticationService.Verify(new UUID(region.Data["PrincipalID"].ToString()), regionInfos.Token, 30)) { return("Bad authentication"); } } } // If we get here, the destination is clear. Now for the real check. if (!m_AllowDuplicateNames) { List <RegionData> dupe = m_Database.Get(Util.EscapeForLike(regionInfos.RegionName), scopeID); if (dupe != null && dupe.Count > 0) { foreach (RegionData d in dupe) { if (d.RegionID != regionInfos.RegionID) { m_log.WarnFormat("[GRID SERVICE]: Region tried to register using a duplicate name. New region: {0} ({1}), existing region: {2} ({3}).", regionInfos.RegionName, regionInfos.RegionID, d.RegionName, d.RegionID); return("Duplicate region name"); } } } } // If there is an old record for us, delete it if it is elsewhere. region = m_Database.Get(regionInfos.RegionID, scopeID); if ((region != null) && (region.RegionID == regionInfos.RegionID) && ((region.posX != regionInfos.RegionLocX) || (region.posY != regionInfos.RegionLocY))) { if ((Convert.ToInt32(region.Data["flags"]) & (int)OpenSim.Framework.RegionFlags.NoMove) != 0) { return("Can't move this region"); } if ((Convert.ToInt32(region.Data["flags"]) & (int)OpenSim.Framework.RegionFlags.LockedOut) != 0) { return("Region locked out"); } // Region reregistering in other coordinates. Delete the old entry m_log.DebugFormat("[GRID SERVICE]: Region {0} ({1}) was previously registered at {2}-{3}. Deleting old entry.", regionInfos.RegionName, regionInfos.RegionID, regionInfos.RegionCoordX, regionInfos.RegionCoordY); try { m_Database.Delete(regionInfos.RegionID); } catch (Exception e) { m_log.DebugFormat("[GRID SERVICE]: Database exception: {0}", e); } } // Everything is ok, let's register RegionData rdata = RegionInfo2RegionData(regionInfos); rdata.ScopeID = scopeID; if (region != null) { int oldFlags = Convert.ToInt32(region.Data["flags"]); oldFlags &= ~(int)OpenSim.Framework.RegionFlags.Reservation; rdata.Data["flags"] = oldFlags.ToString(); // Preserve flags } else { rdata.Data["flags"] = "0"; if ((gridConfig != null) && rdata.RegionName != string.Empty) { int newFlags = 0; string regionName = rdata.RegionName.Trim().Replace(' ', '_'); newFlags = ParseFlags(newFlags, gridConfig.GetString("DefaultRegionFlags", String.Empty)); newFlags = ParseFlags(newFlags, gridConfig.GetString("Region_" + regionName, String.Empty)); newFlags = ParseFlags(newFlags, gridConfig.GetString("Region_" + rdata.RegionID.ToString(), String.Empty)); rdata.Data["flags"] = newFlags.ToString(); } } int flags = Convert.ToInt32(rdata.Data["flags"]); flags |= (int)OpenSim.Framework.RegionFlags.RegionOnline; rdata.Data["flags"] = flags.ToString(); try { rdata.Data["last_seen"] = Util.UnixTimeSinceEpoch(); m_Database.Store(rdata); } catch (Exception e) { m_log.DebugFormat("[GRID SERVICE]: Database exception: {0}", e); } m_log.DebugFormat ("[GRID SERVICE]: Region {0} ({1}, {2}x{3}) registered at {4},{5} with flags {6}", regionInfos.RegionName, regionInfos.RegionID, regionInfos.RegionSizeX, regionInfos.RegionSizeY, regionInfos.RegionCoordX, regionInfos.RegionCoordY, (OpenSim.Framework.RegionFlags)flags); return(String.Empty); }
public bool Store(RegionData data) { if (data.Data.ContainsKey("uuid")) { data.Data.Remove("uuid"); } if (data.Data.ContainsKey("ScopeID")) { data.Data.Remove("ScopeID"); } if (data.Data.ContainsKey("regionName")) { data.Data.Remove("regionName"); } if (data.Data.ContainsKey("posX")) { data.Data.Remove("posX"); } if (data.Data.ContainsKey("posY")) { data.Data.Remove("posY"); } if (data.Data.ContainsKey("sizeX")) { data.Data.Remove("sizeX"); } if (data.Data.ContainsKey("sizeY")) { data.Data.Remove("sizeY"); } if (data.Data.ContainsKey("locX")) { data.Data.Remove("locX"); } if (data.Data.ContainsKey("locY")) { data.Data.Remove("locY"); } if (data.RegionName.Length > 32) { data.RegionName = data.RegionName.Substring(0, 32); } string[] fields = new List <string>(data.Data.Keys).ToArray(); using (MySqlCommand cmd = new MySqlCommand()) { string update = "update `" + m_Realm + "` set locX=?posX, locY=?posY, sizeX=?sizeX, sizeY=?sizeY"; foreach (string field in fields) { update += ", "; update += "`" + field + "` = ?" + field; cmd.Parameters.AddWithValue("?" + field, data.Data[field]); } update += " where uuid = ?regionID"; if (data.ScopeID != UUID.Zero) { update += " and ScopeID = ?scopeID"; } cmd.CommandText = update; cmd.Parameters.AddWithValue("?regionID", data.RegionID.ToString()); cmd.Parameters.AddWithValue("?regionName", data.RegionName); cmd.Parameters.AddWithValue("?scopeID", data.ScopeID.ToString()); cmd.Parameters.AddWithValue("?posX", data.posX.ToString()); cmd.Parameters.AddWithValue("?posY", data.posY.ToString()); cmd.Parameters.AddWithValue("?sizeX", data.sizeX.ToString()); cmd.Parameters.AddWithValue("?sizeY", data.sizeY.ToString()); if (ExecuteNonQuery(cmd) < 1) { string insert = "insert into `" + m_Realm + "` (`uuid`, `ScopeID`, `locX`, `locY`, `sizeX`, `sizeY`, `regionName`, `" + String.Join("`, `", fields) + "`) values ( ?regionID, ?scopeID, ?posX, ?posY, ?sizeX, ?sizeY, ?regionName, ?" + String.Join(", ?", fields) + ")"; cmd.CommandText = insert; if (ExecuteNonQuery(cmd) < 1) { return(false); } } } return(true); }
protected void Display_AddEdit() { int page_data = _CurrentPageNumber; Ektron.Cms.Common.Criteria<TaxClassProperty> TaxClasscriteria = new Ektron.Cms.Common.Criteria<TaxClassProperty>(TaxClassProperty.Name, Ektron.Cms.Common.EkEnumeration.OrderByDirection.Ascending); System.Collections.Generic.List<TaxClassData> TaxClassList = new System.Collections.Generic.List<TaxClassData>(); Ektron.Cms.Common.Criteria<TaxRateProperty> postalCriteria = new Ektron.Cms.Common.Criteria<TaxRateProperty>(TaxRateProperty.PostalCode, EkEnumeration.OrderByDirection.Ascending); string postalCode = "0"; long id = 0; TaxApi taxApi = new TaxApi(); RegionData rRegion = new RegionData(); Ektron.Cms.Common.Criteria<RegionProperty> criteria = new Ektron.Cms.Common.Criteria<RegionProperty>(RegionProperty.Name, Ektron.Cms.Common.EkEnumeration.OrderByDirection.Ascending); int cCountryId = 0; int txtClassList = 0; Util_BindCountries(); if (Request.QueryString["postalid"] != "") { postalCode = Request.QueryString["postalid"]; } if (Request.QueryString["id"] != "") { id = Convert.ToInt64(Request.QueryString["id"]); } postalCriteria.PagingInfo.CurrentPage = page_data; postalCriteria.AddFilter(TaxRateProperty.TaxTypeId, CriteriaFilterOperator.EqualTo, TaxRateType.PostalSalesTax); List<TaxRateData> postalRateList; postalRateList = taxApi.GetList(postalCriteria); TaxClassList = _TaxClassApi.GetList(TaxClasscriteria); txt_name.Text = postalCode; if (txt_name.Text == "0" || 0 == txt_name.Text.Length) { txt_name.Enabled = true; } else { txt_name.Enabled = false; } lbl_id.Text = id.ToString(); _RegionList = _RegionApi.GetList(criteria); cCountryId = System.Convert.ToInt32(drp_country.SelectedValue); Util_BindRegions(cCountryId); ltr_txtClass.Text = "<table class=\"ektronGrid\">"; for (txtClassList = 0; txtClassList <= TaxClassList.Count - 1; txtClassList++) { PostalCodeTaxRateData postalRegion = new PostalCodeTaxRateData(); postalRegion = (PostalCodeTaxRateData)taxApi.GetItemByPostalId(TaxClassList[txtClassList].Id, id); if (postalRegion != null) { criteria.AddFilter(RegionProperty.Id, CriteriaFilterOperator.EqualTo, postalRegion.RegionId); _RegionList = _RegionApi.GetList(criteria); drp_region.SelectedValue = _RegionList[0].Id.ToString(); cCountryId = System.Convert.ToInt32(_RegionList[0].CountryId); drp_country.SelectedValue = cCountryId.ToString(); Util_BindRegions(cCountryId); } ltr_txtClass.Text += "<tr>"; ltr_txtClass.Text += " <td class=\"label\">" + TaxClassList[txtClassList].Name + "</td>"; if (taxApi.GetItemByPostalId(TaxClassList[txtClassList].Id, id) == null) { ltr_txtClass.Text += " <td class=\"value\">"; ltr_txtClass.Text += " <input type=\"text\" name=\"txtClassRate" + txtClassList + "\" id=\"txtClassRate" + txtClassList + "\" value=\"0\" />%"; ltr_txtClass.Text += " </td>"; } else { ltr_txtClass.Text += " <td class=\"value\">"; ltr_txtClass.Text += " <input type=\"text\" name=\"txtClassRate" + txtClassList + "\" id=\"txtClassRate" + txtClassList + "\" value=\"" + taxApi.GetItemByPostalId(TaxClassList[txtClassList].Id, id).Rate * 100 + "\"/>%"; ltr_txtClass.Text += " </td>"; } ltr_txtClass.Text += "</tr>"; } ltr_txtClass.Text += "</table>"; tr_id.Visible = m_iID > 0; pnl_view.Visible = true; pnl_viewall.Visible = false; if (this.m_iID > 0) { drp_country.Enabled = false; drp_region.Enabled = false; } TotalPages.Visible = false; CurrentPage.Visible = false; lnkBtnPreviousPage.Visible = false; NextPage.Visible = false; LastPage.Visible = false; FirstPage.Visible = false; PageLabel.Visible = false; OfLabel.Visible = false; }
public bool Store(RegionData data) { if (data.Data.ContainsKey("uuid")) data.Data.Remove("uuid"); if (data.Data.ContainsKey("ScopeID")) data.Data.Remove("ScopeID"); if (data.Data.ContainsKey("regionName")) data.Data.Remove("regionName"); if (data.Data.ContainsKey("posX")) data.Data.Remove("posX"); if (data.Data.ContainsKey("posY")) data.Data.Remove("posY"); if (data.Data.ContainsKey("sizeX")) data.Data.Remove("sizeX"); if (data.Data.ContainsKey("sizeY")) data.Data.Remove("sizeY"); if (data.Data.ContainsKey("locX")) data.Data.Remove("locX"); if (data.Data.ContainsKey("locY")) data.Data.Remove("locY"); string[] fields = new List<string>(data.Data.Keys).ToArray(); using (SqliteCommand cmd = new SqliteCommand()) { string update = "update '" + m_Realm + "' set locX=:posX, locY=:posY, sizeX=:sizeX, sizeY=:sizeY"; foreach (string field in fields) { update += ", "; update += "`" + field + "` = :" + field; cmd.Parameters.AddWithValue(":" + field, data.Data[field]); } update += " where uuid = :regionID"; if (data.ScopeID != UUID.Zero) update += " and ScopeID = :scopeID"; cmd.CommandText = update; cmd.Parameters.AddWithValue(":regionID", data.RegionID.ToString()); cmd.Parameters.AddWithValue(":regionName", data.RegionName); cmd.Parameters.AddWithValue(":scopeID", data.ScopeID.ToString()); cmd.Parameters.AddWithValue(":posX", data.posX.ToString()); cmd.Parameters.AddWithValue(":posY", data.posY.ToString()); cmd.Parameters.AddWithValue(":sizeX", data.sizeX.ToString()); cmd.Parameters.AddWithValue(":sizeY", data.sizeY.ToString()); if (ExecuteNonQuery(cmd) < 1) { string insert = "insert into '" + m_Realm + "' ('uuid', 'ScopeID', 'locX', 'locY', 'sizeX', 'sizeY', 'regionName', '" + String.Join("', '", fields) + "') values ( :regionID, :scopeID, :posX, :posY, :sizeX, :sizeY, :regionName, :" + String.Join(", :", fields) + ")"; cmd.CommandText = insert; if (ExecuteNonQuery(cmd) < 1) { return false; } } } return true; }
public override float getDTime(RegionData d) { return(1.5f + (2.5f + riotLevel * 8) * UnityEngine.Random.Range(0f, 1f)); }
public List<RegionData> RunCommand(MySqlCommand cmd) { List<RegionData> retList = new List<RegionData>(); IDataReader result = ExecuteReader(cmd); while (result.Read()) { RegionData ret = new RegionData(); ret.Data = new Dictionary<string, object>(); UUID regionID; UUID.TryParse(result["uuid"].ToString(), out regionID); ret.RegionID = regionID; UUID scope; UUID.TryParse(result["ScopeID"].ToString(), out scope); ret.ScopeID = scope; ret.RegionName = result["regionName"].ToString(); ret.posX = Convert.ToInt32(result["locX"]); ret.posY = Convert.ToInt32(result["locY"]); ret.sizeX = Convert.ToInt32(result["sizeX"]); ret.sizeY = Convert.ToInt32(result["sizeY"]); if (m_ColumnNames == null) { m_ColumnNames = new List<string>(); DataTable schemaTable = result.GetSchemaTable(); foreach (DataRow row in schemaTable.Rows) { if (row["ColumnName"] != null) m_ColumnNames.Add(row["ColumnName"].ToString()); } } foreach (string s in m_ColumnNames) { if (s == "uuid") continue; if (s == "ScopeID") continue; if (s == "regionName") continue; if (s == "locX") continue; if (s == "locY") continue; ret.Data[s] = result[s].ToString(); } retList.Add(ret); } result.Close(); CloseReaderCommand(cmd); return retList; }
/// <summary> /// Search the region map for regions conflicting with this region. /// The region to be added is passed and we look for any existing regions that are /// in the requested location, that are large varregions that overlap this region, or /// are previously defined regions that would lie under this new region. /// </summary> /// <param name="regionInfos">Information on region requested to be added to the world map</param> /// <param name="scopeID">Grid id for region</param> /// <param name="reason">The reason the returned region conflicts with passed region</param> /// <returns></returns> private RegionData FindAnyConflictingRegion(GridRegion regionInfos, UUID scopeID, out string reason) { reason = "Reregistration"; // First see if there is an existing region right where this region is trying to go // (We keep this result so it can be returned if suppressing errors) RegionData noErrorRegion = m_Database.Get(regionInfos.RegionLocX, regionInfos.RegionLocY, scopeID); RegionData region = noErrorRegion; if (region != null && region.RegionID == regionInfos.RegionID && region.sizeX == regionInfos.RegionSizeX && region.sizeY == regionInfos.RegionSizeY) { // If this seems to be exactly the same region, return this as it could be // a re-registration (permissions checked by calling routine). m_log.DebugFormat("{0} FindAnyConflictingRegion: re-register of {1}", LogHeader, RegionString(regionInfos)); return(region); } // No region exactly there or we're resizing an existing region. // Fetch regions that could be varregions overlapping requested location. int xmin = regionInfos.RegionLocX - (int)Constants.MaximumRegionSize + 10; int xmax = regionInfos.RegionLocX; int ymin = regionInfos.RegionLocY - (int)Constants.MaximumRegionSize + 10; int ymax = regionInfos.RegionLocY; List <RegionData> rdatas = m_Database.Get(xmin, ymin, xmax, ymax, scopeID); foreach (RegionData rdata in rdatas) { // m_log.DebugFormat("{0} FindAnyConflictingRegion: find existing. Checking {1}", LogHeader, RegionString(rdata) ); if ((rdata.posX + rdata.sizeX > regionInfos.RegionLocX) && (rdata.posY + rdata.sizeY > regionInfos.RegionLocY)) { region = rdata; m_log.WarnFormat("{0} FindAnyConflictingRegion: conflict of {1} by existing varregion {2}", LogHeader, RegionString(regionInfos), RegionString(region)); reason = String.Format("Region location is overlapped by existing varregion {0}", RegionString(region)); return(region); } } // There isn't a region that overlaps this potential region. // See if this potential region overlaps an existing region. // First, a shortcut of not looking for overlap if new region is legacy region sized // and connot overlap anything. if (regionInfos.RegionSizeX != Constants.RegionSize || regionInfos.RegionSizeY != Constants.RegionSize) { // trim range looked for so we don't pick up neighbor regions just off the edges xmin = regionInfos.RegionLocX; xmax = regionInfos.RegionLocX + regionInfos.RegionSizeX - 10; ymin = regionInfos.RegionLocY; ymax = regionInfos.RegionLocY + regionInfos.RegionSizeY - 10; rdatas = m_Database.Get(xmin, ymin, xmax, ymax, scopeID); // If the region is being resized, the found region could be ourself. foreach (RegionData rdata in rdatas) { // m_log.DebugFormat("{0} FindAnyConflictingRegion: see if overlap. Checking {1}", LogHeader, RegionString(rdata) ); if (region == null || region.RegionID != regionInfos.RegionID) { region = rdata; m_log.WarnFormat("{0} FindAnyConflictingRegion: conflict of varregion {1} overlaps existing region {2}", LogHeader, RegionString(regionInfos), RegionString(region)); reason = String.Format("Region {0} would overlap existing region {1}", RegionString(regionInfos), RegionString(region)); return(region); } } } // If we get here, region is either null (nothing found here) or // is the non-conflicting region found at the location being requested. return(region); }
/// <summary> /// Creates the data for the specified row. /// </summary> /// <param name="Row">The row.</param> internal Data Create(Row Row) { Data Data; switch (this.Index) { case 0: { Data = new BuildingData(Row, this); break; } case 1: { Data = new LocaleData(Row, this); break; } case 2: { Data = new ResourceData(Row, this); break; } case 3: { Data = new CharacterData(Row, this); break; } case 6: { Data = new BuildingClassData(Row, this); break; } case 7: { Data = new ObstacleData(Row, this); break; } case 8: { Data = new EffectData(Row, this); break; } case 9: { Data = new ParticleEmitterData(Row, this); break; } case 10: { Data = new ExperienceLevelData(Row, this); break; } case 11: { Data = new TrapData(Row, this); break; } case 12: { Data = new AllianceBadgeData(Row, this); break; } case 13: { Data = new GlobalData(Row, this); break; } case 14: { Data = new TownhallLevelData(Row, this); break; } case 15: { Data = new PrototypeData(Row, this); break; } case 16: { Data = new NpcData(Row, this); break; } case 17: { Data = new DecoData(Row, this); break; } case 18: { Data = new ResourcePackData(Row, this); break; } case 20: { Data = new MissionData(Row, this); break; } case 21: { Data = new BillingPackageData(Row, this); break; } case 22: { Data = new AchievementData(Row, this); break; } case 25: { Data = new SpellData(Row, this); break; } case 26: { Data = new HintData(Row, this); break; } case 27: { Data = new LandingShipData(Row, this); break; } case 28: { Data = new ArtifactData(Row, this); break; } case 29: { Data = new ArtifactBonusData(Row, this); break; } case 30: { Data = new DeepseaParameterData(Row, this); break; } case 31: { Data = new ExplorationCostData(Row, this); break; } case 34: { Data = new ResourceShipData(Row, this); break; } case 35: { Data = new LootBoxData(Row, this); break; } case 36: { Data = new LiberatedIncomeData(Row, this); break; } case 37: { Data = new RegionData(Row, this); break; } case 38: { Data = new DefenseRewardData(Row, this); break; } case 39: { Data = new LocatorData(Row, this); break; } case 40: { Data = new EventData(Row, this); break; } case 41: { Data = new FootstepData(Row, this); break; } case 42: { Data = new PersistentEventRewardData(Row, this); break; } case 43: { Data = new CommunityLinkData(Row, this); break; } case 44: { Data = new ShieldData(Row, this); break; } case 45: { Data = new AbTestData(Row, this); break; } case 46: { Data = new LetterData(Row, this); break; } case 47: { Data = new RankData(Row, this); break; } case 48: { Data = new CountryData(Row, this); break; } case 51: { Data = new BoomboxData(Row, this); break; } case 52: { Data = new HeroData(Row, this); break; } case 53: { Data = new HeroAbilityData(Row, this); break; } case 54: { Data = new OfferData(Row, this); break; } case 55: { Data = new DeepLinkData(Row, this); break; } case 56: { Data = new SectorData(Row, this); break; } case 57: { Data = new SectorBonusData(Row, this); break; } default: { Data = new Data(Row, this); break; } } return(Data); }
public bool Store(RegionData data) { if (data.Data.ContainsKey("uuid")) data.Data.Remove("uuid"); if (data.Data.ContainsKey("ScopeID")) data.Data.Remove("ScopeID"); if (data.Data.ContainsKey("regionName")) data.Data.Remove("regionName"); if (data.Data.ContainsKey("posX")) data.Data.Remove("posX"); if (data.Data.ContainsKey("posY")) data.Data.Remove("posY"); if (data.Data.ContainsKey("sizeX")) data.Data.Remove("sizeX"); if (data.Data.ContainsKey("sizeY")) data.Data.Remove("sizeY"); if (data.Data.ContainsKey("locX")) data.Data.Remove("locX"); if (data.Data.ContainsKey("locY")) data.Data.Remove("locY"); string[] fields = new List<string>(data.Data.Keys).ToArray(); using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) using (NpgsqlCommand cmd = new NpgsqlCommand()) { string update = "update " + m_Realm + " set \"locX\"=:posX, \"locY\"=:posY, \"sizeX\"=:sizeX, \"sizeY\"=:sizeY "; foreach (string field in fields) { update += ", "; update += " \"" + field + "\" = :" + field; if (m_FieldTypes.ContainsKey(field)) cmd.Parameters.Add(m_database.CreateParameter(field, data.Data[field], m_FieldTypes[field])); else cmd.Parameters.Add(m_database.CreateParameter(field, data.Data[field])); } update += " where uuid = :regionID"; if (data.ScopeID != UUID.Zero) update += " and \"ScopeID\" = :scopeID"; cmd.CommandText = update; cmd.Connection = conn; cmd.Parameters.Add(m_database.CreateParameter("regionID", data.RegionID)); cmd.Parameters.Add(m_database.CreateParameter("regionName", data.RegionName)); cmd.Parameters.Add(m_database.CreateParameter("scopeID", data.ScopeID)); cmd.Parameters.Add(m_database.CreateParameter("posX", data.posX)); cmd.Parameters.Add(m_database.CreateParameter("posY", data.posY)); cmd.Parameters.Add(m_database.CreateParameter("sizeX", data.sizeX)); cmd.Parameters.Add(m_database.CreateParameter("sizeY", data.sizeY)); conn.Open(); try { if (cmd.ExecuteNonQuery() < 1) { string insert = "insert into " + m_Realm + " (uuid, \"ScopeID\", \"locX\", \"locY\", \"sizeX\", \"sizeY\", \"regionName\", \"" + String.Join("\", \"", fields) + "\") values (:regionID, :scopeID, :posX, :posY, :sizeX, :sizeY, :regionName, :" + String.Join(", :", fields) + ")"; cmd.CommandText = insert; try { if (cmd.ExecuteNonQuery() < 1) { return false; } } catch (Exception ex) { m_log.Warn("[PGSQL Grid]: Error inserting into Regions table: " + ex.Message + ", INSERT sql: " + insert); } } } catch (Exception ex) { m_log.Warn("[PGSQL Grid]: Error updating Regions table: " + ex.Message + ", UPDATE sql: " + update); } } return true; }
protected void Process_AddEdit() { WarehouseData wareHouse = null; m_refWarehouse = new WarehouseApi(); if (this.m_iID > 0) { wareHouse = m_refWarehouse.GetItem(this.m_iID); } RegionData rData; rData = new RegionData(); rData = m_refRegion.GetItem(Convert.ToInt64(drp_address_region.SelectedValue)); CountryData cData; cData = new CountryData(); cData = m_refCountry.GetItem(System.Convert.ToInt32(drp_address_country.SelectedValue)); if (this.m_iID == 0) { wareHouse = new WarehouseData(txt_address_name.Text, new AddressData()); } wareHouse.Name = (string)txt_address_name.Text; if (this.m_iID > 0) { wareHouse.Id = Convert.ToInt64(lbl_address_id.Text); } wareHouse.Address.AddressLine1 = (string)txt_address_line1.Text; wareHouse.Address.AddressLine2 = (string)txt_address_line2.Text; wareHouse.Address.City = (string)txt_address_city.Text; if (wareHouse.Address.Region == null) { wareHouse.Address.Region = new RegionData(); } wareHouse.Address.Region.Id = Convert.ToInt64(drp_address_region.SelectedValue); wareHouse.Address.PostalCode = (string)txt_address_postal.Text; if (wareHouse.Address.Country == null) { wareHouse.Address.Country = new CountryData(); } wareHouse.Address.Country.Id = System.Convert.ToInt32(drp_address_country.SelectedValue); wareHouse.IsDefaultWarehouse = System.Convert.ToBoolean(chk_default_warehouse.Checked); if (this.m_iID > 0) { m_refWarehouse.Update(wareHouse); Response.Redirect(m_sPageName + "?action=view&id=" + this.m_iID.ToString(), false); } else { m_refWarehouse.Add(wareHouse); Response.Redirect(m_sPageName, false); } }
protected void Process_AddEdit() { RegionData rRegion = null; TaxRateData tTax = null; Ektron.Cms.Common.Criteria<TaxClassProperty> TaxClasscriteria = new Ektron.Cms.Common.Criteria<TaxClassProperty>(TaxClassProperty.Name, Ektron.Cms.Common.EkEnumeration.OrderByDirection.Ascending); System.Collections.Generic.List<TaxClassData> TaxClassList = new System.Collections.Generic.List<TaxClassData>(); TaxClassList = _TaxClassApi.GetList(TaxClasscriteria); _TaxApi = new TaxApi(); if (this.m_iID > 0) { rRegion = _RegionApi.GetItem(this.m_iID); rRegion.Name = (string)txt_name.Text; rRegion.CountryId = Convert.ToInt64(drp_country.SelectedValue); rRegion.Code = (string)txt_code.Text; rRegion.Enabled = System.Convert.ToBoolean(chk_enabled.Checked); _RegionApi.Update(rRegion); for (int i = 0; i <= TaxClassList.Count - 1; i++) { tTax = _TaxApi.GetItemByRegionId(TaxClassList[i].Id, rRegion.Id); if (tTax == null) { tTax = new RegionTaxRateData(rRegion.Id, TaxClassList[i].Id, 0); if (Information.IsNumeric(Request.Form["txtClassRate" + i])) { tTax.Rate = System.Convert.ToDecimal(Convert.ToDecimal(Request.Form["txtClassRate" + i]) / 100); _TaxApi.Add(tTax); } } else { if (Information.IsNumeric(Request.Form["txtClassRate" + i])) { tTax.Rate = System.Convert.ToDecimal(Convert.ToDecimal(Request.Form["txtClassRate" + i]) / 100); _TaxApi.Update(tTax); } } } Response.Redirect(_PageName + "?action=view&id=" + m_iID.ToString(), false); } else { rRegion = new RegionData(txt_name.Text, Convert.ToInt64(drp_country.SelectedValue), txt_code.Text, chk_enabled.Checked); _RegionApi.Add(rRegion); string Country = (string)drp_country.SelectedValue; for (int i = 0; i <= TaxClassList.Count - 1; i++) { tTax = new RegionTaxRateData(rRegion.Id, TaxClassList[i].Id, 0); if (Information.IsNumeric(Request.Form["txtClassRate" + i])) { tTax.Rate = System.Convert.ToDecimal(Convert.ToDecimal(Request.Form["txtClassRate" + i]) / 100); _TaxApi.Add(tTax); } } Response.Redirect(_PageName, false); } TotalPages.Visible = false; CurrentPage.Visible = false; lnkBtnPreviousPage.Visible = false; NextPage.Visible = false; LastPage.Visible = false; FirstPage.Visible = false; PageLabel.Visible = false; OfLabel.Visible = false; }
internal RegionDataWrapper(RegionData rgn) { rgnData = rgn.Data; }
public List<RegionData> RunCommand(SqliteCommand cmd) { List<RegionData> retList = new List<RegionData>(); using (SqliteConnection dbcon = new SqliteConnection(m_connectionString)) { dbcon.Open(); cmd.Connection = dbcon; using (IDataReader result = cmd.ExecuteReader()) { while (result.Read()) { RegionData ret = new RegionData(); ret.Data = new Dictionary<string, object>(); ret.RegionID = DBGuid.FromDB(result["uuid"]); ret.ScopeID = DBGuid.FromDB(result["ScopeID"]); ret.RegionName = result["regionName"].ToString(); ret.posX = Convert.ToInt32(result["locX"]); ret.posY = Convert.ToInt32(result["locY"]); ret.sizeX = Convert.ToInt32(result["sizeX"]); ret.sizeY = Convert.ToInt32(result["sizeY"]); if (m_ColumnNames == null) { m_ColumnNames = new List<string>(); DataTable schemaTable = result.GetSchemaTable(); foreach (DataRow row in schemaTable.Rows) { if (row["ColumnName"] != null) m_ColumnNames.Add(row["ColumnName"].ToString()); } } foreach (string s in m_ColumnNames) { if (s == "uuid") continue; if (s == "ScopeID") continue; if (s == "regionName") continue; if (s == "locX") continue; if (s == "locY") continue; ret.Data[s] = result[s].ToString(); } retList.Add(ret); } } } return retList; }
protected void Display_AddEdit() { RegionData rRegion = new RegionData(); Ektron.Cms.Common.Criteria<TaxClassProperty> TaxClasscriteria = new Ektron.Cms.Common.Criteria<TaxClassProperty>(TaxClassProperty.Name, Ektron.Cms.Common.EkEnumeration.OrderByDirection.Ascending); System.Collections.Generic.List<TaxClassData> TaxClassList = new System.Collections.Generic.List<TaxClassData>(); TaxClassList = _TaxClassApi.GetList(TaxClasscriteria); _TaxApi = new TaxApi(); if (m_iID > 0) { rRegion = _RegionApi.GetItem(this.m_iID); } Util_BindCountries(); txt_name.Text = rRegion.Name; lbl_id.Text = rRegion.Id.ToString(); chk_enabled.Checked = rRegion.Enabled; txt_code.Text = rRegion.Code; drp_country.SelectedIndex = Util_GetCountryIndex(Convert.ToInt32(rRegion.CountryId)); if (m_iID > 0) { drp_country.Enabled = false; txt_code.Enabled = false; } int txtClassList = 0; ltr_txtClass.Text = "<table class=\"ektronGrid\">"; for (txtClassList = 0; txtClassList <= TaxClassList.Count - 1; txtClassList++) { ltr_txtClass.Text += "<tr>"; ltr_txtClass.Text += " <td class=\"label\">"; ltr_txtClass.Text += " <label id=\"taxClass" + txtClassList + "\" value=\"" + TaxClassList[txtClassList].Name + "\">" + TaxClassList[txtClassList].Name + ":</label>"; ltr_txtClass.Text += " </td>"; if (_TaxApi.GetItemByRegionId(TaxClassList[txtClassList].Id, rRegion.Id) == null) { ltr_txtClass.Text += " <td class=\"value\">"; ltr_txtClass.Text += " <input type=\"text\" name=\"txtClassRate" + txtClassList + "\" id=\"txtClassRate" + txtClassList + "\" value=\"0\" />%"; ltr_txtClass.Text += " </td>"; } else { ltr_txtClass.Text += " <td class=\"value\">"; ltr_txtClass.Text += " <input type=\"text\" name=\"txtClassRate" + txtClassList + "\" id=\"txtClassRate" + txtClassList + "\" value=\"" + _TaxApi.GetItemByRegionId(TaxClassList[txtClassList].Id, rRegion.Id).Rate * 100 + "\"/>%"; ltr_txtClass.Text += " </td>"; } ltr_txtClass.Text += "</tr>"; } ltr_txtClass.Text += "</table>"; tr_id.Visible = m_iID > 0; pnl_view.Visible = true; pnl_viewall.Visible = false; TotalPages.Visible = false; CurrentPage.Visible = false; lnkBtnPreviousPage.Visible = false; NextPage.Visible = false; LastPage.Visible = false; FirstPage.Visible = false; PageLabel.Visible = false; OfLabel.Visible = false; }
public bool Store(RegionData data) { if (data.Data.ContainsKey("uuid")) data.Data.Remove("uuid"); if (data.Data.ContainsKey("ScopeID")) data.Data.Remove("ScopeID"); if (data.Data.ContainsKey("regionName")) data.Data.Remove("regionName"); if (data.Data.ContainsKey("posX")) data.Data.Remove("posX"); if (data.Data.ContainsKey("posY")) data.Data.Remove("posY"); if (data.Data.ContainsKey("sizeX")) data.Data.Remove("sizeX"); if (data.Data.ContainsKey("sizeY")) data.Data.Remove("sizeY"); if (data.Data.ContainsKey("locX")) data.Data.Remove("locX"); if (data.Data.ContainsKey("locY")) data.Data.Remove("locY"); string[] fields = new List<string>(data.Data.Keys).ToArray(); using (SqlConnection conn = new SqlConnection(m_ConnectionString)) using (SqlCommand cmd = new SqlCommand()) { string update = "update [" + m_Realm + "] set locX=@posX, locY=@posY, sizeX=@sizeX, sizeY=@sizeY "; foreach (string field in fields) { update += ", "; update += "[" + field + "] = @" + field; cmd.Parameters.Add(m_database.CreateParameter("@" + field, data.Data[field])); } update += " where uuid = @regionID"; if (data.ScopeID != UUID.Zero) update += " and ScopeID = @scopeID"; cmd.CommandText = update; cmd.Connection = conn; cmd.Parameters.Add(m_database.CreateParameter("@regionID", data.RegionID)); cmd.Parameters.Add(m_database.CreateParameter("@regionName", data.RegionName)); cmd.Parameters.Add(m_database.CreateParameter("@scopeID", data.ScopeID)); cmd.Parameters.Add(m_database.CreateParameter("@posX", data.posX)); cmd.Parameters.Add(m_database.CreateParameter("@posY", data.posY)); cmd.Parameters.Add(m_database.CreateParameter("@sizeX", data.sizeX)); cmd.Parameters.Add(m_database.CreateParameter("@sizeY", data.sizeY)); conn.Open(); try { if (cmd.ExecuteNonQuery() < 1) { string insert = "insert into [" + m_Realm + "] ([uuid], [ScopeID], [locX], [locY], [sizeX], [sizeY], [regionName], [" + String.Join("], [", fields) + "]) values (@regionID, @scopeID, @posX, @posY, @sizeX, @sizeY, @regionName, @" + String.Join(", @", fields) + ")"; cmd.CommandText = insert; try { if (cmd.ExecuteNonQuery() < 1) { return false; } } catch (Exception ex) { m_log.Warn("[MSSQL Grid]: Error inserting into Regions table: " + ex.Message + ", INSERT sql: " + insert); } } } catch (Exception ex) { m_log.Warn("[MSSQL Grid]: Error updating Regions table: " + ex.Message + ", UPDATE sql: " + update); } } return true; }
/// <summary> /// Loads collision objects from region data. /// </summary> /// <param name="data"></param> public void Init(RegionData data) { foreach (var area in data.Areas.Values) { foreach (var prop in area.Props.Values) { foreach (var shape in prop.Shapes) { var p1 = new Point(shape.X1, shape.Y1); var p2 = new Point(shape.X2, shape.Y2); var p3 = new Point(shape.X3, shape.Y3); var p4 = new Point(shape.X4, shape.Y4); _tree.Insert(new LinePath(p1, p2)); _tree.Insert(new LinePath(p2, p3)); _tree.Insert(new LinePath(p3, p4)); _tree.Insert(new LinePath(p4, p1)); } } foreach (var ev in area.Events.Values.Where(a => a.Type == EventType.Collision)) { foreach (var shape in ev.Shapes) { var p1 = new Point(shape.X1, shape.Y1); var p2 = new Point(shape.X2, shape.Y2); var p3 = new Point(shape.X3, shape.Y3); var p4 = new Point(shape.X4, shape.Y4); _tree.Insert(new LinePath(p1, p2)); _tree.Insert(new LinePath(p2, p3)); _tree.Insert(new LinePath(p3, p4)); _tree.Insert(new LinePath(p4, p1)); } } } }
public bool Store(RegionData data) { if (data.Data.ContainsKey("uuid")) data.Data.Remove("uuid"); if (data.Data.ContainsKey("ScopeID")) data.Data.Remove("ScopeID"); if (data.Data.ContainsKey("regionName")) data.Data.Remove("regionName"); if (data.Data.ContainsKey("posX")) data.Data.Remove("posX"); if (data.Data.ContainsKey("posY")) data.Data.Remove("posY"); if (data.Data.ContainsKey("sizeX")) data.Data.Remove("sizeX"); if (data.Data.ContainsKey("sizeY")) data.Data.Remove("sizeY"); if (data.Data.ContainsKey("locX")) data.Data.Remove("locX"); if (data.Data.ContainsKey("locY")) data.Data.Remove("locY"); string[] fields = new List<string>(data.Data.Keys).ToArray(); MySqlCommand cmd = new MySqlCommand(); string update = "update `"+m_Realm+"` set locX=?posX, locY=?posY, sizeX=?sizeX, sizeY=?sizeY"; foreach (string field in fields) { update += ", "; update += "`" + field + "` = ?"+field; cmd.Parameters.AddWithValue("?"+field, data.Data[field]); } update += " where uuid = ?regionID"; if (data.ScopeID != UUID.Zero) update += " and ScopeID = ?scopeID"; cmd.CommandText = update; cmd.Parameters.AddWithValue("?regionID", data.RegionID.ToString()); cmd.Parameters.AddWithValue("?regionName", data.RegionName); cmd.Parameters.AddWithValue("?scopeID", data.ScopeID.ToString()); cmd.Parameters.AddWithValue("?posX", data.posX.ToString()); cmd.Parameters.AddWithValue("?posY", data.posY.ToString()); cmd.Parameters.AddWithValue("?sizeX", data.sizeX.ToString()); cmd.Parameters.AddWithValue("?sizeY", data.sizeY.ToString()); if (ExecuteNonQuery(cmd) < 1) { string insert = "insert into `" + m_Realm + "` (`uuid`, `ScopeID`, `locX`, `locY`, `sizeX`, `sizeY`, `regionName`, `" + String.Join("`, `", fields) + "`) values ( ?regionID, ?scopeID, ?posX, ?posY, ?sizeX, ?sizeY, ?regionName, ?" + String.Join(", ?", fields) + ")"; cmd.CommandText = insert; if (ExecuteNonQuery(cmd) < 1) { cmd.Dispose(); return false; } } cmd.Dispose(); return true; }
private bool ArcHit(ushort zoneId, Point3D pinPos, Point3D worldPos) { if (_weapon.LOSHit(zoneId, pinPos)) { return(true); } #if DEBUG && ARTILLERY_ARC_DEBUG Log.Info("Artillery", "Direct LOS check failed, checking arc..."); #endif WarZoneLib.Vector3 playnice = new WarZoneLib.Vector3(); int maxZDisplacement = Math.Min(_Owner.Z, pinPos.Z) + 100 * 12; // check 100 feet upwards Point3D weaponTopPoint = new Point3D(); Point3D destPoint = new Point3D(); Vector2 toTarget = new Vector2(worldPos.X - _weapon.WorldPosition.X, worldPos.Y - _weapon.WorldPosition.Y); toTarget.Normalize(); weaponTopPoint.SetCoordsFrom(_weapon); destPoint.SetCoordsFrom(_weapon); #if DEBUG && ARTILLERY_ARC_DEBUG Log.Info("Artillery", "Weapon location: " + weaponTopPoint); #endif // Check LOS between weapon and close apex (if applicable) if (weaponTopPoint.Z < maxZDisplacement) { destPoint.Z = maxZDisplacement; // Check 50 feet in front of the weapon destPoint.X += (int)(toTarget.X * 50 * 12); destPoint.Y += (int)(toTarget.Y * 50 * 12); #if DEBUG && ARTILLERY_ARC_DEBUG Log.Info("Artillery", "Checking weapon to destination point: " + destPoint); #endif RegionData.OcclusionResult arc1Result = RegionData.OcclusionQuery( zoneId, weaponTopPoint.X, weaponTopPoint.Y, weaponTopPoint.Z + 120, zoneId, destPoint.X, destPoint.Y, destPoint.Z, ref playnice); if (arc1Result == RegionData.OcclusionResult.Occluded) { #if DEBUG && ARTILLERY_ARC_DEBUG Log.Info("Artillery", "Arc check failed (obstruction between cannon and arc apex 1)"); foreach (var player in Players) { player.Key.ZoneTeleport((ushort)destPoint.X, (ushort)destPoint.Y, (ushort)destPoint.Z, 0); } #endif return(false); } weaponTopPoint.SetCoordsFrom(destPoint); } // Check LOS between target and far apex (if applicable) destPoint.SetCoordsFrom(pinPos); #if DEBUG && ARTILLERY_ARC_DEBUG Log.Info("Artillery", "Target location: " + pinPos); #endif if (pinPos.Z < maxZDisplacement) { destPoint.Z = maxZDisplacement; // Much more lenient on drop - 10ft destPoint.X -= (int)(toTarget.X * 10 * 12); destPoint.Y -= (int)(toTarget.Y * 10 * 12); #if DEBUG && ARTILLERY_ARC_DEBUG Log.Info("Artillery", "Checking target location to destination point: " + destPoint); #endif RegionData.OcclusionResult arc2Result = RegionData.OcclusionQuery( zoneId, pinPos.X, pinPos.Y, pinPos.Z + 120, zoneId, destPoint.X, destPoint.Y, destPoint.Z, ref playnice); if (arc2Result == RegionData.OcclusionResult.Occluded) { #if DEBUG && ARTILLERY_ARC_DEBUG Log.Info("Artillery", "Arc check failed (obstruction between target point and arc apex 2)"); foreach (var player in Players) { player.Key.ZoneTeleport((ushort)destPoint.X, (ushort)destPoint.Y, (ushort)destPoint.Z, 0); } #endif return(false); } pinPos.SetCoordsFrom(destPoint); } #if DEBUG && ARTILLERY_ARC_DEBUG Log.Info("Artillery", "Checking apex 1 " + weaponTopPoint + " to apex 2 " + pinPos); #endif // Check LOS between two apex points RegionData.OcclusionResult result = RegionData.OcclusionQuery( zoneId, weaponTopPoint.X, weaponTopPoint.Y, weaponTopPoint.Z + 120, zoneId, pinPos.X, pinPos.Y, pinPos.Z + 120, ref playnice); if (result == RegionData.OcclusionResult.Occluded) { #if DEBUG && ARTILLERY_ARC_DEBUG Log.Info("Artillery", "Arc check failed (obstruction between arc apexes)"); //foreach (var player in Players) // player.Key.ZoneTeleport((ushort)weaponTopPoint.X, (ushort)weaponTopPoint.Y, (ushort)weaponTopPoint.Z, 0); foreach (var player in Players) { player.Key.ZoneTeleport((ushort)pinPos.X, (ushort)pinPos.Y, (ushort)pinPos.Z, 0); } #endif return(false); } #if DEBUG && ARTILLERY_ARC_DEBUG Log.Info("Artillery", "Arc check passed"); #endif return(true); }