/// <summary> /// Replaces one ConstructingBuilding with an IStructure. /// </summary> /// <param name="sender">ConstructingBuilding to be replaced</param> /// <param name="eventArgs">EventArgs containing new structure's definition</param> public void ReplaceBuilding(object sender, EventArgsWithPayload <IStructureDef> eventArgs) { if (!(sender is ConstructingBuildingController structure)) { return; } // Remove old structure DespawnStructure(structure); // Add new structure BuildingFactory factory = new BuildingFactory(structure.Faction, Game); IStructure <IStructureDef> building = factory.CreateNewBuilding(structure.Def.CompletedBuildingDef); SpawnStructure(structure.StartCoords, building); }
/// <summary> /// TODO move to (new) BalanceManager-class /// Calculates balance based on income and upkeep. /// </summary> /// <param name="sender"></param> /// <param name="eventArgs"></param> private void OnDayPassed(object sender, EventArgsWithPayload <IngameTime> eventArgs) { double balance = 0; using (ResourceCalculator resourceCalculator = new ResourceCalculator()) { foreach (ResourceFactoryController resourceFactory in FactionModel.ResourceFactories) { resourceCalculator.AddResource(resourceFactory.ResourceValue, resourceFactory.ResourceType); } balance += resourceCalculator.CalculateResourceWorth(); } balance -= FactionModel.Buildings.Sum(structure => structure.Def.UpkeepCost); balance -= FactionModel.Units.Sum(unit => unit.UnitModel.Def.Upkeep); CurrencyController.AlterCurrency((float)balance); }
public void OnRightClick(object sender, EventArgsWithPayload <MouseState> mouseEvent) { if (mouseEvent.Value.RightButton == ButtonState.Pressed) { BoxView.Coords = new FloatCoords() { x = mouseEvent.Value.X, y = mouseEvent.Value.Y }; BoxModel.Text.Coords = new FloatCoords() { x = mouseEvent.Value.X, y = mouseEvent.Value.Y }; BoxModel.Show = true; } if (mouseEvent.Value.LeftButton == ButtonState.Pressed) { BoxModel.Show = false; } }
public void OnMouseStateChange(object sender, EventArgsWithPayload <MouseState> mouseEvent) { if (mouseEvent.Value.LeftButton != PreviousMouseState.LeftButton) { MouseInputStatus = mouseEvent.Value.LeftButton; MouseState temp = Mouse.GetState(); GuiOrMap(new FloatCoords { x = temp.X, y = temp.Y }, mouseEvent.Value, MouseButton.Left); } if (mouseEvent.Value.RightButton != PreviousMouseState.RightButton) { MouseInputStatus = mouseEvent.Value.RightButton; MouseState temp = Mouse.GetState(); GuiOrMap(new FloatCoords { x = temp.X, y = temp.Y }, mouseEvent.Value, MouseButton.Right); } PreviousMouseState = mouseEvent.Value; }