Skip to content

Commit 98b4246

Browse files
Merge pull request #314 from jeffreykirchner/dev
add period_on_modulus to barriers.
2 parents 5343edd + 5acbdbd commit 98b4246

File tree

7 files changed

+93
-7
lines changed

7 files changed

+93
-7
lines changed

main/forms/parameter_set_barrier_form.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,21 @@ class ParameterSetBarrierForm(forms.ModelForm):
7777
widget=forms.NumberInput(attrs={"v-model":"current_parameter_set_barrier.period_off",
7878
"step":"1",
7979
"min":"2"}))
80+
81+
period_on_modulus = forms.IntegerField(label='Period On Modulus',
82+
min_value=1,
83+
widget=forms.NumberInput(attrs={"v-model":"current_parameter_set_barrier.period_on_modulus",
84+
"step":"1",
85+
"min":"1"}))
86+
87+
period_on_modulus_answer = forms.IntegerField(label='Period On Modulus Answer',
88+
min_value=0,
89+
widget=forms.NumberInput(attrs={"v-model":"current_parameter_set_barrier.period_on_modulus_answer",
90+
"step":"1",
91+
"min":"0"}))
8092

8193
class Meta:
8294
model=ParameterSetBarrier
83-
fields =['info', 'text', 'rotation', 'parameter_set_groups', 'parameter_set_players', 'start_x', 'start_y', 'width', 'height', 'period_on', 'period_off']
95+
fields =['info', 'text', 'rotation', 'parameter_set_groups', 'parameter_set_players', 'start_x', 'start_y',
96+
'width', 'height', 'period_on', 'period_off', 'period_on_modulus', 'period_on_modulus_answer']
8497

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Generated by Django 4.2.13 on 2024-06-25 17:03
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('main', '0130_session_replay_data'),
10+
]
11+
12+
operations = [
13+
migrations.AlterModelOptions(
14+
name='session',
15+
options={'base_manager_name': 'objects', 'ordering': ['-start_date'], 'verbose_name': 'Session', 'verbose_name_plural': 'Sessions'},
16+
),
17+
migrations.AddField(
18+
model_name='parametersetbarrier',
19+
name='period_on_modulus',
20+
field=models.IntegerField(default=100, verbose_name='Period On Modulus'),
21+
),
22+
]
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 4.2.13 on 2024-06-25 18:15
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('main', '0131_alter_session_options_and_more'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='parametersetbarrier',
15+
name='period_on_modulus_answer',
16+
field=models.IntegerField(default=0, verbose_name='Period On Modulus Answer'),
17+
),
18+
]
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 4.2.13 on 2024-06-25 18:18
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('main', '0132_parametersetbarrier_period_on_modulus_answer'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='parametersetbarrier',
15+
name='period_on_modulus',
16+
field=models.IntegerField(default=100, verbose_name='Period On Modulus'),
17+
),
18+
]

main/models/parameter_set_barrier.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ class ParameterSetBarrier(models.Model):
3434
period_on = models.IntegerField(verbose_name='Period On', default=1) #period when barrier is on
3535
period_off = models.IntegerField(verbose_name='Period Off', default=14) #period when barrier is off
3636

37+
period_on_modulus = models.IntegerField(verbose_name='Period On Modulus', default=100) #if current period mod period_on_modulus == period_on_modulus_answer, barrier is on
38+
period_on_modulus_answer = models.IntegerField(verbose_name='Period On Modulus Answer', default=0) #if current period mod period_on_modulus == period_on_modulus_answer, barrier is on
39+
3740
timestamp = models.DateTimeField(auto_now_add=True)
3841
updated= models.DateTimeField(auto_now=True)
3942

@@ -64,6 +67,9 @@ def from_dict(self, new_ps):
6467
self.period_on = new_ps.get("period_on", 1)
6568
self.period_off = new_ps.get("period_off", 14)
6669

70+
self.period_on_modulus = new_ps.get("period_on_modulus", 1)
71+
self.period_on_modulus_answer = new_ps.get("period_on_modulus_answer", 0)
72+
6773
self.save()
6874

6975
message = "Parameters loaded successfully."
@@ -105,6 +111,8 @@ def json(self):
105111
"parameter_set_players" : [player.id for player in self.parameter_set_players.all()],
106112
"period_on" : self.period_on,
107113
"period_off" : self.period_off,
114+
"period_on_modulus" : self.period_on_modulus,
115+
"period_on_modulus_answer" : self.period_on_modulus_answer,
108116
}
109117

110118
def get_json_for_subject(self, update_required=False):

main/templates/staff/staff_session_parameters/barriers/barriers_card.html

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,10 @@
4343
</th>
4444
<th scope="col" class = "m-1 p-1">
4545
Period On/Off
46-
</th>
46+
</th>
47+
<th scope="col" class = "m-1 p-1">
48+
Period On Mod/Answer
49+
</th>
4750
</tr>
4851
</thead>
4952
<tbody id="barrier_list">
@@ -91,9 +94,12 @@
9194
</td>
9295
<td v-on:click="show_edit_parameter_set_barrier(p)"
9396
class="player_table_cell">
94-
[[temp_p.period_on]], [[temp_p.period_off]]
97+
[[temp_p.period_on]], [[temp_p.period_off]], [[temp_p.period_on_modulus]]
98+
</td>
99+
<td v-on:click="show_edit_parameter_set_barrier(p)"
100+
class="player_table_cell">
101+
[[temp_p.period_on_modulus]], [[temp_p.period_on_modulus_answer]]
95102
</td>
96-
97103
</tr>
98104
</tbody>
99105

main/templates/subject/subject_home/the_stage/barriers.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,15 +98,16 @@ check_barriers_intersection: function check_barriers_intersection(rect1, paramet
9898
/**
9999
* update barriers
100100
*/
101-
update_barriers: function()
101+
update_barriers: function update_barriers()
102102
{
103103
for(let i in app.session.parameter_set.parameter_set_barriers)
104104
{
105105
let barrier = app.session.parameter_set.parameter_set_barriers[i];
106106
let barrier_container = pixi_barriers[i].barrier_container;
107107

108-
if(app.session.world_state.current_period >= barrier.period_on &&
109-
app.session.world_state.current_period < barrier.period_off)
108+
if((app.session.world_state.current_period >= barrier.period_on &&
109+
app.session.world_state.current_period < barrier.period_off) ||
110+
app.session.world_state.current_period % barrier.period_on_modulus == barrier.period_on_modulus_answer)
110111
{
111112
barrier_container.visible = true;
112113
}

0 commit comments

Comments
 (0)