File size: 4,155 Bytes
b7d75f3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
"""

테마 관련 유틸리티 함수를 제공하는 모듈

"""
import streamlit as st
from PIL import Image

def create_theme_image(theme):
    """테마별 이미지/박스 생성"""
    if theme == "fantasy":
        color = "#4b5d78"
        text = "판타지"
    elif theme == "sci-fi":
        color = "#3a7b9c"
        text = "SF"
    else:  # dystopia
        color = "#8b4045"
        text = "디스토피아"
    
    # HTML로 색상 박스 표시
    return f"""

    <div class="theme-box" style="background-color: {color};">

        {text}

    </div>

    """

def get_theme_description(theme):
    """테마에 대한 상세 설명 제공"""
    theme_descriptions = {
        "fantasy": """

        <p><strong>판타지 세계</strong>는 마법, 신화적 생물, 영웅적 모험이 가득한 세계입니다.</p>

        <p>중세 시대를 연상시키는 배경에 마법과 신비로운 존재들이 공존하며, 

        고대의 유물, 잊혀진 주문서, 드래곤과 같은 전설적 생물들이 있습니다.</p>

        <p>당신은 이 세계에서 마법사, 전사, 도적, 성직자 등 다양한 직업을 가진 모험가가 될 수 있습니다.</p>

        """,
        
        "sci-fi": """

        <p><strong>SF(공상과학) 세계</strong>는 미래 기술, 우주 탐험, 외계 생명체가 존재하는 세계입니다.</p>

        <p>첨단 기술, 우주선, 인공지능, 외계 행성 등이 배경이 되며, 

        인류의 미래 또는 다른 행성계의 이야기를 다룹니다.</p>

        <p>당신은 우주 파일럿, 사이버 해커, 외계종족 전문가 등 미래 지향적인 직업을 가진 캐릭터가 될 수 있습니다.</p>

        """,
        
        "dystopia": """

        <p><strong>디스토피아 세계</strong>는 암울한 미래, 억압적인 사회 체제, 환경 재앙 이후의 세계를 그립니다.</p>

        <p>종종 파괴된 문명의 폐허, 독재 정권, 자원 부족, 계급 사회 등을 배경으로 하며, 

        생존과 자유를 위한 투쟁이 중심 주제입니다.</p>

        <p>당신은 저항군 요원, 밀수업자, 정보 브로커 등 어두운 세계에서 살아남기 위한 직업을 가진 캐릭터가 될 수 있습니다.</p>

        """
    }
    
    return theme_descriptions.get(theme, "")

def get_location_image(location, theme):
    """위치 이미지 생성 함수 (플레이스홀더)"""
    colors = {
        'fantasy': (100, 80, 200),
        'sci-fi': (80, 180, 200),
        'dystopia': (200, 100, 80)
    }
    color = colors.get(theme, (150, 150, 150))
    
    # 색상 이미지 생성
    img = Image.new('RGB', (400, 300), color)
    return img

def setup_responsive_layout():
    """반응형 레이아웃 설정"""
    # 디스플레이 모드 설정 옵션 추가
    display_mode = st.sidebar.radio(
        "디스플레이 모드:",
        ["데스크톱", "모바일"],
        horizontal=True
    )
    
    # 모바일 모드 설정
    st.session_state.is_mobile = (display_mode == "모바일")
    
    # 모바일 모드일 때 사이드바에 추가 메뉴
    if st.session_state.is_mobile:
        st.sidebar.markdown("### 모바일 네비게이션")
        
        # 게임 플레이 단계에서만 패널 선택 옵션 표시
        if st.session_state.get('stage') == 'game_play':
            panel_options = ["스토리", "캐릭터 정보", "게임 도구"]
            current_panel = st.session_state.get('mobile_panel', "스토리")
            
            selected_panel = st.sidebar.radio(
                "표시할 패널:",
                panel_options,
                index=panel_options.index(current_panel)
            )
            
            if selected_panel != current_panel:
                st.session_state.mobile_panel = selected_panel
                st.rerun()

def is_mobile():
    """현재 기기가 모바일인지 확인"""
    # 세션 상태에 설정된 모바일 모드 값 반환
    return st.session_state.get('is_mobile', False)