mirror of
				https://github.com/evgen-app/chess_rpg_backend.git
				synced 2025-10-30 23:37:25 +03:00 
			
		
		
		
	created logic to process hero movement, removed drf_yasg
This commit is contained in:
		
							parent
							
								
									7812e982b0
								
							
						
					
					
						commit
						79a4d75730
					
				|  | @ -28,21 +28,18 @@ INSTALLED_APPS = [ | ||||||
|     "room", |     "room", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| if DEBUG: |  | ||||||
|     INSTALLED_APPS.append("drf_yasg") |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| TEMPLATES = [ | TEMPLATES = [ | ||||||
|     { |     { | ||||||
|         'BACKEND': 'django.template.backends.django.DjangoTemplates', |         "BACKEND": "django.template.backends.django.DjangoTemplates", | ||||||
|         'DIRS': [], |         "DIRS": [], | ||||||
|         'APP_DIRS': True, |         "APP_DIRS": True, | ||||||
|         'OPTIONS': { |         "OPTIONS": { | ||||||
|             'context_processors': [ |             "context_processors": [ | ||||||
|                 'django.template.context_processors.debug', |                 "django.template.context_processors.debug", | ||||||
|                 'django.template.context_processors.request', |                 "django.template.context_processors.request", | ||||||
|                 'django.contrib.auth.context_processors.auth', |                 "django.contrib.auth.context_processors.auth", | ||||||
|                 'django.contrib.messages.context_processors.messages', |                 "django.contrib.messages.context_processors.messages", | ||||||
|             ], |             ], | ||||||
|         }, |         }, | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
|  | @ -1,48 +1,9 @@ | ||||||
| from django.conf import settings | from django.conf import settings | ||||||
| from django.conf.urls.static import static | from django.conf.urls.static import static | ||||||
| from django.template.defaulttags import url |  | ||||||
| from django.urls import path, include, re_path | from django.urls import path, include, re_path | ||||||
| 
 | 
 | ||||||
| # openapi schema |  | ||||||
| from rest_framework import permissions |  | ||||||
| from drf_yasg.views import get_schema_view |  | ||||||
| from drf_yasg import openapi |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| schema_view = get_schema_view( |  | ||||||
|     openapi.Info( |  | ||||||
|         title="Snippets API", |  | ||||||
|         default_version="v1", |  | ||||||
|         description="Test description", |  | ||||||
|         terms_of_service="https://www.google.com/policies/terms/", |  | ||||||
|         contact=openapi.Contact(email="contact@snippets.local"), |  | ||||||
|         license=openapi.License(name="BSD License"), |  | ||||||
|     ), |  | ||||||
|     public=True, |  | ||||||
|     permission_classes=(permissions.AllowAny,), |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| urlpatterns = ( | urlpatterns = ( | ||||||
|     [path("api/", include("game.urls"))] |     [path("api/", include("game.urls"))] | ||||||
|     + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) |     + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) | ||||||
|     + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) |     + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) | ||||||
| ) | ) | ||||||
| 
 |  | ||||||
| if settings.DEBUG: |  | ||||||
|     urlpatterns += [ |  | ||||||
|         re_path( |  | ||||||
|             r"^swagger(?P<format>\.json|\.yaml)$", |  | ||||||
|             schema_view.without_ui(cache_timeout=0), |  | ||||||
|             name="schema-json", |  | ||||||
|         ), |  | ||||||
|         re_path( |  | ||||||
|             r"^swagger/$", |  | ||||||
|             schema_view.with_ui("swagger", cache_timeout=0), |  | ||||||
|             name="schema-swagger-ui", |  | ||||||
|         ), |  | ||||||
|         re_path( |  | ||||||
|             r"^redoc/$", |  | ||||||
|             schema_view.with_ui("redoc", cache_timeout=0), |  | ||||||
|             name="schema-redoc", |  | ||||||
|         ), |  | ||||||
|     ] |  | ||||||
|  |  | ||||||
|  | @ -10,10 +10,9 @@ def create_first_deck(player: Player): | ||||||
|         [None, None, None, None, None, None, None, None], |         [None, None, None, None, None, None, None, None], | ||||||
|     ] |     ] | ||||||
|     types = ( |     types = ( | ||||||
|         ["KING"] |         ["KING", "WIZARD"] | ||||||
|         + ["ARCHER" for _ in range(4)] |         + ["ARCHER" for _ in range(4)] | ||||||
|         + ["WARRIOR" for _ in range(6)] |         + ["WARRIOR" for _ in range(6)] | ||||||
|         + ["WIZARD" for _ in range(2)] |  | ||||||
|         + [random.choice(HeroTypes.choices[:2])[0] for _ in range(3)] |         + [random.choice(HeroTypes.choices[:2])[0] for _ in range(3)] | ||||||
|     ) |     ) | ||||||
|     for t in types: |     for t in types: | ||||||
|  | @ -26,6 +25,10 @@ def create_first_deck(player: Player): | ||||||
|             pos_x = 4 |             pos_x = 4 | ||||||
|             pos_y = 0 |             pos_y = 0 | ||||||
|             positions[0][4] = hero |             positions[0][4] = hero | ||||||
|  |         elif t == "WIZARD": | ||||||
|  |             pos_x = 3 | ||||||
|  |             pos_y = 0 | ||||||
|  |             positions[0][3] = hero | ||||||
|         else: |         else: | ||||||
|             pos_x = random.randint(0, 7) |             pos_x = random.randint(0, 7) | ||||||
|             pos_y = random.randint(0, 1) |             pos_y = random.randint(0, 1) | ||||||
|  |  | ||||||
|  | @ -4,7 +4,6 @@ import django | ||||||
| 
 | 
 | ||||||
