From d436a19116e304c06803a9a7e2b237a0c92e6590 Mon Sep 17 00:00:00 2001 From: dank074 Date: Mon, 22 Nov 2021 23:41:46 -0600 Subject: [PATCH] added calendar view --- .../campaign/campaign_day_generic_bg.png | Bin 0 -> 36045 bytes .../images/campaign/campaign_opened.png | Bin 0 -> 744 bytes src/assets/images/campaign/locked.png | Bin 0 -> 220 bytes src/assets/images/campaign/unopened.png | Bin 0 -> 5731 bytes src/views/Styles.scss | 1 + src/views/campaign/CampaignView.scss | 1 + src/views/campaign/CampaignView.tsx | 60 ++++++++++++++++++ .../campaign/views/calendar/CalendarView.scss | 10 +++ .../campaign/views/calendar/CalendarView.tsx | 43 +++++++++++++ .../views/calendar/CalendarView.types.ts | 9 +++ src/views/main/MainView.tsx | 2 + 11 files changed, 126 insertions(+) create mode 100644 src/assets/images/campaign/campaign_day_generic_bg.png create mode 100644 src/assets/images/campaign/campaign_opened.png create mode 100644 src/assets/images/campaign/locked.png create mode 100644 src/assets/images/campaign/unopened.png create mode 100644 src/views/campaign/CampaignView.scss create mode 100644 src/views/campaign/CampaignView.tsx create mode 100644 src/views/campaign/views/calendar/CalendarView.scss create mode 100644 src/views/campaign/views/calendar/CalendarView.tsx create mode 100644 src/views/campaign/views/calendar/CalendarView.types.ts diff --git a/src/assets/images/campaign/campaign_day_generic_bg.png b/src/assets/images/campaign/campaign_day_generic_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..25b3c622dc9aa5aab2fc6469bf8d8e526c894ba6 GIT binary patch literal 36045 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�k3-p>X_y`} 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 VBLJ_-_G175002ovPDHLkV1hQ-?a2TD literal 0 HcmV?d00001 diff --git a/src/assets/images/campaign/campaign_opened.png b/src/assets/images/campaign/campaign_opened.png new file mode 100644 index 0000000000000000000000000000000000000000..9ec1bb30bed39dec6fee41a5bdec960426270574 GIT binary patch literal 744 zcmVP)^wSkG>i$9xjvTgH~ zuz8V#zwdi+2{Kpp0pA74T-7)DE?@xs3e*SqE?@xs0@%wj1pzLm1%3i-@|c<^mq3J{ z02p#5C7|$~7byHxFUZu*hamX!GC<)E7)F+ray0zw{rRZpXQY7U8pmG_d|a_2uoW7A zIq;)JP~$HLzPE^8@s|VNDq>Xp<-lV_aK&E^d`*N@{N=#sK>U2Z991g*a^OE+pN<-T zUO|K^@VW126rmdY%py#IpGkyi@RmhP1>TZ~sljU(5q`hlj%sCc#Z-+V&UmMU+lg?A zz<{Sf$I9RmasK}^-a{|o5FrI#T0{nXelF-Of@7%BI5c6v4-r9`Tsh!F&xgx;$LEAZpLg$jUfjm%1@-LhyEVPy`W z?-jL(&xDY!Y=O%0XAJeKw5N3M8pl3 zjxYY402hc{!=>Y^c~WK+2x!igJHFay#d?9j=3Kern|WH23WA#K?j^!9_$Cpp;9Et^ z1Rf=#H+ZawnZbiZBpMzdJ2cMHDq;ojMG=LDX93?Ox=|8RBJO+Kw%GfFAPv3%PV6#3 zOSl)|Z(KxdlPPTRDE1a;aRC(x6+lS|8}3b7UMfQtdS{=56&$i$fC33FK=-`iMZvrw aR{j9$YQ}Hx9pRAx0000j_^|XUoodbBOldh^Av|0UeLaAs?KfJs}@0v!#O1sw06wfaxt-!-|7FE-m&Qu2iZyVZp!msfIR zF{e7NHM~-OSl{CHTAu2!`dgd@6&t6lDp}%XwDMNqsuNRJ9a}0V{bXMLDY+wY!f))> Un*QSa2Xrojr>mdKI;Vst04zgSJpcdz literal 0 HcmV?d00001 diff --git a/src/assets/images/campaign/unopened.png b/src/assets/images/campaign/unopened.png new file mode 100644 index 0000000000000000000000000000000000000000..71a754ff7cf3709548730eb6f52fc03816cd168c GIT binary patch literal 5731 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 VX*XuF_RatR002ovPDHLkV1iW3ptAq~ literal 0 HcmV?d00001 diff --git a/src/views/Styles.scss b/src/views/Styles.scss index a727aa12..4a7438ed 100644 --- a/src/views/Styles.scss +++ b/src/views/Styles.scss @@ -24,3 +24,4 @@ @import './help/HelpView'; @import './floorplan-editor/FloorplanEditorView'; @import './nitropedia/NitropediaView'; +@import './campaign/CampaignView'; diff --git a/src/views/campaign/CampaignView.scss b/src/views/campaign/CampaignView.scss new file mode 100644 index 00000000..506d0169 --- /dev/null +++ b/src/views/campaign/CampaignView.scss @@ -0,0 +1 @@ +@import './views/calendar/CalendarView'; diff --git a/src/views/campaign/CampaignView.tsx b/src/views/campaign/CampaignView.tsx new file mode 100644 index 00000000..eb205f51 --- /dev/null +++ b/src/views/campaign/CampaignView.tsx @@ -0,0 +1,60 @@ +import { CampaignCalendarData, CampaignCalendarDataMessageEvent } from '@nitrots/nitro-renderer'; +import { FC, useCallback, useEffect, useState } from 'react'; +import { AddEventLinkTracker, RemoveLinkEventTracker } from '../../api'; +import { CreateMessageHook } from '../../hooks'; +import { CalendarView } from './views/calendar/CalendarView'; + +export const CampaignView: FC<{}> = props => +{ + const [ calendarData, setCalendarData ] = useState(null); + const [ isCalendarOpen, setCalendarOpen ] = useState(false); + + const onCampaignCalendarDataMessageEvent = useCallback((event: CampaignCalendarDataMessageEvent) => + { + const parser = event.getParser(); + + if(!parser) return; + + setCalendarData(parser.calendarData); + }, []); + + CreateMessageHook(CampaignCalendarDataMessageEvent, onCampaignCalendarDataMessageEvent); + + const onLinkReceived = useCallback((link: string) => + { + const value = link.split('/'); + + if(value.length < 2) return; + + switch(value[1]) + { + case 'calendar': + setCalendarOpen(true); + break; + } + }, []); + + useEffect(() => + { + const linkTracker = { linkReceived: onLinkReceived, eventUrlPrefix: 'openView/' }; + AddEventLinkTracker(linkTracker); + + return () => + { + RemoveLinkEventTracker(linkTracker); + } + }, [onLinkReceived]); + + const onCalendarClose = useCallback(() => + { + setCalendarOpen(false); + }, []); + + return ( + <> + {(calendarData && isCalendarOpen) && + + } + + ) +} diff --git a/src/views/campaign/views/calendar/CalendarView.scss b/src/views/campaign/views/calendar/CalendarView.scss new file mode 100644 index 00000000..7ef04128 --- /dev/null +++ b/src/views/campaign/views/calendar/CalendarView.scss @@ -0,0 +1,10 @@ +.nitro-campaign-calendar { + width: 800px; + height: 400px; + + .calendar-day { + background: url('../../../../assets/images/campaign/campaign_day_generic_bg.png'); + max-height: 100%; + min-width: 50px; + } +} diff --git a/src/views/campaign/views/calendar/CalendarView.tsx b/src/views/campaign/views/calendar/CalendarView.tsx new file mode 100644 index 00000000..72cc86fd --- /dev/null +++ b/src/views/campaign/views/calendar/CalendarView.tsx @@ -0,0 +1,43 @@ +import { FC, useCallback, useState } from 'react'; +import { LocalizeText } from '../../../../api'; +import { NitroCardContentView, NitroCardGridItemView, NitroCardGridView, NitroCardHeaderView, NitroCardView } from '../../../../layout'; +import { CalendarViewProps } from './CalendarView.types'; + +export const CalendarView: FC = props => +{ + const { close = null, campaignName = null, currentDay = null, numDays = null, missedDays = null, openedDays = null } = props; + const [ selectedDay, setSelectedDay ] = useState(currentDay); + + const dayMessage = useCallback((day: number) => + { + if(missedDays.includes(day)) + { + return LocalizeText('campaign.calendar.info.expired'); + } + + if(openedDays.includes(day)) + { + return LocalizeText('campaign.calendar.info.unlocked') + } + }, [missedDays, openedDays]); + + return ( + + + +
+

{LocalizeText('campaign.calendar.heading.day', ['number'], [selectedDay.toString()])}

+

{LocalizeText('')}

+
+ + { + [...Array(7)].map((e, i) => + { + return + }) + } + +
+
+ ) +} diff --git a/src/views/campaign/views/calendar/CalendarView.types.ts b/src/views/campaign/views/calendar/CalendarView.types.ts new file mode 100644 index 00000000..77539e8e --- /dev/null +++ b/src/views/campaign/views/calendar/CalendarView.types.ts @@ -0,0 +1,9 @@ +export interface CalendarViewProps +{ + close(): void; + campaignName: string; + currentDay: number; + numDays: number; + openedDays: number[]; + missedDays: number[]; +} diff --git a/src/views/main/MainView.tsx b/src/views/main/MainView.tsx index 5cd09f84..ca00b8dc 100644 --- a/src/views/main/MainView.tsx +++ b/src/views/main/MainView.tsx @@ -6,6 +6,7 @@ import { TransitionAnimation, TransitionAnimationTypes } from '../../layout'; import { AchievementsView } from '../achievements/AchievementsView'; import { AvatarEditorView } from '../avatar-editor/AvatarEditorView'; import { CameraWidgetView } from '../camera/CameraWidgetView'; +import { CampaignView } from '../campaign/CampaignView'; import { CatalogView } from '../catalog/CatalogView'; import { ChatHistoryView } from '../chat-history/ChatHistoryView'; import { FloorplanEditorView } from '../floorplan-editor/FloorplanEditorView'; @@ -77,6 +78,7 @@ export const MainView: FC = props => + ); }