사용자:Senouis/리버티게임 안드로이드 애플리케이션: 두 판 사이의 차이

리버티게임, 모두가 만들어가는 자유로운 게임
11번째 줄: 11번째 줄:
* 크게 화면 상단의 문서 뷰어, 문서 편집 창, 팝업 메뉴로 나뉜다.
* 크게 화면 상단의 문서 뷰어, 문서 편집 창, 팝업 메뉴로 나뉜다.
* 앱 시작 시 [[리버티게임:대문]]을 기본적으로 보여준다.
* 앱 시작 시 [[리버티게임:대문]]을 기본적으로 보여준다.
== 뷰어 창 ==
=== 뷰어 창 ===
중앙의 화면과 아래의 문서 명이 적힌 텍스트 입력 상자가 존재
중앙의 화면과 아래의 문서 명이 적힌 텍스트 입력 상자가 존재
* action=parse로 미디어위키 API를 호출하면 mw-parser-output 클래스의 div태그로 감싸진 HTML Element들이 반환된다.
* action=parse로 미디어위키 API를 호출하면 mw-parser-output 클래스의 div태그로 감싸진 HTML Element들이 반환된다.

2024년 3월 18일 (월) 15:25 판

이 문서는 리버티게임 공식 안드로이드 앱에 대해 다룬다.

주어진 시간이 많지 않으므로 모바일 앱 개발 속도 하나는 정말 빠른 Delphi 11 Community Edition으로 개발할 예정

왜 필요한가?

미디어위키 엔진은 전통적으로 모바일 웹 브라우징에서 상당히 약한 모습을 보이는데, 적합한 스킨도 많지 않고(사이드바 기능도 없는 쓰레기 같은 미네르바 노이에가 기본값이다), CodeEditor가 오히려 편리한 데스크탑 환경과 달리 터치스크린 제스처가 기본인 모바일 환경은 타이핑이 어렵다는 점과 겹쳐 스마트폰으로 리버티게임에 게임을 만드는 기여를 어렵게 하고 있다.

무엇이 필요한가?

  • 크게 화면 상단의 문서 뷰어, 문서 편집 창, 팝업 메뉴로 나뉜다.
  • 앱 시작 시 리버티게임:대문을 기본적으로 보여준다.

뷰어 창

중앙의 화면과 아래의 문서 명이 적힌 텍스트 입력 상자가 존재

  • action=parse로 미디어위키 API를 호출하면 mw-parser-output 클래스의 div태그로 감싸진 HTML Element들이 반환된다.
  • CSS는 미디어위키:Common.css를 먼저 앱 내에 별도의 파일로 넣어두고, 추후에 가젯별 CSS을 앱에 포함하면서, 사용자 CSS 로드 기능을 추가할 필요가 있다.
    • 리버티게임 앱을 시작할 때 CSS 파일을 업데이트하는 기능?

편집 창

  • 편집 창을 열면 action=raw로 미디어위키 API를 호출하고 파싱하여 편집 창에 렌더링 + 유저가 편집 가능한지 확인(편집 불가일 경우 편집 창을 열지 않고 대신 action=raw의 결과만 보여줌)
  • 제스처 기반 문서 작성: 타이핑을 별도의 창으로 분리하고, 기본적으로 HTML Element 별로 편집하여 터치스크린 제스처로 문서 내 디스플레이 위치를 조정하게 하는 방법이 필요하다.
    • VisualEditor로도 텍스트의 화면 내 위치 지정은 불가능하므로, CSS 속성 지정(position:relative; + left 값 설정(기본 0%) + inline-size 값 설정(기본 100%) + overflow-wrap:break-word;)이 된 p 태그가 필요하다. 지금 이 설명문이 어떻게 보이는지 참조하라.

    • 데스크탑용 문법 삽입 상자와 다른 모바일 전용 문법 삽입 창이 필요하다: 해당 기능은 특정 미디어위키 확장 기능에 의존하므로, 확장 기능의 동작을 앱에서도 구현할 필요가 있다.
  • 필수 구현이 필요한 확장 기능

팝업 메뉴: 로그인/로그아웃 버튼과 설정

  • 로그인 안 된 상태에서 로그인 버튼을 누르면 ID/비밀번호 입력 칸 및 로그인 버튼이 있음
  • 미디어위키가 지원하는 OAuth 활용해 로그인: 리버티게임 계정과 앱을 연결
    • 2단계 인증 지원 필요: 본인 계정으로 테스트
  • 설정 창은 별도의 레이어 위에 보여줌
    • 앱 버전 표시, 글자 크기, 임시 저장 데이터 비우기, CSS 업데이트

그 외

  • 자동 저장 기능은 거의 필수다. 문서 별로 JSON 포맷의 임시 저장 파일을 만들자.
  • 파일명은 'TempEdit/(문서명).json' 혹은 'TempEdit/(문서명).(문단 제목).json'이 될 것이다.
    • 최초 로드 시 JSON에 action=raw의 저장 편집 탭의 저장 버튼을 누르면 JSON이 삭제된다.