Skip to content

Commit

Permalink
Merge pull request #243 from jeffreykirchner/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
jeffreykirchner authored Nov 15, 2023
2 parents 7083a3d + a8b4fae commit 3f367a2
Show file tree
Hide file tree
Showing 32 changed files with 570 additions and 264 deletions.
100 changes: 54 additions & 46 deletions main/consumers/staff/session_consumer_mixins/subject_updates.py
Original file line number Diff line number Diff line change
Expand Up @@ -1325,7 +1325,8 @@ async def hat_avatar(self, event):
error_mesage = ""

try:
player_id = self.session_players_local[event["player_key"]]["id"]
player_id = self.session_players_local[event["player_key"]]["id"]
source_player_id = event["message_text"]["source_player_id"]
target_player_id = event["message_text"]["target_player_id"]
type = event["message_text"]["type"]
except:
Expand All @@ -1340,35 +1341,24 @@ async def hat_avatar(self, event):
result["type"] = type

if type == "proposal_received":
result["source_player_id"] = target_player_id
result["target_player_id"] = player_id

source_player = self.world_state_avatars_local['session_players'][str(target_player_id)]
target_player = self.world_state_avatars_local['session_players'][str(player_id)]
result["source_player_id"] = source_player_id
result["target_player_id"] = target_player_id

source_avatar = self.world_state_local['avatars'][str(target_player_id)]
target_avatar = self.world_state_local['avatars'][str(player_id)]
source_player = self.world_state_avatars_local['session_players'][str(source_player_id)]
target_player = self.world_state_avatars_local['session_players'][str(target_player_id)]

result["source_player_hat_id"] = source_avatar["parameter_set_hat_id"]
result["target_player_hat_id"] = target_avatar["parameter_set_hat_id"]
target_avatar = self.world_state_local['avatars'][str(target_player_id)]

# v = await sync_to_async(sync_hat_avatar)(self.session_id, player_id, target_player_id)
#source player group
source_player_group_id = self.parameter_set_local["parameter_set_players"][str(source_player["parameter_set_player_id"])]["parameter_set_group"]
source_group = self.parameter_set_local["parameter_set_groups"][str(source_player_group_id)]

#swap values
source_avatar["parameter_set_hat_id"], target_avatar["parameter_set_hat_id"] = target_avatar["parameter_set_hat_id"], source_avatar["parameter_set_hat_id"]
#target avatar receives truce hat
target_avatar["parameter_set_hat_id"] = source_group["parameter_set_hat"]

source_player["cool_down"] = self.parameter_set_local["cool_down_length"]
target_player["cool_down"] = self.parameter_set_local["cool_down_length"]

source_player['interaction'] = 0
target_player['interaction'] = 0

source_player['frozen'] = False
target_player['frozen'] = False

target_player['tractor_beam_target'] = None

result["source_player"] = self.world_state_local["avatars"][str(target_player_id)]
result["target_player"] = self.world_state_local["avatars"][str(player_id)]

await Session.objects.filter(id=self.session_id).aupdate(world_state=self.world_state_local)
Expand All @@ -1377,22 +1367,38 @@ async def hat_avatar(self, event):
result["error_message"] = []

else:
result["source_player_id"] = player_id
status = "success"
error_mesage = []

result["source_player_id"] = source_player_id
result["target_player_id"] = target_player_id

source_player = self.world_state_avatars_local['session_players'][str(player_id)]
source_player = self.world_state_avatars_local['session_players'][str(source_player_id)]
target_player = self.world_state_avatars_local['session_players'][str(target_player_id)]

source_avatar = self.world_state_local['avatars'][str(player_id)]
target_avatar = self.world_state_local['avatars'][str(target_player_id)]
source_player_group_id = self.parameter_set_local["parameter_set_players"][str(source_player["parameter_set_player_id"])]["parameter_set_group"]
target_player_group_id = self.parameter_set_local["parameter_set_players"][str(target_player["parameter_set_player_id"])]["parameter_set_group"]

result["source_player_hat_id"] = source_avatar["parameter_set_hat_id"]
result["target_player_hat_id"] = target_avatar["parameter_set_hat_id"]
source_group = self.parameter_set_local["parameter_set_groups"][str(source_player_group_id)]
target_group = self.parameter_set_local["parameter_set_groups"][str(target_player_group_id)]

