From dff11616fe7b40eee24304c330a81b5bc661f5a0 Mon Sep 17 00:00:00 2001 From: cewei8483 Date: Thu, 1 Jun 2023 17:53:17 +0100 Subject: [PATCH 1/2] adjust target_num_pickups_per_avatar --- aimmo/game_manager.py | 8 +++++++- ...alter_game_target_num_pickups_per_avatar.py | 18 ++++++++++++++++++ aimmo/models.py | 3 ++- 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 aimmo/migrations/0032_alter_game_target_num_pickups_per_avatar.py diff --git a/aimmo/game_manager.py b/aimmo/game_manager.py index 57c1dd774..22a0aa1d7 100644 --- a/aimmo/game_manager.py +++ b/aimmo/game_manager.py @@ -2,7 +2,7 @@ # For now it just duplicates a part of aimmo-game-creator/game_manager.py in order to recreate a game server. import logging import time - +import json import kubernetes from kubernetes.client import CoreV1Api from kubernetes.client.api.custom_objects_api import CustomObjectsApi @@ -134,6 +134,12 @@ def recreate_game_server( game_data = self.delete_game_server(game_id=game_id) game_data.update(game_data_updates) + + if (game_data.get('settings') and game_data.get('worksheet_id')): + setting = json.loads(game_data['settings']) + setting['TARGET_NUM_PICKUPS_PER_AVATAR'] = 0 if game_data['worksheet_id'] == '1' else 1.2 + game_data['settings'] = json.dumps(setting) + game_server_name = self.create_game_server_allocation( game_id=game_id, game_data=game_data ) diff --git a/aimmo/migrations/0032_alter_game_target_num_pickups_per_avatar.py b/aimmo/migrations/0032_alter_game_target_num_pickups_per_avatar.py new file mode 100644 index 000000000..4876e9ca5 --- /dev/null +++ b/aimmo/migrations/0032_alter_game_target_num_pickups_per_avatar.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.19 on 2023-06-01 13:54 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('aimmo', '0031_alter_avatar_auth_token'), + ] + + operations = [ + migrations.AlterField( + model_name='game', + name='target_num_pickups_per_avatar', + field=models.FloatField(default=0), + ), + ] diff --git a/aimmo/models.py b/aimmo/models.py index 4dd9a5a14..ce4b00e78 100755 --- a/aimmo/models.py +++ b/aimmo/models.py @@ -70,7 +70,8 @@ class Game(models.Model): target_num_cells_per_avatar = models.FloatField(default=16) target_num_score_locations_per_avatar = models.FloatField(default=0.5) score_despawn_chance = models.FloatField(default=0.05) - target_num_pickups_per_avatar = models.FloatField(default=1.2) + # Set default pickup num to 0 to remove artefacts from worksheet 1 + target_num_pickups_per_avatar = models.FloatField(default=0) pickup_spawn_chance = models.FloatField(default=0.1) obstacle_ratio = models.FloatField(default=0.1) start_height = models.IntegerField(default=31) From ba69dac45d0f6776b567e40b041780706bf22989 Mon Sep 17 00:00:00 2001 From: cewei8483 Date: Mon, 5 Jun 2023 15:41:08 +0100 Subject: [PATCH 2/2] pass tests --- aimmo/game_manager.py | 2 +- aimmo/tests/test_views.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aimmo/game_manager.py b/aimmo/game_manager.py index 22a0aa1d7..efcb45f5b 100644 --- a/aimmo/game_manager.py +++ b/aimmo/game_manager.py @@ -135,7 +135,7 @@ def recreate_game_server( game_data = self.delete_game_server(game_id=game_id) game_data.update(game_data_updates) - if (game_data.get('settings') and game_data.get('worksheet_id')): + if (game_data.get('settings') and isinstance(game_data.get('settings') , str) and game_data.get('worksheet_id')): setting = json.loads(game_data['settings']) setting['TARGET_NUM_PICKUPS_PER_AVATAR'] = 0 if game_data['worksheet_id'] == '1' else 1.2 game_data['settings'] = json.dumps(setting) diff --git a/aimmo/tests/test_views.py b/aimmo/tests/test_views.py index 12be0e3b0..2b704bdb4 100644 --- a/aimmo/tests/test_views.py +++ b/aimmo/tests/test_views.py @@ -402,7 +402,7 @@ def expected_game_detail(class_id, worksheet_id): "era": "1", "name": "test", "status": "r", - "settings": '{"GENERATOR": "Main", "OBSTACLE_RATIO": 0.1, "PICKUP_SPAWN_CHANCE": 0.1, "SCORE_DESPAWN_CHANCE": 0.05, "START_HEIGHT": 31, "START_WIDTH": 31, "TARGET_NUM_CELLS_PER_AVATAR": 16.0, "TARGET_NUM_PICKUPS_PER_AVATAR": 1.2, "TARGET_NUM_SCORE_LOCATIONS_PER_AVATAR": 0.5}', + "settings": '{"GENERATOR": "Main", "OBSTACLE_RATIO": 0.1, "PICKUP_SPAWN_CHANCE": 0.1, "SCORE_DESPAWN_CHANCE": 0.05, "START_HEIGHT": 31, "START_WIDTH": 31, "TARGET_NUM_CELLS_PER_AVATAR": 16.0, "TARGET_NUM_PICKUPS_PER_AVATAR": 0.0, "TARGET_NUM_SCORE_LOCATIONS_PER_AVATAR": 0.5}', "class_id": str(class_id), "worksheet_id": str(worksheet_id), } @@ -534,7 +534,7 @@ def expected_game_detail(class_id, worksheet_id): "era": "1", "name": "test", "status": "r", - "settings": '{"GENERATOR": "Main", "OBSTACLE_RATIO": 0.1, "PICKUP_SPAWN_CHANCE": 0.1, "SCORE_DESPAWN_CHANCE": 0.05, "START_HEIGHT": 31, "START_WIDTH": 31, "TARGET_NUM_CELLS_PER_AVATAR": 16.0, "TARGET_NUM_PICKUPS_PER_AVATAR": 1.2, "TARGET_NUM_SCORE_LOCATIONS_PER_AVATAR": 0.5}', + "settings": '{"GENERATOR": "Main", "OBSTACLE_RATIO": 0.1, "PICKUP_SPAWN_CHANCE": 0.1, "SCORE_DESPAWN_CHANCE": 0.05, "START_HEIGHT": 31, "START_WIDTH": 31, "TARGET_NUM_CELLS_PER_AVATAR": 16.0, "TARGET_NUM_PICKUPS_PER_AVATAR": 0.0, "TARGET_NUM_SCORE_LOCATIONS_PER_AVATAR": 0.5}', "class_id": str(class_id), "worksheet_id": str(worksheet_id), }