diff --git a/gen/defenses/armor_group_generator.py b/gen/defenses/armor_group_generator.py index 3824f7da..7b772e31 100644 --- a/gen/defenses/armor_group_generator.py +++ b/gen/defenses/armor_group_generator.py @@ -3,22 +3,38 @@ import random from dcs.vehicles import Armor from game import db -from gen.defenses.armored_group_generator import ArmoredGroupGenerator +from gen.defenses.armored_group_generator import ArmoredGroupGenerator, FixedSizeArmorGroupGenerator def generate_armor_group(faction:str, game, ground_object): """ This generate a group of ground units - :param parentCp: The parent control point - :param ground_object: The ground object which will own the group - :param country: Owner country :return: Generated group """ possible_unit = [u for u in db.FACTIONS[faction]["units"] if u in Armor.__dict__.values()] if len(possible_unit) > 0: unit_type = random.choice(possible_unit) - generator = ArmoredGroupGenerator(game, ground_object, unit_type) - generator.generate() - return generator.get_generated_group() + return generate_armor_group_of_type(game, ground_object, unit_type) return None + + +def generate_armor_group_of_type(game, ground_object, unit_type): + """ + This generate a group of ground units of given type + :return: Generated group + """ + generator = ArmoredGroupGenerator(game, ground_object, unit_type) + generator.generate() + return generator.get_generated_group() + + +def generate_armor_group_of_type_and_size(game, ground_object, unit_type, size: int): + """ + This generate a group of ground units of given type and size + :return: Generated group + """ + generator = FixedSizeArmorGroupGenerator(game, ground_object, unit_type, size) + generator.generate() + return generator.get_generated_group() + diff --git a/gen/defenses/armored_group_generator.py b/gen/defenses/armored_group_generator.py index f678af81..3b81a1dd 100644 --- a/gen/defenses/armored_group_generator.py +++ b/gen/defenses/armored_group_generator.py @@ -25,3 +25,20 @@ class ArmoredGroupGenerator(GroupGenerator): self.position.y + spacing * j, self.heading) +class FixedSizeArmorGroupGenerator(GroupGenerator): + + def __init__(self, game, ground_object, unit_type, size): + super(FixedSizeArmorGroupGenerator, self).__init__(game, ground_object) + self.unit_type = unit_type + self.size = size + + def generate(self): + spacing = random.randint(20, 70) + + index = 0 + for i in range(self.size): + index = index + 1 + self.add_unit(self.unit_type, "Armor#" + str(index), + self.position.x + spacing * i, + self.position.y, self.heading) + diff --git a/qt_ui/windows/basemenu/base_defenses/QBaseDefenseGroupInfo.py b/qt_ui/windows/basemenu/base_defenses/QBaseDefenseGroupInfo.py index bafd70ee..94da80e5 100644 --- a/qt_ui/windows/basemenu/base_defenses/QBaseDefenseGroupInfo.py +++ b/qt_ui/windows/basemenu/base_defenses/QBaseDefenseGroupInfo.py @@ -39,8 +39,6 @@ class QBaseDefenseGroupInfo(QGroupBox): item = self.unit_layout.itemAt(i) if item is not None and item.widget() is not None: self.unit_layout.removeItem(item) - item.widget().setParent(None) - item.widget().deleteLater() for g in self.ground_object.groups: for u in g.units: diff --git a/qt_ui/windows/groundobject/QGroundObjectMenu.py b/qt_ui/windows/groundobject/QGroundObjectMenu.py index 6d28c357..dcfed0a3 100644 --- a/qt_ui/windows/groundobject/QGroundObjectMenu.py +++ b/qt_ui/windows/groundobject/QGroundObjectMenu.py @@ -1,7 +1,7 @@ import logging from PySide2 import QtCore -from PySide2.QtGui import QCloseEvent, Qt +from PySide2.QtGui import Qt from PySide2.QtWidgets import QHBoxLayout, QDialog, QGridLayout, QLabel, QGroupBox, QVBoxLayout, QPushButton, \ QComboBox, QSpinBox, QMessageBox from dcs import Point @@ -9,7 +9,7 @@ from dcs import Point from game import Game, db from game.data.building_data import FORTIFICATION_BUILDINGS from game.db import PRICES, unit_type_of, PinpointStrike -from gen.defenses.armor_group_generator import generate_armor_group +from gen.defenses.armor_group_generator import generate_armor_group_of_type_and_size from gen.sam.sam_group_generator import get_faction_possible_sams_generator from qt_ui.uiconstants import EVENT_ICONS from qt_ui.widgets.QBudgetBox import QBudgetBox @@ -288,7 +288,9 @@ class QBuyGroupForGroundObjectDialog(QDialog): self.buyArmorButton.setText("Buy [$" + str(db.PRICES[self.buyArmorCombo.itemData(self.buyArmorCombo.currentIndex())] * self.amount.value()) + "M][-$" + str(self.current_group_value) + "M]") def buyArmor(self): + print("Buy Armor ") utype = self.buyArmorCombo.itemData(self.buyArmorCombo.currentIndex()) + print(utype) price = db.PRICES[utype] * self.amount.value() - self.current_group_value if price > self.game.budget: self.error_money() @@ -298,7 +300,7 @@ class QBuyGroupForGroundObjectDialog(QDialog): self.game.budget -= price # Generate Armor - group = generate_armor_group(self.game.player_name, self.game, self.ground_object) + group = generate_armor_group_of_type_and_size(self.game, self.ground_object, utype, int(self.amount.value())) self.ground_object.groups = [group] GameUpdateSignal.get_instance().updateBudget(self.game)