| from asgiref.sync import sync_to_async | from asgiref.sync import sync_to_async | ||||||
| from channels.generic.websocket import AsyncWebsocketConsumer | from channels.generic.websocket import AsyncWebsocketConsumer | ||||||
| from channels.layers import get_channel_layer |  | ||||||
| 
 | 
 | ||||||
| os.environ.setdefault("DJANGO_SETTINGS_MODULE", "chess_backend.settings") | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "chess_backend.settings") | ||||||
| django.setup() | django.setup() | ||||||
|  |  | ||||||
|  | @ -1,3 +1,25 @@ | ||||||
| def move_handler(prev_x, prev_y, x, y, room, player): | from room.models import HeroInGame, Room, PlayerInRoom | ||||||
|     # TODO: implement move logic + check user identity | 
 | ||||||
|     pass | 
 | ||||||
|  | def _check_move_position(x: int, y: int, room: Room, p_first: bool): | ||||||
|  |     hero = HeroInGame.objects.filter(x=x, y=y, room=room) | ||||||
|  |     if not hero.exists(): | ||||||
|  |         return False | ||||||
|  |     elif hero.first() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def move_handler(prev_x: int, prev_y: int, x: int, y: int, room: Room, player: PlayerInRoom): | ||||||
|  |     try: | ||||||
|  |         hero = HeroInGame.objects.get(x=prev_x, y=prev_y, room=room, player=player) | ||||||
|  |     except HeroInGame.DoesNotExist: | ||||||
|  |         return False | ||||||
|  | 
 | ||||||
|  |     h_t = hero.hero.type | ||||||
|  |     if h_t == "KING": | ||||||
|  |         if abs(prev_x - x) != 1 or abs(prev_y - y) != 1: | ||||||
|  |             return False | ||||||
|  |     elif h_t == "WARRIOR": | ||||||
|  |         if player.first: | ||||||
|  |             if x - prev_x == 1 and y - prev_y == 0: | ||||||
|  |                 _check_move_position(x, y, room, True) | ||||||
|  | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user