From deee83dc80e2842004fbd3c99ef8e91458790ab8 Mon Sep 17 00:00:00 2001 From: Leonid-Murzinov Date: Sat, 19 Nov 2022 20:43:44 +0300 Subject: [PATCH] =?UTF-8?q?backend:=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=D0=B8=20=D1=85=D0=B0=D1=80=D0=B0=D0=BA=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D0=B8=D1=81=D1=82=D0=B8=D0=BA=D0=B0=20=D1=80=D0=B0=D1=81=D1=8B?= =?UTF-8?q?=20=D0=B8=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/migrations/versions/57b47e18fdab_.py | 68 ++++++++++++++++++++ backend/scripts/init_data.json | 55 +++++++++++++++- backend/textsouls/models.py | 40 ++++++++++++ 3 files changed, 161 insertions(+), 2 deletions(-) create mode 100644 backend/migrations/versions/57b47e18fdab_.py diff --git a/backend/migrations/versions/57b47e18fdab_.py b/backend/migrations/versions/57b47e18fdab_.py new file mode 100644 index 0000000..e58cf82 --- /dev/null +++ b/backend/migrations/versions/57b47e18fdab_.py @@ -0,0 +1,68 @@ +"""empty message + +Revision ID: 57b47e18fdab +Revises: 370968e335df +Create Date: 2022-11-19 20:40:22.680225 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '57b47e18fdab' +down_revision = '370968e335df' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('character_classes', schema=None) as batch_op: + batch_op.add_column(sa.Column('endurance_koef', sa.Float(), nullable=True)) + batch_op.add_column(sa.Column('strength_koef', sa.Float(), nullable=True)) + batch_op.add_column(sa.Column('agility_koef', sa.Float(), nullable=True)) + batch_op.add_column(sa.Column('defence_koef', sa.Float(), nullable=True)) + batch_op.add_column(sa.Column('wisdom_koef', sa.Float(), nullable=True)) + + with op.batch_alter_table('character_races', schema=None) as batch_op: + batch_op.add_column(sa.Column('endurance_koef', sa.Float(), nullable=True)) + batch_op.add_column(sa.Column('strength_koef', sa.Float(), nullable=True)) + batch_op.add_column(sa.Column('agility_koef', sa.Float(), nullable=True)) + batch_op.add_column(sa.Column('defence_koef', sa.Float(), nullable=True)) + batch_op.add_column(sa.Column('wisdom_koef', sa.Float(), nullable=True)) + + with op.batch_alter_table('characters', schema=None) as batch_op: + batch_op.add_column(sa.Column('endurance_base', sa.Integer(), nullable=True)) + batch_op.add_column(sa.Column('strength_base', sa.Integer(), nullable=True)) + batch_op.add_column(sa.Column('agility_base', sa.Integer(), nullable=True)) + batch_op.add_column(sa.Column('defence_base', sa.Integer(), nullable=True)) + batch_op.add_column(sa.Column('wisdom_base', sa.Integer(), nullable=True)) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('characters', schema=None) as batch_op: + batch_op.drop_column('wisdom_base') + batch_op.drop_column('defence_base') + batch_op.drop_column('agility_base') + batch_op.drop_column('strength_base') + batch_op.drop_column('endurance_base') + + with op.batch_alter_table('character_races', schema=None) as batch_op: + batch_op.drop_column('wisdom_koef') + batch_op.drop_column('defence_koef') + batch_op.drop_column('agility_koef') + batch_op.drop_column('strength_koef') + batch_op.drop_column('endurance_koef') + + with op.batch_alter_table('character_classes', schema=None) as batch_op: + batch_op.drop_column('wisdom_koef') + batch_op.drop_column('defence_koef') + batch_op.drop_column('agility_koef') + batch_op.drop_column('strength_koef') + batch_op.drop_column('endurance_koef') + + # ### end Alembic commands ### diff --git a/backend/scripts/init_data.json b/backend/scripts/init_data.json index 953abdd..3d05551 100644 --- a/backend/scripts/init_data.json +++ b/backend/scripts/init_data.json @@ -1,14 +1,65 @@ [ + { + "table_name": "character_races", + "records": [ + { + "id": 1, + "name": "Человек", + "endurance_koef": 1, + "strength_koef": 1, + "agility_koef": 1, + "defence_koef": 1, + "wisdom_koef": 1 + }, + { + "id": 2, + "name": "Орк", + "endurance_koef": 1.5, + "strength_koef": 1, + "agility_koef": 0.5, + "defence_koef": 1.5, + "wisdom_koef": 0.5 + }, + { + "id": 3, + "name": "Эльф", + "endurance_koef": 0.5, + "strength_koef": 1.5, + "agility_koef": 1.5, + "defence_koef": 0.5, + "wisdom_koef": 1 + } + ] + }, { "table_name": "character_classes", "records": [ { "id": 1, - "name": "Тест1" + "name": "Воин", + "endurance_koef": 1.5, + "strength_koef": 1, + "agility_koef": 1, + "defence_koef": 1.5, + "wisdom_koef": 0.5 }, { "id": 2, - "name": "Тест2" + "name": "Вор", + "endurance_koef": 0.5, + "strength_koef": 1.2, + "agility_koef": 1.5, + "defence_koef": 0.5, + "wisdom_koef": 0.1 + }, + { + "id": 3, + "name": "Маг", + "endurance_koef": 1, + "strength_koef": 0.5, + "agility_koef": 0.5, + "defence_koef": 1, + "wisdom_koef": 1.5 } ] } diff --git a/backend/textsouls/models.py b/backend/textsouls/models.py index 6e82a57..8c07f39 100644 --- a/backend/textsouls/models.py +++ b/backend/textsouls/models.py @@ -36,6 +36,11 @@ class CharacterRace(db.Model, SerializerMixin): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255), nullable=True, unique=True) characters = db.relationship("Character", backref="race", lazy="dynamic") + endurance_koef = db.Column(db.Float(), nullable=True, unique=False) + strength_koef = db.Column(db.Float(), nullable=True, unique=False) + agility_koef = db.Column(db.Float(), nullable=True, unique=False) + defence_koef = db.Column(db.Float(), nullable=True, unique=False) + wisdom_koef = db.Column(db.Float(), nullable=True, unique=False) def __str__(self): return self.name @@ -50,6 +55,11 @@ class CharacterClass(db.Model, SerializerMixin): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255), nullable=True, unique=True) characters = db.relationship("Character", backref="class", lazy="dynamic") + endurance_koef = db.Column(db.Float(), nullable=True, unique=False) + strength_koef = db.Column(db.Float(), nullable=True, unique=False) + agility_koef = db.Column(db.Float(), nullable=True, unique=False) + defence_koef = db.Column(db.Float(), nullable=True, unique=False) + wisdom_koef = db.Column(db.Float(), nullable=True, unique=False) def __str__(self): return self.name @@ -81,5 +91,35 @@ class Character(db.Model, SerializerMixin): db.DateTime, nullable=False, default=datetime.datetime.now() ) + endurance_base = db.Column(db.Integer(), nullable=True, unique=False) + strength_base = db.Column(db.Integer(), nullable=True, unique=False) + agility_base = db.Column(db.Integer(), nullable=True, unique=False) + defence_base = db.Column(db.Integer(), nullable=True, unique=False) + wisdom_base = db.Column(db.Integer(), nullable=True, unique=False) + def __str__(self): return self.name + + @property + def attack_power(self): + return ( + self.strength_base + * self.character_race.strength_koef + * self.character_class.strength_koef + ) + + @property + def defence_chance(self): + return ( + self.defence_base + * self.character_race.defence_koef + * self.character_class.defence_koef + ) + + @property + def saving_chance(self): + return ( + self.agility_base + * self.character_race.agility_koef + * self.character_class.agility_koef + )