public string Execute( double chargePercent = 100, [CurrentCharacterIfNull] ICharacter character = null) { var chargeFraction = MathHelper.Clamp(chargePercent / 100, min: 0, max: 1); using var tempLandClaims = Api.Shared.GetTempList <ILogicObject>(); LandClaimSystem.SharedGetAreasInBounds( new RectangleInt(character.TilePosition, (1, 1)), tempLandClaims, addGracePadding: false); var landClaim = tempLandClaims.AsList().FirstOrDefault(); if (landClaim is null) { return("No power grid exist near " + character.Name); } var landClaimAreasGroup = LandClaimSystem.SharedGetLandClaimAreasGroup(landClaim); var powerGrid = LandClaimAreasGroup.GetPrivateState(landClaimAreasGroup).PowerGrid; var powerGridState = PowerGrid.GetPublicState(powerGrid); powerGridState.ElectricityAmount = powerGridState.ElectricityCapacity * chargeFraction; return($"Charge amount of the power grid modified to {chargeFraction * 100}%"); }
private void RefreshSafeStorageAndPowerGrid() { var objectPublicState = this.landClaimWorldObject.GetPublicState <ObjectLandClaimPublicState>(); var area = objectPublicState.LandClaimAreaObject; var areasGroup = LandClaimArea.GetPublicState(area).LandClaimAreasGroup; var areasGroupPrivateState = LandClaimAreasGroup.GetPrivateState(areasGroup); // setup power grid var powerGrid = areasGroupPrivateState.PowerGrid; var oldViewModelPowerGridState = this.ViewModelPowerGridState; this.ViewModelPowerGridState = new ViewModelPowerGridState(PowerGrid.GetPublicState(powerGrid)); oldViewModelPowerGridState?.Dispose(); // setup safe storage this.DisposeViewModelItemsContainerExchange(); this.ViewModelItemsContainerExchange = new ViewModelItemsContainerExchange( areasGroupPrivateState.ItemsContainer, callbackTakeAllItemsSuccess: () => { }, enableShortcuts: this.IsSafeStorageAvailable) { IsContainerTitleVisible = false, }; this.ViewModelItemsContainerExchange.Container.SlotsCountChanged += this.SafeStorageSlotsChangedHandler; this.ViewModelItemsContainerExchange.Container.ItemsReset += this.SafeStorageSlotsChangedHandler; }
private void Refresh() { var oldViewModel = this.ViewModelPowerGridState; var powerGrid = this.privateState.PowerGrid; this.ViewModelPowerGridState = powerGrid is null ? null : new ViewModelPowerGridState(PowerGrid.GetPublicState(powerGrid)); oldViewModel?.Dispose(); }