public void SetTax(Character character, double newTax) { IsPlayerControlledMarketTax().ThrowIfFalse(ErrorCodes.AccessDenied); var oldTax = Tax; newTax = newTax.Clamp(); var coporationEid = character.CorporationEid; ProfitingOwnerSelector.GetProfitingOwner(GetDockingBase()).ThrowIfNull(ErrorCodes.AccessDenied); var corporation = PrivateCorporation.GetOrThrow(coporationEid); var role = corporation.GetMemberRole(character); role.IsAnyRole(CorporationRole.CEO, CorporationRole.DeputyCEO, CorporationRole.Accountant).ThrowIfFalse(ErrorCodes.InsufficientPrivileges); //write log var e = new MarketTaxChangeLogEvent { BaseEid = GetDockingBase().Eid, ChangeFrom = oldTax, ChangeTo = newTax, CharacterId = character.Id, Owner = coporationEid, }; GetTaxChangeLogger().Log(e); //set value Tax = newTax; }
public static Corporation GetProfitingOwner(DockingBase dockingBase) { if (dockingBase == null) { return(null); } var selector = new ProfitingOwnerSelector(); dockingBase.AcceptVisitor(selector); return(selector._owner); }