if source_group["parameter_set_hat"] == target_group["parameter_set_hat"]:
status = "fail"
error_mesage.append("You cannot have a truce with your own group.")

# source_avatar = self.world_state_local['avatars'][str(player_id)]
# target_avatar = self.world_state_local['avatars'][str(target_player_id)]

# result["source_player_hat_id"] = source_avatar["parameter_set_hat_id"]
# result["target_player_hat_id"] = target_avatar["parameter_set_hat_id"]

v = await self.tractor_beam(event)
#v = await self.tractor_beam(event)

# result["status"] = v["status"]
# result["error_message"] = v["error_message"]

result["status"] = v["status"]
result["error_message"] = v["error_message"]
result["status"] = status
result["error_message"] = error_mesage

await SessionEvent.objects.acreate(session_id=self.session_id,
session_player_id=player_id,
Expand Down Expand Up @@ -1429,28 +1435,29 @@ async def hat_avatar_cancel(self, event):
error_mesage = ""

try:
player_id = self.session_players_local[event["player_key"]]["id"]
player_id = self.session_players_local[event["player_key"]]["id"]
source_player_id = event["message_text"]["source_player_id"]
target_player_id = event["message_text"]["target_player_id"]
type = event["message_text"]["type"]
except:
logger.info(f"hat_avatar_cancel: invalid data, {event['message_text']}")
status = "fail"
error_mesage = "Invalid trade."

if type == "proposal":
source_player = self.world_state_avatars_local['session_players'][str(player_id)]
target_player = self.world_state_avatars_local['session_players'][str(target_player_id)]
# if type == "proposal":
source_player = self.world_state_avatars_local['session_players'][str(source_player_id)]
target_player = self.world_state_avatars_local['session_players'][str(target_player_id)]

source_avatar = self.world_state_local['avatars'][str(player_id)]
target_avatar = self.world_state_local['avatars'][str(target_player_id)]
# source_avatar = self.world_state_local['avatars'][str(source_player_id)]
# target_avatar = self.world_state_local['avatars'][str(target_player_id)]

# self.world_state_avatars_local["session_players"][str(player_id)]["cool_down"] = self.parameter_set_local["cool_down_length"]
else:
source_player = self.world_state_avatars_local['session_players'][str(target_player_id)]
target_player = self.world_state_avatars_local['session_players'][str(player_id)]
# # self.world_state_avatars_local["session_players"][str(player_id)]["cool_down"] = self.parameter_set_local["cool_down_length"]
# else:
# source_player = self.world_state_avatars_local['session_players'][str(target_player_id)]
# target_player = self.world_state_avatars_local['session_players'][str(player_id)]

source_avatar = self.world_state_local['avatars'][str(target_player_id)]
target_avatar = self.world_state_local['avatars'][str(player_id)]
# source_avatar = self.world_state_local['avatars'][str(target_player_id)]
# target_avatar = self.world_state_local['avatars'][str(player_id)]

# self.world_state_avatars_local["session_players"][str(target_player_id)]["cool_down"] = self.parameter_set_local["cool_down_length"]

Expand All @@ -1465,11 +1472,12 @@ async def hat_avatar_cancel(self, event):
source_player['tractor_beam_target'] = None

result = {"status" : status, "error_message" : error_mesage}
result["source_player_id"] = player_id

result["source_player_id"] = source_player_id
result["target_player_id"] = target_player_id

result["source_player_hat_id"] = source_avatar["parameter_set_hat_id"]
result["target_player_hat_id"] = target_avatar["parameter_set_hat_id"]
# result["source_player_hat_id"] = source_avatar["parameter_set_hat_id"]
# result["target_player_hat_id"] = target_avatar["parameter_set_hat_id"]

result["type"] = type

Expand Down
23 changes: 13 additions & 10 deletions main/consumers/staff/session_consumer_mixins/timer.py
Original file line number Diff line number Diff line change
Expand Up @@ -289,15 +289,15 @@ def sync_continue_timer(event, session_id, world_state, parameter_set):
#store data for last period
for i in world_state["avatars"]:
sd_player = summary_data_last[i]
avatar = world_state["avatars"][i]

#health at end
sd_player["end_health"] = world_state["avatars"][i]["health"]
sd_player["end_health"] = avatar["health"]

#hat
sd_player["hat_at_end"] = world_state["avatars"][i]["parameter_set_hat_id"]
sd_player["hat_at_end"] = avatar["parameter_set_hat_id"]

#inventory
avatar = world_state["avatars"][i]
#inventory
for k in main.globals.Goods.choices:
sd_player["house_" + k[0]] = world_state["houses"][str(avatar["parameter_set_player_id"])][k[0]]
sd_player["avatar_" + k[0]] = avatar[k[0]]
Expand All @@ -312,16 +312,19 @@ def sync_continue_timer(event, session_id, world_state, parameter_set):
current_session_period = session.get_current_session_period()
summary_data_current = current_session_period.summary_data

#store data for last period
for i in world_state["avatars"]:
sd_player = summary_data_current[i]
# session.world_state["session_players"][i]["earnings"] += session.world_state["session_players"][i]["inventory"][current_period_id]

# earnings[i] = {}
# earnings[i]["total_earnings"] = 0
# earnings[i]["period_earnings"] = 0
avatar = world_state["avatars"][i]

#store starting health
sd_player["start_health"] = world_state["avatars"][i]["health"]
sd_player["start_health"] = avatar["health"]

#reset hats
if current_period % parameter_set["break_frequency"] == 0:
for i in world_state["avatars"]:
avatar = world_state["avatars"][i]
avatar["parameter_set_hat_id"] = None

current_session_period.save()
# session.save()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ def take_update_parameter_set_ground(data):
form_data = data["form_data"]

try:
session = Session.objects.get(id=session_id)
parameter_set_ground = ParameterSetGround.objects.get(id=parameterset_ground_id)
except ObjectDoesNotExist:
logger.warning(f"take_update_parameter_set_ground, not found ID: {parameterset_ground_id}")
Expand All @@ -75,6 +76,7 @@ def take_update_parameter_set_ground(data):
logger.info(f'form_data_dict : {form_data_dict}')

form = ParameterSetGroundForm(form_data_dict, instance=parameter_set_ground)
form.fields["parameter_set_group"].queryset = session.parameter_set.parameter_set_groups.all()

if form.is_valid():
form.save()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ def take_update_parameter_set_group(data):
logger.info(f'form_data_dict : {form_data_dict}')

form = ParameterSetGroupForm(form_data_dict, instance=parameter_set_group)
form.fields["parameter_set_hat"].queryset = session.parameter_set.parameter_set_hats.all()

if form.is_valid():
form.save()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ def take_update_parameter_set_notice(data):
form_data = data["form_data"]

try:
session = Session.objects.get(id=session_id)
parameter_set_notice = ParameterSetNotice.objects.get(id=parameterset_notice_id)
except ObjectDoesNotExist:
logger.warning(f"take_update_parameter_set_notice parameterset_notice, not found ID: {parameterset_notice_id}")
Expand All @@ -75,6 +76,7 @@ def take_update_parameter_set_notice(data):
logger.info(f'form_data_dict : {form_data_dict}')

form = ParameterSetNoticeForm(form_data_dict, instance=parameter_set_notice)
form.fields["help_doc"].queryset = session.parameter_set.instruction_set.help_docs_subject.all()

if form.is_valid():
form.save()
Expand Down
34 changes: 15 additions & 19 deletions main/consumers/staff_subject_update_mixin.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,21 @@ async def help_doc(self, event):
'''
help doc request
'''
result = await sync_to_async(take_help_doc)(event["message_text"])
logger = logging.getLogger(__name__)
# result = await sync_to_async(take_help_doc)(event["message_text"])

data = event["message_text"]
result = {}

try:
help_doc = await HelpDocs.objects.aget(title=data["title"])

result = {"value" : "success",
"result" : {"help_doc" : await help_doc.ajson()}}
except ObjectDoesNotExist:
logger.warning(f"take_help_doc not found : {data}")
result = {"value" : "fail",
"message" : "Document Not Found."}

message_data = {}
message_data["status"] = result
Expand All @@ -36,23 +50,5 @@ async def help_doc(self, event):
# Send reply to sending channel
await self.send(text_data=json.dumps({'message': message}, cls=DjangoJSONEncoder))

def take_help_doc(data):
'''
help doc text request
'''

logger = logging.getLogger(__name__)
logger.info(f"Take help doc: {data}")

try:

help_doc = HelpDocs.objects.get(title=data["title"])
except ObjectDoesNotExist:
logger.warning(f"take_help_doc not found : {data}")
return {"value" : "fail", "message" : "Document Not Found."}

return {"value" : "success",
"result" : {"help_doc" : help_doc.json()}}



9 changes: 7 additions & 2 deletions main/forms/parameter_set_ground_form.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
'''

from django import forms
from django.db.models.query import RawQuerySet

from main.models import ParameterSetGround
from main.models import ParameterSetGroup

class ParameterSetGroundForm(forms.ModelForm):
'''
Expand All @@ -15,6 +15,11 @@ class ParameterSetGroundForm(forms.ModelForm):
info = forms.CharField(label='Info',
required=False,
widget=forms.TextInput(attrs={"v-model":"current_parameter_set_ground.info",}))

parameter_set_group = forms.ModelChoiceField(label='Group',
required=False,
queryset=ParameterSetGroup.objects.none(),
widget=forms.Select(attrs={"v-model":"current_parameter_set_ground.parameter_set_group",}))

x = forms.IntegerField(label='X Location',
min_value=0,
Expand Down Expand Up @@ -67,5 +72,5 @@ class ParameterSetGroundForm(forms.ModelForm):

class Meta:
model=ParameterSetGround
fields =['info', 'x', 'y', 'width', 'height', 'tint', 'texture', 'rotation', 'scale']
fields =['info', 'parameter_set_group', 'x', 'y', 'width', 'height', 'tint', 'texture', 'rotation', 'scale']

10 changes: 7 additions & 3 deletions main/forms/parameter_set_group_form.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from django import forms

from main.models import ParameterSetGroup
from main.models import ParameterSetHat

class ParameterSetGroupForm(forms.ModelForm):
'''
Expand All @@ -13,10 +14,13 @@ class ParameterSetGroupForm(forms.ModelForm):

name = forms.CharField(label='Name',
widget=forms.TextInput(attrs={"v-model":"current_parameter_set_group.name",}))



parameter_set_hat = forms.ModelChoiceField(label='Hat',
required=False,
queryset=ParameterSetHat.objects.none(),
widget=forms.Select(attrs={"v-model":"current_parameter_set_group.parameter_set_hat",}))

class Meta:
model=ParameterSetGroup
fields =['name',]
fields =['name', 'parameter_set_hat']

8 changes: 7 additions & 1 deletion main/forms/parameter_set_notice_form.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from django import forms

from main.models import ParameterSetNotice
from main.models import HelpDocsSubject

class ParameterSetNoticeForm(forms.ModelForm):
'''
Expand Down Expand Up @@ -38,8 +39,13 @@ class ParameterSetNoticeForm(forms.ModelForm):
widget=forms.NumberInput(attrs={"v-model":"current_parameter_set_notice.end_time",
"step":"1",
"min":"0"}))

help_doc = forms.ModelChoiceField(label='Optional Help Doc Pop-Up',
required=False,
queryset=HelpDocsSubject.objects.none(),
widget=forms.Select(attrs={"v-model":"current_parameter_set_notice.help_doc",}))

class Meta:
model=ParameterSetNotice
fields =[ 'text', 'start_period', 'start_time', 'end_period', 'end_time']
fields =[ 'text', 'start_period', 'start_time', 'end_period', 'end_time', 'help_doc']

19 changes: 19 additions & 0 deletions main/migrations/0123_parametersetground_parameter_set_group.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Generated by Django 4.2.5 on 2023-11-13 22:06

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('main', '0122_parametersetbarrier_parameter_set_players'),
]

operations = [
migrations.AddField(
model_name='parametersetground',
name='parameter_set_group',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='parameter_set_grounds_b', to='main.parametersetgroup'),
),
]
Loading

0 comments on commit 3f367a2

Please sign in to comment.