Creating structure for the game events (#3)
* Adding the GameVent model and migration * Initializing the GameEvent endpoint * GameEvent listing endpoint * Adding CLICK_NAIVE event * Added signal for identify what is on the click location * Using row and col integer is better than metadata with jsonfield * Create event for the same position is not allowed * Better signals control * Adding a board progress to Game model * Identifying the win status * Hide generated board from client
This commit is contained in:
73
game/migrations/0003_gameevent.py
Normal file
73
game/migrations/0003_gameevent.py
Normal file
@@ -0,0 +1,73 @@
|
||||
# Generated by Django 3.1.3 on 2020-11-06 03:54
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django_mysql.models
|
||||
import game.models
|
||||
import internal.utils
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("game", "0002_auto_20201106_0225"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="GameEvent",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.AutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"created_at",
|
||||
models.DateTimeField(
|
||||
auto_now_add=True, verbose_name="Creation date"
|
||||
),
|
||||
),
|
||||
(
|
||||
"type",
|
||||
models.IntegerField(
|
||||
choices=[
|
||||
(0, "START_GAME"),
|
||||
(1, "PAUSE"),
|
||||
(2, "RESUME"),
|
||||
(3, "CLICK_MINE"),
|
||||
(4, "CLICK_POINT"),
|
||||
(5, "CLICK_EMPTY"),
|
||||
(6, "CLICK_FLAG"),
|
||||
(7, "GAME_OVER"),
|
||||
],
|
||||
default=game.models.EventTypes["START_GAME"],
|
||||
help_text="The game event",
|
||||
),
|
||||
),
|
||||
(
|
||||
"metadata",
|
||||
django_mysql.models.JSONField(
|
||||
default=internal.utils.empty_object,
|
||||
help_text="Some usefull event metadata",
|
||||
verbose_name="Event metadata",
|
||||
),
|
||||
),
|
||||
(
|
||||
"game",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE, to="game.game"
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"verbose_name": "Game event",
|
||||
"verbose_name_plural": "Game events",
|
||||
"db_table": "game_events",
|
||||
},
|
||||
),
|
||||
]
|
||||
41
game/migrations/0004_auto_20201106_0453.py
Normal file
41
game/migrations/0004_auto_20201106_0453.py
Normal file
@@ -0,0 +1,41 @@
|
||||
# Generated by Django 3.1.3 on 2020-11-06 04:53
|
||||
|
||||
from django.db import migrations, models
|
||||
import game.models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("game", "0003_gameevent"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name="gameevent",
|
||||
options={
|
||||
"ordering": ["created_at"],
|
||||
"verbose_name": "Game event",
|
||||
"verbose_name_plural": "Game events",
|
||||
},
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="gameevent",
|
||||
name="type",
|
||||
field=models.IntegerField(
|
||||
choices=[
|
||||
(0, "START_GAME"),
|
||||
(1, "PAUSE"),
|
||||
(2, "RESUME"),
|
||||
(3, "CLICK_MINE"),
|
||||
(4, "CLICK_POINT"),
|
||||
(5, "CLICK_EMPTY"),
|
||||
(6, "CLICK_FLAG"),
|
||||
(7, "GAME_OVER"),
|
||||
(8, "CLICK_NAIVE"),
|
||||
],
|
||||
default=game.models.EventTypes["START_GAME"],
|
||||
help_text="The game event",
|
||||
),
|
||||
),
|
||||
]
|
||||
51
game/migrations/0005_auto_20201106_2357.py
Normal file
51
game/migrations/0005_auto_20201106_2357.py
Normal file
@@ -0,0 +1,51 @@
|
||||
# Generated by Django 3.1.3 on 2020-11-06 23:57
|
||||
|
||||
from django.db import migrations, models
|
||||
import game.models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("game", "0004_auto_20201106_0453"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(model_name="gameevent", name="metadata",),
|
||||
migrations.AddField(
|
||||
model_name="gameevent",
|
||||
name="event_col",
|
||||
field=models.PositiveIntegerField(
|
||||
blank=True,
|
||||
default=None,
|
||||
help_text="Column on the board where the event occurred, if applicable",
|
||||
null=True,
|
||||
verbose_name="The column clicked",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="gameevent",
|
||||
name="event_row",
|
||||
field=models.PositiveIntegerField(
|
||||
blank=True,
|
||||
default=None,
|
||||
help_text="Row on the board where the event occurred, if applicable",
|
||||
null=True,
|
||||
verbose_name="The row clicked",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="game",
|
||||
name="status",
|
||||
field=models.IntegerField(
|
||||
choices=[
|
||||
(0, "NOT_PLAYED"),
|
||||
(1, "PLAYING"),
|
||||
(2, "PAUSED"),
|
||||
(3, "FINISHED"),
|
||||
],
|
||||
default=game.models.GameStatuses["NOT_PLAYED"],
|
||||
help_text="Actual game status",
|
||||
),
|
||||
),
|
||||
]
|
||||
19
game/migrations/0006_auto_20201107_0010.py
Normal file
19
game/migrations/0006_auto_20201107_0010.py
Normal file
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 3.1.3 on 2020-11-07 00:10
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("game", "0005_auto_20201106_2357"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name="gameevent", old_name="event_col", new_name="col",
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name="gameevent", old_name="event_row", new_name="row",
|
||||
),
|
||||
]
|
||||
33
game/migrations/0007_auto_20201107_0130.py
Normal file
33
game/migrations/0007_auto_20201107_0130.py
Normal file
@@ -0,0 +1,33 @@
|
||||
# Generated by Django 3.1.3 on 2020-11-07 01:30
|
||||
|
||||
from django.db import migrations
|
||||
import django_mysql.models
|
||||
import internal.utils
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("game", "0006_auto_20201107_0010"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="game",
|
||||
name="board_progress",
|
||||
field=django_mysql.models.JSONField(
|
||||
default=internal.utils.empty_list,
|
||||
help_text="This board is updated at each GameEvent recorded",
|
||||
verbose_name="Progress board",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="game",
|
||||
name="board",
|
||||
field=django_mysql.models.JSONField(
|
||||
default=internal.utils.empty_list,
|
||||
help_text="The generated board game",
|
||||
verbose_name="Generated board",
|
||||
),
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user