diff --git a/hwe/scss/.htaccess b/hwe/scss/.htaccess new file mode 100644 index 00000000..698196ae --- /dev/null +++ b/hwe/scss/.htaccess @@ -0,0 +1 @@ +Deny from all \ No newline at end of file diff --git a/hwe/scss/game_bg.scss b/hwe/scss/game_bg.scss new file mode 100644 index 00000000..7c4197f6 --- /dev/null +++ b/hwe/scss/game_bg.scss @@ -0,0 +1,26 @@ +@charset "UTF-8"; + +@import url('https://fonts.googleapis.com/css2?family=Nanum+Gothic:wght@400;700&display=swap'); +@import '../../d_shared/common.css'; + +html { + background: black; + max-height: 1000000px; + font-family: 'Nanum Gothic', sans-serif; + color: white; +} + +table.tb_layout { + border-collapse: collapse; + padding: 0px; + font-size: 13px; + word-break: break-all; +} + +.tb_layout td, +.tb_layout th { + border: solid 1px gray; + padding: 0px; + word-break: break-all; + ; +} diff --git a/hwe/ts/.htaccess b/hwe/ts/.htaccess new file mode 100644 index 00000000..698196ae --- /dev/null +++ b/hwe/ts/.htaccess @@ -0,0 +1 @@ +Deny from all \ No newline at end of file diff --git a/hwe/ts/@types/bootstrap.d.ts b/hwe/ts/@types/bootstrap.d.ts new file mode 100644 index 00000000..4318b6df --- /dev/null +++ b/hwe/ts/@types/bootstrap.d.ts @@ -0,0 +1,663 @@ +// Type definitions for Bootstrap 4.6 +// Project: https://github.com/twbs/bootstrap/, https://getbootstrap.com +// Definitions by: denisname +// Piotr Błażejewicz +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.3 + +/// + +import * as Popper from "popper.js"; + +export as namespace Bootstrap; + +// -------------------------------------------------------------------------- +// Some Types and Interfaces +// -------------------------------------------------------------------------- + +export type Placement = "auto" | "top" | "bottom" | "left" | "right"; + +export type Trigger = "click" | "hover" | "focus" | "manual" | + "click hover" | "click focus" | "hover focus" | + "click hover focus"; + +export interface Delay { + show: number; + hide: number; +} + +export interface TooltipInstance { + config: T; + element: Element; + tip: HTMLElement; +} + +export interface OffsetsExtend { + popper?: Partial | undefined; + reference?: Partial | undefined; +} + +// -------------------------------------------------------------------------------------- +// Options Interfaces +// -------------------------------------------------------------------------------------- + +export interface CarouselOption { + /** + * The amount of time to delay between automatically cycling an item. If false, carousel will not automatically cycle. + * + * @default 5000 + */ + interval?: false | number | undefined; + + /** + * Whether the carousel should react to keyboard events. + * + * @default true + */ + keyboard?: boolean | undefined; + + /** + * Use to easily control the position of the carousel. It accepts the keywords prev or next, which alters the slide position + * relative to its current position. Alternatively, use `data-slide-to` to pass a raw slide index to the carousel. + * + * @default false + */ + slide?: "next" | "prev" | false | undefined; + + /** + * If set to "hover", pauses the cycling of the carousel on `mouseenter` and resumes the cycling of the carousel on `mouseleave`. + * If set to false, hovering over the carousel won't pause it. + * + * On touch-enabled devices, when set to "hover", cycling will pause on `touchend` (once the user finished interacting with the carousel) + * for two intervals, before automatically resuming. Note that this is in addition to the above mouse behavior. + * + * @default "hover" + */ + pause?: "hover" | false | undefined; + + /** + * Autoplays the carousel after the user manually cycles the first item. + * If `carousel`, autoplays the carousel on load. + * @default false + */ + ride?: 'carousel' | boolean | undefined; + + /** + * Whether the carousel should cycle continuously or have hard stops. + * + * @default true + */ + wrap?: boolean | undefined; + + /** + * Whether the carousel should support left/right swipe interactions on touchscreen devices. + * + * @default true + */ + touch?: boolean | undefined; +} + +export interface CollapseOption { + /** + * If parent is provided, then all collapsible elements under the specified parent will be closed when + * this collapsible item is shown. (similar to traditional accordion behavior - this is dependent on the card class). + * The attribute has to be set on the target collapsible area. + * + * @default "" + */ + parent?: string | JQuery | Element | undefined; + + /** + * Toggles the collapsible element on invocation. + * + * @default true + */ + toggle?: boolean | undefined; +} + +export interface DropdownOption { + /** + * Offset of the dropdown relative to its target. + * For more information refer to Popper.js's offset docs. + * + * @default 0 + */ + offset?: number | string | ((this: DropdownOption, offset: OffsetsExtend) => OffsetsExtend) | undefined; + + /** + * Allow Dropdown to flip in case of an overlapping on the reference element. + * For more information refer to Popper.js's flip docs. + * + * @default true + */ + flip?: boolean | undefined; + + /** + * Overflow constraint boundary of the dropdown menu. + * Accepts the values of 'viewport', 'window', 'scrollParent', or an HTMLElement reference (JavaScript only). + * For more information refer to Popper.js's preventOverflow docs. + * + * @default "scrollParent" + */ + boundary?: Popper.Boundary | HTMLElement | undefined; + + /** + * Reference element of the dropdown menu. Accepts the values of 'toggle', 'parent', or an HTMLElement reference. + * For more information refer to Popper.js's referenceObject docs. + * + * @default "toggle" + */ + reference?: "toggle" | "parent" | HTMLElement | undefined; + + /** + * By default, we use Popper.js for dynamic positioning. Disable this with 'static'. + * + * @default "dynamic" + */ + display?: "dynamic" | "static" | undefined; +} + +export interface ModalOption { + /** + * Includes a modal-backdrop element. + * Alternatively, specify `static` for a backdrop which doesn't close the modal on click. + * + * @default true + */ + backdrop?: boolean | "static" | undefined; + + /** + * Closes the modal when escape key is pressed. + * + * @default true + */ + keyboard?: boolean | undefined; + + /** + * Puts the focus on the modal when initialized. + * + * @default true + */ + focus?: boolean | undefined; + + /** + * Shows the modal when initialized. + * + * @default true + */ + show?: boolean | undefined; +} + +export interface PopoverOption extends TooltipOption { + /** + * Default content value if `data-content` attribute isn't present. + * If a function is given, it will be called with its `this` reference + * set to the element that the popover is attached to. + * + * @default "" + */ + content?: string | Element | ((this: Element) => string | Element) | undefined; +} + +export interface ScrollspyOption { + /** + * Finds which section the spied element is in: + * * `auto` will choose the best method get scroll coordinates. + * * `offset` will use jQuery offset method to get scroll coordinates. + * * `position` will use jQuery position method to get scroll coordinates. + * + * @default "auto" + */ + method?: "auto" | "offset" | "position" | undefined; + + /** + * Pixels to offset from top when calculating position of scroll. + * + * @default 10 + */ + offset?: number | undefined; + + /** + * A selector of the parent element or the parent element itself + * of any Bootstrap `.nav` or `.list-group` component. + * + * @default "" + */ + target?: string | JQuery | Element | undefined; +} + +export interface ToastOption { + /** + * Apply a CSS fade transition to the toast. + * + * @default true + */ + animation?: boolean | undefined; + + /** + * Auto hide the toast. + * + * @default true + */ + autohide?: boolean | undefined; + + /** + * Delay hiding the toast in millisecond. + * + * @default 500 + */ + delay?: number | undefined; +} + +export interface TooltipOption { + /** + * Apply a CSS fade transition to the tooltip or popover. + * + * @default true + */ + animation?: boolean | undefined; + + /** + * Appends the tooltip or popover to a specific element. Example: `container: 'body'`. + * This option is particularly useful in that it allows you to position the tooltip or popover + * in the flow of the document near the triggering element - which will prevent + * it from floating away from the triggering element during a window resize. + * + * @default false + */ + container?: string | Element | false | undefined; + + /** + * Delay showing and hiding the tooltip or popover (ms) - does not apply to manual trigger type. + * If a number is supplied, delay is applied to both hide/show. + * Object structure is: `delay: { "show": 500, "hide": 100 }`. + * + * @default 0 + */ + delay?: number | Delay | undefined; + + /** + * Allow HTML in the tooltip or popover. + * If true, HTML tags will be rendered in the tooltip or popover. + * If false, jQuery's text method will be used to insert content into the DOM. + * Use text if you're worried about XSS attacks. + * + * @default false + */ + html?: boolean | undefined; + + /** + * How to position the tooltip or popover - auto | top | bottom | left | right. + * When "auto" is specified, it will dynamically reorient the tooltip or popover. + * + * When a function is used to determine the placement, it is called with + * the tooltip or popover DOM node as its first argument and the triggering element DOM node as its second. + * The `this` context is set to the tooltip or popover instance. + * + * @default tooltip: "top", popover: "right" + */ + placement?: Placement | ((this: TooltipInstance, node: HTMLElement, trigger: Element) => Placement) | undefined; + + /** + * If a selector is provided, tooltip or popover objects will be delegated to the specified targets. + * In practice, this is used to enable dynamic HTML content to have popovers added. + * + * @default false + */ + selector?: string | false | undefined; + + /** + * Base HTML to use when creating the tooltip or popover. + * The tooltip's (resp., popover's) title will be injected into the `.tooltip-inner` (resp., `.popover-header`). + * The `.arrow` will become the tooltip's (resp., popover's) arrow. + * The outermost wrapper element should have the `.tooltip` (resp., .popover) class and `role="tooltip"`. + * + * @default '' + * @default '' + */ + template?: string | undefined; + + /** + * Default title value if title attribute isn't present. + * If a function is given, it will be called with its `this` reference set to the element + * that the tooltip or popover is attached to. + * + * @default "" + */ + title?: string | Element | ((this: Element) => string | Element) | undefined; + + /** + * How tooltip or popover is triggered - click | hover | focus | manual. You may pass multiple triggers; separate them with a space. + * 'manual' indicates that the tooltip will be triggered programmatically; this value cannot be combined with any other trigger. + * 'hover' should only be used if alternative methods for conveying the same information for keyboard users is present. + * + * @default tooltip: "hover focus", popover: "click" + */ + trigger?: Trigger | undefined; + + /** + * Offset of the tooltip or popover relative to its target. + * For more information refer to Popper.js's offset docs. + * + * @default 0 + */ + offset?: number | string | undefined; + + /** + * Allow to specify which position Popper will use on fallback. + * For more information refer to Popper.js's behavior docs. + * + * @default "flip" + */ + fallbackPlacement?: Popper.Behavior | ReadonlyArray | undefined; + + /** + * Add classes to the tooltip when it is shown. Note that these classes will be added in addition to any classes specified in the template. + * To add multiple classes, separate them with spaces: 'a b'. + * You can also pass a function that should return a single string containing additional class names. + * @default '' + */ + customClass?: string | (() => string) | undefined; + + /** + * Overflow constraint boundary of the tooltip or popover. + * Accepts the values of 'viewport', 'window', 'scrollParent', + * or an HTMLElement reference (JavaScript only). + * For more information refer to Popper.js's preventOverflow docs. + * + * @default "scrollParent" + */ + boundary?: Popper.Boundary | HTMLElement | undefined; + + /** + * Enable or disable the sanitization. If activated 'template', 'content' and 'title' options will be sanitized. + * + * @default true + */ + sanitize?: boolean | undefined; + + /** + * Object which contains allowed attributes and tags. + */ + whiteList?: {[key: string]: string[]} | undefined; + + /** + * Here you can supply your own sanitize function. This can be useful if you prefer to use a dedicated library to perform sanitization. + * + * @default null + */ + sanitizeFn?: null | ((input: string) => string) | undefined; + + /** + * To change Bootstrap's default Popper.js config, + * see {@link https://popper.js.org/docs/v1/ Popper.js's configuration} + */ + // eslint-disable-next-line @typescript-eslint/ban-types + popperConfig?: null | object | undefined; +} + +// -------------------------------------------------------------------------------------- +// Events +// -------------------------------------------------------------------------------------- + +export interface CarouselEventHandler extends JQuery.TriggeredEvent { + /** + * The carousel dom element. + */ + target: HTMLElement; // overridden only for better JsDoc + + /** + * The direction in which the carousel is sliding. + */ + direction: "left" | "right"; + + /** + * The DOM element that is being slid into place as the active item. + */ + relatedTarget: HTMLElement; + + /** + * The index of the current item. + */ + from: number; + + /** + * The index of the next item. + */ + to: number; +} + +export interface DropdownsEventHandler extends JQuery.TriggeredEvent { + /** + * The the dropdown's toggle and the dropdown menu container (the `.dropdown` element). + */ + target: HTMLElement; // overridden only for better JsDoc + + /** + * The toggling anchor element. + */ + relatedTarget: HTMLElement; +} + +export interface ModalEventHandler extends JQuery.TriggeredEvent { + /** + * The modal dom element. + */ + target: HTMLElement; // overridden only for better JsDoc + + /** + * For `show.bs.modal` and `shown.bs.modal` is the clicked element, when caused by a _click_. + * Otherwise is undefined. + */ + relatedTarget: HTMLElement | undefined; +} + +export interface TapEventHandler extends JQuery.TriggeredEvent { + /** + * * For `show.bs.tab` and `shown.bs.tab`, is the newly activated tab. + * * For `hide.bs.tab`, is the current active tab. + * * For `hidden.bs.tab`, is the previous active tab. + */ + target: HTMLElement; // overridden only for better JsDoc + + /** + * * For `show.bs.tab` and `shown.bs.tab`, is the previous active tab. + * * For `hide.bs.tab`, is the new soon-to-be-active tab. + * * For `hidden.bs.tab`, is the new active tab. + */ + relatedTarget: HTMLElement; +} + +export type AlertEvent = "close.bs.alert" | "closed.bs.alert"; +export type CarouselEvent = "slide.bs.carousel" | "slid.bs.carousel"; +export type CollapseEvent = "show.bs.collapse" | "shown.bs.collapse" | "hide.bs.collapse" | "hidden.bs.collapse"; +export type DropdownEvent = "show.bs.dropdown" | "shown.bs.dropdown" | "hide.bs.dropdown" | "hidden.bs.dropdown"; +export type ModalEvent = "show.bs.modal" | "shown.bs.modal" | "hide.bs.modal" | "hidden.bs.modal" | "hidePrevented.bs.modal"; +export type PopoverEvent = "show.bs.popover" | "shown.bs.popover" | "hide.bs.popover" | "hidden.bs.popover" | "inserted.bs.popover"; +export type ScrollspyEvent = "activate.bs.scrollspy"; +export type TapEvent = "show.bs.tab" | "shown.bs.tab" | "hide.bs.tab" | "hidden.bs.tab"; +export type ToastEvent = "show.bs.toast" | "shown.bs.toast" | "hide.bs.toast" | "hidden.bs.toast"; +export type TooltipEvent = "show.bs.tooltip" | "shown.bs.tooltip" | "hide.bs.tooltip" | "hidden.bs.tooltip" | "inserted.bs.tooltip"; + +// -------------------------------------------------------------------------------------- +// jQuery +// -------------------------------------------------------------------------------------- + +declare global { + interface JQuery { + /** + * If no _method_ is specified, makes an alert listen for click events on descendant elements which have the `data-dismiss="alert"` attribute. + * (Not necessary when using the data-api's auto-initialization.) + * Otherwise, call the method on the alert element: + * * `close` – Closes an alert by removing it from the DOM. If the `.fade` and `.show` classes are present on the element, the alert will fade out before it is removed. + * * `dispose` – Destroys an element's alert. + */ + alert(action?: "close" | "dispose"): this; + + /** + * Call a method on the button element: + * * `toggle` – Toggles push state. Gives the button the appearance that it has been activated. + * * `dispose` – Destroys an element's button. + */ + button(action: "toggle" | "dispose"): this; + + /** + * Call a method on the carousel element: + * * `cycle` – Cycles through the carousel items from left to right. + * * `pause` – Stops the carousel from cycling through items. + * * _number_ – Cycles the carousel to a particular frame (0 based, similar to an array). + * * `prev` – Cycles to the previous item. + * * `next` – Cycles to the next item. + * * `dispose` – Destroys an element's carousel. + * + * Returns to the caller before the target item has been shown (i.e. before the `slid.bs.carousel` event occurs). + */ + carousel(action: "cycle" | "pause" | number | "prev" | "next" | "dispose"): this; + /** + * Initializes the carousel and starts cycling through items. + */ + carousel(options?: CarouselOption): this; + + /** + * Call a method on the collapsible element: + * * `toggle` – Toggles a collapsible element to shown or hidden. + * * `show` – Shows a collapsible element. + * * `hide` – Hides a collapsible element. + * * `dispose` – Destroys an element's collapse. + * + * Returns to the caller before the collapsible element has actually been shown or hidden (i.e. before the `shown.bs.collapse` or `hidden.bs.collapse` event occurs). + */ + collapse(action: "toggle" | "show" | "hide" | "dispose"): this; + /** + * Activates a content as a collapsible element. + */ + collapse(options?: CollapseOption): this; + + /** + * Call a method on the dropdown element: + * * `toggle` – Toggles the dropdown menu of a given navbar or tabbed navigation. + * * `show` – Shows the dropdown menu of a given navbar or tabbed navigation. + * * `hide` – Hides the dropdown menu of a given navbar or tabbed navigation. + * * `update` – Updates the position of an element's dropdown. + * * `dispose` – Destroys an element's dropdown. + */ + dropdown(action: "toggle" | "show" | "hide" | "update" | "dispose"): this; + /** + * Toggle contextual overlays for displaying lists of links. + * + * The data-api, `data-toggle="dropdown"` is always required to be present on the dropdown's trigger element. + */ + dropdown(options?: DropdownOption): this; + + /** + * Call a method on the modal element: + * * `toggle` – Manually toggles a modal. + * * `show` – Manually opens a modal. + * * `hide` – Manually hides a modal. + * * `handleUpdate` – Manually readjust the modal's position if the height of a modal changes while it is open (i.e. in case a scrollbar appears). + * * `dispose` – Destroys an element's modal. + * + * Returns to the caller before the modal has actually been shown or hidden (i.e. before the `shown.bs.modal` or `hidden.bs.modal` event occurs). + */ + modal(action: "toggle" | "show" | "hide" | "handleUpdate" | "dispose"): this; + /** + * Activates a content as a modal. + */ + modal(options?: ModalOption): this; + + /** + * Call a method on the popover element: + * * `show` – Reveals an element's popover. Popovers whose both title and content are zero-length are never displayed. + * * `hide` – Hides an element's popover. + * * `toggle` – Toggles an element's popover. + * * `dispose` – Hides and destroys an element's popover. + * Popovers that use delegation (which are created using the `selector` option) cannot be individually destroyed on descendant trigger elements. + * * `enable` – Gives an element's popover the ability to be shown. Popovers are enabled by default. + * * `disable` – Removes the ability for an element's popover to be shown. The popover will only be able to be shown if it is re-enabled. + * * `toggleEnabled` – Toggles the ability for an element's popover to be shown or hidden. + * * `update` – Updates the position of an element's popover. + * + * Returns to the caller before the popover has actually been shown or hidden (i.e. before the `shown.bs.popover` or `hidden.bs.popover` event occurs). + * This is considered a "manual" triggering of the popover. + */ + popover(action: "show" | "hide" | "toggle" | "dispose" | "enable" | "disable" | "toggleEnabled" | "update"): this; + /** + * Initializes popovers for an element collection. + */ + popover(options?: PopoverOption): this; + +// tslint:disable:jsdoc-format + /** + * Call a method on the scrollspy element: + * * `refresh` – When using scrollspy in conjunction with adding or removing of elements from the DOM, you'll need to call the refresh, see example. + * * `dispose` – Destroys an element's scrollspy. + * + * @example +```javascript +$('[data-spy="scroll"]').each(function () { + var $spy = $(this).scrollspy('refresh') +}) +``` + */ +// tslint:enable:jsdoc-format + scrollspy(action: "refresh" | "dispose"): this; + /** + * Add scrollspy behavior to a topbar navigation. + */ + scrollspy(options?: ScrollspyOption): this; + + /** + * Call a method on the list item or tab element: + * * `show` – Selects the given list item or tab and shows its associated pane. + * Any other list item or tab that was previously selected becomes unselected and its associated pane is hidden. + * * `dispose` – Destroys an element's tab. + * + * Returns to the caller before the tab pane has actually been shown (i.e. before the `shown.bs.tab` event occurs). + */ + tab(action: "show" | "dispose"): this; + + /** + * Call a method on the toast element: + * * `show` – Reveals an element's toast. You have to manually call this method, instead your toast won't show. + * * `hide` – Hides an element's toast. You have to manually call this method if you made `autohide` to false. + * * `dispose` – Hides an element's toast. Your toast will remain on the DOM but won't show anymore. + * + * Returns to the caller before the toast has actually been shown or hidden (i.e. before the `shown.bs.toast` or `hidden.bs.toast` event occurs). + */ + toast(action: "show" | "hide" | "dispose"): this; + /** + * Attaches a toast handler to an element collection. + */ + toast(options?: ToastOption): this; + + /** + * Call a method on the tooltip element: + * * `show` – Reveals an element's tooltip. Tooltips with zero-length titles are never displayed. + * * `hide` – Hides an element's tooltip. + * * `toggle` – Toggles an element's tooltip. + * * `dispose` – Hides and destroys an element's tooltip. + * Tooltips that use delegation (which are created using `selector` option) cannot be individually destroyed on descendant trigger elements. + * * `enable` – Gives an element's tooltip the ability to be shown. Tooltips are enabled by default. + * * `disable` – Removes the ability for an element's tooltip to be shown. The tooltip will only be able to be shown if it is re-enabled. + * * `toggleEnabled` – Toggles the ability for an element's tooltip to be shown or hidden. + * * `update` – Updates the position of an element's tooltip. + * + * Returns to the caller before the tooltip has actually been shown or hidden (i.e. before the `shown.bs.tooltip` or `hidden.bs.tooltip` event occurs). + * This is considered a "manual" triggering of the tooltip. + */ + tooltip(action: "show" | "hide" | "toggle" | "dispose" | "enable" | "disable" | "toggleEnabled" | "update"): this; + /** + * Attaches a tooltip handler to an element collection. + */ + tooltip(options?: TooltipOption): this; + + on(events: CarouselEvent, handler: JQuery.EventHandlerBase>): this; + on(events: DropdownEvent, handler: JQuery.EventHandlerBase>): this; + on(events: ModalEvent, handler: JQuery.EventHandlerBase>): this; + on(events: TapEvent, handler: JQuery.EventHandlerBase>): this; + on( + events: AlertEvent | CollapseEvent | PopoverEvent | ScrollspyEvent | ToastEvent | TooltipEvent, + handler: JQuery.EventHandler + ): this; + } +} \ No newline at end of file diff --git a/hwe/ts/components/TopBackBar.vue b/hwe/ts/components/TopBackBar.vue new file mode 100644 index 00000000..10ae00f6 --- /dev/null +++ b/hwe/ts/components/TopBackBar.vue @@ -0,0 +1,50 @@ + + + + + + \ No newline at end of file diff --git a/hwe/ts/gateway/login.ts b/hwe/ts/gateway/login.ts index fd643d97..4d9c2223 100644 --- a/hwe/ts/gateway/login.ts +++ b/hwe/ts/gateway/login.ts @@ -12,7 +12,6 @@ import { sha512 } from 'js-sha512'; import { unwrap } from '../util/unwrap'; import { InvalidResponse } from '../defs'; - type LoginResponse = { result: true, } | { @@ -125,7 +124,7 @@ async function doLoginUsingOAuth() { return; } - const $modal = $('#modalOTP').modal(); + const $modal = $('#modalOTP').modal() as unknown as JQuery; $modal.on('shown.bs.modal', function () { $('#otp_code').trigger('focus'); }); @@ -222,7 +221,7 @@ $(function ($) { return; } - const $modal = $('#modalOTP').modal(); + const $modal = $('#modalOTP').modal() as unknown as JQuery; $modal.on('shown.bs.modal', function () { $('#otp_code').trigger('focus'); }); diff --git a/hwe/ts/inheritPoint.vue b/hwe/ts/inheritPoint.vue new file mode 100644 index 00000000..d32ce7e2 --- /dev/null +++ b/hwe/ts/inheritPoint.vue @@ -0,0 +1,186 @@ + + + + + + \ No newline at end of file diff --git a/hwe/ts/inheritPoint.ts b/hwe/ts/legacy/inheritPoint.ts similarity index 96% rename from hwe/ts/inheritPoint.ts rename to hwe/ts/legacy/inheritPoint.ts index f63b1713..ccd1fa8f 100644 --- a/hwe/ts/inheritPoint.ts +++ b/hwe/ts/legacy/inheritPoint.ts @@ -1,7 +1,7 @@ import "../scss/inheritPoint.scss"; import { sum } from "lodash"; -import { unwrap } from "./util/unwrap"; +import { unwrap } from "../util/unwrap"; declare global { interface Window { formStart: ()=>void; diff --git a/hwe/ts/v_inheritPoint.ts b/hwe/ts/v_inheritPoint.ts new file mode 100644 index 00000000..8fcab56a --- /dev/null +++ b/hwe/ts/v_inheritPoint.ts @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import InheritPoint from './inheritPoint.vue'; + +createApp(InheritPoint).mount('#app') \ No newline at end of file diff --git a/hwe/v_inheritPoint.php b/hwe/v_inheritPoint.php new file mode 100644 index 00000000..ab4b869e --- /dev/null +++ b/hwe/v_inheritPoint.php @@ -0,0 +1,63 @@ +setReadOnly(); +$userID = Session::getUserID(); +$generalID = $session->generalID; + +$db = DB::db(); +$gameStor = KVStorage::getStorage($db, 'game_env'); + +$me = General::createGeneralObjFromDB($generalID); + + +$pointHelpText = [ + 'sum' => '다음 플레이에서 사용할 수 있는 총 포인트입니다.', + 'new' => '이번 플레이에서 얻은 총 포인트입니다.', + 'previous' => '이전에 물려받은 포인트입니다.', + 'lived_month' => '살아남은 기간입니다. (1개월 단위)', + 'max_belong' => '가장 오래 임관했던 국가의 연도입니다.', + 'max_domestic_critical' => '성공한 내정 중 최대 연속값입니다.', + 'snipe_combat' => '유리한 상성을 가지고 전투했습니다.', + 'combat' => '전투 횟수입니다.', + 'sabotage' => '계략 성공 횟수입니다.', + 'unifier' => '천통에 기여한 포인트입니다.
각 국의 군주, 천통 수뇌, 천통 군주가 받습니다.', + 'dex' => '총 숙련도합입니다.', + 'tournament' => '토너먼트 입상 포인트입니다.', + 'betting' => '성공적인 베팅을 했습니다.
수익율과 베팅 성공 횟수를 따릅니다.', +]; +$items = []; +foreach(array_keys(General::INHERITANCE_KEY) as $key){ + $items[$key] = $me->getInheritancePoint($key)??0; +} +?> + + + + + <?= UniqueConst::$serverName ?>: 유산 관리 + + + + + + + + + + + + +
+ + + + + \ No newline at end of file diff --git a/package.json b/package.json index 06299876..e727d0c8 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "babel-loader": "^8.2.2", "babel-plugin-lodash": "^3.3.4", "babel-preset-modern-browsers": "^15.0.2", + "clean-terminal-webpack-plugin": "^3.0.0", "css-loader": "^6.2.0", "eslint": "^7.32.0", "file-loader": "^6.2.0", diff --git a/webpack.config.cjs b/webpack.config.cjs index 943039e5..a5a86fa5 100644 --- a/webpack.config.cjs +++ b/webpack.config.cjs @@ -17,7 +17,7 @@ module.exports = (env, argv) => { }, mode, entry: { - //v_test: resolve(__dirname, `${target}/ts/v_test.ts`) + v_inheritPoint: resolve(__dirname, `${target}/ts/v_inheritPoint.ts`) }, output: { filename: '[name].js', @@ -161,7 +161,7 @@ module.exports = (env, argv) => { mode, entry: { chiefCenter: '@/chiefCenter.ts', - inheritPoint: '@/inheritPoint.ts', + inheritPoint: '@/legacy/inheritPoint.ts', common: '@/common_deprecated.ts', troop: '@/troop.ts', map: '@/map.ts',