mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Fixed bug when buying armor at base
This commit is contained in:
parent
fb40e9273d
commit
c96b5cf4d7
@ -3,22 +3,38 @@ import random
|
|||||||
from dcs.vehicles import Armor
|
from dcs.vehicles import Armor
|
||||||
|
|
||||||
from game import db
|
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):
|
def generate_armor_group(faction:str, game, ground_object):
|
||||||
"""
|
"""
|
||||||
This generate a group of ground units
|
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
|
:return: Generated group
|
||||||
"""
|
"""
|
||||||
|
|
||||||
possible_unit = [u for u in db.FACTIONS[faction]["units"] if u in Armor.__dict__.values()]
|
possible_unit = [u for u in db.FACTIONS[faction]["units"] if u in Armor.__dict__.values()]
|
||||||
if len(possible_unit) > 0:
|
if len(possible_unit) > 0:
|
||||||
unit_type = random.choice(possible_unit)
|
unit_type = random.choice(possible_unit)
|
||||||
generator = ArmoredGroupGenerator(game, ground_object, unit_type)
|
return generate_armor_group_of_type(game, ground_object, unit_type)
|
||||||
generator.generate()
|
|
||||||
return generator.get_generated_group()
|
|
||||||
return None
|
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()
|
||||||
|
|
||||||
|
|||||||
@ -25,3 +25,20 @@ class ArmoredGroupGenerator(GroupGenerator):
|
|||||||
self.position.y + spacing * j, self.heading)
|
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)
|
||||||
|
|
||||||
|
|||||||
@ -39,8 +39,6 @@ class QBaseDefenseGroupInfo(QGroupBox):
|
|||||||
item = self.unit_layout.itemAt(i)
|
item = self.unit_layout.itemAt(i)
|
||||||
if item is not None and item.widget() is not None:
|
if item is not None and item.widget() is not None:
|
||||||
self.unit_layout.removeItem(item)
|
self.unit_layout.removeItem(item)
|
||||||
item.widget().setParent(None)
|
|
||||||
item.widget().deleteLater()
|
|
||||||
|
|
||||||
for g in self.ground_object.groups:
|
for g in self.ground_object.groups:
|
||||||
for u in g.units:
|
for u in g.units:
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from PySide2 import QtCore
|
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, \
|
from PySide2.QtWidgets import QHBoxLayout, QDialog, QGridLayout, QLabel, QGroupBox, QVBoxLayout, QPushButton, \
|
||||||
QComboBox, QSpinBox, QMessageBox
|
QComboBox, QSpinBox, QMessageBox
|
||||||
from dcs import Point
|
from dcs import Point
|
||||||
@ -9,7 +9,7 @@ from dcs import Point
|
|||||||
from game import Game, db
|
from game import Game, db
|
||||||
from game.data.building_data import FORTIFICATION_BUILDINGS
|
from game.data.building_data import FORTIFICATION_BUILDINGS
|
||||||
from game.db import PRICES, unit_type_of, PinpointStrike
|
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 gen.sam.sam_group_generator import get_faction_possible_sams_generator
|
||||||
from qt_ui.uiconstants import EVENT_ICONS
|
from qt_ui.uiconstants import EVENT_ICONS
|
||||||
from qt_ui.widgets.QBudgetBox import QBudgetBox
|
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]")
|
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):
|
def buyArmor(self):
|
||||||
|
print("Buy Armor ")
|
||||||
utype = self.buyArmorCombo.itemData(self.buyArmorCombo.currentIndex())
|
utype = self.buyArmorCombo.itemData(self.buyArmorCombo.currentIndex())
|
||||||
|
print(utype)
|
||||||
price = db.PRICES[utype] * self.amount.value() - self.current_group_value
|
price = db.PRICES[utype] * self.amount.value() - self.current_group_value
|
||||||
if price > self.game.budget:
|
if price > self.game.budget:
|
||||||
self.error_money()
|
self.error_money()
|
||||||
@ -298,7 +300,7 @@ class QBuyGroupForGroundObjectDialog(QDialog):
|
|||||||
self.game.budget -= price
|
self.game.budget -= price
|
||||||
|
|
||||||
# Generate Armor
|
# 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]
|
self.ground_object.groups = [group]
|
||||||
|
|
||||||
GameUpdateSignal.get_instance().updateBudget(self.game)
|
GameUpdateSignal.get_instance().updateBudget(self.game)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user