codes
This commit is contained in:
parent
caf00e8d86
commit
92067339c8
54 changed files with 11624 additions and 0 deletions
63
.gitattributes
vendored
Normal file
63
.gitattributes
vendored
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
###############################################################################
|
||||||
|
# Set default behavior to automatically normalize line endings.
|
||||||
|
###############################################################################
|
||||||
|
* text=auto
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set default behavior for command prompt diff.
|
||||||
|
#
|
||||||
|
# This is need for earlier builds of msysgit that does not have it on by
|
||||||
|
# default for csharp files.
|
||||||
|
# Note: This is only used by command line
|
||||||
|
###############################################################################
|
||||||
|
#*.cs diff=csharp
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set the merge driver for project and solution files
|
||||||
|
#
|
||||||
|
# Merging from the command prompt will add diff markers to the files if there
|
||||||
|
# are conflicts (Merging from VS is not affected by the settings below, in VS
|
||||||
|
# the diff markers are never inserted). Diff markers may cause the following
|
||||||
|
# file extensions to fail to load in VS. An alternative would be to treat
|
||||||
|
# these files as binary and thus will always conflict and require user
|
||||||
|
# intervention with every merge. To do so, just uncomment the entries below
|
||||||
|
###############################################################################
|
||||||
|
#*.sln merge=binary
|
||||||
|
#*.csproj merge=binary
|
||||||
|
#*.vbproj merge=binary
|
||||||
|
#*.vcxproj merge=binary
|
||||||
|
#*.vcproj merge=binary
|
||||||
|
#*.dbproj merge=binary
|
||||||
|
#*.fsproj merge=binary
|
||||||
|
#*.lsproj merge=binary
|
||||||
|
#*.wixproj merge=binary
|
||||||
|
#*.modelproj merge=binary
|
||||||
|
#*.sqlproj merge=binary
|
||||||
|
#*.wwaproj merge=binary
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# behavior for image files
|
||||||
|
#
|
||||||
|
# image files are treated as binary by default.
|
||||||
|
###############################################################################
|
||||||
|
#*.jpg binary
|
||||||
|
#*.png binary
|
||||||
|
#*.gif binary
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# diff behavior for common document formats
|
||||||
|
#
|
||||||
|
# Convert binary document formats to text before diffing them. This feature
|
||||||
|
# is only available from the command line. Turn it on by uncommenting the
|
||||||
|
# entries below.
|
||||||
|
###############################################################################
|
||||||
|
#*.doc diff=astextplain
|
||||||
|
#*.DOC diff=astextplain
|
||||||
|
#*.docx diff=astextplain
|
||||||
|
#*.DOCX diff=astextplain
|
||||||
|
#*.dot diff=astextplain
|
||||||
|
#*.DOT diff=astextplain
|
||||||
|
#*.pdf diff=astextplain
|
||||||
|
#*.PDF diff=astextplain
|
||||||
|
#*.rtf diff=astextplain
|
||||||
|
#*.RTF diff=astextplain
|
343
.gitignore
vendored
Normal file
343
.gitignore
vendored
Normal file
|
@ -0,0 +1,343 @@
|
||||||
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
##
|
||||||
|
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
*.rsuser
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
*.userosscache
|
||||||
|
*.sln.docstates
|
||||||
|
|
||||||
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
|
*.userprefs
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
[Dd]ebug/
|
||||||
|
[Dd]ebugPublic/
|
||||||
|
[Rr]elease/
|
||||||
|
[Rr]eleases/
|
||||||
|
x64/
|
||||||
|
x86/
|
||||||
|
[Aa][Rr][Mm]/
|
||||||
|
[Aa][Rr][Mm]64/
|
||||||
|
bld/
|
||||||
|
[Bb]in/
|
||||||
|
[Oo]bj/
|
||||||
|
[Ll]og/
|
||||||
|
|
||||||
|
# Visual Studio 2015/2017 cache/options directory
|
||||||
|
.vs/
|
||||||
|
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||||
|
#wwwroot/
|
||||||
|
|
||||||
|
# Visual Studio 2017 auto generated files
|
||||||
|
Generated\ Files/
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
|
# NUNIT
|
||||||
|
*.VisualState.xml
|
||||||
|
TestResult.xml
|
||||||
|
|
||||||
|
# Build Results of an ATL Project
|
||||||
|
[Dd]ebugPS/
|
||||||
|
[Rr]eleasePS/
|
||||||
|
dlldata.c
|
||||||
|
|
||||||
|
# Benchmark Results
|
||||||
|
BenchmarkDotNet.Artifacts/
|
||||||
|
|
||||||
|
# .NET Core
|
||||||
|
project.lock.json
|
||||||
|
project.fragment.lock.json
|
||||||
|
artifacts/
|
||||||
|
|
||||||
|
# StyleCop
|
||||||
|
StyleCopReport.xml
|
||||||
|
|
||||||
|
# Files built by Visual Studio
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*_h.h
|
||||||
|
*.ilk
|
||||||
|
*.meta
|
||||||
|
*.obj
|
||||||
|
*.iobj
|
||||||
|
*.pch
|
||||||
|
*.pdb
|
||||||
|
*.ipdb
|
||||||
|
*.pgc
|
||||||
|
*.pgd
|
||||||
|
*.rsp
|
||||||
|
*.sbr
|
||||||
|
*.tlb
|
||||||
|
*.tli
|
||||||
|
*.tlh
|
||||||
|
*.tmp
|
||||||
|
*.tmp_proj
|
||||||
|
*_wpftmp.csproj
|
||||||
|
*.log
|
||||||
|
*.vspscc
|
||||||
|
*.vssscc
|
||||||
|
.builds
|
||||||
|
*.pidb
|
||||||
|
*.svclog
|
||||||
|
*.scc
|
||||||
|
|
||||||
|
# Chutzpah Test files
|
||||||
|
_Chutzpah*
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
ipch/
|
||||||
|
*.aps
|
||||||
|
*.ncb
|
||||||
|
*.opendb
|
||||||
|
*.opensdf
|
||||||
|
*.sdf
|
||||||
|
*.cachefile
|
||||||
|
*.VC.db
|
||||||
|
*.VC.VC.opendb
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
*.psess
|
||||||
|
*.vsp
|
||||||
|
*.vspx
|
||||||
|
*.sap
|
||||||
|
|
||||||
|
# Visual Studio Trace Files
|
||||||
|
*.e2e
|
||||||
|
|
||||||
|
# TFS 2012 Local Workspace
|
||||||
|
$tf/
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
*.gpState
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
_ReSharper*/
|
||||||
|
*.[Rr]e[Ss]harper
|
||||||
|
*.DotSettings.user
|
||||||
|
|
||||||
|
# JustCode is a .NET coding add-in
|
||||||
|
.JustCode
|
||||||
|
|
||||||
|
# TeamCity is a build add-in
|
||||||
|
_TeamCity*
|
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool
|
||||||
|
*.dotCover
|
||||||
|
|
||||||
|
# AxoCover is a Code Coverage Tool
|
||||||
|
.axoCover/*
|
||||||
|
!.axoCover/settings.json
|
||||||
|
|
||||||
|
# Visual Studio code coverage results
|
||||||
|
*.coverage
|
||||||
|
*.coveragexml
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
_NCrunch_*
|
||||||
|
.*crunch*.local.xml
|
||||||
|
nCrunchTemp_*
|
||||||
|
|
||||||
|
# MightyMoose
|
||||||
|
*.mm.*
|
||||||
|
AutoTest.Net/
|
||||||
|
|
||||||
|
# Web workbench (sass)
|
||||||
|
.sass-cache/
|
||||||
|
|
||||||
|
# Installshield output folder
|
||||||
|
[Ee]xpress/
|
||||||
|
|
||||||
|
# DocProject is a documentation generator add-in
|
||||||
|
DocProject/buildhelp/
|
||||||
|
DocProject/Help/*.HxT
|
||||||
|
DocProject/Help/*.HxC
|
||||||
|
DocProject/Help/*.hhc
|
||||||
|
DocProject/Help/*.hhk
|
||||||
|
DocProject/Help/*.hhp
|
||||||
|
DocProject/Help/Html2
|
||||||
|
DocProject/Help/html
|
||||||
|
|
||||||
|
# Click-Once directory
|
||||||
|
publish/
|
||||||
|
|
||||||
|
# Publish Web Output
|
||||||
|
*.[Pp]ublish.xml
|
||||||
|
*.azurePubxml
|
||||||
|
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||||
|
# but database connection strings (with potential passwords) will be unencrypted
|
||||||
|
*.pubxml
|
||||||
|
*.publishproj
|
||||||
|
|
||||||
|
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||||
|
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||||
|
# in these scripts will be unencrypted
|
||||||
|
PublishScripts/
|
||||||
|
|
||||||
|
# NuGet Packages
|
||||||
|
*.nupkg
|
||||||
|
# The packages folder can be ignored because of Package Restore
|
||||||
|
**/[Pp]ackages/*
|
||||||
|
# except build/, which is used as an MSBuild target.
|
||||||
|
!**/[Pp]ackages/build/
|
||||||
|
# Uncomment if necessary however generally it will be regenerated when needed
|
||||||
|
#!**/[Pp]ackages/repositories.config
|
||||||
|
# NuGet v3's project.json files produces more ignorable files
|
||||||
|
*.nuget.props
|
||||||
|
*.nuget.targets
|
||||||
|
|
||||||
|
# Microsoft Azure Build Output
|
||||||
|
csx/
|
||||||
|
*.build.csdef
|
||||||
|
|
||||||
|
# Microsoft Azure Emulator
|
||||||
|
ecf/
|
||||||
|
rcf/
|
||||||
|
|
||||||
|
# Windows Store app package directories and files
|
||||||
|
AppPackages/
|
||||||
|
BundleArtifacts/
|
||||||
|
Package.StoreAssociation.xml
|
||||||
|
_pkginfo.txt
|
||||||
|
*.appx
|
||||||
|
|
||||||
|
# Visual Studio cache files
|
||||||
|
# files ending in .cache can be ignored
|
||||||
|
*.[Cc]ache
|
||||||
|
# but keep track of directories ending in .cache
|
||||||
|
!?*.[Cc]ache/
|
||||||
|
|
||||||
|
# Others
|
||||||
|
ClientBin/
|
||||||
|
~$*
|
||||||
|
*~
|
||||||
|
*.dbmdl
|
||||||
|
*.dbproj.schemaview
|
||||||
|
*.jfm
|
||||||
|
*.pfx
|
||||||
|
*.publishsettings
|
||||||
|
orleans.codegen.cs
|
||||||
|
|
||||||
|
# Including strong name files can present a security risk
|
||||||
|
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||||
|
#*.snk
|
||||||
|
|
||||||
|
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||||
|
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||||
|
#bower_components/
|
||||||
|
|
||||||
|
# RIA/Silverlight projects
|
||||||
|
Generated_Code/
|
||||||
|
|
||||||
|
# Backup & report files from converting an old project file
|
||||||
|
# to a newer Visual Studio version. Backup files are not needed,
|
||||||
|
# because we have git ;-)
|
||||||
|
_UpgradeReport_Files/
|
||||||
|
Backup*/
|
||||||
|
UpgradeLog*.XML
|
||||||
|
UpgradeLog*.htm
|
||||||
|
ServiceFabricBackup/
|
||||||
|
*.rptproj.bak
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
*.mdf
|
||||||
|
*.ldf
|
||||||
|
*.ndf
|
||||||
|
|
||||||
|
# Business Intelligence projects
|
||||||
|
*.rdl.data
|
||||||
|
*.bim.layout
|
||||||
|
*.bim_*.settings
|
||||||
|
*.rptproj.rsuser
|
||||||
|
*- Backup*.rdl
|
||||||
|
|
||||||
|
# Microsoft Fakes
|
||||||
|
FakesAssemblies/
|
||||||
|
|
||||||
|
# GhostDoc plugin setting file
|
||||||
|
*.GhostDoc.xml
|
||||||
|
|
||||||
|
# Node.js Tools for Visual Studio
|
||||||
|
.ntvs_analysis.dat
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# Visual Studio 6 build log
|
||||||
|
*.plg
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace options file
|
||||||
|
*.opt
|
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||||
|
*.vbw
|
||||||
|
|
||||||
|
# Visual Studio LightSwitch build output
|
||||||
|
**/*.HTMLClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/ModelManifest.xml
|
||||||
|
**/*.Server/GeneratedArtifacts
|
||||||
|
**/*.Server/ModelManifest.xml
|
||||||
|
_Pvt_Extensions
|
||||||
|
|
||||||
|
# Paket dependency manager
|
||||||
|
.paket/paket.exe
|
||||||
|
paket-files/
|
||||||
|
|
||||||
|
# FAKE - F# Make
|
||||||
|
.fake/
|
||||||
|
|
||||||
|
# JetBrains Rider
|
||||||
|
.idea/
|
||||||
|
*.sln.iml
|
||||||
|
|
||||||
|
# CodeRush personal settings
|
||||||
|
.cr/personal
|
||||||
|
|
||||||
|
# Python Tools for Visual Studio (PTVS)
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
|
||||||
|
# Cake - Uncomment if you are using it
|
||||||
|
# tools/**
|
||||||
|
# !tools/packages.config
|
||||||
|
|
||||||
|
# Tabs Studio
|
||||||
|
*.tss
|
||||||
|
|
||||||
|
# Telerik's JustMock configuration file
|
||||||
|
*.jmconfig
|
||||||
|
|
||||||
|
# BizTalk build output
|
||||||
|
*.btp.cs
|
||||||
|
*.btm.cs
|
||||||
|
*.odx.cs
|
||||||
|
*.xsd.cs
|
||||||
|
|
||||||
|
# OpenCover UI analysis results
|
||||||
|
OpenCover/
|
||||||
|
|
||||||
|
# Azure Stream Analytics local run output
|
||||||
|
ASALocalRun/
|
||||||
|
|
||||||
|
# MSBuild Binary and Structured Log
|
||||||
|
*.binlog
|
||||||
|
|
||||||
|
# NVidia Nsight GPU debugger configuration file
|
||||||
|
*.nvuser
|
||||||
|
|
||||||
|
# MFractors (Xamarin productivity tool) working folder
|
||||||
|
.mfractor/
|
||||||
|
|
||||||
|
# Local History for Visual Studio
|
||||||
|
.localhistory/
|
||||||
|
|
||||||
|
# BeatPulse healthcheck temp database
|
||||||
|
healthchecksdb
|
||||||
|
|
||||||
|
# ACT
|
||||||
|
References/ACT/
|
1778
Data/DcDuty-English.json
Normal file
1778
Data/DcDuty-English.json
Normal file
File diff suppressed because it is too large
Load diff
1778
Data/DcDuty-Japanese.json
Normal file
1778
Data/DcDuty-Japanese.json
Normal file
File diff suppressed because it is too large
Load diff
1754
Data/DcDuty-Korean.json
Normal file
1754
Data/DcDuty-Korean.json
Normal file
File diff suppressed because it is too large
Load diff
87
Data/DcLang-Japanese.txt
Normal file
87
Data/DcLang-Japanese.txt
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
# 日本語メッセージ
|
||||||
|
LANG=日本語
|
||||||
|
|
||||||
|
0=FFXIV dc
|
||||||
|
1=レディ
|
||||||
|
2=FFXIV プラグインが見つからないんです!
|
||||||
|
3=FFXIV プラグインを見つかりました!
|
||||||
|
4=FFXIV ドユーティー・コンテンツが起動しました!
|
||||||
|
5=ACT 情報: {0} ({1})
|
||||||
|
6=FFXIV プラグイン情報: {0} ({1})
|
||||||
|
7=データが壊れました: {0}
|
||||||
|
8=分析できません!
|
||||||
|
9=アンノウン・コンテンツ: {0}
|
||||||
|
10=アンノウン・インスタンス: {0}
|
||||||
|
11=アンノウン・地役: {0}
|
||||||
|
12=アンノウン・フェイト: {0}
|
||||||
|
13=データが読めないんです!
|
||||||
|
14=データ・ファイルが見つからないんです! {0}
|
||||||
|
20=ドユーティー・コンテンツ情報: {1}({0}) / A:{2} / R:{3} / I:{4} / F:{5} ({6})
|
||||||
|
21=ルーレット
|
||||||
|
22=インスタンス
|
||||||
|
23=フェイト
|
||||||
|
24=スカーミッシュ
|
||||||
|
25=クリティカル・エンゲージメント
|
||||||
|
26=基本
|
||||||
|
|
||||||
|
99=ドユーティー・コンテンツ・プラグイン {0}
|
||||||
|
|
||||||
|
101=WAVEファイルを選んでください
|
||||||
|
102=WAVファイル (*.wav)|*.wav|全て (*.*)|*.*
|
||||||
|
103=お知らせテストです!!
|
||||||
|
|
||||||
|
200=設定
|
||||||
|
201=表示言語
|
||||||
|
202=FFXIVがアクティブ状態じゃない場合、オーバレイを隠します
|
||||||
|
|
||||||
|
300=コンテンツ
|
||||||
|
301=コンテンツ
|
||||||
|
302=設定
|
||||||
|
303=パゲット
|
||||||
|
304=データ
|
||||||
|
305=ログフォント
|
||||||
|
306=オーバレイ・オン
|
||||||
|
307=透明度
|
||||||
|
308=サウンド・オン
|
||||||
|
309=インスタンス
|
||||||
|
310=フェイト
|
||||||
|
311=ラインお知らせ
|
||||||
|
312=トーケン
|
||||||
|
313=テレグラムお知らせ
|
||||||
|
314=ID
|
||||||
|
315=トーケン
|
||||||
|
316=パゲット探し
|
||||||
|
317=説明
|
||||||
|
318=ボズヤ情報
|
||||||
|
319=機能
|
||||||
|
320=現在
|
||||||
|
321=状態
|
||||||
|
322=探す
|
||||||
|
323=CEの名前
|
||||||
|
324=状態
|
||||||
|
325=人数
|
||||||
|
326=進行度
|
||||||
|
|
||||||
|
10001="{0}" 発生!
|
||||||
|
10002=待機: {0}
|
||||||
|
10003=マッチング: {0}
|
||||||
|
10004=入ります: {0}
|
||||||
|
10005={0} 発生!
|
||||||
|
10006=待機: {0}
|
||||||
|
10007=スタート
|
||||||
|
10008=キャンセル
|
||||||
|
10009=適用とセーブ
|
||||||
|
10010=中央ラノシアリーキまたは南方ボズヤで自動的に探します
|
||||||
|
10011=皇都イシュガルド防衛戦に解除で入って見てください
|
||||||
|
10012=マッチング
|
||||||
|
10013=インスタンス
|
||||||
|
10014=南方ボズヤでCEをまってください。右のリストにパゲットの候補が表示されたら項目をクリックしてください
|
||||||
|
10015=項目をクリックすると説明が出ます
|
||||||
|
10016=確認済
|
||||||
|
10017=終わり
|
||||||
|
10018=登録中
|
||||||
|
10019=入場中
|
||||||
|
10020=進行中
|
||||||
|
10021=アンノウン
|
||||||
|
10022=このパゲットデータを使いますか?セーブします
|
||||||
|
10023=選択
|
87
Data/DcLang-Korean(Actoz).txt
Normal file
87
Data/DcLang-Korean(Actoz).txt
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
# 한국말 메시지, 한국어 서비스(액토즈)
|
||||||
|
LANG=한국어(액토즈)
|
||||||
|
|
||||||
|
0=FFXIV dc
|
||||||
|
1=준비됐습니다
|
||||||
|
2=FFXIV 플러그인이 없어요!
|
||||||
|
3=FFXIV 플러그인을 찾았어요!
|
||||||
|
4=FFXIV 듀티 콘텐츠 시작합니다!
|
||||||
|
5=ACT 정보: {0} ({1})
|
||||||
|
6=FFXIV 플러그인 정보: {0} ({1})
|
||||||
|
7=잘못된 데이터: {0}
|
||||||
|
8=분석할 수 없어요
|
||||||
|
9=알수없는 임무: {0}
|
||||||
|
10=알수없는 인스턴스: {0}
|
||||||
|
11=알수없는 지역: {0}
|
||||||
|
12=알수없는 돌발: {0}
|
||||||
|
13=데이터를 읽을 수가 없어요!
|
||||||
|
14=데이터 파일이 없어요! {0}
|
||||||
|
20=듀티 콘텐츠 정보: {1}({0}) / A:{2} / R:{3} / I:{4} / F:{5} ({6})
|
||||||
|
21=무작위 임무
|
||||||
|
22=인스턴스
|
||||||
|
23=돌발
|
||||||
|
24=돌발 교전
|
||||||
|
25=비상 교전
|
||||||
|
26=기본
|
||||||
|
|
||||||
|
99=듀티 콘텐츠 플러그인 {0}
|
||||||
|
|
||||||
|
101=소리 파일을 선택하세요
|
||||||
|
102=소리 파일 (*.wav)|*.wav|모든 파일 (*.*)|*.*
|
||||||
|
103=알림 테스트입니다!!
|
||||||
|
|
||||||
|
200=설정
|
||||||
|
201=표시 언어
|
||||||
|
202=FFXIV를 보고 있지 않을때 오버레이를 감춥니다
|
||||||
|
|
||||||
|
300=임무
|
||||||
|
301=콘텐츠
|
||||||
|
302=설정
|
||||||
|
303=패킷
|
||||||
|
304=데이터셋
|
||||||
|
305=로그 글꼴
|
||||||
|
306=오버레이 보기
|
||||||
|
307=투명도
|
||||||
|
308=소리 듣기
|
||||||
|
309=인스턴스
|
||||||
|
310=돌발
|
||||||
|
311=라인 알림
|
||||||
|
312=라인 토큰
|
||||||
|
313=텔레그램 알림
|
||||||
|
314=텔레그램 ID
|
||||||
|
315=텔레그램 토큰
|
||||||
|
316=패킷 찾기
|
||||||
|
317=설명
|
||||||
|
318=보즈야 찾기
|
||||||
|
319=기능
|
||||||
|
320=현재값
|
||||||
|
321=상태
|
||||||
|
322=찾은값
|
||||||
|
323=비상 교전 이름
|
||||||
|
324=상태
|
||||||
|
325=사람수
|
||||||
|
326=진행도
|
||||||
|
|
||||||
|
10001="{0}" 발생했어요!
|
||||||
|
10002=찾습니다: {0}
|
||||||
|
10003=매칭됐어요: {0}
|
||||||
|
10004=들어가요: {0}
|
||||||
|
10005={0} 발생했어요!
|
||||||
|
10006=대기 갯수: {0}
|
||||||
|
10007=시작
|
||||||
|
10008=취소
|
||||||
|
10009=적용 및 저장
|
||||||
|
10010=중부 라노시아로 가시면 값이 채워집니다. 또는 남부 보즈야 전선의 교전으로도 알 수 있습니다.
|
||||||
|
10011=토벌전 "성도 이슈가르드 방어전"에 해제로 입장해보세요.
|
||||||
|
10012=매치
|
||||||
|
10013=인스턴스
|
||||||
|
10014=남부 보즈야 전선으로 가서 비상 교전을 기다리세요. 오른쪽 보즈야 찾기에 후보 데이터가 뜨면 맞는 데이터를 선택하세요.
|
||||||
|
10015=설명을 볼 항목을 선택하세요
|
||||||
|
10016=확인됨
|
||||||
|
10017=끝남
|
||||||
|
10018=등록중
|
||||||
|
10019=입장하는중
|
||||||
|
10020=진행중
|
||||||
|
10021=알수없어요
|
||||||
|
10022=패킷 데이터를 적용하고 덮어쓰실거예요?
|
||||||
|
10023=선택함
|
305
DcConfig.cs
Normal file
305
DcConfig.cs
Normal file
|
@ -0,0 +1,305 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.Sockets;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DutyContent
|
||||||
|
{
|
||||||
|
class DcConfig
|
||||||
|
{
|
||||||
|
public static bool PluginEnable { get; set; }
|
||||||
|
public static string PluginPath { get; set; }
|
||||||
|
public static string DataPath { get; set; }
|
||||||
|
public static string PacketPath { get; set; }
|
||||||
|
public static string ConfigPath { get; set; }
|
||||||
|
|
||||||
|
//
|
||||||
|
public static PacketConfig Packet = new PacketConfig();
|
||||||
|
public static DutyConfig Duty = new DutyConfig();
|
||||||
|
|
||||||
|
//
|
||||||
|
public static ConnectionList Connections = new ConnectionList();
|
||||||
|
|
||||||
|
//
|
||||||
|
public static string Language { get; set; } = "";
|
||||||
|
|
||||||
|
//
|
||||||
|
public static void SaveConfig(string filename = null)
|
||||||
|
{
|
||||||
|
if (filename == null)
|
||||||
|
filename = ConfigPath;
|
||||||
|
|
||||||
|
using (var sw = new StreamWriter(filename, false, Encoding.UTF8))
|
||||||
|
{
|
||||||
|
sw.WriteLine("# DutyContent configuration: {0}", DateTime.Now.ToString());
|
||||||
|
sw.WriteLine();
|
||||||
|
|
||||||
|
sw.WriteLine("# config");
|
||||||
|
sw.WriteLine("Language={0}", Language);
|
||||||
|
sw.WriteLine();
|
||||||
|
|
||||||
|
Duty.InternalSaveStream(sw);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public static void LoadConfig(string filename = null)
|
||||||
|
{
|
||||||
|
if (filename == null)
|
||||||
|
filename = ConfigPath;
|
||||||
|
|
||||||
|
if (!File.Exists(filename))
|
||||||
|
SaveConfig(filename);
|
||||||
|
|
||||||
|
var db = new ThirdParty.LineDb(filename, Encoding.UTF8, false);
|
||||||
|
|
||||||
|
Language = db["Language"];
|
||||||
|
|
||||||
|
Duty.InternalReadFromDb(db);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public static void Load()
|
||||||
|
{
|
||||||
|
Packet.Load();
|
||||||
|
LoadConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public static void ReadLanguage(bool is_in_init = false)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(DcConfig.Language))
|
||||||
|
{
|
||||||
|
if (!is_in_init)
|
||||||
|
MesgLog.Initialize(Properties.Resources.DefaultMessage);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string filename = Path.Combine(DcConfig.DataPath, $"DcLang-{DcConfig.Language}.txt");
|
||||||
|
|
||||||
|
if (File.Exists(filename))
|
||||||
|
MesgLog.LoadFile(filename);
|
||||||
|
else
|
||||||
|
MesgLog.Initialize(Properties.Resources.DefaultMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public class PacketConfig
|
||||||
|
{
|
||||||
|
// Packet
|
||||||
|
public string Version { get; set; } = "5.45 HotFix";
|
||||||
|
public ushort OpFate { get; set; } = 0x3D5;
|
||||||
|
public ushort OpDuty { get; set; } = 0x307;
|
||||||
|
public ushort OpMatch { get; set; } = 0x26E;
|
||||||
|
public ushort OpInstance { get; set; } = 0x10C;
|
||||||
|
public ushort OpSouthernBozja { get; set; } = 0x1F5;
|
||||||
|
|
||||||
|
//
|
||||||
|
public void Save(string filename = null)
|
||||||
|
{
|
||||||
|
if (filename == null)
|
||||||
|
filename = PacketPath;
|
||||||
|
|
||||||
|
using (var sw = new StreamWriter(filename, false, Encoding.UTF8))
|
||||||
|
{
|
||||||
|
sw.WriteLine("# DutyPacket configuration: {0}", DateTime.Now.ToString());
|
||||||
|
sw.WriteLine();
|
||||||
|
|
||||||
|
sw.WriteLine("# packet");
|
||||||
|
sw.WriteLine("Version={0}", Version);
|
||||||
|
sw.WriteLine("OpFate={0}", OpFate);
|
||||||
|
sw.WriteLine("OpDuty={0}", OpDuty);
|
||||||
|
sw.WriteLine("OpMatch={0}", OpMatch);
|
||||||
|
sw.WriteLine("OpInstance={0}", OpInstance);
|
||||||
|
sw.WriteLine("OpSouthernBozja={0}", OpSouthernBozja);
|
||||||
|
sw.WriteLine();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public void Load(string filename = null)
|
||||||
|
{
|
||||||
|
if (filename == null)
|
||||||
|
filename = PacketPath;
|
||||||
|
|
||||||
|
if (!File.Exists(filename))
|
||||||
|
Save(filename);
|
||||||
|
|
||||||
|
var db = new ThirdParty.LineDb(filename, Encoding.UTF8, false);
|
||||||
|
|
||||||
|
Version = db["Version"];
|
||||||
|
OpFate = ThirdParty.Converter.ToUshort(db["OpFate"], OpFate);
|
||||||
|
OpDuty = ThirdParty.Converter.ToUshort(db["OpDuty"], OpDuty);
|
||||||
|
OpMatch = ThirdParty.Converter.ToUshort(db["OpMatch"], OpMatch);
|
||||||
|
OpInstance = ThirdParty.Converter.ToUshort(db["OpInstance"], OpInstance);
|
||||||
|
OpSouthernBozja = ThirdParty.Converter.ToUshort(db["OpSouthernBozja"], OpSouthernBozja);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public class DutyConfig
|
||||||
|
{
|
||||||
|
public string Language { get; set; } = "English";
|
||||||
|
public int ActiveFate { get; set; } = 0;
|
||||||
|
public string LogFontFamily { get; set; } = "Microsoft Sans Serif";
|
||||||
|
public float LogFontSize { get; set; } = 12.0f;
|
||||||
|
public bool EnableOverlay { get; set; }
|
||||||
|
public bool EnableSound { get; set; }
|
||||||
|
public string SoundInstanceFile { get; set; }
|
||||||
|
public int SoundInstanceVolume { get; set; } = 100;
|
||||||
|
public string SoundFateFile { get; set; }
|
||||||
|
public int SoundFateVolume { get; set; } = 100;
|
||||||
|
public bool UseNotifyLine { get; set; }
|
||||||
|
public string NotifyLineToken { get; set; }
|
||||||
|
public bool UseNotifyTelegram { get; set; }
|
||||||
|
public string NotifyTelegramId { get; set; }
|
||||||
|
public string NotifyTelegramToken { get; set; }
|
||||||
|
public Point OverlayLocation { get; set; } = new Point(0, 0);
|
||||||
|
|
||||||
|
//
|
||||||
|
public bool EnableNotify => UseNotifyLine || UseNotifyTelegram;
|
||||||
|
|
||||||
|
//
|
||||||
|
public FateSelection[] Fates = new FateSelection[4]
|
||||||
|
{
|
||||||
|
new FateSelection(0),
|
||||||
|
new FateSelection(1),
|
||||||
|
new FateSelection(2),
|
||||||
|
new FateSelection(3),
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
internal void InternalSaveStream(StreamWriter sw)
|
||||||
|
{
|
||||||
|
sw.WriteLine("# duty");
|
||||||
|
sw.WriteLine("DutyLanguage={0}", Language);
|
||||||
|
sw.WriteLine("DutyActiveFate={0}", ActiveFate);
|
||||||
|
sw.WriteLine("DutyFate0={0}", Fates[0].Line);
|
||||||
|
sw.WriteLine("DutyFate1={0}", Fates[1].Line);
|
||||||
|
sw.WriteLine("DutyFate2={0}", Fates[2].Line);
|
||||||
|
sw.WriteLine("DutyFate3={0}", Fates[3].Line);
|
||||||
|
sw.WriteLine("DutyLogFontFamily={0}", LogFontFamily);
|
||||||
|
sw.WriteLine("DutyLogFontSize={0}", LogFontSize);
|
||||||
|
sw.WriteLine("DutyEnableOverlay={0}", EnableOverlay);
|
||||||
|
sw.WriteLine("DutyEnableSound={0}", EnableSound);
|
||||||
|
sw.WriteLine("DutySoundInstanceFile={0}", SoundInstanceFile);
|
||||||
|
sw.WriteLine("DutySoundInstanceVolume={0}", SoundInstanceVolume);
|
||||||
|
sw.WriteLine("DutySoundFateFile={0}", SoundFateFile);
|
||||||
|
sw.WriteLine("DutySoundFateVolume={0}", SoundFateVolume);
|
||||||
|
sw.WriteLine("DutyUseNotifyLine={0}", UseNotifyLine);
|
||||||
|
sw.WriteLine("DutyNotifyLineToken={0}", NotifyLineToken);
|
||||||
|
sw.WriteLine("DutyUseNotifyTelegram={0}", UseNotifyTelegram);
|
||||||
|
sw.WriteLine("DutyNotifyTelegramId={0}", NotifyTelegramId);
|
||||||
|
sw.WriteLine("DutyNotifyTelegramToken={0}", NotifyTelegramToken);
|
||||||
|
sw.WriteLine("DutyOverlayLocationX={0}", OverlayLocation.X);
|
||||||
|
sw.WriteLine("DutyOverlayLocationY={0}", OverlayLocation.Y);
|
||||||
|
sw.WriteLine();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
internal void InternalReadFromDb(ThirdParty.LineDb db)
|
||||||
|
{
|
||||||
|
Language = db["DutyLanguage"];
|
||||||
|
ActiveFate = ThirdParty.Converter.ToInt(db["DutyActiveFate"]);
|
||||||
|
Fates[0].Line = db["DutyFate0"];
|
||||||
|
Fates[1].Line = db["DutyFate1"];
|
||||||
|
Fates[2].Line = db["DutyFate2"];
|
||||||
|
Fates[3].Line = db["DutyFate3"];
|
||||||
|
LogFontFamily = db["DutyLogFontFamily"];
|
||||||
|
LogFontSize = ThirdParty.Converter.ToFloat(db["DutyLogFontSize"], LogFontSize);
|
||||||
|
EnableOverlay = ThirdParty.Converter.ToBool(db["DutyEnableOverlay"]);
|
||||||
|
EnableSound = ThirdParty.Converter.ToBool(db["DutyEnableSound"]);
|
||||||
|
SoundInstanceFile = db["DutySoundInstanceFile"];
|
||||||
|
SoundFateFile = db["DutySoundFateFile"];
|
||||||
|
SoundInstanceVolume = ThirdParty.Converter.ToInt(db["DutySoundInstanceVolume"], 100);
|
||||||
|
SoundFateVolume = ThirdParty.Converter.ToInt(db["DutySoundFateVolume"], 100);
|
||||||
|
UseNotifyLine = ThirdParty.Converter.ToBool(db["DutyUseNotifyLine"]);
|
||||||
|
NotifyLineToken = db["DutyNotifyLineToken"];
|
||||||
|
UseNotifyTelegram = ThirdParty.Converter.ToBool(db["DutyUseNotifyTelegram"]);
|
||||||
|
NotifyTelegramId = db["DutyNotifyTelegramId"];
|
||||||
|
NotifyTelegramToken = db["DutyNotifyTelegramToken"];
|
||||||
|
OverlayLocation = new Point(ThirdParty.Converter.ToInt(db["DutyOverlayLocationX"]), ThirdParty.Converter.ToInt(db["DutyOverlayLocationY"]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public class FateSelection
|
||||||
|
{
|
||||||
|
public HashSet<int> Selected { get; } = new HashSet<int>();
|
||||||
|
public string Line { get; set; }
|
||||||
|
public int Index { get; set; }
|
||||||
|
|
||||||
|
public FateSelection(int index)
|
||||||
|
{
|
||||||
|
Index = index;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void MakeSelects(bool clear = false)
|
||||||
|
{
|
||||||
|
if (clear)
|
||||||
|
Selected.Clear();
|
||||||
|
|
||||||
|
var ss = Line.Split('|');
|
||||||
|
foreach (var s in ss)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrWhiteSpace(s) && ThirdParty.Converter.TryInt(s, out int i))
|
||||||
|
Selected.Add(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void MakeLine()
|
||||||
|
{
|
||||||
|
Line = string.Join("|", Selected);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public class ConnectionList
|
||||||
|
{
|
||||||
|
public List<ThirdParty.NativeMethods.TcpRow> Conns = new List<ThirdParty.NativeMethods.TcpRow>();
|
||||||
|
|
||||||
|
public void GetConnections(Process process)
|
||||||
|
{
|
||||||
|
Conns.Clear();
|
||||||
|
|
||||||
|
var size = 0;
|
||||||
|
var ret = ThirdParty.NativeMethods.GetExtendedTcpTable(IntPtr.Zero, ref size, true, AddressFamily.InterNetwork, 4);
|
||||||
|
var buff = Marshal.AllocHGlobal(size);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ret = ThirdParty.NativeMethods.GetExtendedTcpTable(buff, ref size, true, AddressFamily.InterNetwork, 4);
|
||||||
|
if (ret == 0)
|
||||||
|
{
|
||||||
|
var tbl = Marshal.PtrToStructure<ThirdParty.NativeMethods.TcpTable>(buff);
|
||||||
|
var ptr = (IntPtr)((long)buff + Marshal.SizeOf(tbl.entries));
|
||||||
|
|
||||||
|
for (var i = 0; i < tbl.entries; i++)
|
||||||
|
{
|
||||||
|
var row = Marshal.PtrToStructure<ThirdParty.NativeMethods.TcpRow>(ptr);
|
||||||
|
|
||||||
|
if (!IPAddress.IsLoopback(row.RemoteAddress) &&
|
||||||
|
process.Id == row.owningPid)
|
||||||
|
Conns.Add(row);
|
||||||
|
|
||||||
|
ptr = (IntPtr)((long)ptr + Marshal.SizeOf(row));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
if (buff != null)
|
||||||
|
Marshal.FreeHGlobal(buff);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
244
DcContent.cs
Normal file
244
DcContent.cs
Normal file
|
@ -0,0 +1,244 @@
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace DutyContent
|
||||||
|
{
|
||||||
|
public class DcContent
|
||||||
|
{
|
||||||
|
// roulette
|
||||||
|
public class Roulette
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
public static explicit operator Roulette(string name)
|
||||||
|
{
|
||||||
|
return new Roulette { Name = name };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// instance
|
||||||
|
public class Instance
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
public static explicit operator Instance(string name)
|
||||||
|
{
|
||||||
|
return new Instance { Name = name };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// area
|
||||||
|
public class Area
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
public IReadOnlyDictionary<int, Fate> Fates { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// fate
|
||||||
|
public class Fate
|
||||||
|
{
|
||||||
|
public Area Area { get; set; }
|
||||||
|
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
public static explicit operator Fate(string name)
|
||||||
|
{
|
||||||
|
return new Fate { Name = name };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// group
|
||||||
|
public class Group
|
||||||
|
{
|
||||||
|
public string Version { get; set; }
|
||||||
|
public string Language { get; set; }
|
||||||
|
public Dictionary<int, Roulette> Roulettes { get; set; }
|
||||||
|
public Dictionary<int, Instance> Instances { get; set; }
|
||||||
|
public Dictionary<int, Area> Areas { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public static string Version { get; private set; }
|
||||||
|
public static string Language { get; private set; }
|
||||||
|
public static IReadOnlyDictionary<int, Roulette> Roulettes { get; private set; } = new Dictionary<int, Roulette>();
|
||||||
|
public static IReadOnlyDictionary<int, Instance> Instances { get; private set; } = new Dictionary<int, Instance>();
|
||||||
|
public static IReadOnlyDictionary<int, Area> Areas { get; private set; } = new Dictionary<int, Area>();
|
||||||
|
public static IReadOnlyDictionary<int, Fate> Fates { get; private set; } = new Dictionary<int, Fate>();
|
||||||
|
public static Dictionary<int, int> Missions { get; private set; } = new Dictionary<int, int>();
|
||||||
|
|
||||||
|
//
|
||||||
|
public static bool Initialize(string json)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(json))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
bool ret;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ret = Fill(json);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
ret = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// parse json
|
||||||
|
private static bool Fill(string json)
|
||||||
|
{
|
||||||
|
Group data = JsonConvert.DeserializeObject<Group>(json);
|
||||||
|
|
||||||
|
Dictionary<int, Fate> fates = new Dictionary<int, Fate>();
|
||||||
|
|
||||||
|
foreach (var area in data.Areas)
|
||||||
|
{
|
||||||
|
foreach (var fate in area.Value.Fates)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
fate.Value.Area = area.Value;
|
||||||
|
fates.Add(fate.Key, fate.Value);
|
||||||
|
}
|
||||||
|
catch (NullReferenceException /*nex*/)
|
||||||
|
{
|
||||||
|
MesgLog.E(7, fate.Key);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MesgLog.Ex(ex, 8);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Version = data.Version;
|
||||||
|
Language = data.Language;
|
||||||
|
Roulettes = data.Roulettes;
|
||||||
|
Instances = data.Instances;
|
||||||
|
Areas = data.Areas;
|
||||||
|
Fates = fates;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public static Roulette TryRoulette(int code)
|
||||||
|
{
|
||||||
|
return Roulettes.TryGetValue(code, out Roulette roulette) ? roulette : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public static Instance TryInstance(int code)
|
||||||
|
{
|
||||||
|
return Instances.TryGetValue(code, out Instance instance) ? instance : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public static Area TryArea(int code)
|
||||||
|
{
|
||||||
|
return Areas.TryGetValue(code, out Area area) ? area : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public static Fate TryFate(int code)
|
||||||
|
{
|
||||||
|
return Fates.ContainsKey(code) ? Fates[code] : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public static Roulette GetRoulette(int code)
|
||||||
|
{
|
||||||
|
return Roulettes.TryGetValue(code, out Roulette roulette) ? roulette :
|
||||||
|
new Roulette { Name = MesgLog.Text(9, code) };
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public static Instance GetInstance(int code)
|
||||||
|
{
|
||||||
|
return Instances.TryGetValue(code, out Instance instance) ? instance :
|
||||||
|
new Instance { Name = MesgLog.Text(10, code) };
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public static Area GetArea(int code)
|
||||||
|
{
|
||||||
|
return Areas.TryGetValue(code, out Area area) ? area :
|
||||||
|
new Area { Name = MesgLog.Text(11, code) };
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public static Fate GetFate(int code)
|
||||||
|
{
|
||||||
|
return Fates.ContainsKey(code) ? Fates[code] :
|
||||||
|
new Fate { Name = MesgLog.Text(12, code) };
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public static bool ReadContent(string language = null)
|
||||||
|
{
|
||||||
|
if (language == null)
|
||||||
|
language = DcConfig.Duty.Language;
|
||||||
|
else if (!DcConfig.Duty.Language.Equals(language))
|
||||||
|
DcConfig.Duty.Language = language;
|
||||||
|
|
||||||
|
string filename = Path.Combine(DcConfig.DataPath, $"DcDuty-{language}.json");
|
||||||
|
|
||||||
|
if (!File.Exists(filename))
|
||||||
|
{
|
||||||
|
language = "English";
|
||||||
|
filename = Path.Combine(DcConfig.DataPath, $"DcDuty-{language}.json");
|
||||||
|
|
||||||
|
if (!File.Exists(filename))
|
||||||
|
{
|
||||||
|
MesgLog.E(14, filename);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!DcConfig.Duty.Language.Equals(language))
|
||||||
|
DcConfig.Duty.Language = language;
|
||||||
|
}
|
||||||
|
|
||||||
|
string json = File.ReadAllText(filename, Encoding.UTF8);
|
||||||
|
|
||||||
|
if (!Initialize(json))
|
||||||
|
{
|
||||||
|
MesgLog.E(13);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MesgLog.I(20,
|
||||||
|
Language,
|
||||||
|
Version,
|
||||||
|
Areas.Count,
|
||||||
|
Roulettes.Count,
|
||||||
|
Instances.Count,
|
||||||
|
Fates.Count,
|
||||||
|
filename);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string CeStatusToString(int s)
|
||||||
|
{
|
||||||
|
// 10[1] status 0=end, 1=wait, 2=??, 3=progress
|
||||||
|
switch (s)
|
||||||
|
{
|
||||||
|
case 0: return MesgLog.Text(10017);
|
||||||
|
case 1: return MesgLog.Text(10018);
|
||||||
|
case 2: return MesgLog.Text(10019);
|
||||||
|
case 3: return MesgLog.Text(10020);
|
||||||
|
default: return MesgLog.Text(10021);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
148
DcControl.Designer.cs
generated
Normal file
148
DcControl.Designer.cs
generated
Normal file
|
@ -0,0 +1,148 @@
|
||||||
|
|
||||||
|
namespace DutyContent
|
||||||
|
{
|
||||||
|
partial class DcControl
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 필수 디자이너 변수입니다.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 사용 중인 모든 리소스를 정리합니다.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region 구성 요소 디자이너에서 생성한 코드
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 디자이너 지원에 필요한 메서드입니다.
|
||||||
|
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||||
|
this.tabMain = new System.Windows.Forms.TabControl();
|
||||||
|
this.tabPageDuty = new System.Windows.Forms.TabPage();
|
||||||
|
this.tabPageConfig = new System.Windows.Forms.TabPage();
|
||||||
|
this.txtMesg = new System.Windows.Forms.RichTextBox();
|
||||||
|
this.btnClearMesg = new System.Windows.Forms.Button();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||||
|
this.splitContainer1.Panel1.SuspendLayout();
|
||||||
|
this.splitContainer1.Panel2.SuspendLayout();
|
||||||
|
this.splitContainer1.SuspendLayout();
|
||||||
|
this.tabMain.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// splitContainer1
|
||||||
|
//
|
||||||
|
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.splitContainer1.Name = "splitContainer1";
|
||||||
|
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||||
|
//
|
||||||
|
// splitContainer1.Panel1
|
||||||
|
//
|
||||||
|
this.splitContainer1.Panel1.Controls.Add(this.tabMain);
|
||||||
|
//
|
||||||
|
// splitContainer1.Panel2
|
||||||
|
//
|
||||||
|
this.splitContainer1.Panel2.Controls.Add(this.txtMesg);
|
||||||
|
this.splitContainer1.Panel2.Controls.Add(this.btnClearMesg);
|
||||||
|
this.splitContainer1.Size = new System.Drawing.Size(792, 567);
|
||||||
|
this.splitContainer1.SplitterDistance = 497;
|
||||||
|
this.splitContainer1.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// tabMain
|
||||||
|
//
|
||||||
|
this.tabMain.Alignment = System.Windows.Forms.TabAlignment.Left;
|
||||||
|
this.tabMain.Controls.Add(this.tabPageDuty);
|
||||||
|
this.tabMain.Controls.Add(this.tabPageConfig);
|
||||||
|
this.tabMain.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.tabMain.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;
|
||||||
|
this.tabMain.ItemSize = new System.Drawing.Size(30, 100);
|
||||||
|
this.tabMain.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.tabMain.Multiline = true;
|
||||||
|
this.tabMain.Name = "tabMain";
|
||||||
|
this.tabMain.SelectedIndex = 0;
|
||||||
|
this.tabMain.Size = new System.Drawing.Size(792, 497);
|
||||||
|
this.tabMain.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
|
||||||
|
this.tabMain.TabIndex = 0;
|
||||||
|
this.tabMain.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.TabMain_DrawItem);
|
||||||
|
//
|
||||||
|
// tabPageDuty
|
||||||
|
//
|
||||||
|
this.tabPageDuty.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.tabPageDuty.Location = new System.Drawing.Point(104, 4);
|
||||||
|
this.tabPageDuty.Name = "tabPageDuty";
|
||||||
|
this.tabPageDuty.Padding = new System.Windows.Forms.Padding(3);
|
||||||
|
this.tabPageDuty.Size = new System.Drawing.Size(684, 489);
|
||||||
|
this.tabPageDuty.TabIndex = 0;
|
||||||
|
this.tabPageDuty.Text = "Duty";
|
||||||
|
//
|
||||||
|
// tabPageConfig
|
||||||
|
//
|
||||||
|
this.tabPageConfig.Location = new System.Drawing.Point(104, 4);
|
||||||
|
this.tabPageConfig.Name = "tabPageConfig";
|
||||||
|
this.tabPageConfig.Padding = new System.Windows.Forms.Padding(3);
|
||||||
|
this.tabPageConfig.Size = new System.Drawing.Size(684, 489);
|
||||||
|
this.tabPageConfig.TabIndex = 1;
|
||||||
|
this.tabPageConfig.Text = "Config";
|
||||||
|
this.tabPageConfig.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// txtMesg
|
||||||
|
//
|
||||||
|
this.txtMesg.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.txtMesg.Location = new System.Drawing.Point(104, 3);
|
||||||
|
this.txtMesg.Name = "txtMesg";
|
||||||
|
this.txtMesg.ReadOnly = true;
|
||||||
|
this.txtMesg.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
|
||||||
|
this.txtMesg.Size = new System.Drawing.Size(685, 60);
|
||||||
|
this.txtMesg.TabIndex = 1;
|
||||||
|
this.txtMesg.Text = "";
|
||||||
|
//
|
||||||
|
// btnClearMesg
|
||||||
|
//
|
||||||
|
this.btnClearMesg.Location = new System.Drawing.Point(3, 3);
|
||||||
|
this.btnClearMesg.Name = "btnClearMesg";
|
||||||
|
this.btnClearMesg.Size = new System.Drawing.Size(95, 33);
|
||||||
|
this.btnClearMesg.TabIndex = 0;
|
||||||
|
this.btnClearMesg.Text = "Clear Mesg";
|
||||||
|
this.btnClearMesg.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// DcControl
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.Controls.Add(this.splitContainer1);
|
||||||
|
this.Name = "DcControl";
|
||||||
|
this.Size = new System.Drawing.Size(792, 567);
|
||||||
|
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||||
|
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||||
|
this.splitContainer1.ResumeLayout(false);
|
||||||
|
this.tabMain.ResumeLayout(false);
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||||
|
private System.Windows.Forms.Button btnClearMesg;
|
||||||
|
private System.Windows.Forms.TabControl tabMain;
|
||||||
|
private System.Windows.Forms.TabPage tabPageDuty;
|
||||||
|
private System.Windows.Forms.TabPage tabPageConfig;
|
||||||
|
private System.Windows.Forms.RichTextBox txtMesg;
|
||||||
|
}
|
||||||
|
}
|
299
DcControl.cs
Normal file
299
DcControl.cs
Normal file
|
@ -0,0 +1,299 @@
|
||||||
|
using Advanced_Combat_Tracker;
|
||||||
|
using System;
|
||||||
|
using System.Data;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace DutyContent
|
||||||
|
{
|
||||||
|
public partial class DcControl : UserControl, IActPluginV1
|
||||||
|
{
|
||||||
|
public static string PluginName => "DutyContent";
|
||||||
|
|
||||||
|
private static DcControl _self;
|
||||||
|
public static DcControl Self => _self;
|
||||||
|
|
||||||
|
//
|
||||||
|
private ActPluginData _ffxiv_plugin_data;
|
||||||
|
|
||||||
|
private bool _is_form_loaded;
|
||||||
|
private bool _is_plugin_initializing;
|
||||||
|
private TabPage _act_tab;
|
||||||
|
private Label _act_label;
|
||||||
|
|
||||||
|
private Timer _update_and_check;
|
||||||
|
private ThirdParty.NativeMethods.ProcessHandle _game_process;
|
||||||
|
private bool _game_exist;
|
||||||
|
private bool _game_active;
|
||||||
|
private string _game_zone;
|
||||||
|
|
||||||
|
//
|
||||||
|
public DcControl()
|
||||||
|
{
|
||||||
|
_self = this;
|
||||||
|
|
||||||
|
//
|
||||||
|
RegisterActAssemblies();
|
||||||
|
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
foreach (var f in Application.OpenForms)
|
||||||
|
{
|
||||||
|
if (f == ActGlobals.oFormActMain)
|
||||||
|
{
|
||||||
|
_is_form_loaded = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
Tab.DutyForm dutyform = new Tab.DutyForm();
|
||||||
|
tabPageDuty.Controls.Add(dutyform.Controls[0]);
|
||||||
|
|
||||||
|
Tab.ConfigForm configform = new Tab.ConfigForm();
|
||||||
|
tabPageConfig.Controls.Add(configform.Controls[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public void RegisterActAssemblies()
|
||||||
|
{
|
||||||
|
var pin = ActGlobals.oFormActMain.ActPlugins.FirstOrDefault(x => x.pluginFile.Name.Equals("DutyContent.dll"));
|
||||||
|
DcConfig.PluginPath = pin?.pluginFile.DirectoryName;
|
||||||
|
|
||||||
|
DcConfig.DataPath = Path.Combine(DcConfig.PluginPath, "Data");
|
||||||
|
DcConfig.ConfigPath = Path.Combine(DcConfig.PluginPath, "DutyContent.config");
|
||||||
|
DcConfig.PacketPath = Path.Combine(DcConfig.PluginPath, "DutyPacket.config");
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public void InitPlugin(TabPage tab, Label label)
|
||||||
|
{
|
||||||
|
_act_tab = tab;
|
||||||
|
_act_label = label;
|
||||||
|
|
||||||
|
if (_is_form_loaded)
|
||||||
|
ActPluginInitialize();
|
||||||
|
else
|
||||||
|
ActGlobals.oFormActMain.Shown += OFormActMain_Shown;
|
||||||
|
|
||||||
|
var actinfo = System.Reflection.Assembly.GetAssembly(typeof(ActGlobals));
|
||||||
|
MesgLog.I(5, actinfo.GetName().Version, actinfo.Location);
|
||||||
|
|
||||||
|
if (_ffxiv_plugin_data == null)
|
||||||
|
{
|
||||||
|
_ffxiv_plugin_data = ActGlobals.oFormActMain.ActPlugins.Where(x =>
|
||||||
|
x.pluginFile.Name.ToUpper().Contains("FFXIV_ACT_PLUGIN") &&
|
||||||
|
x.lblPluginStatus.Text.ToUpper().Contains("FFXIV PLUGIN STARTED."))
|
||||||
|
.Select(x => x)
|
||||||
|
.FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_ffxiv_plugin_data == null)
|
||||||
|
MesgLog.E(2); // FFXIV plugin is missing!
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var ids = ((FFXIV_ACT_Plugin.FFXIV_ACT_Plugin)_ffxiv_plugin_data.pluginObj).DataSubscription;
|
||||||
|
ids.NetworkReceived -= FFXIVPlugin_NetworkReceived;
|
||||||
|
ids.NetworkReceived += FFXIVPlugin_NetworkReceived;
|
||||||
|
ids.ZoneChanged -= FFXIVPlugin_ZoneChanged;
|
||||||
|
ids.ZoneChanged += FFXIVPlugin_ZoneChanged;
|
||||||
|
|
||||||
|
MesgLog.I(6, System.Diagnostics.FileVersionInfo.GetVersionInfo(_ffxiv_plugin_data.pluginFile.FullName).FileVersion, _ffxiv_plugin_data.pluginFile.FullName);
|
||||||
|
}
|
||||||
|
|
||||||
|
_update_and_check = new Timer()
|
||||||
|
{
|
||||||
|
Interval = 300,
|
||||||
|
};
|
||||||
|
_update_and_check.Tick += (sender, e) =>
|
||||||
|
{
|
||||||
|
UpdateAndCheckProc();
|
||||||
|
_update_and_check.Interval = _game_exist ? _game_active ? 50 : 300 : 500;
|
||||||
|
};
|
||||||
|
_update_and_check.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public void DeInitPlugin()
|
||||||
|
{
|
||||||
|
_update_and_check.Stop();
|
||||||
|
|
||||||
|
DcConfig.PluginEnable = false;
|
||||||
|
|
||||||
|
Tab.DutyForm.Self?.PluginDeinitialize();
|
||||||
|
Tab.ConfigForm.Self?.PluginDeinitialize();
|
||||||
|
DcConfig.SaveConfig();
|
||||||
|
|
||||||
|
MesgLog.SetTextBox(null);
|
||||||
|
|
||||||
|
_act_tab = null;
|
||||||
|
|
||||||
|
if (_act_label != null)
|
||||||
|
{
|
||||||
|
_act_label.Text = "Closed";
|
||||||
|
_act_label = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OFormActMain_Shown(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
_is_form_loaded = true;
|
||||||
|
ActPluginInitialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
private void ActPluginInitialize()
|
||||||
|
{
|
||||||
|
if (_is_plugin_initializing)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_is_plugin_initializing = true;
|
||||||
|
_act_label.Text = "Starting...";
|
||||||
|
|
||||||
|
//
|
||||||
|
MesgLog.SetTextBox(txtMesg);
|
||||||
|
MesgLog.Initialize(Properties.Resources.DefaultMessage);
|
||||||
|
|
||||||
|
DcConfig.Load();
|
||||||
|
DcConfig.ReadLanguage(true);
|
||||||
|
DcContent.ReadContent();
|
||||||
|
|
||||||
|
UpdateUiLocale();
|
||||||
|
|
||||||
|
MesgLog.C(Color.Aquamarine, 4);
|
||||||
|
|
||||||
|
//
|
||||||
|
Dock = DockStyle.Fill;
|
||||||
|
|
||||||
|
_act_label.Text = MesgLog.Text(1); // Duty ready
|
||||||
|
_act_tab.Text = MesgLog.Text(0); // FFXIV dc
|
||||||
|
_act_tab.Controls.Add(this);
|
||||||
|
|
||||||
|
//
|
||||||
|
Tab.ConfigForm.Self?.PluginInitialize();
|
||||||
|
Tab.DutyForm.Self?.PluginInitialize();
|
||||||
|
|
||||||
|
//
|
||||||
|
DcConfig.PluginEnable = true;
|
||||||
|
|
||||||
|
_is_plugin_initializing = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
private void TabMain_DrawItem(object sender, DrawItemEventArgs e)
|
||||||
|
{
|
||||||
|
var g = e.Graphics;
|
||||||
|
TabPage p = tabMain.TabPages[e.Index];
|
||||||
|
Rectangle r = tabMain.GetTabRect(e.Index);
|
||||||
|
StringFormat s = new StringFormat()
|
||||||
|
{
|
||||||
|
Alignment = StringAlignment.Near,
|
||||||
|
LineAlignment = StringAlignment.Center,
|
||||||
|
};
|
||||||
|
|
||||||
|
Brush b, h;
|
||||||
|
Font f;
|
||||||
|
|
||||||
|
if (tabMain.SelectedIndex == e.Index)
|
||||||
|
{
|
||||||
|
f = new Font(tabMain.Font.FontFamily, 12.0f, FontStyle.Bold, GraphicsUnit.Pixel);
|
||||||
|
#if false
|
||||||
|
b = new SolidBrush(Color.Black);
|
||||||
|
h = SystemBrushes.Window;
|
||||||
|
#else
|
||||||
|
b = new SolidBrush(Color.White);
|
||||||
|
h = SystemBrushes.Highlight;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
//else if (p.col)
|
||||||
|
else
|
||||||
|
{
|
||||||
|
f = new Font(tabMain.Font.FontFamily, 12.0f, FontStyle.Regular, GraphicsUnit.Pixel);
|
||||||
|
b = new SolidBrush(Color.DarkSlateGray);
|
||||||
|
h = SystemBrushes.Control;
|
||||||
|
}
|
||||||
|
|
||||||
|
g.FillRectangle(h, r);
|
||||||
|
g.DrawString(p.Text, f, b, r, new StringFormat(s));
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
private void UpdateAndCheckProc()
|
||||||
|
{
|
||||||
|
if (_game_process == null || _game_process.Process.HasExited)
|
||||||
|
{
|
||||||
|
_game_exist = false;
|
||||||
|
_game_active = false;
|
||||||
|
|
||||||
|
// will be update game status next time
|
||||||
|
var p = (from x in Process.GetProcessesByName("ffxiv_dx11") where !x.HasExited && x.MainModule != null && x.MainModule.ModuleName == "ffxiv_dx11.exe" select x).FirstOrDefault<Process>();
|
||||||
|
|
||||||
|
if (p != null && p.HasExited)
|
||||||
|
p = null;
|
||||||
|
|
||||||
|
if (((_game_process == null) != (p == null)) ||
|
||||||
|
(_game_process != null && p != null && _game_process.Process.Id != p.Id))
|
||||||
|
{
|
||||||
|
_game_process = p != null ? new ThirdParty.NativeMethods.ProcessHandle(p) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_game_process != null)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
DcConfig.Connections.GetConnections(_game_process.Process);
|
||||||
|
//MesgLog.L("count: {0}", DcConfig.Connections.Conns.Count);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_game_exist = true;
|
||||||
|
|
||||||
|
var fgw = ThirdParty.NativeMethods.GetForegroundWindow();
|
||||||
|
ThirdParty.NativeMethods.GetWindowThreadProcessId(fgw, out int id);
|
||||||
|
_game_active = _game_process.Process.Id == id;
|
||||||
|
}
|
||||||
|
|
||||||
|
var zone = ActGlobals.oFormActMain.CurrentZone;
|
||||||
|
if (_game_zone == null || !zone.Equals(_game_zone))
|
||||||
|
{
|
||||||
|
#if false
|
||||||
|
if (_game_zone != null)
|
||||||
|
MesgLog.I(1008, _game_zone);
|
||||||
|
|
||||||
|
_game_zone = zone;
|
||||||
|
MesgLog.I(1007, zone);
|
||||||
|
#else
|
||||||
|
_game_zone = zone;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
private void FFXIVPlugin_NetworkReceived(string connection, long epoch, byte[] message)
|
||||||
|
{
|
||||||
|
if (message.Length < 32)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Tab.DutyForm.Self?.PacketHandler(connection, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
private void FFXIVPlugin_ZoneChanged(uint zone_id, string zone_name)
|
||||||
|
{
|
||||||
|
Tab.DutyForm.Self?.ZoneChanged(zone_id, zone_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public void UpdateUiLocale()
|
||||||
|
{
|
||||||
|
tabPageDuty.Text = MesgLog.Text(300);
|
||||||
|
Tab.DutyForm.Self?.UpdateUiLocale();
|
||||||
|
|
||||||
|
tabPageConfig.Text= MesgLog.Text(200);
|
||||||
|
Tab.ConfigForm.Self?.UpdateUiLocale();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
120
DcControl.resx
Normal file
120
DcControl.resx
Normal file
|
@ -0,0 +1,120 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
174
DutyContent.csproj
Normal file
174
DutyContent.csproj
Normal file
|
@ -0,0 +1,174 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{66572F39-C8FD-4F89-BFA1-811C2A27D563}</ProjectGuid>
|
||||||
|
<OutputType>library</OutputType>
|
||||||
|
<RootNamespace>DutyContent</RootNamespace>
|
||||||
|
<AssemblyName>DutyContent</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Deterministic>false</Deterministic>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Deterministic>false</Deterministic>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Deterministic>false</Deterministic>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="Advanced Combat Tracker">
|
||||||
|
<HintPath>References\ACT\Advanced Combat Tracker.exe</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="FFXIV_ACT_Plugin">
|
||||||
|
<HintPath>References\ACT\FFXIV_ACT_Plugin.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="FFXIV_ACT_Plugin.Common">
|
||||||
|
<HintPath>References\ACT\FFXIV_ACT_Plugin.Common.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Drawing" />
|
||||||
|
<Reference Include="System.Windows.Forms" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
<Reference Include="System.Xaml">
|
||||||
|
<RequiredTargetFramework>4.0</RequiredTargetFramework>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="WindowsBase" />
|
||||||
|
<Reference Include="PresentationCore" />
|
||||||
|
<Reference Include="PresentationFramework" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="DcConfig.cs" />
|
||||||
|
<Compile Include="DcControl.cs">
|
||||||
|
<SubType>UserControl</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="DcControl.Designer.cs">
|
||||||
|
<DependentUpon>DcControl.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Tab\ConfigForm.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Tab\ConfigForm.Designer.cs">
|
||||||
|
<DependentUpon>ConfigForm.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Tab\DutyForm.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Tab\DutyForm.Designer.cs">
|
||||||
|
<DependentUpon>DutyForm.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="DcContent.cs" />
|
||||||
|
<Compile Include="Interface\IPacketHandler.cs" />
|
||||||
|
<Compile Include="Interface\ISuppActPlugin.cs" />
|
||||||
|
<Compile Include="Interface\ISuppLocale.cs" />
|
||||||
|
<Compile Include="Overlay\DutyOvForm.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Overlay\DutyOvForm.Designer.cs">
|
||||||
|
<DependentUpon>DutyOvForm.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="ThirdParty\Converter.cs" />
|
||||||
|
<Compile Include="ThirdParty\LineDb.cs" />
|
||||||
|
<Compile Include="ThirdParty\NativeMethods.cs" />
|
||||||
|
<Compile Include="WorkerAct.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="MesgLog.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Properties\Settings.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Settings.settings</DependentUpon>
|
||||||
|
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||||
|
</Compile>
|
||||||
|
<EmbeddedResource Include="DcControl.resx">
|
||||||
|
<DependentUpon>DcControl.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Tab\ConfigForm.resx">
|
||||||
|
<DependentUpon>ConfigForm.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Tab\DutyForm.resx">
|
||||||
|
<DependentUpon>DutyForm.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Overlay\DutyOvForm.resx">
|
||||||
|
<DependentUpon>DutyOvForm.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Properties\Resources.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<None Include="Data\DcDuty-English.json" />
|
||||||
|
<None Include="Data\DcDuty-Japanese.json" />
|
||||||
|
<None Include="Data\DcDuty-Korean.json" />
|
||||||
|
<None Include="packages.config" />
|
||||||
|
<None Include="Properties\Settings.settings">
|
||||||
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
|
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="README.md" />
|
||||||
|
<None Include="Resources\pix_tab_setting.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Resources\pix_tab_content.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Resources\mesg.txt" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Resources\pix_tab_tool.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Resources\pix_annotation.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Resources\pix_play.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Resources\pix_magnify.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Data\DcLang-Korean%28Actoz%29.txt" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Resource Include="Data\DcLang-Japanese.txt" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<PostBuildEvent>if exist "%25APPDATA%25\Advanced Combat Tracker\Plugins\DutyContent" copy $(TargetPath) "%25APPDATA%25\Advanced Combat Tracker\Plugins\DutyContent" /y
|
||||||
|
</PostBuildEvent>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
25
DutyContent.sln
Normal file
25
DutyContent.sln
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 16
|
||||||
|
VisualStudioVersion = 16.0.30717.126
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DutyContent", "DutyContent.csproj", "{66572F39-C8FD-4F89-BFA1-811C2A27D563}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{66572F39-C8FD-4F89-BFA1-811C2A27D563}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{66572F39-C8FD-4F89-BFA1-811C2A27D563}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{66572F39-C8FD-4F89-BFA1-811C2A27D563}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{66572F39-C8FD-4F89-BFA1-811C2A27D563}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {A81E51A1-CA63-4713-A000-69BCC7E3F0F8}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
14
Interface/IPacketHandler.cs
Normal file
14
Interface/IPacketHandler.cs
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DutyContent.Interface
|
||||||
|
{
|
||||||
|
interface IPacketHandler
|
||||||
|
{
|
||||||
|
void PacketHandler(string pid, byte[] message);
|
||||||
|
void ZoneChanged(uint zone_id, string zone_name);
|
||||||
|
}
|
||||||
|
}
|
14
Interface/ISuppActPlugin.cs
Normal file
14
Interface/ISuppActPlugin.cs
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DutyContent.Interface
|
||||||
|
{
|
||||||
|
interface ISuppActPlugin
|
||||||
|
{
|
||||||
|
void PluginInitialize();
|
||||||
|
void PluginDeinitialize();
|
||||||
|
}
|
||||||
|
}
|
14
Interface/ISuppLocale.cs
Normal file
14
Interface/ISuppLocale.cs
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DutyContent.Interface
|
||||||
|
{
|
||||||
|
interface ISuppLocale
|
||||||
|
{
|
||||||
|
void RefreshLocale();
|
||||||
|
void UpdateUiLocale();
|
||||||
|
}
|
||||||
|
}
|
127
MesgLog.cs
Normal file
127
MesgLog.cs
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
using System;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace DutyContent
|
||||||
|
{
|
||||||
|
class MesgLog
|
||||||
|
{
|
||||||
|
private static ThirdParty.LineDb _lines;
|
||||||
|
private static RichTextBox _logs;
|
||||||
|
|
||||||
|
private static readonly Regex ExceptionPattern = new Regex(@"\{(.+?)\}");
|
||||||
|
|
||||||
|
public static string Language { get; private set; }
|
||||||
|
|
||||||
|
public static void Initialize(string text)
|
||||||
|
{
|
||||||
|
_lines = new ThirdParty.LineDb(text, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool LoadFile(string filename, Encoding enc)
|
||||||
|
{
|
||||||
|
if (_lines == null)
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_lines.LoadFile(filename, enc, true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool LoadFile(string filename)
|
||||||
|
{
|
||||||
|
return LoadFile(filename, Encoding.UTF8);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SetTextBox(RichTextBox textbox)
|
||||||
|
{
|
||||||
|
_logs = textbox;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string Text(string text)
|
||||||
|
{
|
||||||
|
return _lines == null || !_lines.Try(text, out string v) ? $"<{text}>" : v;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string Text(string text, params object[] prms)
|
||||||
|
{
|
||||||
|
return _lines == null || !_lines.Try(text, out string v) ? $"<{text}>" : string.Format(v, prms);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string Text(int key)
|
||||||
|
{
|
||||||
|
return _lines == null || !_lines.Try(key, out string v) ? ThirdParty.LineDb.InvalidKey : v;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string Text(int key, params object[] prms)
|
||||||
|
{
|
||||||
|
return _lines == null || !_lines.Try(key, out string v) ? ThirdParty.LineDb.InvalidKey : string.Format(v, prms);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Write(Color color, string format, params object[] prms)
|
||||||
|
{
|
||||||
|
if (_logs == null || _logs.IsDisposed || format == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var text = string.Format(format, prms);
|
||||||
|
var dt = DateTime.Now.ToString("HH:mm:ss");
|
||||||
|
var ms = $"[{dt}] {text}{Environment.NewLine}";
|
||||||
|
|
||||||
|
WorkerAct.Invoker(() =>
|
||||||
|
{
|
||||||
|
_logs.SelectionColor = color;
|
||||||
|
_logs.SelectionStart = _logs.TextLength;
|
||||||
|
_logs.SelectionLength = 0;
|
||||||
|
_logs.AppendText(ms);
|
||||||
|
|
||||||
|
_logs.SelectionColor = _logs.ForeColor;
|
||||||
|
ThirdParty.NativeMethods.ScrollToBottom(_logs);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Write(string format, params object[] prms)
|
||||||
|
{
|
||||||
|
Write(Color.White, format, prms);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void L(string format, params object[] prms)
|
||||||
|
{
|
||||||
|
Write(Color.DarkBlue, format, prms);
|
||||||
|
}
|
||||||
|
|
||||||
|
// color
|
||||||
|
public static void C(Color color, int key, params object[] prms)
|
||||||
|
{
|
||||||
|
Write(color, Text(key, prms));
|
||||||
|
}
|
||||||
|
|
||||||
|
// info / black
|
||||||
|
public static void I(int key, params object[] prms)
|
||||||
|
{
|
||||||
|
Write(Color.Black, Text(key, prms));
|
||||||
|
}
|
||||||
|
|
||||||
|
// error / red
|
||||||
|
public static void E(int key, params object[] prms)
|
||||||
|
{
|
||||||
|
Write(Color.Red, Text(key, prms));
|
||||||
|
}
|
||||||
|
|
||||||
|
// gray
|
||||||
|
public static void Y(int key, params object[] prms)
|
||||||
|
{
|
||||||
|
Write(Color.Gray, Text(key, prms));
|
||||||
|
}
|
||||||
|
|
||||||
|
// exception
|
||||||
|
public static void Ex(Exception ex, int key, params object[] prms)
|
||||||
|
{
|
||||||
|
string text = Text(key, prms);
|
||||||
|
string msg = ExceptionPattern.Replace(ex.Message, "{{$1}}");
|
||||||
|
Write(Color.Red, $"{text}: {msg}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
72
Overlay/DutyOvForm.Designer.cs
generated
Normal file
72
Overlay/DutyOvForm.Designer.cs
generated
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
|
||||||
|
namespace DutyContent.Overlay
|
||||||
|
{
|
||||||
|
partial class DutyOvForm
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.lblText = new System.Windows.Forms.Label();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// lblText
|
||||||
|
//
|
||||||
|
this.lblText.AutoEllipsis = true;
|
||||||
|
this.lblText.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.lblText.ForeColor = System.Drawing.Color.White;
|
||||||
|
this.lblText.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.lblText.Name = "lblText";
|
||||||
|
this.lblText.Size = new System.Drawing.Size(300, 20);
|
||||||
|
this.lblText.TabIndex = 0;
|
||||||
|
this.lblText.Text = "Duty Content";
|
||||||
|
this.lblText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
|
this.lblText.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lblText_MouseDown);
|
||||||
|
//
|
||||||
|
// DutyOvForm
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.BackColor = System.Drawing.Color.Black;
|
||||||
|
this.ClientSize = new System.Drawing.Size(300, 25);
|
||||||
|
this.ControlBox = false;
|
||||||
|
this.Controls.Add(this.lblText);
|
||||||
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||||
|
this.Name = "DutyOvForm";
|
||||||
|
this.Opacity = 0.5D;
|
||||||
|
this.ShowInTaskbar = false;
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
|
||||||
|
this.Text = "DutyOvForm";
|
||||||
|
this.TopMost = true;
|
||||||
|
this.Load += new System.EventHandler(this.DutyOvForm_Load);
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.Label lblText;
|
||||||
|
}
|
||||||
|
}
|
145
Overlay/DutyOvForm.cs
Normal file
145
Overlay/DutyOvForm.cs
Normal file
|
@ -0,0 +1,145 @@
|
||||||
|
using System;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace DutyContent.Overlay
|
||||||
|
{
|
||||||
|
public partial class DutyOvForm : Form
|
||||||
|
{
|
||||||
|
private const int BlinkTime = 300;
|
||||||
|
private const int BlinkCount = 20;
|
||||||
|
|
||||||
|
private static readonly Color ColorFate = Color.DarkOrange;
|
||||||
|
private static readonly Color ColorMatch = Color.Red;
|
||||||
|
private static readonly Color ColorNone = Color.Black;
|
||||||
|
|
||||||
|
//
|
||||||
|
private Timer _timer;
|
||||||
|
private int _blink;
|
||||||
|
private Color _accent;
|
||||||
|
|
||||||
|
//
|
||||||
|
public DutyOvForm()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
Location = DcConfig.Duty.OverlayLocation;
|
||||||
|
|
||||||
|
_timer = new Timer { Interval = BlinkTime };
|
||||||
|
_timer.Tick += (sender, e) =>
|
||||||
|
{
|
||||||
|
if (++_blink > BlinkCount)
|
||||||
|
{
|
||||||
|
StopBlink();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BackColor = (BackColor == ColorNone) ? _accent : ColorNone;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override CreateParams CreateParams
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
CreateParams cp = base.CreateParams;
|
||||||
|
cp.ExStyle |= 0x80/*WS_EX_TOOLWINDOW*/ | 0x80000/*WS_EX_LAYERED*/;
|
||||||
|
return cp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DutyOvForm_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DoMoveDown(MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Button == MouseButtons.Left)
|
||||||
|
{
|
||||||
|
ThirdParty.NativeMethods.ReleaseCapture();
|
||||||
|
ThirdParty.NativeMethods.SendMessage(Handle, 0xA1/*WM_NCLBUTTONDOWN*/, new IntPtr(0x2/*HT_CAPTION*/), IntPtr.Zero);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnMouseDown(MouseEventArgs e)
|
||||||
|
{
|
||||||
|
base.OnMouseDown(e);
|
||||||
|
DoMoveDown(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnLocationChanged(EventArgs e)
|
||||||
|
{
|
||||||
|
base.OnLocationChanged(e);
|
||||||
|
DcConfig.Duty.OverlayLocation = Location;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void lblText_MouseDown(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
DoMoveDown(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetText(string text)
|
||||||
|
{
|
||||||
|
lblText.Text = text;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StartBlink()
|
||||||
|
{
|
||||||
|
_blink = 0;
|
||||||
|
_timer.Enabled = false;
|
||||||
|
_timer.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StopBlink()
|
||||||
|
{
|
||||||
|
_timer.Stop();
|
||||||
|
|
||||||
|
BackColor = ColorNone;
|
||||||
|
|
||||||
|
_accent = ColorNone;
|
||||||
|
lblText.Text = string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void PlayNone()
|
||||||
|
{
|
||||||
|
Invoke((MethodInvoker)(() =>
|
||||||
|
{
|
||||||
|
_accent = ColorNone;
|
||||||
|
lblText.Text = string.Empty;
|
||||||
|
StopBlink();
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void PlayFate(DcContent.Fate f)
|
||||||
|
{
|
||||||
|
Invoke((MethodInvoker)(() =>
|
||||||
|
{
|
||||||
|
_accent = ColorFate;
|
||||||
|
lblText.Text = f.Name;
|
||||||
|
StartBlink();
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void PlayQueue(string name)
|
||||||
|
{
|
||||||
|
Invoke((MethodInvoker)(() =>
|
||||||
|
{
|
||||||
|
_accent = ColorNone;
|
||||||
|
lblText.Text = name;
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void PlayMatch(string name, bool blink = true) // PlayEnter
|
||||||
|
{
|
||||||
|
Invoke((MethodInvoker)(() =>
|
||||||
|
{
|
||||||
|
_accent = ColorMatch;
|
||||||
|
lblText.Text = name;
|
||||||
|
if (blink)
|
||||||
|
StartBlink();
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
120
Overlay/DutyOvForm.resx
Normal file
120
Overlay/DutyOvForm.resx
Normal file
|
@ -0,0 +1,120 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
55
Properties/AssemblyInfo.cs
Normal file
55
Properties/AssemblyInfo.cs
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Resources;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Windows;
|
||||||
|
|
||||||
|
// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
|
||||||
|
// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
|
||||||
|
// 이러한 특성 값을 변경하세요.
|
||||||
|
[assembly: AssemblyTitle("DutyContent")]
|
||||||
|
[assembly: AssemblyDescription("Duty Content for FFXIV")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("DutyContent")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © ksh 2021")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
|
||||||
|
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
|
||||||
|
// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
//지역화 가능 애플리케이션 빌드를 시작하려면 다음을 설정하세요.
|
||||||
|
//.csproj 파일에서 <PropertyGroup> 내에 <UICulture>CultureYouAreCodingWith</UICulture>를
|
||||||
|
//설정하십시오. 예를 들어 소스 파일에서 영어(미국)를
|
||||||
|
//사용하는 경우 <UICulture>를 en-US로 설정합니다. 그런 다음 아래
|
||||||
|
//NeutralResourceLanguage 특성의 주석 처리를 제거합니다. 아래 줄의 "en-US"를 업데이트하여
|
||||||
|
//프로젝트 파일의 UICulture 설정과 일치시킵니다.
|
||||||
|
|
||||||
|
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
|
||||||
|
|
||||||
|
|
||||||
|
[assembly:ThemeInfo(
|
||||||
|
ResourceDictionaryLocation.None, //테마별 리소스 사전의 위치
|
||||||
|
//(페이지 또는 응용 프로그램 리소스 사진에
|
||||||
|
// 리소스가 없는 경우에 사용됨)
|
||||||
|
ResourceDictionaryLocation.SourceAssembly //제네릭 리소스 사전의 위치
|
||||||
|
//(페이지 또는 응용 프로그램 리소스 사진에
|
||||||
|
// 리소스가 없는 경우에 사용됨)
|
||||||
|
)]
|
||||||
|
|
||||||
|
|
||||||
|
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
|
||||||
|
//
|
||||||
|
// 주 버전
|
||||||
|
// 부 버전
|
||||||
|
// 빌드 번호
|
||||||
|
// 수정 버전
|
||||||
|
//
|
||||||
|
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
|
||||||
|
// 기본값으로 할 수 있습니다.
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
155
Properties/Resources.Designer.cs
generated
Normal file
155
Properties/Resources.Designer.cs
generated
Normal file
|
@ -0,0 +1,155 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 이 코드는 도구를 사용하여 생성되었습니다.
|
||||||
|
// 런타임 버전:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
|
||||||
|
// 이러한 변경 내용이 손실됩니다.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace DutyContent.Properties {
|
||||||
|
using System;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
|
||||||
|
/// </summary>
|
||||||
|
// 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
|
||||||
|
// 클래스에서 자동으로 생성되었습니다.
|
||||||
|
// 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을
|
||||||
|
// 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
internal class Resources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal Resources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||||
|
get {
|
||||||
|
if (object.ReferenceEquals(resourceMan, null)) {
|
||||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DutyContent.Properties.Resources", typeof(Resources).Assembly);
|
||||||
|
resourceMan = temp;
|
||||||
|
}
|
||||||
|
return resourceMan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
|
||||||
|
/// 재정의합니다.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Globalization.CultureInfo Culture {
|
||||||
|
get {
|
||||||
|
return resourceCulture;
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
resourceCulture = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// # Default English message
|
||||||
|
///LANG=English
|
||||||
|
///
|
||||||
|
///0=FFXIV dc
|
||||||
|
///1=Duty ready
|
||||||
|
///2=FFXIV plugin is missing!
|
||||||
|
///3=FFXIV plugin found!
|
||||||
|
///4=FFXIV Duty Content starting!
|
||||||
|
///5=ACT info: {0} ({1})
|
||||||
|
///6=FFXIV plugin info {0} ({1})
|
||||||
|
///7=Invalid data: {0}
|
||||||
|
///8=Parsing error
|
||||||
|
///9=Unknown roulette: {0}
|
||||||
|
///10=Unknown instance: {0}
|
||||||
|
///11=Unknown area: {0}
|
||||||
|
///12=Unknown FATE: {0}
|
||||||
|
///13=Data reading failed!
|
||||||
|
///14=Data file not found! {0}
|
||||||
|
///20=Duty contents info: {0}({1}) / A:{2} / R:{3} / I:{4} / F:{5} ({6})
|
||||||
|
///21=Roulette
|
||||||
|
///22=Instance
|
||||||
|
///23=FATE
|
||||||
|
///24=Skirmish
|
||||||
|
///[나머지 문자열은 잘림]";과(와) 유사한 지역화된 문자열을 찾습니다.
|
||||||
|
/// </summary>
|
||||||
|
internal static string DefaultMessage {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("DefaultMessage", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap pix_annotation {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("pix_annotation", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap pix_magnify {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("pix_magnify", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap pix_play {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("pix_play", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap pix_tab_content {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("pix_tab_content", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap pix_tab_setting {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("pix_tab_setting", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap pix_tab_tool {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("pix_tab_tool", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
142
Properties/Resources.resx
Normal file
142
Properties/Resources.resx
Normal file
|
@ -0,0 +1,142 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="DefaultMessage" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\resources\mesg.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
|
||||||
|
</data>
|
||||||
|
<data name="pix_annotation" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\pix_annotation.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="pix_magnify" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\pix_magnify.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="pix_play" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\pix_play.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="pix_tab_content" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\resources\pix_tab_content.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="pix_tab_setting" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\pix_tab_setting.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="pix_tab_tool" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\pix_tab_tool.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
30
Properties/Settings.Designer.cs
generated
Normal file
30
Properties/Settings.Designer.cs
generated
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
// Runtime Version:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace DutyContent.Properties
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
||||||
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||||
|
{
|
||||||
|
|
||||||
|
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||||
|
|
||||||
|
public static Settings Default
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return defaultInstance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
7
Properties/Settings.settings
Normal file
7
Properties/Settings.settings
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
|
||||||
|
<Profiles>
|
||||||
|
<Profile Name="(Default)" />
|
||||||
|
</Profiles>
|
||||||
|
<Settings />
|
||||||
|
</SettingsFile>
|
BIN
References/ACT/Advanced Combat Tracker.exe
Normal file
BIN
References/ACT/Advanced Combat Tracker.exe
Normal file
Binary file not shown.
BIN
References/ACT/FFXIV_ACT_Plugin.Common.dll
Normal file
BIN
References/ACT/FFXIV_ACT_Plugin.Common.dll
Normal file
Binary file not shown.
BIN
References/ACT/FFXIV_ACT_Plugin.Config.dll
Normal file
BIN
References/ACT/FFXIV_ACT_Plugin.Config.dll
Normal file
Binary file not shown.
BIN
References/ACT/FFXIV_ACT_Plugin.LogFile.dll
Normal file
BIN
References/ACT/FFXIV_ACT_Plugin.LogFile.dll
Normal file
Binary file not shown.
BIN
References/ACT/FFXIV_ACT_Plugin.Memory.dll
Normal file
BIN
References/ACT/FFXIV_ACT_Plugin.Memory.dll
Normal file
Binary file not shown.
BIN
References/ACT/FFXIV_ACT_Plugin.Network.dll
Normal file
BIN
References/ACT/FFXIV_ACT_Plugin.Network.dll
Normal file
Binary file not shown.
BIN
References/ACT/FFXIV_ACT_Plugin.Overlay.dll
Normal file
BIN
References/ACT/FFXIV_ACT_Plugin.Overlay.dll
Normal file
Binary file not shown.
BIN
References/ACT/FFXIV_ACT_Plugin.Parse.dll
Normal file
BIN
References/ACT/FFXIV_ACT_Plugin.Parse.dll
Normal file
Binary file not shown.
BIN
References/ACT/FFXIV_ACT_Plugin.Resource.dll
Normal file
BIN
References/ACT/FFXIV_ACT_Plugin.Resource.dll
Normal file
Binary file not shown.
BIN
References/ACT/FFXIV_ACT_Plugin.dll
Normal file
BIN
References/ACT/FFXIV_ACT_Plugin.dll
Normal file
Binary file not shown.
87
Resources/mesg.txt
Normal file
87
Resources/mesg.txt
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
# Default English message
|
||||||
|
LANG=English
|
||||||
|
|
||||||
|
0=FFXIV dc
|
||||||
|
1=Duty ready
|
||||||
|
2=FFXIV plugin is missing!
|
||||||
|
3=FFXIV plugin found!
|
||||||
|
4=FFXIV Duty Content starting!
|
||||||
|
5=ACT info: {0} ({1})
|
||||||
|
6=FFXIV plugin info {0} ({1})
|
||||||
|
7=Invalid data: {0}
|
||||||
|
8=Parsing error
|
||||||
|
9=Unknown roulette: {0}
|
||||||
|
10=Unknown instance: {0}
|
||||||
|
11=Unknown area: {0}
|
||||||
|
12=Unknown FATE: {0}
|
||||||
|
13=Data reading failed!
|
||||||
|
14=Data file not found! {0}
|
||||||
|
20=Duty contents info: {1}({0}) / A:{2} / R:{3} / I:{4} / F:{5} ({6})
|
||||||
|
21=Roulette
|
||||||
|
22=Instance
|
||||||
|
23=FATE
|
||||||
|
24=Skirmish
|
||||||
|
25=CE
|
||||||
|
26=Default
|
||||||
|
|
||||||
|
99=DutyContent Plugin {0}
|
||||||
|
|
||||||
|
101=Select wave file
|
||||||
|
102=Wave (*.wav)|*.wav|All (*.*)|*.*
|
||||||
|
103=Notify test!!
|
||||||
|
|
||||||
|
200=Config
|
||||||
|
201=Display Language
|
||||||
|
202=Hide overlays when FFXIV client is in the background
|
||||||
|
|
||||||
|
300=Duty
|
||||||
|
301=Contents
|
||||||
|
302=Setting
|
||||||
|
303=Packet
|
||||||
|
304=Dataset
|
||||||
|
305=Log font
|
||||||
|
306=Enable overlay
|
||||||
|
307=Transparent
|
||||||
|
308=Enable sound
|
||||||
|
309=Instance
|
||||||
|
310=FATE
|
||||||
|
311=Use LINE notify
|
||||||
|
312=Token
|
||||||
|
313=Use Telegram notify
|
||||||
|
314=ID
|
||||||
|
315=Token
|
||||||
|
316=Packet finder
|
||||||
|
317=Description
|
||||||
|
318=Bozja Finder
|
||||||
|
319=Function
|
||||||
|
320=Current
|
||||||
|
321=Status
|
||||||
|
322=Found
|
||||||
|
323=Name
|
||||||
|
324=Status
|
||||||
|
325=Member
|
||||||
|
326=Progress
|
||||||
|
|
||||||
|
10001="{0}" spawned!
|
||||||
|
10002=Entry: {0}
|
||||||
|
10003=Matched: {0}
|
||||||
|
10004=Enter: {0}
|
||||||
|
10005={0} spawned!
|
||||||
|
10006=Duty entries: {0}
|
||||||
|
10007=Start
|
||||||
|
10008=Cancel
|
||||||
|
10009=Apply && Save
|
||||||
|
10010=Go to Middle La Noscea. Wait for FATEs appear. Also skirmishes in "The Bozjan Southern Front" can be use.
|
||||||
|
10011=Enter tial "The Steps of Faith" with undersize option.
|
||||||
|
10012=Match
|
||||||
|
10013=Instance
|
||||||
|
10014=Go to "The Bozjan Southern Front" and wait Critical Engagements. Candidates will be appear at right side Bozja finder.
|
||||||
|
10015=Select item to show description
|
||||||
|
10016=Ok
|
||||||
|
10017=End
|
||||||
|
10018=Register
|
||||||
|
10019=Entry
|
||||||
|
10020=Progress
|
||||||
|
10021=Unknown
|
||||||
|
10022=Apply and overwrite packet data?
|
||||||
|
10023=Selected
|
BIN
Resources/pix_annotation.png
Normal file
BIN
Resources/pix_annotation.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
BIN
Resources/pix_magnify.png
Normal file
BIN
Resources/pix_magnify.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 700 B |
BIN
Resources/pix_play.png
Normal file
BIN
Resources/pix_play.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 746 B |
BIN
Resources/pix_tab_content.png
Normal file
BIN
Resources/pix_tab_content.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
BIN
Resources/pix_tab_setting.png
Normal file
BIN
Resources/pix_tab_setting.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2 KiB |
BIN
Resources/pix_tab_tool.png
Normal file
BIN
Resources/pix_tab_tool.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
103
Tab/ConfigForm.Designer.cs
generated
Normal file
103
Tab/ConfigForm.Designer.cs
generated
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
|
||||||
|
namespace DutyContent.Tab
|
||||||
|
{
|
||||||
|
partial class ConfigForm
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
|
this.lblCurrentLang = new System.Windows.Forms.Label();
|
||||||
|
this.cboDispLang = new System.Windows.Forms.ComboBox();
|
||||||
|
this.lblDispLang = new System.Windows.Forms.Label();
|
||||||
|
this.panel1.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// panel1
|
||||||
|
//
|
||||||
|
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.panel1.Controls.Add(this.lblCurrentLang);
|
||||||
|
this.panel1.Controls.Add(this.cboDispLang);
|
||||||
|
this.panel1.Controls.Add(this.lblDispLang);
|
||||||
|
this.panel1.Location = new System.Drawing.Point(12, 12);
|
||||||
|
this.panel1.Name = "panel1";
|
||||||
|
this.panel1.Size = new System.Drawing.Size(776, 158);
|
||||||
|
this.panel1.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// lblCurrentLang
|
||||||
|
//
|
||||||
|
this.lblCurrentLang.Location = new System.Drawing.Point(237, 37);
|
||||||
|
this.lblCurrentLang.Name = "lblCurrentLang";
|
||||||
|
this.lblCurrentLang.Size = new System.Drawing.Size(150, 15);
|
||||||
|
this.lblCurrentLang.TabIndex = 4;
|
||||||
|
this.lblCurrentLang.Text = "--";
|
||||||
|
this.lblCurrentLang.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||||
|
//
|
||||||
|
// cboDispLang
|
||||||
|
//
|
||||||
|
this.cboDispLang.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cboDispLang.FormattingEnabled = true;
|
||||||
|
this.cboDispLang.Location = new System.Drawing.Point(170, 13);
|
||||||
|
this.cboDispLang.Name = "cboDispLang";
|
||||||
|
this.cboDispLang.Size = new System.Drawing.Size(217, 21);
|
||||||
|
this.cboDispLang.TabIndex = 1;
|
||||||
|
this.cboDispLang.SelectedIndexChanged += new System.EventHandler(this.CboDispLang_SelectedIndexChanged);
|
||||||
|
//
|
||||||
|
// lblDispLang
|
||||||
|
//
|
||||||
|
this.lblDispLang.AutoSize = true;
|
||||||
|
this.lblDispLang.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.lblDispLang.Location = new System.Drawing.Point(12, 11);
|
||||||
|
this.lblDispLang.Name = "lblDispLang";
|
||||||
|
this.lblDispLang.Size = new System.Drawing.Size(39, 20);
|
||||||
|
this.lblDispLang.TabIndex = 0;
|
||||||
|
this.lblDispLang.Text = "201";
|
||||||
|
//
|
||||||
|
// ConfigForm
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.AutoScroll = true;
|
||||||
|
this.ClientSize = new System.Drawing.Size(800, 450);
|
||||||
|
this.Controls.Add(this.panel1);
|
||||||
|
this.Name = "ConfigForm";
|
||||||
|
this.Text = "Config";
|
||||||
|
this.panel1.ResumeLayout(false);
|
||||||
|
this.panel1.PerformLayout();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.Panel panel1;
|
||||||
|
private System.Windows.Forms.Label lblDispLang;
|
||||||
|
private System.Windows.Forms.ComboBox cboDispLang;
|
||||||
|
private System.Windows.Forms.Label lblCurrentLang;
|
||||||
|
}
|
||||||
|
}
|
106
Tab/ConfigForm.cs
Normal file
106
Tab/ConfigForm.cs
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
using DutyContent.Interface;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Data;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace DutyContent.Tab
|
||||||
|
{
|
||||||
|
public partial class ConfigForm : Form, Interface.ISuppLocale, Interface.ISuppActPlugin
|
||||||
|
{
|
||||||
|
private static ConfigForm _self;
|
||||||
|
public static ConfigForm Self => _self;
|
||||||
|
|
||||||
|
public ConfigForm()
|
||||||
|
{
|
||||||
|
_self = this;
|
||||||
|
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void PluginDeinitialize()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void PluginInitialize()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
lblCurrentLang.Text = MesgLog.Text("LANG");
|
||||||
|
|
||||||
|
//
|
||||||
|
var lang = MakeConfigLangList();
|
||||||
|
|
||||||
|
foreach (var i in lang)
|
||||||
|
{
|
||||||
|
var n = cboDispLang.Items.Add(i);
|
||||||
|
if (i.Equals(DcConfig.Language))
|
||||||
|
cboDispLang.SelectedIndex = n;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cboDispLang.SelectedIndex < 0)
|
||||||
|
cboDispLang.SelectedIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RefreshLocale()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateUiLocale()
|
||||||
|
{
|
||||||
|
lblDispLang.Text = MesgLog.Text(201);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<string> MakeConfigLangList()
|
||||||
|
{
|
||||||
|
List<string> lst = new List<string>();
|
||||||
|
|
||||||
|
lst.Add($"<{MesgLog.Text(26)}>");
|
||||||
|
|
||||||
|
DirectoryInfo di = new DirectoryInfo(DcConfig.DataPath);
|
||||||
|
|
||||||
|
foreach (var fi in di.GetFiles("DcLang-*.txt"))
|
||||||
|
{
|
||||||
|
var s = fi.Name.Substring(7, fi.Name.Length - 7 - 4);
|
||||||
|
lst.Add(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
return lst;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CboDispLang_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!DcConfig.PluginEnable)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (cboDispLang.SelectedIndex == 0)
|
||||||
|
{
|
||||||
|
// default
|
||||||
|
DcConfig.Language = string.Empty;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var l = (string)cboDispLang.SelectedItem;
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(l) || l.Equals(DcConfig.Language))
|
||||||
|
return;
|
||||||
|
|
||||||
|
DcConfig.Language = l;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
DcConfig.ReadLanguage();
|
||||||
|
DcControl.Self?.UpdateUiLocale();
|
||||||
|
DcConfig.SaveConfig();
|
||||||
|
|
||||||
|
lblCurrentLang.Text = MesgLog.Text("LANG");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
120
Tab/ConfigForm.resx
Normal file
120
Tab/ConfigForm.resx
Normal file
|
@ -0,0 +1,120 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
935
Tab/DutyForm.Designer.cs
generated
Normal file
935
Tab/DutyForm.Designer.cs
generated
Normal file
|
@ -0,0 +1,935 @@
|
||||||
|
|
||||||
|
namespace DutyContent.Tab
|
||||||
|
{
|
||||||
|
partial class DutyForm
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.components = new System.ComponentModel.Container();
|
||||||
|
System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem(new string[] {
|
||||||
|
"FATE",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
""}, -1);
|
||||||
|
System.Windows.Forms.ListViewItem listViewItem2 = new System.Windows.Forms.ListViewItem(new string[] {
|
||||||
|
"Duty",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
""}, -1);
|
||||||
|
System.Windows.Forms.ListViewItem listViewItem3 = new System.Windows.Forms.ListViewItem(new string[] {
|
||||||
|
"Match",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
""}, -1);
|
||||||
|
System.Windows.Forms.ListViewItem listViewItem4 = new System.Windows.Forms.ListViewItem(new string[] {
|
||||||
|
"Instance",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
""}, -1);
|
||||||
|
System.Windows.Forms.ListViewItem listViewItem5 = new System.Windows.Forms.ListViewItem(new string[] {
|
||||||
|
"Southern Bozja",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
""}, -1);
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DutyForm));
|
||||||
|
this.tabContent = new System.Windows.Forms.TabControl();
|
||||||
|
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||||
|
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||||
|
this.rdoFatePreset4 = new System.Windows.Forms.RadioButton();
|
||||||
|
this.rdoFatePreset3 = new System.Windows.Forms.RadioButton();
|
||||||
|
this.rdoFatePreset2 = new System.Windows.Forms.RadioButton();
|
||||||
|
this.rdoFatePreset1 = new System.Windows.Forms.RadioButton();
|
||||||
|
this.treeFates = new System.Windows.Forms.TreeView();
|
||||||
|
this.txtContentLog = new System.Windows.Forms.RichTextBox();
|
||||||
|
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||||
|
this.panel4 = new System.Windows.Forms.Panel();
|
||||||
|
this.lblTelegramToken = new System.Windows.Forms.Label();
|
||||||
|
this.txtTelegramToken = new System.Windows.Forms.TextBox();
|
||||||
|
this.lblTelegramId = new System.Windows.Forms.Label();
|
||||||
|
this.txtTelegramId = new System.Windows.Forms.TextBox();
|
||||||
|
this.chkUseNotifyTelegram = new System.Windows.Forms.CheckBox();
|
||||||
|
this.btnTestNotify = new System.Windows.Forms.Button();
|
||||||
|
this.lblLineNotifyBotLink = new System.Windows.Forms.LinkLabel();
|
||||||
|
this.lblLineToken = new System.Windows.Forms.Label();
|
||||||
|
this.txtLineToken = new System.Windows.Forms.TextBox();
|
||||||
|
this.chkUseNotifyLine = new System.Windows.Forms.CheckBox();
|
||||||
|
this.panel3 = new System.Windows.Forms.Panel();
|
||||||
|
this.lblCurrentDataSet = new System.Windows.Forms.Label();
|
||||||
|
this.cboDataset = new System.Windows.Forms.ComboBox();
|
||||||
|
this.lblDataSet = new System.Windows.Forms.Label();
|
||||||
|
this.btnLogFont = new System.Windows.Forms.Button();
|
||||||
|
this.lblLogFont = new System.Windows.Forms.Label();
|
||||||
|
this.panel2 = new System.Windows.Forms.Panel();
|
||||||
|
this.btnSoundPlayFate = new System.Windows.Forms.Button();
|
||||||
|
this.btnSoundPlayInstance = new System.Windows.Forms.Button();
|
||||||
|
this.btnSoundFindFate = new System.Windows.Forms.Button();
|
||||||
|
this.btnSoundFindInstance = new System.Windows.Forms.Button();
|
||||||
|
this.lblSoundFate = new System.Windows.Forms.Label();
|
||||||
|
this.txtSoundFate = new System.Windows.Forms.TextBox();
|
||||||
|
this.txtSoundInstance = new System.Windows.Forms.TextBox();
|
||||||
|
this.chkEnableSound = new System.Windows.Forms.CheckBox();
|
||||||
|
this.lblSoundInstance = new System.Windows.Forms.Label();
|
||||||
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
|
this.progbOverlayTransparent = new System.Windows.Forms.ProgressBar();
|
||||||
|
this.btnOverlayDimming = new System.Windows.Forms.Button();
|
||||||
|
this.lblOverlayTransparent = new System.Windows.Forms.Label();
|
||||||
|
this.chkEnableOverlay = new System.Windows.Forms.CheckBox();
|
||||||
|
this.tabPage3 = new System.Windows.Forms.TabPage();
|
||||||
|
this.panel5 = new System.Windows.Forms.Panel();
|
||||||
|
this.txtPacketDescription = new System.Windows.Forms.TextBox();
|
||||||
|
this.lblPacketDesc = new System.Windows.Forms.Label();
|
||||||
|
this.btnPacketApply = new System.Windows.Forms.Button();
|
||||||
|
this.btnPacketStart = new System.Windows.Forms.Button();
|
||||||
|
this.lstBozjaInfo = new System.Windows.Forms.ListView();
|
||||||
|
this.columnHeader5 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||||
|
this.columnHeader6 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||||
|
this.columnHeader7 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||||
|
this.columnHeader8 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||||
|
this.lblPacketBozja = new System.Windows.Forms.Label();
|
||||||
|
this.txtPacketInfo = new System.Windows.Forms.TextBox();
|
||||||
|
this.lstPacketInfo = new System.Windows.Forms.ListView();
|
||||||
|
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||||
|
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||||
|
this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||||
|
this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||||
|
this.lblPacketFinder = new System.Windows.Forms.Label();
|
||||||
|
this.ilTabContent = new System.Windows.Forms.ImageList(this.components);
|
||||||
|
this.tabContent.SuspendLayout();
|
||||||
|
this.tabPage1.SuspendLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||||
|
this.splitContainer1.Panel1.SuspendLayout();
|
||||||
|
this.splitContainer1.Panel2.SuspendLayout();
|
||||||
|
this.splitContainer1.SuspendLayout();
|
||||||
|
this.tabPage2.SuspendLayout();
|
||||||
|
this.panel4.SuspendLayout();
|
||||||
|
this.panel3.SuspendLayout();
|
||||||
|
this.panel2.SuspendLayout();
|
||||||
|
this.panel1.SuspendLayout();
|
||||||
|
this.tabPage3.SuspendLayout();
|
||||||
|
this.panel5.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// tabContent
|
||||||
|
//
|
||||||
|
this.tabContent.Controls.Add(this.tabPage1);
|
||||||
|
this.tabContent.Controls.Add(this.tabPage2);
|
||||||
|
this.tabContent.Controls.Add(this.tabPage3);
|
||||||
|
this.tabContent.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.tabContent.ImageList = this.ilTabContent;
|
||||||
|
this.tabContent.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.tabContent.Name = "tabContent";
|
||||||
|
this.tabContent.SelectedIndex = 0;
|
||||||
|
this.tabContent.Size = new System.Drawing.Size(800, 502);
|
||||||
|
this.tabContent.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// tabPage1
|
||||||
|
//
|
||||||
|
this.tabPage1.Controls.Add(this.splitContainer1);
|
||||||
|
this.tabPage1.ImageIndex = 0;
|
||||||
|
this.tabPage1.Location = new System.Drawing.Point(4, 39);
|
||||||
|
this.tabPage1.Name = "tabPage1";
|
||||||
|
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
|
||||||
|
this.tabPage1.Size = new System.Drawing.Size(792, 459);
|
||||||
|
this.tabPage1.TabIndex = 0;
|
||||||
|
this.tabPage1.Text = "301";
|
||||||
|
this.tabPage1.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// splitContainer1
|
||||||
|
//
|
||||||
|
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.splitContainer1.Location = new System.Drawing.Point(3, 3);
|
||||||
|
this.splitContainer1.Name = "splitContainer1";
|
||||||
|
//
|
||||||
|
// splitContainer1.Panel1
|
||||||
|
//
|
||||||
|
this.splitContainer1.Panel1.Controls.Add(this.rdoFatePreset4);
|
||||||
|
this.splitContainer1.Panel1.Controls.Add(this.rdoFatePreset3);
|
||||||
|
this.splitContainer1.Panel1.Controls.Add(this.rdoFatePreset2);
|
||||||
|
this.splitContainer1.Panel1.Controls.Add(this.rdoFatePreset1);
|
||||||
|
this.splitContainer1.Panel1.Controls.Add(this.treeFates);
|
||||||
|
//
|
||||||
|
// splitContainer1.Panel2
|
||||||
|
//
|
||||||
|
this.splitContainer1.Panel2.Controls.Add(this.txtContentLog);
|
||||||
|
this.splitContainer1.Size = new System.Drawing.Size(786, 453);
|
||||||
|
this.splitContainer1.SplitterDistance = 262;
|
||||||
|
this.splitContainer1.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// rdoFatePreset4
|
||||||
|
//
|
||||||
|
this.rdoFatePreset4.AutoSize = true;
|
||||||
|
this.rdoFatePreset4.Location = new System.Drawing.Point(116, 6);
|
||||||
|
this.rdoFatePreset4.Name = "rdoFatePreset4";
|
||||||
|
this.rdoFatePreset4.Size = new System.Drawing.Size(31, 17);
|
||||||
|
this.rdoFatePreset4.TabIndex = 4;
|
||||||
|
this.rdoFatePreset4.TabStop = true;
|
||||||
|
this.rdoFatePreset4.Tag = "3";
|
||||||
|
this.rdoFatePreset4.Text = "4";
|
||||||
|
this.rdoFatePreset4.UseVisualStyleBackColor = true;
|
||||||
|
this.rdoFatePreset4.CheckedChanged += new System.EventHandler(this.RdoFatePreset4_CheckedChanged);
|
||||||
|
//
|
||||||
|
// rdoFatePreset3
|
||||||
|
//
|
||||||
|
this.rdoFatePreset3.AutoSize = true;
|
||||||
|
this.rdoFatePreset3.Location = new System.Drawing.Point(79, 6);
|
||||||
|
this.rdoFatePreset3.Name = "rdoFatePreset3";
|
||||||
|
this.rdoFatePreset3.Size = new System.Drawing.Size(31, 17);
|
||||||
|
this.rdoFatePreset3.TabIndex = 3;
|
||||||
|
this.rdoFatePreset3.TabStop = true;
|
||||||
|
this.rdoFatePreset3.Tag = "2";
|
||||||
|
this.rdoFatePreset3.Text = "3";
|
||||||
|
this.rdoFatePreset3.UseVisualStyleBackColor = true;
|
||||||
|
this.rdoFatePreset3.CheckedChanged += new System.EventHandler(this.RdoFatePreset3_CheckedChanged);
|
||||||
|
//
|
||||||
|
// rdoFatePreset2
|
||||||
|
//
|
||||||
|
this.rdoFatePreset2.AutoSize = true;
|
||||||
|
this.rdoFatePreset2.Location = new System.Drawing.Point(42, 6);
|
||||||
|
this.rdoFatePreset2.Name = "rdoFatePreset2";
|
||||||
|
this.rdoFatePreset2.Size = new System.Drawing.Size(31, 17);
|
||||||
|
this.rdoFatePreset2.TabIndex = 2;
|
||||||
|
this.rdoFatePreset2.TabStop = true;
|
||||||
|
this.rdoFatePreset2.Tag = "1";
|
||||||
|
this.rdoFatePreset2.Text = "2";
|
||||||
|
this.rdoFatePreset2.UseVisualStyleBackColor = true;
|
||||||
|
this.rdoFatePreset2.CheckedChanged += new System.EventHandler(this.RdoFatePreset2_CheckedChanged);
|
||||||
|
//
|
||||||
|
// rdoFatePreset1
|
||||||
|
//
|
||||||
|
this.rdoFatePreset1.AutoSize = true;
|
||||||
|
this.rdoFatePreset1.Checked = true;
|
||||||
|
this.rdoFatePreset1.Location = new System.Drawing.Point(5, 6);
|
||||||
|
this.rdoFatePreset1.Name = "rdoFatePreset1";
|
||||||
|
this.rdoFatePreset1.Size = new System.Drawing.Size(31, 17);
|
||||||
|
this.rdoFatePreset1.TabIndex = 1;
|
||||||
|
this.rdoFatePreset1.TabStop = true;
|
||||||
|
this.rdoFatePreset1.Tag = "0";
|
||||||
|
this.rdoFatePreset1.Text = "1";
|
||||||
|
this.rdoFatePreset1.UseVisualStyleBackColor = true;
|
||||||
|
this.rdoFatePreset1.CheckedChanged += new System.EventHandler(this.RdoFatePreset1_CheckedChanged);
|
||||||
|
//
|
||||||
|
// treeFates
|
||||||
|
//
|
||||||
|
this.treeFates.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.treeFates.CheckBoxes = true;
|
||||||
|
this.treeFates.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.treeFates.Location = new System.Drawing.Point(0, 29);
|
||||||
|
this.treeFates.Name = "treeFates";
|
||||||
|
this.treeFates.Size = new System.Drawing.Size(260, 424);
|
||||||
|
this.treeFates.TabIndex = 0;
|
||||||
|
this.treeFates.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.TreeFates_AfterCheck);
|
||||||
|
//
|
||||||
|
// txtContentLog
|
||||||
|
//
|
||||||
|
this.txtContentLog.BackColor = System.Drawing.Color.AliceBlue;
|
||||||
|
this.txtContentLog.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.txtContentLog.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.txtContentLog.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.txtContentLog.Name = "txtContentLog";
|
||||||
|
this.txtContentLog.ReadOnly = true;
|
||||||
|
this.txtContentLog.Size = new System.Drawing.Size(520, 453);
|
||||||
|
this.txtContentLog.TabIndex = 0;
|
||||||
|
this.txtContentLog.Text = "";
|
||||||
|
//
|
||||||
|
// tabPage2
|
||||||
|
//
|
||||||
|
this.tabPage2.Controls.Add(this.panel4);
|
||||||
|
this.tabPage2.Controls.Add(this.panel3);
|
||||||
|
this.tabPage2.Controls.Add(this.panel2);
|
||||||
|
this.tabPage2.Controls.Add(this.panel1);
|
||||||
|
this.tabPage2.ImageIndex = 1;
|
||||||
|
this.tabPage2.Location = new System.Drawing.Point(4, 39);
|
||||||
|
this.tabPage2.Name = "tabPage2";
|
||||||
|
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
|
||||||
|
this.tabPage2.Size = new System.Drawing.Size(792, 459);
|
||||||
|
this.tabPage2.TabIndex = 1;
|
||||||
|
this.tabPage2.Text = "302";
|
||||||
|
this.tabPage2.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// panel4
|
||||||
|
//
|
||||||
|
this.panel4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.panel4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.panel4.Controls.Add(this.lblTelegramToken);
|
||||||
|
this.panel4.Controls.Add(this.txtTelegramToken);
|
||||||
|
this.panel4.Controls.Add(this.lblTelegramId);
|
||||||
|
this.panel4.Controls.Add(this.txtTelegramId);
|
||||||
|
this.panel4.Controls.Add(this.chkUseNotifyTelegram);
|
||||||
|
this.panel4.Controls.Add(this.btnTestNotify);
|
||||||
|
this.panel4.Controls.Add(this.lblLineNotifyBotLink);
|
||||||
|
this.panel4.Controls.Add(this.lblLineToken);
|
||||||
|
this.panel4.Controls.Add(this.txtLineToken);
|
||||||
|
this.panel4.Controls.Add(this.chkUseNotifyLine);
|
||||||
|
this.panel4.Location = new System.Drawing.Point(6, 273);
|
||||||
|
this.panel4.Name = "panel4";
|
||||||
|
this.panel4.Size = new System.Drawing.Size(778, 143);
|
||||||
|
this.panel4.TabIndex = 3;
|
||||||
|
//
|
||||||
|
// lblTelegramToken
|
||||||
|
//
|
||||||
|
this.lblTelegramToken.AutoSize = true;
|
||||||
|
this.lblTelegramToken.Location = new System.Drawing.Point(22, 118);
|
||||||
|
this.lblTelegramToken.Name = "lblTelegramToken";
|
||||||
|
this.lblTelegramToken.Size = new System.Drawing.Size(25, 13);
|
||||||
|
this.lblTelegramToken.TabIndex = 15;
|
||||||
|
this.lblTelegramToken.Text = "315";
|
||||||
|
//
|
||||||
|
// txtTelegramToken
|
||||||
|
//
|
||||||
|
this.txtTelegramToken.Location = new System.Drawing.Point(108, 115);
|
||||||
|
this.txtTelegramToken.Name = "txtTelegramToken";
|
||||||
|
this.txtTelegramToken.Size = new System.Drawing.Size(515, 20);
|
||||||
|
this.txtTelegramToken.TabIndex = 14;
|
||||||
|
this.txtTelegramToken.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TxtTelegramToken_KeyDown);
|
||||||
|
//
|
||||||
|
// lblTelegramId
|
||||||
|
//
|
||||||
|
this.lblTelegramId.AutoSize = true;
|
||||||
|
this.lblTelegramId.Location = new System.Drawing.Point(23, 92);
|
||||||
|
this.lblTelegramId.Name = "lblTelegramId";
|
||||||
|
this.lblTelegramId.Size = new System.Drawing.Size(25, 13);
|
||||||
|
this.lblTelegramId.TabIndex = 13;
|
||||||
|
this.lblTelegramId.Text = "314";
|
||||||
|
//
|
||||||
|
// txtTelegramId
|
||||||
|
//
|
||||||
|
this.txtTelegramId.Location = new System.Drawing.Point(108, 89);
|
||||||
|
this.txtTelegramId.Name = "txtTelegramId";
|
||||||
|
this.txtTelegramId.Size = new System.Drawing.Size(515, 20);
|
||||||
|
this.txtTelegramId.TabIndex = 12;
|
||||||
|
this.txtTelegramId.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TxtTelegramId_KeyDown);
|
||||||
|
//
|
||||||
|
// chkUseNotifyTelegram
|
||||||
|
//
|
||||||
|
this.chkUseNotifyTelegram.AutoSize = true;
|
||||||
|
this.chkUseNotifyTelegram.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.chkUseNotifyTelegram.Location = new System.Drawing.Point(3, 59);
|
||||||
|
this.chkUseNotifyTelegram.Name = "chkUseNotifyTelegram";
|
||||||
|
this.chkUseNotifyTelegram.Size = new System.Drawing.Size(58, 24);
|
||||||
|
this.chkUseNotifyTelegram.TabIndex = 11;
|
||||||
|
this.chkUseNotifyTelegram.Text = "313";
|
||||||
|
this.chkUseNotifyTelegram.UseVisualStyleBackColor = true;
|
||||||
|
this.chkUseNotifyTelegram.CheckedChanged += new System.EventHandler(this.ChkUseNotifyTelegram_CheckedChanged);
|
||||||
|
//
|
||||||
|
// btnTestNotify
|
||||||
|
//
|
||||||
|
this.btnTestNotify.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.btnTestNotify.BackgroundImage = global::DutyContent.Properties.Resources.pix_annotation;
|
||||||
|
this.btnTestNotify.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
|
||||||
|
this.btnTestNotify.Enabled = false;
|
||||||
|
this.btnTestNotify.Location = new System.Drawing.Point(722, 84);
|
||||||
|
this.btnTestNotify.Name = "btnTestNotify";
|
||||||
|
this.btnTestNotify.Size = new System.Drawing.Size(51, 51);
|
||||||
|
this.btnTestNotify.TabIndex = 4;
|
||||||
|
this.btnTestNotify.UseVisualStyleBackColor = true;
|
||||||
|
this.btnTestNotify.Click += new System.EventHandler(this.BtnTestNotify_Click);
|
||||||
|
//
|
||||||
|
// lblLineNotifyBotLink
|
||||||
|
//
|
||||||
|
this.lblLineNotifyBotLink.AutoSize = true;
|
||||||
|
this.lblLineNotifyBotLink.Location = new System.Drawing.Point(496, 9);
|
||||||
|
this.lblLineNotifyBotLink.Name = "lblLineNotifyBotLink";
|
||||||
|
this.lblLineNotifyBotLink.Size = new System.Drawing.Size(127, 13);
|
||||||
|
this.lblLineNotifyBotLink.TabIndex = 10;
|
||||||
|
this.lblLineNotifyBotLink.TabStop = true;
|
||||||
|
this.lblLineNotifyBotLink.Text = "https://notify-bot.line.me/";
|
||||||
|
this.lblLineNotifyBotLink.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LblLineNotifyBotLink_LinkClicked);
|
||||||
|
//
|
||||||
|
// lblLineToken
|
||||||
|
//
|
||||||
|
this.lblLineToken.AutoSize = true;
|
||||||
|
this.lblLineToken.Location = new System.Drawing.Point(22, 36);
|
||||||
|
this.lblLineToken.Name = "lblLineToken";
|
||||||
|
this.lblLineToken.Size = new System.Drawing.Size(25, 13);
|
||||||
|
this.lblLineToken.TabIndex = 9;
|
||||||
|
this.lblLineToken.Text = "312";
|
||||||
|
//
|
||||||
|
// txtLineToken
|
||||||
|
//
|
||||||
|
this.txtLineToken.Location = new System.Drawing.Point(108, 33);
|
||||||
|
this.txtLineToken.Name = "txtLineToken";
|
||||||
|
this.txtLineToken.Size = new System.Drawing.Size(515, 20);
|
||||||
|
this.txtLineToken.TabIndex = 1;
|
||||||
|
this.txtLineToken.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TxtLineToken_KeyDown);
|
||||||
|
//
|
||||||
|
// chkUseNotifyLine
|
||||||
|
//
|
||||||
|
this.chkUseNotifyLine.AutoSize = true;
|
||||||
|
this.chkUseNotifyLine.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.chkUseNotifyLine.Location = new System.Drawing.Point(3, 3);
|
||||||
|
this.chkUseNotifyLine.Name = "chkUseNotifyLine";
|
||||||
|
this.chkUseNotifyLine.Size = new System.Drawing.Size(58, 24);
|
||||||
|
this.chkUseNotifyLine.TabIndex = 0;
|
||||||
|
this.chkUseNotifyLine.Text = "311";
|
||||||
|
this.chkUseNotifyLine.UseVisualStyleBackColor = true;
|
||||||
|
this.chkUseNotifyLine.CheckedChanged += new System.EventHandler(this.ChkUseNotifyLine_CheckedChanged);
|
||||||
|
//
|
||||||
|
// panel3
|
||||||
|
//
|
||||||
|
this.panel3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.panel3.Controls.Add(this.lblCurrentDataSet);
|
||||||
|
this.panel3.Controls.Add(this.cboDataset);
|
||||||
|
this.panel3.Controls.Add(this.lblDataSet);
|
||||||
|
this.panel3.Controls.Add(this.btnLogFont);
|
||||||
|
this.panel3.Controls.Add(this.lblLogFont);
|
||||||
|
this.panel3.Location = new System.Drawing.Point(6, 6);
|
||||||
|
this.panel3.Name = "panel3";
|
||||||
|
this.panel3.Size = new System.Drawing.Size(778, 56);
|
||||||
|
this.panel3.TabIndex = 2;
|
||||||
|
//
|
||||||
|
// lblCurrentDataSet
|
||||||
|
//
|
||||||
|
this.lblCurrentDataSet.Location = new System.Drawing.Point(203, 30);
|
||||||
|
this.lblCurrentDataSet.Name = "lblCurrentDataSet";
|
||||||
|
this.lblCurrentDataSet.Size = new System.Drawing.Size(150, 15);
|
||||||
|
this.lblCurrentDataSet.TabIndex = 3;
|
||||||
|
this.lblCurrentDataSet.Text = "--";
|
||||||
|
this.lblCurrentDataSet.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||||
|
//
|
||||||
|
// cboDataset
|
||||||
|
//
|
||||||
|
this.cboDataset.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cboDataset.FormattingEnabled = true;
|
||||||
|
this.cboDataset.Location = new System.Drawing.Point(110, 6);
|
||||||
|
this.cboDataset.Name = "cboDataset";
|
||||||
|
this.cboDataset.Size = new System.Drawing.Size(243, 21);
|
||||||
|
this.cboDataset.TabIndex = 11;
|
||||||
|
this.cboDataset.SelectedIndexChanged += new System.EventHandler(this.CboDataset_SelectedIndexChanged);
|
||||||
|
//
|
||||||
|
// lblDataSet
|
||||||
|
//
|
||||||
|
this.lblDataSet.AutoSize = true;
|
||||||
|
this.lblDataSet.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.lblDataSet.Location = new System.Drawing.Point(22, 4);
|
||||||
|
this.lblDataSet.Name = "lblDataSet";
|
||||||
|
this.lblDataSet.Size = new System.Drawing.Size(39, 20);
|
||||||
|
this.lblDataSet.TabIndex = 10;
|
||||||
|
this.lblDataSet.Text = "304";
|
||||||
|
//
|
||||||
|
// btnLogFont
|
||||||
|
//
|
||||||
|
this.btnLogFont.Location = new System.Drawing.Point(515, 1);
|
||||||
|
this.btnLogFont.Name = "btnLogFont";
|
||||||
|
this.btnLogFont.Size = new System.Drawing.Size(243, 48);
|
||||||
|
this.btnLogFont.TabIndex = 3;
|
||||||
|
this.btnLogFont.Text = "--";
|
||||||
|
this.btnLogFont.UseVisualStyleBackColor = true;
|
||||||
|
this.btnLogFont.Click += new System.EventHandler(this.BtnLogFont_Click);
|
||||||
|
//
|
||||||
|
// lblLogFont
|
||||||
|
//
|
||||||
|
this.lblLogFont.AutoSize = true;
|
||||||
|
this.lblLogFont.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.lblLogFont.Location = new System.Drawing.Point(381, 4);
|
||||||
|
this.lblLogFont.Name = "lblLogFont";
|
||||||
|
this.lblLogFont.Size = new System.Drawing.Size(39, 20);
|
||||||
|
this.lblLogFont.TabIndex = 9;
|
||||||
|
this.lblLogFont.Text = "305";
|
||||||
|
//
|
||||||
|
// panel2
|
||||||
|
//
|
||||||
|
this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.panel2.Controls.Add(this.btnSoundPlayFate);
|
||||||
|
this.panel2.Controls.Add(this.btnSoundPlayInstance);
|
||||||
|
this.panel2.Controls.Add(this.btnSoundFindFate);
|
||||||
|
this.panel2.Controls.Add(this.btnSoundFindInstance);
|
||||||
|
this.panel2.Controls.Add(this.lblSoundFate);
|
||||||
|
this.panel2.Controls.Add(this.txtSoundFate);
|
||||||
|
this.panel2.Controls.Add(this.txtSoundInstance);
|
||||||
|
this.panel2.Controls.Add(this.chkEnableSound);
|
||||||
|
this.panel2.Controls.Add(this.lblSoundInstance);
|
||||||
|
this.panel2.Location = new System.Drawing.Point(6, 135);
|
||||||
|
this.panel2.Name = "panel2";
|
||||||
|
this.panel2.Size = new System.Drawing.Size(778, 132);
|
||||||
|
this.panel2.TabIndex = 1;
|
||||||
|
//
|
||||||
|
// btnSoundPlayFate
|
||||||
|
//
|
||||||
|
this.btnSoundPlayFate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.btnSoundPlayFate.Enabled = false;
|
||||||
|
this.btnSoundPlayFate.Image = global::DutyContent.Properties.Resources.pix_play;
|
||||||
|
this.btnSoundPlayFate.Location = new System.Drawing.Point(743, 55);
|
||||||
|
this.btnSoundPlayFate.Name = "btnSoundPlayFate";
|
||||||
|
this.btnSoundPlayFate.Size = new System.Drawing.Size(30, 30);
|
||||||
|
this.btnSoundPlayFate.TabIndex = 8;
|
||||||
|
this.btnSoundPlayFate.UseVisualStyleBackColor = true;
|
||||||
|
this.btnSoundPlayFate.Click += new System.EventHandler(this.BtnSoundPlayFate_Click);
|
||||||
|
//
|
||||||
|
// btnSoundPlayInstance
|
||||||
|
//
|
||||||
|
this.btnSoundPlayInstance.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.btnSoundPlayInstance.Enabled = false;
|
||||||
|
this.btnSoundPlayInstance.Image = global::DutyContent.Properties.Resources.pix_play;
|
||||||
|
this.btnSoundPlayInstance.Location = new System.Drawing.Point(743, 24);
|
||||||
|
this.btnSoundPlayInstance.Name = "btnSoundPlayInstance";
|
||||||
|
this.btnSoundPlayInstance.Size = new System.Drawing.Size(30, 30);
|
||||||
|
this.btnSoundPlayInstance.TabIndex = 7;
|
||||||
|
this.btnSoundPlayInstance.UseVisualStyleBackColor = true;
|
||||||
|
this.btnSoundPlayInstance.Click += new System.EventHandler(this.BtnSoundPlayInstance_Click);
|
||||||
|
//
|
||||||
|
// btnSoundFindFate
|
||||||
|
//
|
||||||
|
this.btnSoundFindFate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.btnSoundFindFate.Enabled = false;
|
||||||
|
this.btnSoundFindFate.Image = global::DutyContent.Properties.Resources.pix_magnify;
|
||||||
|
this.btnSoundFindFate.Location = new System.Drawing.Point(709, 55);
|
||||||
|
this.btnSoundFindFate.Name = "btnSoundFindFate";
|
||||||
|
this.btnSoundFindFate.Size = new System.Drawing.Size(30, 30);
|
||||||
|
this.btnSoundFindFate.TabIndex = 6;
|
||||||
|
this.btnSoundFindFate.UseVisualStyleBackColor = true;
|
||||||
|
this.btnSoundFindFate.Click += new System.EventHandler(this.BtnSoundFindFate_Click);
|
||||||
|
//
|
||||||
|
// btnSoundFindInstance
|
||||||
|
//
|
||||||
|
this.btnSoundFindInstance.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.btnSoundFindInstance.Enabled = false;
|
||||||
|
this.btnSoundFindInstance.Image = global::DutyContent.Properties.Resources.pix_magnify;
|
||||||
|
this.btnSoundFindInstance.Location = new System.Drawing.Point(709, 24);
|
||||||
|
this.btnSoundFindInstance.Name = "btnSoundFindInstance";
|
||||||
|
this.btnSoundFindInstance.Size = new System.Drawing.Size(30, 30);
|
||||||
|
this.btnSoundFindInstance.TabIndex = 2;
|
||||||
|
this.btnSoundFindInstance.UseVisualStyleBackColor = true;
|
||||||
|
this.btnSoundFindInstance.Click += new System.EventHandler(this.BtnSoundFindInstance_Click);
|
||||||
|
//
|
||||||
|
// lblSoundFate
|
||||||
|
//
|
||||||
|
this.lblSoundFate.AutoSize = true;
|
||||||
|
this.lblSoundFate.Location = new System.Drawing.Point(22, 64);
|
||||||
|
this.lblSoundFate.Name = "lblSoundFate";
|
||||||
|
this.lblSoundFate.Size = new System.Drawing.Size(25, 13);
|
||||||
|
this.lblSoundFate.TabIndex = 3;
|
||||||
|
this.lblSoundFate.Text = "310";
|
||||||
|
//
|
||||||
|
// txtSoundFate
|
||||||
|
//
|
||||||
|
this.txtSoundFate.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.txtSoundFate.Enabled = false;
|
||||||
|
this.txtSoundFate.Location = new System.Drawing.Point(110, 61);
|
||||||
|
this.txtSoundFate.Name = "txtSoundFate";
|
||||||
|
this.txtSoundFate.ReadOnly = true;
|
||||||
|
this.txtSoundFate.Size = new System.Drawing.Size(593, 20);
|
||||||
|
this.txtSoundFate.TabIndex = 4;
|
||||||
|
//
|
||||||
|
// txtSoundInstance
|
||||||
|
//
|
||||||
|
this.txtSoundInstance.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.txtSoundInstance.Enabled = false;
|
||||||
|
this.txtSoundInstance.Location = new System.Drawing.Point(110, 30);
|
||||||
|
this.txtSoundInstance.Name = "txtSoundInstance";
|
||||||
|
this.txtSoundInstance.ReadOnly = true;
|
||||||
|
this.txtSoundInstance.Size = new System.Drawing.Size(593, 20);
|
||||||
|
this.txtSoundInstance.TabIndex = 5;
|
||||||
|
//
|
||||||
|
// chkEnableSound
|
||||||
|
//
|
||||||
|
this.chkEnableSound.AutoSize = true;
|
||||||
|
this.chkEnableSound.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.chkEnableSound.Location = new System.Drawing.Point(5, 3);
|
||||||
|
this.chkEnableSound.Name = "chkEnableSound";
|
||||||
|
this.chkEnableSound.Size = new System.Drawing.Size(58, 24);
|
||||||
|
this.chkEnableSound.TabIndex = 4;
|
||||||
|
this.chkEnableSound.Text = "308";
|
||||||
|
this.chkEnableSound.UseVisualStyleBackColor = true;
|
||||||
|
this.chkEnableSound.CheckedChanged += new System.EventHandler(this.ChkEnableSound_CheckedChanged);
|
||||||
|
//
|
||||||
|
// lblSoundInstance
|
||||||
|
//
|
||||||
|
this.lblSoundInstance.AutoSize = true;
|
||||||
|
this.lblSoundInstance.Location = new System.Drawing.Point(22, 33);
|
||||||
|
this.lblSoundInstance.Name = "lblSoundInstance";
|
||||||
|
this.lblSoundInstance.Size = new System.Drawing.Size(25, 13);
|
||||||
|
this.lblSoundInstance.TabIndex = 2;
|
||||||
|
this.lblSoundInstance.Text = "309";
|
||||||
|
//
|
||||||
|
// panel1
|
||||||
|
//
|
||||||
|
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.panel1.Controls.Add(this.progbOverlayTransparent);
|
||||||
|
this.panel1.Controls.Add(this.btnOverlayDimming);
|
||||||
|
this.panel1.Controls.Add(this.lblOverlayTransparent);
|
||||||
|
this.panel1.Controls.Add(this.chkEnableOverlay);
|
||||||
|
this.panel1.Location = new System.Drawing.Point(6, 68);
|
||||||
|
this.panel1.Name = "panel1";
|
||||||
|
this.panel1.Size = new System.Drawing.Size(778, 61);
|
||||||
|
this.panel1.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// progbOverlayTransparent
|
||||||
|
//
|
||||||
|
this.progbOverlayTransparent.Enabled = false;
|
||||||
|
this.progbOverlayTransparent.Location = new System.Drawing.Point(108, 30);
|
||||||
|
this.progbOverlayTransparent.Maximum = 255;
|
||||||
|
this.progbOverlayTransparent.Name = "progbOverlayTransparent";
|
||||||
|
this.progbOverlayTransparent.Size = new System.Drawing.Size(243, 23);
|
||||||
|
this.progbOverlayTransparent.TabIndex = 1;
|
||||||
|
this.progbOverlayTransparent.Click += new System.EventHandler(this.ProgbOverlayTransparent_Click);
|
||||||
|
//
|
||||||
|
// btnOverlayDimming
|
||||||
|
//
|
||||||
|
this.btnOverlayDimming.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.btnOverlayDimming.BackgroundImage = global::DutyContent.Properties.Resources.pix_annotation;
|
||||||
|
this.btnOverlayDimming.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
|
||||||
|
this.btnOverlayDimming.Enabled = false;
|
||||||
|
this.btnOverlayDimming.Location = new System.Drawing.Point(722, 3);
|
||||||
|
this.btnOverlayDimming.Name = "btnOverlayDimming";
|
||||||
|
this.btnOverlayDimming.Size = new System.Drawing.Size(51, 51);
|
||||||
|
this.btnOverlayDimming.TabIndex = 3;
|
||||||
|
this.btnOverlayDimming.UseVisualStyleBackColor = true;
|
||||||
|
this.btnOverlayDimming.Click += new System.EventHandler(this.BtnOverlayDimming_Click);
|
||||||
|
//
|
||||||
|
// lblOverlayTransparent
|
||||||
|
//
|
||||||
|
this.lblOverlayTransparent.AutoSize = true;
|
||||||
|
this.lblOverlayTransparent.Location = new System.Drawing.Point(23, 35);
|
||||||
|
this.lblOverlayTransparent.Name = "lblOverlayTransparent";
|
||||||
|
this.lblOverlayTransparent.Size = new System.Drawing.Size(25, 13);
|
||||||
|
this.lblOverlayTransparent.TabIndex = 2;
|
||||||
|
this.lblOverlayTransparent.Text = "307";
|
||||||
|
//
|
||||||
|
// chkEnableOverlay
|
||||||
|
//
|
||||||
|
this.chkEnableOverlay.AutoSize = true;
|
||||||
|
this.chkEnableOverlay.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.chkEnableOverlay.Location = new System.Drawing.Point(3, 3);
|
||||||
|
this.chkEnableOverlay.Name = "chkEnableOverlay";
|
||||||
|
this.chkEnableOverlay.Size = new System.Drawing.Size(58, 24);
|
||||||
|
this.chkEnableOverlay.TabIndex = 0;
|
||||||
|
this.chkEnableOverlay.Text = "306";
|
||||||
|
this.chkEnableOverlay.UseVisualStyleBackColor = true;
|
||||||
|
this.chkEnableOverlay.CheckedChanged += new System.EventHandler(this.ChkEnableOverlay_CheckedChanged);
|
||||||
|
//
|
||||||
|
// tabPage3
|
||||||
|
//
|
||||||
|
this.tabPage3.Controls.Add(this.panel5);
|
||||||
|
this.tabPage3.ImageIndex = 2;
|
||||||
|
this.tabPage3.Location = new System.Drawing.Point(4, 39);
|
||||||
|
this.tabPage3.Name = "tabPage3";
|
||||||
|
this.tabPage3.Padding = new System.Windows.Forms.Padding(3);
|
||||||
|
this.tabPage3.Size = new System.Drawing.Size(792, 459);
|
||||||
|
this.tabPage3.TabIndex = 2;
|
||||||
|
this.tabPage3.Text = "303";
|
||||||
|
this.tabPage3.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// panel5
|
||||||
|
//
|
||||||
|
this.panel5.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.panel5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.panel5.Controls.Add(this.txtPacketDescription);
|
||||||
|
this.panel5.Controls.Add(this.lblPacketDesc);
|
||||||
|
this.panel5.Controls.Add(this.btnPacketApply);
|
||||||
|
this.panel5.Controls.Add(this.btnPacketStart);
|
||||||
|
this.panel5.Controls.Add(this.lstBozjaInfo);
|
||||||
|
this.panel5.Controls.Add(this.lblPacketBozja);
|
||||||
|
this.panel5.Controls.Add(this.txtPacketInfo);
|
||||||
|
this.panel5.Controls.Add(this.lstPacketInfo);
|
||||||
|
this.panel5.Controls.Add(this.lblPacketFinder);
|
||||||
|
this.panel5.Location = new System.Drawing.Point(6, 6);
|
||||||
|
this.panel5.Name = "panel5";
|
||||||
|
this.panel5.Size = new System.Drawing.Size(780, 261);
|
||||||
|
this.panel5.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// txtPacketDescription
|
||||||
|
//
|
||||||
|
this.txtPacketDescription.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.txtPacketDescription.Enabled = false;
|
||||||
|
this.txtPacketDescription.Location = new System.Drawing.Point(336, 58);
|
||||||
|
this.txtPacketDescription.Name = "txtPacketDescription";
|
||||||
|
this.txtPacketDescription.Size = new System.Drawing.Size(439, 20);
|
||||||
|
this.txtPacketDescription.TabIndex = 8;
|
||||||
|
//
|
||||||
|
// lblPacketDesc
|
||||||
|
//
|
||||||
|
this.lblPacketDesc.AutoSize = true;
|
||||||
|
this.lblPacketDesc.Location = new System.Drawing.Point(333, 42);
|
||||||
|
this.lblPacketDesc.Name = "lblPacketDesc";
|
||||||
|
this.lblPacketDesc.Size = new System.Drawing.Size(25, 13);
|
||||||
|
this.lblPacketDesc.TabIndex = 7;
|
||||||
|
this.lblPacketDesc.Text = "317";
|
||||||
|
//
|
||||||
|
// btnPacketApply
|
||||||
|
//
|
||||||
|
this.btnPacketApply.Enabled = false;
|
||||||
|
this.btnPacketApply.Location = new System.Drawing.Point(287, 6);
|
||||||
|
this.btnPacketApply.Name = "btnPacketApply";
|
||||||
|
this.btnPacketApply.Size = new System.Drawing.Size(123, 30);
|
||||||
|
this.btnPacketApply.TabIndex = 6;
|
||||||
|
this.btnPacketApply.Text = "10009";
|
||||||
|
this.btnPacketApply.UseVisualStyleBackColor = true;
|
||||||
|
this.btnPacketApply.Visible = false;
|
||||||
|
this.btnPacketApply.Click += new System.EventHandler(this.BtnPacketApply_Click);
|
||||||
|
//
|
||||||
|
// btnPacketStart
|
||||||
|
//
|
||||||
|
this.btnPacketStart.Location = new System.Drawing.Point(158, 5);
|
||||||
|
this.btnPacketStart.Name = "btnPacketStart";
|
||||||
|
this.btnPacketStart.Size = new System.Drawing.Size(123, 30);
|
||||||
|
this.btnPacketStart.TabIndex = 5;
|
||||||
|
this.btnPacketStart.Text = "10007";
|
||||||
|
this.btnPacketStart.UseVisualStyleBackColor = true;
|
||||||
|
this.btnPacketStart.Click += new System.EventHandler(this.BtnPacketStart_Click);
|
||||||
|
//
|
||||||
|
// lstBozjaInfo
|
||||||
|
//
|
||||||
|
this.lstBozjaInfo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.lstBozjaInfo.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||||
|
this.columnHeader5,
|
||||||
|
this.columnHeader6,
|
||||||
|
this.columnHeader7,
|
||||||
|
this.columnHeader8});
|
||||||
|
this.lstBozjaInfo.Enabled = false;
|
||||||
|
this.lstBozjaInfo.FullRowSelect = true;
|
||||||
|
this.lstBozjaInfo.GridLines = true;
|
||||||
|
this.lstBozjaInfo.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
|
||||||
|
this.lstBozjaInfo.HideSelection = false;
|
||||||
|
this.lstBozjaInfo.Location = new System.Drawing.Point(333, 107);
|
||||||
|
this.lstBozjaInfo.MultiSelect = false;
|
||||||
|
this.lstBozjaInfo.Name = "lstBozjaInfo";
|
||||||
|
this.lstBozjaInfo.Size = new System.Drawing.Size(442, 148);
|
||||||
|
this.lstBozjaInfo.TabIndex = 4;
|
||||||
|
this.lstBozjaInfo.UseCompatibleStateImageBehavior = false;
|
||||||
|
this.lstBozjaInfo.View = System.Windows.Forms.View.Details;
|
||||||
|
this.lstBozjaInfo.SelectedIndexChanged += new System.EventHandler(this.LstBozjaInfo_SelectedIndexChanged);
|
||||||
|
this.lstBozjaInfo.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.LstBozjaInfo_MouseDoubleClick);
|
||||||
|
//
|
||||||
|
// columnHeader5
|
||||||
|
//
|
||||||
|
this.columnHeader5.Text = "Name";
|
||||||
|
this.columnHeader5.Width = 233;
|
||||||
|
//
|
||||||
|
// columnHeader6
|
||||||
|
//
|
||||||
|
this.columnHeader6.Text = "Status";
|
||||||
|
this.columnHeader6.Width = 67;
|
||||||
|
//
|
||||||
|
// columnHeader7
|
||||||
|
//
|
||||||
|
this.columnHeader7.Text = "Member";
|
||||||
|
this.columnHeader7.Width = 55;
|
||||||
|
//
|
||||||
|
// columnHeader8
|
||||||
|
//
|
||||||
|
this.columnHeader8.Text = "Progress";
|
||||||
|
this.columnHeader8.Width = 56;
|
||||||
|
//
|
||||||
|
// lblPacketBozja
|
||||||
|
//
|
||||||
|
this.lblPacketBozja.AutoSize = true;
|
||||||
|
this.lblPacketBozja.Location = new System.Drawing.Point(333, 91);
|
||||||
|
this.lblPacketBozja.Name = "lblPacketBozja";
|
||||||
|
this.lblPacketBozja.Size = new System.Drawing.Size(25, 13);
|
||||||
|
this.lblPacketBozja.TabIndex = 3;
|
||||||
|
this.lblPacketBozja.Text = "318";
|
||||||
|
//
|
||||||
|
// txtPacketInfo
|
||||||
|
//
|
||||||
|
this.txtPacketInfo.BackColor = System.Drawing.SystemColors.Window;
|
||||||
|
this.txtPacketInfo.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.txtPacketInfo.Enabled = false;
|
||||||
|
this.txtPacketInfo.Location = new System.Drawing.Point(3, 166);
|
||||||
|
this.txtPacketInfo.Multiline = true;
|
||||||
|
this.txtPacketInfo.Name = "txtPacketInfo";
|
||||||
|
this.txtPacketInfo.ReadOnly = true;
|
||||||
|
this.txtPacketInfo.Size = new System.Drawing.Size(324, 89);
|
||||||
|
this.txtPacketInfo.TabIndex = 2;
|
||||||
|
//
|
||||||
|
// lstPacketInfo
|
||||||
|
//
|
||||||
|
this.lstPacketInfo.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||||
|
this.columnHeader1,
|
||||||
|
this.columnHeader2,
|
||||||
|
this.columnHeader3,
|
||||||
|
this.columnHeader4});
|
||||||
|
this.lstPacketInfo.Enabled = false;
|
||||||
|
this.lstPacketInfo.FullRowSelect = true;
|
||||||
|
this.lstPacketInfo.GridLines = true;
|
||||||
|
this.lstPacketInfo.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
|
||||||
|
this.lstPacketInfo.HideSelection = false;
|
||||||
|
this.lstPacketInfo.Items.AddRange(new System.Windows.Forms.ListViewItem[] {
|
||||||
|
listViewItem1,
|
||||||
|
listViewItem2,
|
||||||
|
listViewItem3,
|
||||||
|
listViewItem4,
|
||||||
|
listViewItem5});
|
||||||
|
this.lstPacketInfo.Location = new System.Drawing.Point(3, 42);
|
||||||
|
this.lstPacketInfo.MultiSelect = false;
|
||||||
|
this.lstPacketInfo.Name = "lstPacketInfo";
|
||||||
|
this.lstPacketInfo.Size = new System.Drawing.Size(324, 118);
|
||||||
|
this.lstPacketInfo.TabIndex = 1;
|
||||||
|
this.lstPacketInfo.UseCompatibleStateImageBehavior = false;
|
||||||
|
this.lstPacketInfo.View = System.Windows.Forms.View.Details;
|
||||||
|
this.lstPacketInfo.SelectedIndexChanged += new System.EventHandler(this.LstPacketInfo_SelectedIndexChanged);
|
||||||
|
//
|
||||||
|
// columnHeader1
|
||||||
|
//
|
||||||
|
this.columnHeader1.Text = "Function";
|
||||||
|
this.columnHeader1.Width = 100;
|
||||||
|
//
|
||||||
|
// columnHeader2
|
||||||
|
//
|
||||||
|
this.columnHeader2.Text = "Current";
|
||||||
|
this.columnHeader2.Width = 70;
|
||||||
|
//
|
||||||
|
// columnHeader3
|
||||||
|
//
|
||||||
|
this.columnHeader3.Text = "Status";
|
||||||
|
this.columnHeader3.Width = 80;
|
||||||
|
//
|
||||||
|
// columnHeader4
|
||||||
|
//
|
||||||
|
this.columnHeader4.Text = "Found";
|
||||||
|
this.columnHeader4.Width = 70;
|
||||||
|
//
|
||||||
|
// lblPacketFinder
|
||||||
|
//
|
||||||
|
this.lblPacketFinder.AutoSize = true;
|
||||||
|
this.lblPacketFinder.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.lblPacketFinder.Location = new System.Drawing.Point(3, -1);
|
||||||
|
this.lblPacketFinder.Name = "lblPacketFinder";
|
||||||
|
this.lblPacketFinder.Size = new System.Drawing.Size(43, 24);
|
||||||
|
this.lblPacketFinder.TabIndex = 0;
|
||||||
|
this.lblPacketFinder.Text = "316";
|
||||||
|
//
|
||||||
|
// ilTabContent
|
||||||
|
//
|
||||||
|
this.ilTabContent.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ilTabContent.ImageStream")));
|
||||||
|
this.ilTabContent.TransparentColor = System.Drawing.Color.Transparent;
|
||||||
|
this.ilTabContent.Images.SetKeyName(0, "pix_tab_content.png");
|
||||||
|
this.ilTabContent.Images.SetKeyName(1, "pix_tab_setting.png");
|
||||||
|
this.ilTabContent.Images.SetKeyName(2, "pix_tab_tool.png");
|
||||||
|
//
|
||||||
|
// DutyForm
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.AutoScroll = true;
|
||||||
|
this.ClientSize = new System.Drawing.Size(800, 502);
|
||||||
|
this.Controls.Add(this.tabContent);
|
||||||
|
this.Name = "DutyForm";
|
||||||
|
this.Text = "Duty";
|
||||||
|
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.DutyTabForm_FormClosing);
|
||||||
|
this.tabContent.ResumeLayout(false);
|
||||||
|
this.tabPage1.ResumeLayout(false);
|
||||||
|
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||||
|
this.splitContainer1.Panel1.PerformLayout();
|
||||||
|
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||||
|
this.splitContainer1.ResumeLayout(false);
|
||||||
|
this.tabPage2.ResumeLayout(false);
|
||||||
|
this.panel4.ResumeLayout(false);
|
||||||
|
this.panel4.PerformLayout();
|
||||||
|
this.panel3.ResumeLayout(false);
|
||||||
|
this.panel3.PerformLayout();
|
||||||
|
this.panel2.ResumeLayout(false);
|
||||||
|
this.panel2.PerformLayout();
|
||||||
|
this.panel1.ResumeLayout(false);
|
||||||
|
this.panel1.PerformLayout();
|
||||||
|
this.tabPage3.ResumeLayout(false);
|
||||||
|
this.panel5.ResumeLayout(false);
|
||||||
|
this.panel5.PerformLayout();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.TabControl tabContent;
|
||||||
|
private System.Windows.Forms.TabPage tabPage1;
|
||||||
|
private System.Windows.Forms.TabPage tabPage2;
|
||||||
|
private System.Windows.Forms.TabPage tabPage3;
|
||||||
|
private System.Windows.Forms.ImageList ilTabContent;
|
||||||
|
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||||
|
private System.Windows.Forms.TreeView treeFates;
|
||||||
|
private System.Windows.Forms.RichTextBox txtContentLog;
|
||||||
|
private System.Windows.Forms.RadioButton rdoFatePreset4;
|
||||||
|
private System.Windows.Forms.RadioButton rdoFatePreset3;
|
||||||
|
private System.Windows.Forms.RadioButton rdoFatePreset2;
|
||||||
|
private System.Windows.Forms.RadioButton rdoFatePreset1;
|
||||||
|
private System.Windows.Forms.Panel panel1;
|
||||||
|
private System.Windows.Forms.Button btnOverlayDimming;
|
||||||
|
private System.Windows.Forms.Label lblOverlayTransparent;
|
||||||
|
private System.Windows.Forms.CheckBox chkEnableOverlay;
|
||||||
|
private System.Windows.Forms.ProgressBar progbOverlayTransparent;
|
||||||
|
private System.Windows.Forms.Panel panel2;
|
||||||
|
private System.Windows.Forms.Label lblSoundFate;
|
||||||
|
private System.Windows.Forms.TextBox txtSoundFate;
|
||||||
|
private System.Windows.Forms.TextBox txtSoundInstance;
|
||||||
|
private System.Windows.Forms.CheckBox chkEnableSound;
|
||||||
|
private System.Windows.Forms.Label lblSoundInstance;
|
||||||
|
private System.Windows.Forms.Button btnSoundPlayFate;
|
||||||
|
private System.Windows.Forms.Button btnSoundPlayInstance;
|
||||||
|
private System.Windows.Forms.Button btnSoundFindFate;
|
||||||
|
private System.Windows.Forms.Button btnSoundFindInstance;
|
||||||
|
private System.Windows.Forms.Panel panel3;
|
||||||
|
private System.Windows.Forms.Button btnLogFont;
|
||||||
|
private System.Windows.Forms.Label lblLogFont;
|
||||||
|
private System.Windows.Forms.ComboBox cboDataset;
|
||||||
|
private System.Windows.Forms.Label lblDataSet;
|
||||||
|
private System.Windows.Forms.Label lblCurrentDataSet;
|
||||||
|
private System.Windows.Forms.Panel panel4;
|
||||||
|
private System.Windows.Forms.LinkLabel lblLineNotifyBotLink;
|
||||||
|
private System.Windows.Forms.Label lblLineToken;
|
||||||
|
private System.Windows.Forms.TextBox txtLineToken;
|
||||||
|
private System.Windows.Forms.CheckBox chkUseNotifyLine;
|
||||||
|
private System.Windows.Forms.Button btnTestNotify;
|
||||||
|
private System.Windows.Forms.Label lblTelegramToken;
|
||||||
|
private System.Windows.Forms.TextBox txtTelegramToken;
|
||||||
|
private System.Windows.Forms.Label lblTelegramId;
|
||||||
|
private System.Windows.Forms.TextBox txtTelegramId;
|
||||||
|
private System.Windows.Forms.CheckBox chkUseNotifyTelegram;
|
||||||
|
private System.Windows.Forms.Panel panel5;
|
||||||
|
private System.Windows.Forms.ListView lstBozjaInfo;
|
||||||
|
private System.Windows.Forms.Label lblPacketBozja;
|
||||||
|
private System.Windows.Forms.TextBox txtPacketInfo;
|
||||||
|
private System.Windows.Forms.ListView lstPacketInfo;
|
||||||
|
private System.Windows.Forms.ColumnHeader columnHeader1;
|
||||||
|
private System.Windows.Forms.ColumnHeader columnHeader2;
|
||||||
|
private System.Windows.Forms.ColumnHeader columnHeader3;
|
||||||
|
private System.Windows.Forms.ColumnHeader columnHeader4;
|
||||||
|
private System.Windows.Forms.Label lblPacketFinder;
|
||||||
|
private System.Windows.Forms.Button btnPacketApply;
|
||||||
|
private System.Windows.Forms.Button btnPacketStart;
|
||||||
|
private System.Windows.Forms.ColumnHeader columnHeader5;
|
||||||
|
private System.Windows.Forms.ColumnHeader columnHeader6;
|
||||||
|
private System.Windows.Forms.ColumnHeader columnHeader7;
|
||||||
|
private System.Windows.Forms.TextBox txtPacketDescription;
|
||||||
|
private System.Windows.Forms.Label lblPacketDesc;
|
||||||
|
private System.Windows.Forms.ColumnHeader columnHeader8;
|
||||||
|
}
|
||||||
|
}
|
1283
Tab/DutyForm.cs
Normal file
1283
Tab/DutyForm.cs
Normal file
File diff suppressed because it is too large
Load diff
408
Tab/DutyForm.resx
Normal file
408
Tab/DutyForm.resx
Normal file
|
@ -0,0 +1,408 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<metadata name="ilTabContent.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>17, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<data name="ilTabContent.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>
|
||||||
|
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||||
|
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||||
|
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAA
|
||||||
|
QQAAAk1TRnQBSQFMAgEBAwEAAdABAAHQAQABIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGA
|
||||||
|
AwABIAMAAQEBAAEgBgABQBoAAzYEWQHEA1UB6gMdAf8DHQH/Ax0B/wMdAf8DHQH/Ax0B/wMdAf8DHQH/
|
||||||
|
Ax0B/wMdAf8DHQH/Ax0B/wMdAf8DHQH/Ax0B/wMdAf8DHQH/Ax0B/wMdAf8DHQH/Ax0B/wMdAf8DXQHi
|
||||||
|
A1QBrgMpAT8IAAMHAQoDSAGFAh0BqgH/AhgBqgH/AhcBpAH/AhcBpAH/AhcBpAH/AhcBpAH/AhcBpAH/
|
||||||
|
AhcBpAH/AhcBowH/AhcBogH/AhcBogH/AhcBogH/AhcBogH/AhcBogH/AhcBogH/AhcBogH/AhcBogH/
|
||||||
|
AhcBogH/AhcBogH/AhcBowH/AhcBpAH/AhcBpAH/AhcBpAH/AhcBpAH/AhcBpAH/AhcBpAH/AhgBqgH/
|
||||||
|
Ah0BqgH/A0gBhQMHAQr/AAUAA04BlwM+Af8DsgH/A80B/wPdAf8D3QH/A90B/wPdAf8D3QH/A90B/wPd
|
||||||
|
Af8D3QH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A90B/wPd
|
||||||
|
Af8DyAH/A6IB/wMvAf8DRgGBBAADSAGFAhcBpAH/AhcBogH/AhcBoQH/AhcBoQH/AhcBoQH/AhcBoQH/
|
||||||
|
AhcBoQH/AhQBoAH/AhQBngH/AhQBmwH/AhQBmQH/AhQBmQH/AhQBlwH/AhQBlQH/AhQBlQH/AhQBlQH/
|
||||||
|
AhQBlQH/AhQBlwH/AhQBmQH/AhQBmQH/AhQBmwH/AhQBngH/AhQBoAH/AhcBoQH/AhcBoQH/AhcBoQH/
|
||||||
|
AhcBoQH/AhcBoQH/AhcBogH/AhcBpAH/A0gBhVcAAQEDAgQDBAQBBgMEAQYDAwEEAwEBAgMAAQGMAAM3
|
||||||
|
AVoDSgH/A9sB/wOLAf8DNAH/Ax0B/wMdAf8DHQH/Ax0B/wMdAf8DHQH/Ax0B/wMdAf8DHQH/Ax0B/wMd
|
||||||
|
Af8DHQH/Ax0B/wMdAf8DHQH/Ax0B/wMdAf8DHQH/Ax0B/wMdAf8DHQH/Ax0B/wM0Af8DhwH/A80B/wM2
|
||||||
|
Af8DKwFCAhcBpAH/AhcBogH/AhQBnQH/AhIBmAH/AhIBlwH/AhIBlwH/AhIBlwH/AhIBlwH/Ag8BkQH/
|
||||||
|
Ag8BjwH/Ag8BjAH/Ag8BigH/Ag8BigH/Ag0BiAH/AgoBhgH/AgoBhgH/AgoBhgH/AgwBhgH/Ag8BiAH/
|
||||||
|
Ag8BigH/Ag8BigH/Ag8BjAH/Ag8BjwH/Ag8BlQH/AhIBlwH/AhIBlwH/AhIBlwH/AhIBlwH/AhIBmAH/
|
||||||
|
AhQBnQH/AhcBogH/AhcBpAH/UAADAgEDAwYBCAMNARIDGgEkAyMBMwMhATADFgEeAwoBDgMEAQYDAAEB
|
||||||
|
iAADWQHDA7IB/wOKAf8BWgFIAS4B/wG5AZMBQAH/Ac4BogFGAf8BzgGiAUYB/wHOAaIBRgH/Ac4BogFG
|
||||||
|
Af8BzgGiAUYB/wHOAaIBRgH/Ac4BogFGAf8BzgGiAUYB/wHOAaIBRgH/Ac4BogFGAf8BvQGVAT4B/wGj
|
||||||
|
AYABMgH/Ab0BlQE+Af8BzgGiAUYB/wHOAaIBRgH/Ac4BogFGAf8BzgGiAUYB/wHOAaIBRgH/Ac4BogFG
|
||||||
|
Af8BzgGiAUYB/wHOAaIBRgH/Ac4BogFGAf8BuQGTAUAB/wFlAVABMQH/A4UB/wOjAf8DVAGrAhcBowH/
|
||||||
|
AhQBmgH/AhABkQH/AgkBjQH/AggBjQH/AggBigH/AggBhgH/AggBgQH/AggBZAH/AggBYgH/AggBXQH/
|
||||||
|
AggBXAH/AggBXAH/AgcBXAH/AgYBWAH/AgYBVQH/AgYBVQH/AgcBWAH/AggBXAH/AggBXAH/AggBXAH/
|
||||||
|
AggBXQH/AggBYgH/AggBgAH/AggBhgH/AggBhgH/AggBigH/AggBjQH/AgkBjQH/AhABkQH/AhQBmgH/
|
||||||
|
AhcBowH/TAADAgEDAwcBCgMXASADMAFMAUUCRgF+AU8CUQGcAU0CTgGWA0EBcgMqAUEDEgEZAwUBBwMA
|
||||||
|
AQGEAANBAfkDygH/AzIB/wG5AY8BPwH/AdUBogFHAf8B1QGiAUcB/wHVAaIBRwH/AdUBogFHAf8B1QGi
|
||||||
|
AUcB/wHVAaIBRwH/AdUBogFHAf8B1QGiAUcB/wHVAaIBRwH/AdUBogFHAf8BxAGVAT8B/wGJAVEBKwH/
|
||||||
|
ASYBNQE7Af8BlAFWASoB/wHTAaEBRgH/AdUBogFHAf8B1QGiAUcB/wHVAaIBRwH/AdUBogFHAf8B1QGi
|
||||||
|
AUcB/wHVAaIBRwH/AdUBogFHAf8B1QGiAUcB/wHVAaIBRwH/AcABkwFBAf8DKwH/A8UB/wNOAfACFQGZ
|
||||||
|
Af8CCwGLAf8CBgFiAf8CBgFeAf8CBgFWAf8CBgFWAf8CBgFRAf8CBgFOAf8CBgFNAf8CBgFKAf8CBgFG
|
||||||
|
Af8CBgFGAf8CBgFFAf8CBgFCAf8CBgE+Af8CBgE+Af8CBgE+Af8CBgE+Af8CBgFCAf8CBgFFAf8CBgFG
|
||||||
|
Af8CBgFGAf8CBgFKAf8CBgFNAf8CBgFQAf8CBgFWAf8CBgFWAf8CBgFWAf8CBgFeAf8CBgFiAf8CCwGL
|
||||||
|
Af8CFQGZAf9IAAMBAQIDBwEJAxgBIgM4AV4BUwJVAa0BXQJhAeIBbQF/AYIB9wJlAWYB9AFeAmEB2gNQ
|
||||||
|
AZoDLQFGAw4BEwMDAQSEAAMdAf8DwgH/Ax8B/wHMAZUBRAH/AdUBmwFGAf8B1QGbAUYB/wHVAZsBRgH/
|
||||||
|
AdUBmwFGAf8B1QGbAUYB/wHVAZsBRgH/AdUBmwFGAf8B1QGbAUYB/wHVAZsBRgH/Ab8BiwE8Af8BkwFR
|
||||||
|
ASkB/wElATMBPAH/AQABOwGOAf8BVAFBAS0B/wGVAVIBKQH/Ac8BlwFDAf8B1QGbAUYB/wHVAZsBRgH/
|
||||||
|
AdUBmwFGAf8B1QGbAUYB/wHVAZsBRgH/AdUBmwFGAf8B1QGbAUYB/wHVAZsBRgH/AcUBkAFCAf8DJQH/
|
||||||
|
A8IB/wMdAf8CEwGRAf8BDQESAYIB/wENASkBhAH/ARMBMgGFAf8BEwEyAYAB/wETATQBgwH/ARMBNAGD
|
||||||
|
Af8BEwE0AYMB/wETATQBZAH/ARMBNAFkAf8BEwE0AWQB/wETATQBZAH/ARMBNAFfAf8BEwExAVwB/wET
|
||||||
|
ATEBXAH/ARMBMQFcAf8BEwExAVwB/wETATEBXAH/ARMBMQFcAf8BEwExAVwB/wETATEBYQH/ARMBMQFh
|
||||||
|
Af8BEwExAWEB/wETATEBYQH/ARMBMgGDAf8BEwE0AYMB/wETATQBgwH/ARMBNAGDAf8BEwE0AYgB/wEP
|
||||||
|
ASkBhwH/AQ0BEgGDAf8CEwGRAf9HAAEBAwYBCAMWAR4DOAFdA1UBtQNkAfEB8wH4AfwB/wHtA/8B8wP/
|
||||||
|
AagBuAHCAf4DXwHgA0gBhQMfASwDBQEHhAADHQH/A7QB/wMdAf8BzgGQAUMB/wHVAZQBRQH/AdUBlAFF
|
||||||
|
Af8B1QGUAUUB/wHVAZQBRQH/AdUBlAFFAf8B1QGUAUUB/wHUAZMBRQH/AdABkQFDAf8BtAFjATYB/wGK
|
||||||
|
AUkBKQH/ARsBMQFBAf8BAAEfAV4B/wEAAR8BWQH/AQABJgFfAf8BPgE3ATEB/wGSAUwBKAH/AbkBgAE4
|
||||||
|
Af8B0gGSAUQB/wHVAZQBRQH/AdUBlAFFAf8B1QGUAUUB/wHVAZQBRQH/AdUBlAFFAf8B1QGUAUUB/wHF
|
||||||
|
AYsBQQH/AyQB/wO0Af8DHQH/Ag4BigH/ARIBKwGHAf8BJAGFAakB/wE7AasB1AH/AVQB0QHeAf8BWQHU
|
||||||
|
AeEB/wFcAdQB4QH/AV4B1AHhAf8BXgHUAeEB/wFcAdQB4QH/AVkB1AHhAf8BWQHUAeEB/wFZAdMB4AH/
|
||||||
|
AVkB0QHeAf8BWQHRAd4B/wFZAdEB3gH/AVkB0QHeAf8BWQHRAd4B/wFZAdEB3gH/AVkB0QHeAf8BWQHR
|
||||||
|
Ad4B/wFZAdEB3gH/AVkB0QHeAf8BWQHRAd4B/wFZAdEB4QH/AVkB1AHhAf8BWQHUAeEB/wFUAdQB4QH/
|
||||||
|
ATwBsgHYAf8BJgGFAa8B/wESASsBiwH/Ag4BigH/QwABAQMFAQcDFAEbAzUBVgNUAa8BWgJdAfAB8wH4
|
||||||
|
AfwB/wHUA/8BxAH8Av8BxgH+Av8B6AP/AYcBjwGTAfsBVQJWAbEDLQFFAwcBCoQAAx0B/wOnAf8DHQH/
|
||||||
|
Ac4BhwFCAf8B1QGLAUQB/wHVAYsBRAH/AcsBhAFAAf8BvQFhATkB/wHEAYABPQH/AcABYwE7Af8BlQFH
|
||||||
|
ASgB/wGNAUQBKQH/AUIBNQExAf8BAAEpAVYB/wEAAQ4BTAH/ASQBkQGyAf8BWQHVAeYB/wEBAUIBiQH/
|
||||||
|
AQABFAFSAf8BBwEtAU0B/wFYATsBLAH/AZIBRgEoAf8BsQFaATQB/wHDAYABPAH/AcMBgAE8Af8BugFg
|
||||||
|
ATgB/wHTAYoBQwH/AdUBiwFEAf8BxQGCAUAB/wMkAf8DpwH/Ax0B/wINAYEB/wEWATcBkAH/ATcBoQHC
|
||||||
|
Af8BKAFhAaQB/wEcATMBYgH/AR0BMwGEAf8BHgEzAYgB/wEfATMBiAH/AR8BMwGBAf8BHgEzAYEB/wEd
|
||||||
|
ATMBgQH/AR0BMwFiAf8BHQEzAWEB/wEdATMBYQH/AR0BMwFhAf8BHQEzAWEB/wEdATMBYQH/AR0BMwFh
|
||||||
|
Af8BHQEzAWEB/wEdATMBYQH/AR0BMwGBAf8BHQEzAYEB/wEdATMBgQH/AR0BMwGBAf8BHwE0AYgB/wEi
|
||||||
|
ATcBiAH/AR0BMwGEAf8BHAEzAWIB/wEoAWMBpAH/ATcBoQHDAf8BFgE3AZEB/wINAYEB/z8AAQEDBAEG
|
||||||
|
AxIBGAMyAVADUgGpAVkCZAHsAagBuAHCAf4B2QP/AcQB/AL/AcMB+wL/AcMB+wL/AdcD/wGrAbIBtgH9
|
||||||
|
AVcCWQG/AzIBUAMIAQuEAAMdAf8DmwH/Ax0B/wHOAWUBQAH/AdUBgwFCAf8BywFjAT4B/wGDATwBKQH/
|
||||||
|
AU4BNAEsAf8BXAE3ASoB/wFUATUBKwH/ASUBMgE9Af8BAAEsAVoB/wEAARQBVgH/AQABMQFgAf8BUwHQ
|
||||||
|
AecB/wFeAd0B8QH/AUMBpwGxAf8BZAHhAfcB/wE6AakBxQH/AQABFQFMAf8BAAEgAV0B/wEAAS8BUgH/
|
||||||
|
ATYBMgE0Af8BWgE2ASoB/wFbATYBKgH/AUkBNAEwAf8BlAFBASYB/wHTAYIBQQH/AcUBYQE+Af8DIwH/
|
||||||
|
A5sB/wMdAf8CDQFkAf8BFwE4AYsB/wEwAZwBvQH/AQ4BHwFPAf8BCQESAVsB/wETATkBmAH/ARIBPAGd
|
||||||
|
Af8BEgE6AZ0B/wESATkBnAH/ARIBOQGWAf8BEQE4AZUB/wEUATYBkQH/AQYBEAFbAf8CCAFSAf8CCAFS
|
||||||
|
Af8CCAFSAf8CCAFSAf8CCAFSAf8BBwEOAVkB/wETATIBkgH/ARIBNAGUAf8BDAEqAY0B/wEWAUABmAH/
|
||||||
|
AQgBIwGOAf8BFgFAAZ8B/wESATABkwH/AQ4BEwFbAf8CCAFMAf8BDgEdAU0B/wEwAZcBtAH/ARcBNwGI
|
||||||
|
Af8CDQFkAf87AAEBAwQBBgMQARUDLAFDAU8CUAGbAVgCYgHpAagBuAHCAf4B3gP/AcYB/gL/AcMB+wL/
|
||||||
|
AcMB+wL/AcgD/wHsA/8BhwGQAZMB+wFVAlYBsQMtAUUDBwEKhAADHQH/A5MB/wMdAf8BzAFdAT4B/wHT
|
||||||
|
AWABQAH/Ac4BXQE+Af8BigE5ASYB/wEGAUEBhAH/AQABOQGNAf8BAAExAYgB/wEAAScBgQH/ARUBXAGf
|
||||||
|
Af8BVwHVAeYB/wGQAe8B/gH/AToBmwG8Af8BRgEcATMB/wGRARgBMQH/ATUBMgFKAf8BUQHKAeYB/wGQ
|
||||||
|
Ae0B+gH/AUEBtAHKAf8BAQFCAZIB/wEAASkBgQH/AQABMgGHAf8BAAFDAZYB/wEjATMBRgH/AZMBOwEl
|
||||||
|
Af8B0gFgAUAB/wHDAVkBPAH/AyIB/wOTAf8DHQH/Ag0BZAH/ARcBOQGLAf8BMAGdAb0B/wEOAR8BVgH/
|
||||||
|
AREBOAGVAf8BTQHWAekB/wFOAdcB8AH/AU0B0gHwAf8BTQHRAfAB/wFNAdEB7gH/AUoBzQHrAf8BRwHF
|
||||||
|
AecB/wEIARwBigH/Ag8BXAH/Ag8BXAH/Ag8BXAH/Ag8BXAH/AQ4BEAFdAf8BBgEeAYwB/wFIAcEB4gH/
|
||||||
|
AUIBxAHoAf8BIAGKAc8B/wFWAeEB9QH/AQ0BVgHDAf8BWAHhAfUB/wEzAaIB1QH/AQgBHQGSAf8BBwEM
|
||||||
|
AVgB/wEOAR0BVQH/AS4BlAG0Af8BFwE0AYgB/wINAWQB/zgAAwQBBQMNARIDKAE8A0oBigFeAmEB2gGo
|
||||||
|
Aa8BtQH9AeID/wHGAf4C/wHDAfsC/wHDAfsC/wHJA/8B6QP/AagBrwG1Af0BXAJhAdwDRwGCAx0BKgMF
|
||||||
|
AQeEAAMdAf8DjwH/Ax0B/wHJAVoBPQH/AdABXQE/Af8B0AFdAT8B/wGmAUUBLQH/ASsBLwE9Af8BEQFb
|
||||||
|
AaMB/wFDAasB0gH/AZIB6wH4Af8BiQHqAfcB/wFCAaIBvAH/AUIBLwFIAf8BmgEjAUkB/wG/ATYBiwH/
|
||||||
|
AcEBOwGTAf8BuwE0AYIB/wGCARwBOwH/AToBSwFlAf8BUQHDAdsB/wGTAfAB/AH/AYYB4QHzAf8BMAGR
|
||||||
|
AbkB/wEKAVYBnwH/AVgBMAEoAf8BvAFSATcB/wHQAV0BPwH/AcABVgE7Af8DIgH/A48B/wMdAf8CDQFk
|
||||||
|
Af8BFwE5AYsB/wEwAZ0BvQH/AQ4BHwFaAf8BDgE6AZ8B/wFUAeIB9QH/AVsB7AL/AWAB7gL/AWEB7gL/
|
||||||
|
AWEB7gL/AWEB7gL/AUABwAHrAf8BCAEcAY8B/wIPAWEB/wIPAV4B/wIPAVwB/wIPAV0B/wELARQBggH/
|
||||||
|
ASIBYAG+Af8BUgHaAfgB/wEiAZgB3wH/AUEBxAHxAf8BNQG2AeoB/wEtAawB5QH/AU0B1gH5Af8BJwGf
|
||||||
|
AeEB/wEwAZ8B0wH/AQ4BKQGMAf8BDQEdAVgB/wErAZQBtAH/ARcBNAGIAf8CDQFkAf8kAAMBAQIDAwQE
|
||||||
|
BAYECAELAw8BFAMkATYBRgJHAYABWAJcAdEBhwGQAZQB+wHpA/8ByAP/AcMB+wL/AcMB+wL/AcwD/wHw
|
||||||
|
A/8BhwGQAZQB+wFZAl0B1wNMAZIDKwFCAw0BEgMDAQSEAAMdAf8DjwH/Ax0B/wHHAVgBPQH/Ac4BWwE/
|
||||||
|
Af8BzgFbAT8B/wGmAUUBLgH/AisBOQH/AQcBSwGQAf8BKgGHAakB/wEdATIBSgH/AVEBFQEsAf8BpQEk
|
||||||
|
AUwB/wHCATcBjAH/AcsBRgGkAf8B0gFOAbEB/wHUAU8BtAH/AdEBTAGwAf8BygFFAaIB/wG+ATUBhAH/
|
||||||
|
AZIBHgFCAf8BQwEaASwB/wEVAUUBYwH/AS8BigGsAf8BAAFAAYgB/wFXATABKAH/Ab0BUQE4Af8BzgFb
|
||||||
|
AT8B/wG/AVUBOwH/AyIB/wOPAf8DHQH/Ag0BZAH/ARcBOAGLAf8BMAGcAbkB/wEOAR8BVAH/AQ4BOgGf
|
||||||
|
Af8BVAHhAfUB/wFZAecC/wFaAegC/wFbAegC/wFdAeoC/wFhAe4C/wFAAcAB6wH/AQgBHAGOAf8CDwFb
|
||||||
|
Af8CDwFaAf8CDwFZAf8CDwFZAf8BCwEVAYEB/wE4AaEB1AH/AVkB5gL/AQ8BUgHBAf8BWQHmAv8BIQGP
|
||||||
|
AdQB/wFGAckB8QH/AUYByQHxAf8BIQGPAdUB/wFPAdwB9QH/ARMBOAGYAf8BDgEdAVMB/wEvAZQBtAH/
|
||||||
|
ARcBNAGIAf8CDQFkAf8cAAMCAQMDBgEIAw0BEQMXASADIgEyAyoBQAMsAUMDMQFOA0cBggFZAlwBzAF2
|
||||||
|
AYABjAH6Ae0D/wHJA/8BwwH7Av8BwwH7Av8BzQP/AfgD/wFtAXoBfgH4AVwCXgHOAUgCSQGHAysBQgMR
|
||||||
|
ARcDBAEGAwABAYQAAx0B/wOQAf8DHQH/AcUBVgE8Af8BzAFZAT4B/wHMAVkBPgH/AaQBQgEtAf8BKAEr
|
||||||
|
ATsB/wEDAUUBiQH/AQUBSgGNAf8BNAEkAT4B/wG8AS0BYgH/AcQBPQGcAf8B0QFNAa8B/wHcAVkBwQH/
|
||||||
|
AeYBYgHNAf8B6QFlAdIB/wHmAWMBzQH/Ad0BWgHBAf8B0AFNAa8B/wHFAT4BmwH/AbMBKQFRAf8BBAEy
|
||||||
|
AVMB/wEWAVEBkAH/AQABOgGDAf8BVgEvASgB/wG7AVABNwH/AcwBWQE+Af8BvQFTAToB/wMiAf8DkAH/
|
||||||
|
Ax0B/wINAWQB/wEXATgBiwH/ATABmwG4Af8BDgEeAVIB/wERATIBkgH/AT0BuwHgAf8BQQG8AeYB/wFB
|
||||||
|
Ab8B5gH/AUgBvwHkAf8BSAHBAecB/wFIAcUB6wH/AUMBvwHkAf8BCAEZAYQB/wIOAVkB/wINAVkB/wIH
|
||||||
|
AVkB/wIHAVkB/wEKAQ0BXAH/AQcBFgGFAf8BCAEcAY0B/wEIARcBiAH/AQgBHAGPAf8BCAEYAYsB/wEI
|
||||||
|
ARsBlAH/AQkBHAGWAf8BDAEcAZMB/wEIARwBkgH/AQYBEAFdAf8BDgEdAVIB/wEwAZQBtAH/ARcBNAGI
|
||||||
|
Af8CDQFkAf8XAAEBAwQBBQMKAQ4DGgElAzEBTQNEAXkBTwJQAZsBUwJUAawDVAGuA1UBtQFaAl4B2AFt
|
||||||
|
AXoBggH3AfQD/wHKA/8BwwH7Av8BxAH8Av8B0Qf/AW0BegGCAfcBWAJbAcYDQwF4AyYBOAMQARUDBAEG
|
||||||
|
AwABAYgAAx0B/wOSAf8DHQH/AcMBUwE7Af8BygFWAT0B/wHIAVUBPAH/AYwBNAEjAf8BEQEqAUcB/wEM
|
||||||
|
AUoBjAH/AQwBVgGdAf8BUQEiAT4B/wHCATcBkAH/Ac0BSAGrAf8B3gFcAcQB/wHvAYcB2gH/AfsBkwHs
|
||||||
|
Af8B/QGYAfQB/wH7AZMB7AH/Ae8BhwHaAf8B3gFcAcQB/wHOAUgBrAH/Ab0BNAGEAf8BIAE0AVQB/wEe
|
||||||
|
AV0BnQH/AQABOQGEAf8BRAErAS0B/wGwAUgBMgH/AcoBVgE9Af8BuwFQATkB/wMiAf8DkgH/Ax0B/wIN
|
||||||
|
AWQB/wEXATgBigH/ATABlwG2Af8BDgEdAVIB/wEHAQ4BWwH/AQoBGwGPAf8BCgEdAZcB/wEKAR0BlwH/
|
||||||
|
AQoBHQGPAf8BCgEdAY8B/wEKAR0BjwH/AQoBGgGIAf8BCgEOAV0B/wIJAVkB/wIGAVkB/wIGAVkB/wIG
|
||||||
|
AVkB/wIGAVkB/wIJAVkB/wIOAVkB/wIPAVsB/wIPAWEB/wIPAWEB/wIPAWUB/wIPAYMB/wIPAYMB/wIP
|
||||||
|
AWQB/wIIAVMB/wEOAR0BUgH/ATABlAG0Af8BFwE0AYgB/wINAWQB/xMAAQEDBAEGAw8BFAMkATUBPwJA
|
||||||
|
AW8DVgGzAVsCYQHhAmUBZgH0AXEBfQGKAfoBbQF6AX4B+AFZAWYBawH1AWgBegGGAvoD/wHNA/8BwwH7
|
||||||
|
Av8BxAH8Av8B1AP/AfMB+AH8Af8BWQFnAWwB9QFWAlgBwQNAAXADIAEuAwsBDwMEAQUDAAEBjAADHQH/
|
||||||
|
A5YB/wMdAf8BwQFQATsB/wHIAVMBPAH/AcQBUQE6Af8BhwExASMB/wEAATABWgH/AR4BWAGXAf8BEAFT
|
||||||
|
AZcB/wGAASEBQgH/AcYBPQGaAf8B1QFRAbcB/wHqAYAB0gH/AfwBlgHxAv8BqAH+Av8BrwP/AagB/gH/
|
||||||
|
AfwBlgHxAf8B6gGAAdIB/wHWAVEBtwH/AcUBOwGTAf8BNwEtAUkB/wEcAV8BoAH/AQQBRQGNAf8BIgEq
|
||||||
|
AT4B/wGMATIBIgH/AccBUwE8Af8BuQFNATkB/wMjAf8DlgH/Ax0B/wINAWMB/wEXATYBhQH/AS0BlQG0
|
||||||
|
Af8BDQEdAVIB/wIIAVMB/wIPAWQB/wIPAYMB/wIPAYMB/wIPAWEB/wIPAWEB/wIPAV4B/wIPAVoB/wIJ
|
||||||
|
AVkB/wIGAVkB/wIGAVkB/wIGAVkB/wIGAVkB/wIGAVkB/wIGAVkB/wINAVkB/wIPAVsB/wIPAWEB/wIP
|
||||||
|
AWEB/wIPAWEB/wIPAYMB/wIPAYMB/wIPAWQB/wIIAVMB/wEOAR0BUgH/ATABlAG0Af8BFwE0AYgB/wIN
|
||||||
|
AWQB/xAAAwIBAwMLAQ8DIwE0AUQCRQF8AVcCWgHFAW0BfQGDAfcB8wH4AfwB/wHxA/8B5wP/AeoD/wHv
|
||||||
|
A/8B5AP/Ac0D/wHDAfsC/wHGAf4C/wHaA/8B8wH4AfwB/wFkAWUBZgH0AVYCWAG8Az0BaQMdASoDCgEN
|
||||||
|
AwMBBJQAAx0B/wOaAf8DHQH/Ab4BTwE6Af8BxQFRATsB/wGvAUUBMgH/AVEBKwEmAf8BAAE6AYsB/wE1
|
||||||
|
AYkBqwH/AQ4BQgFlAf8BqQEpAVMB/wHIAUEBoQH/AdoBVgG8Af8B8AGIAdwB/wH+AZ8B+gL/AbQD/wHC
|
||||||
|
A/8BtAL/Af4BnwH6Af8B8AGIAdwB/wHbAVYBvQH/AckBQAGdAf8BXQEiAUEB/wEYAVwBnQH/ASQBYQGi
|
||||||
|
Af8BAAEvAVoB/wGGATABIgH/AcMBUAE6Af8BtgFMATgB/wMjAf8DmgH/Ax0B/wINAWIB/wEXATQBgwH/
|
||||||
|
AS8BlAG0Af8BDgEdAVIB/wIIAVMB/wIPAWQB/wIPAYMB/wIPAYMB/wIPAWEB/wIPAWEB/wIPAVwB/wIP
|
||||||
|
AVkB/wIGAVkB/wIGAVkB/wIGAVkB/wIGAVkB/wIGAVkB/wIGAVkB/wIGAVkB/wIHAVkB/wIPAVkB/wIP
|
||||||
|
AV0B/wIPAWEB/wIPAWEB/wIPAYMB/wIPAYMB/wIPAWQB/wIIAVMB/wEOAR0BUgH/ATABlAG0Af8BFwE0
|
||||||
|
AYgB/wINAWQB/xAAAwMBBAMYASEDPQFpAVcCWQG/AXkBgQGMAfoB8QP/Ac4D/wHEAfwC/wHDAfsC/wHD
|
||||||
|
AfsC/wHDAfsC/wHDAfsC/wHDAfsC/wHGAf4C/wHeA/8BqAG4AcIB/gFOAl0B8AFVAlcBtwM7AWMDGgEl
|
||||||
|
AwkBDAMDAQSYAAMdAf8DnwH/Ax0B/wG7AUwBOQH/AcABTQE5Af8BhgEvASEB/wEUASkBQgH/AQUBSAGU
|
||||||
|
Af8BPAGVAbkB/wEsATMBTgH/AbgBLAFgAf8BxwFBAaAB/wHZAVUBuwH/Ae8BhQHaAf8B/gGdAfoC/wGx
|
||||||
|
A/8BvAP/AbEC/wH+AZ0B+gH/Ae8BhQHaAf8B2QFVAbwB/wHHAUABnwH/AaQBJgFPAf8BFwFMAYkB/wFC
|
||||||
|
AZcBuAH/AQABOAGKAf8BUAEqAScB/wGtAUMBMQH/AbMBSQE3Af8DIwH/A58B/wMdAf8CDQFiAf8BFwE0
|
||||||
|
AYMB/wEwAZQBtAH/AQ4BHQFSAf8BCQEaAWQB/wEWAUQBrAH/ARcBSQG2Af8BFQFHAbAB/wEPATYBogH/
|
||||||
|
AQsBIAGOAf8BDAETAWQB/wIPAVsB/wIGAVkB/wIGAVkB/wIGAVkB/wIGAVkB/wIGAVkB/wIGAVkB/wIG
|
||||||
|
AVkB/wIHAVkB/wIPAVkB/wIPAVwB/wIPAWEB/wIPAWEB/wIPAYMB/wIPAYMB/wIPAWQB/wIIAVMB/wEO
|
||||||
|
AR0BUgH/AS8BlAG0Af8BFwE0AYgB/wINAWQB/xAAAwQBBgMjATMBTQJOAZUCZQFmAfQE/wHaA/8B2QP/
|
||||||
|
AeAD/wHdA/8BzwP/AcUB/QL/AcMB+wL/AcMB+wL/AdMD/wGoAbgBwgH+AU4CXQHwAVUCVwG3AzoBYAMY
|
||||||
|
ASIDCAELAwIBA5wAAx0B/wOkAf8DHQH/AbkBSQE3Af8BoAE7ASsB/wFLAScBJQH/AQABKQFhAf8BKwFg
|
||||||
|
AaIB/wETAVEBkgH/AVkBGQEqAf8BtwEsAWMB/wHCAT0BmwH/AdMBTwGzAf8B5gFkAc8B/wH6AZEB6wL/
|
||||||
|
AaAB/AL/AagB/gL/AaAB/AH/AfoBkQHrAf8B5gFkAc8B/wHTAU8BtAH/AcMBPAGaAf8BtgEqAVcB/wEt
|
||||||
|
ASUBOQH/AScBYgGkAf8BCAFGAZEB/wEPASEBPQH/AYQBLQEfAf8BqQFCATIB/wMjAf8DpAH/Ax0B/wIN
|
||||||
|
AWMB/wEXATQBhQH/ATABlAG0Af8BDgEdAVIB/wEVAToBkgH/AVQB5AH1Af8BWQHpAv8BUgHgAfgB/wE1
|
||||||
|
AbEB3wH/AR0BUgG1Af8BDwEhAYoB/wEPAREBWwH/AgkBWQH/AgYBWQH/AgYBWQH/AgYBWQH/AgYBWQH/
|
||||||
|
AgYBWQH/AgYBWQH/Ag0BWQH/Ag8BWgH/Ag8BXgH/Ag8BYwH/AQwBFAGEAf8BCwEZAY0B/wELARcBjAH/
|
||||||
|
AQ4BEgGDAf8CCAFUAf8BDQEdAVIB/wEtAZUBtAH/ARcBNgGIAf8CDQFkAf8QAAMEAQYDIgEyAUwCTQGR
|
||||||
|
AmQBZQHxAasBsQG0Af0BnAGxAb8B/gGoAa8BtQH9AYEBjQGTAfsBcAGIAZoB/AHnAfEB+AH/AdUD/wHD
|
||||||
|
AfsC/wHDAfsC/wHgA/8BXwGIAZEB+wFaAl0B0wNCAXQDGgElAwYBCAMBAQKgAAMdAf8DqgH/Ax0B/wGp
|
||||||
|
AT8BMAH/AVMBKAElAf8BRAGWAbUB/wFdAcEB5AH/AZQB2AHrAf8BAAE3AYgB/wEGASoBSwH/AaEBIgFK
|
||||||
|
Af8BvwE1AY4B/wHKAUUBpgH/AdoBVgG8Af8B6AGBAdIB/wH0AYoB4QH/AfkBkAHoAf8B9AGKAeEB/wHo
|
||||||
|
AYEB0gH/AdoBVgG9Af8BywFFAaUB/wHAATQBigH/AWMBIQE+Af8BAAEoAVgB/wEkAWIBqQH/AZwB4QHv
|
||||||
|
Af8BTwGwAdYB/wE3ATABOAH/AZABNAEnAf8DJAH/A6oB/wMdAf8CDQFkAf8BFwE0AYgB/wEwAZQBtAH/
|
||||||
|
AQ4BHQFSAf8BCwEkAYoB/wEeAYwBzwH/AR4BkwHcAf8BHwGPAdUB/wEVAVwBwwH/AQ8BNgGlAf8BCgEa
|
||||||
|
AYkB/wEKARABYAH/Ag4BWQH/AgkBWQH/AgYBWQH/AgYBWQH/AgYBWQH/AgYBWQH/AgkBWQH/Ag4BWQH/
|
||||||
|
Ag8BWwH/Ag8BYwH/AQ8BHgGOAf8BHAFUAbgB/wEyAZoB0gH/ASkBjQHLAf8BEwE7AaUB/wEIARABXAH/
|
||||||
|
AQ4BHQFSAf8BMAGXAbYB/wEXATgBigH/Ag0BZAH/EAADAwEEAxYBHgM2AVkBTwJRAZwBVwJZAb8BWQJc
|
||||||
|
AckBWgJdAcoBXAJeAc4BWAJfAeMBVwFiAWUB9gHwA/8BwwH7Av8BwwH7Av8B3QP/AXoBlAGgAfwDWQHH
|
||||||
|
AzcBWwMPARQDAAEBpAADHQH/A7AB/wMdAf8BrwFAATMB/wFiAScBHwH/AUUBIgEkAf8BQAFcAYUB/wGw
|
||||||
|
Ae4B9wH/AZsB4wHvAf8BAAE6AZEB/wEPATYBTwH/AaUBJgFSAf8BwAE5AZUB/wHLAUcBqQH/AdYBUgG3
|
||||||
|
Af8B3gFcAcIB/wHhAV4BxgH/Ad4BXAHCAf8B1gFSAbcB/wHLAUcBqAH/AcMBOAGRAf8BgQEiAUQB/wEA
|
||||||
|
AUABgAH/ARcBWgGlAf8BtwHzAfoB/wGWAdoB5AH/ATgBLQE1Af8BWAEmASEB/wGjATsBMAH/AyQB/wOw
|
||||||
|
Af8DHQH/Ag0BZAH/ARcBNAGIAf8BMAGUAbQB/wEOAR0BUgH/AQsBMgGPAf8BPgHHAegB/wFFAdAB8wH/
|
||||||
|
AUYBywHyAf8BPAG7AeYB/wEmAY0BzAH/ARIBPQGlAf8BDQEZAYEB/wEIAQ4BWQH/AgcBWQH/AgYBWQH/
|
||||||
|
AgYBWQH/AgYBWQH/AgYBWQH/AgcBWQH/AggBWQH/Ag8BWQH/AQwBEgFjAf8BGAFSAbUB/wFHAdAB8QH/
|
||||||
|
AVcB6QH9Af8BVAHlAfsB/wEwAakB3AH/AQoBIQGEAf8BDgEeAVIB/wEwAZsBuAH/ARcBOAGLAf8CDQFk
|
||||||
|
Af8QAAMCAQMDCgENAxwBJwMvAUkDPAFmA0QBegNIAYQBTgJPAZcBWQJcAcwBUwJkAfEE/wHDAfsC/wHD
|
||||||
|
AfsC/wHXA/8BqwGyAbYB/QNbAcgDNwFaAwsBD6gAAx0B/wO2Af8DHQH/AbABPwEzAf8BsgE/ATIB/wGf
|
||||||
|
ATYBKgH/AWMBJgEdAf8BKgEiATEB/wGTAdQB6AH/AZYB3gHvAf8BAAFJAZYB/wEiAS0BRAH/AbgBKgFd
|
||||||
|
Af8BvwE3AZMB/wHGAUABoAH/AcsBRgGmAf8BzQFIAaoB/wHLAUYBpgH/AcYBQAGgAf8BwAE3AZEB/wGd
|
||||||
|
ASUBTgH/AQUBQgFcAf8BFwFZAagB/wGvAesB+AH/AVYBoAHDAf8BSAIhAf8BZQEmARwB/wGtAT0BMAH/
|
||||||
|
AakBPQEyAf8DJAH/A7YB/wMdAf8CDQFkAf8BFwE0AYgB/wEvAZQBtAH/AQ4BHQFSAf8BCQEtAY4B/wE3
|
||||||
|
AcMB5wH/AT4BzgHyAf8BPgHIAfIB/wE0AbQB5gH/ASEBigHKAf8BEQE7AZ8B/wEHARUBXwH/AgYBUAH/
|
||||||
|
AgYBTgH/AgYBTgH/AgYBTgH/AgYBTgH/AgYBTgH/AgYBTgH/AgYBTgH/AgYBTwH/AQUBDwFdAf8BKAGV
|
||||||
|
AcsB/wFMAekB/QH/AU4B7gL/AU4B7gL/AUAB1QHwAf8BCQEuAZAB/wEOAR8BUgH/ATABnAG5Af8BFwE4
|
||||||
|
AYsB/wINAWQB/xMAAQEDBwEJAxYBHwMvAUkBQQJCAXMBTAJNAZEBUAJSAaMBVQJXAboDXwHgAUkBYgFl
|
||||||
|
AfYB8wP/AcMB+wL/AcMB+wL/Ad0D/wF6AZQBoAH8AVcCWgG9AzEBTwMJAQyoAAMdAf8DuwH/Ax0B/wGt
|
||||||
|
ATwBMgH/AbMBPgEzAf8BswE+ATMB/wGoATkBLgH/AWIBIwEcAf8BKgEiATEB/wGRAdEB6gH/AWEBugHd
|
||||||
|
Af8BAgFSAZMB/wFLAR8BOgH/AbgBKAFgAf8BvAEwAYcB/wHAATIBigH/Ab8BMwGMAf8BwAEyAYoB/wG8
|
||||||
|
AS8BhgH/AbQBJwFYAf8BHgEwAUUB/wEMAVgBogH/AZ0B3gHxAf8BVgGgAcYB/wFKASABIQH/AZYBMAEn
|
||||||
|
Af8BsgE+ATMB/wGzAT4BMwH/AaYBOgExAf8DJQH/A7sB/wMdAf8CDQFkAf8BFwE0AYgB/wErAZQBtAH/
|
||||||
|
AQ0BHQFSAf8BAwEfAYUB/wEVAYIBygH/ARQBjgHXAf8BFAGKAdcB/wEUAYYBzwH/ARQBXAHAAf8BDgFD
|
||||||
|
AaoB/wEKASQBjAH/AgYBSwH/AgYBRQH/AgYBRQH/AgYBRQH/AgYBRQH/AgYBRQH/AgYBRQH/AgYBRwH/
|
||||||
|
AgYBSQH/AQMBDAFZAf8BHgGAAcEB/wFBAeMB+wH/AUUB7gL/AUUB7gL/ATIBxgHqAf8BBgEmAYwB/wEO
|
||||||
|
AR8BVAH/ATABnQG9Af8BFwE5AYsB/wINAWQB/xMAAQEDCgENAyoBQAFOAk8BlwFYAlwB0QNcAeoDZwHy
|
||||||
|
AVkBZwFsAfUBgQGNAZMB+wHaAeoB9QH/AdgD/wHDAfsC/wHFAf0C/wHvA/8CYgFoAfYBUAJSAaMDJwE6
|
||||||
|
AwcBCagAAx0B/wPAAf8DHQH/AakBOgEwAf8BrwE7ATEB/wGvATsBMQH/Aa8BOwExAf8BpQE2AS0B/wFe
|
||||||
|
ASEBGgH/ASsBNAFJAf8BmAHaAfEB/wE3AY8BvAH/AQgBPQFZAf8BWgEVASsB/wFOASEBPAH/AT0BJwFC
|
||||||
|
Af8BPQEnAUIB/wFBASYBQQH/AVYBHQE4Af8BRAEYASkB/wECAU0BkAH/AWUBvAHgAf8BhAG7AeEB/wE8
|
||||||
|
AR4BJAH/AZEBLQEkAf8BrwE7ATEB/wGvATsBMQH/Aa8BOwExAf8BogE4AS8B/wMlAf8DwAH/Ax0B/wIN
|
||||||
|
AWUB/wEXATQBiwH/AS4BlAG0Af8BCgEZAU4B/wEJAS0BjAH/ATYB2gHrAf8BOwHkAfUB/wE7AeIB9QH/
|
||||||
|
ATYB2QHzAf8BMAHCAekB/wEhAZMB0QH/AREBPQGjAf8BAQEFAUIB/wIBATsB/wIBATsB/wIBATsB/wIB
|
||||||
|
ATsB/wIBATsB/wIBATsB/wIBAT4B/wIBAT4B/wEAAQUBRgH/AQYBLAGQAf8BIgGeAdYB/wE2AdEB8AH/
|
||||||
|
ATABwwHqAf8BFwFdAb0B/wEBARABWwH/AQsBGwFUAf8BMAGdAb0B/wEXATkBjgH/Ag0BZQH/EwABAQMP
|
||||||
|
ARQDOwFjA14B2AT/AfsD/wHzA/8B7gP/AeID/wHRA/8BxgH+Av8BxAH8Av8B1gP/AecB8QH4Af8BVwJc
|
||||||
|
Ad8DRAF5AxgBIgMEAQaoAAMdAf8DxwH/Ax0B/wGmATYBLwH/AawBNwEwAf8BrAE3ATAB/wGsATcBMAH/
|
||||||
|
AawBNwEwAf8BmgEvASgB/wFVAR8BHQH/AUgBkAGyAf8BlgHSAfEB/wENAVABogH/AQIBSQGLAf8BBQFR
|
||||||
|
AZMB/wELAVcBmgH/AQ0BWQGcAf8BCgFWAZcB/wEEAVEBkwH/AQEBRAGLAf8BMgGJAbsB/wGYAdgB8wH/
|
||||||
|
ASwBOgFQAf8BXQEfARoB/wGrATYBLwH/AawBNwEwAf8BrAE3ATAB/wGsATcBMAH/AZ8BNQEuAf8DJQH/
|
||||||
|
A8cB/wMdAf8CDwGFAf8BGwE7AY0B/wEwAZcBtAH/AQgBFwFMAf8BAAEOAU0B/wEJATEBjAH/AQoBMwGS
|
||||||
|
Af8BCgEzAZIB/wEIATEBkAH/AQcBLAGGAf8BBAEfAV8B/wECARABTwH/AgABOAH/AgABMgH/AgABMgH/
|
||||||
|
AgABMgH/AgABMgH/AgABMgH/AgABMgH/AgABMgH/AgABOAH/AQABAQE5Af8BAAEJAUQB/wECARcBXwH/
|
||||||
|
AQgBLQGKAf8BBgElAYUB/wEFARABWAH/AQUBBwFFAf8BCAEYAU0B/wEwAZwBuQH/ARsBPAGRAf8CDwGF
|
||||||
|
Af8TAAEBAw0BEgM4AVwBWAJbAcsBqAG1Ab4B/gHqA/8BzQP/AcQB/AL/AcMB+wL/AcMB+wL/AcYB/gL/
|
||||||
|
AdgD/wHzAfgB/AH/A10B8ANSAakDLgFHAwwBEAMCAQOoAAMdAf8DzwH/Ax0B/wGjATMBLQH/AagBNAEu
|
||||||
|
Af8BqAE0AS4B/wGoATQBLgH/AagBNAEuAf8BqAE0AS4B/wGNAScBIgH/ATABIgEtAf8BjAHSAfMB/wHD
|
||||||
|
AfAB+AH/AdUB7gH3Af8B4AH3AfwB/wHnA/8B6AP/AeYB/gL/Ad0B8gH6Af8BzQHtAfcB/wG1Ae8B+wH/
|
||||||
|
AVYBqwHPAf8BSwEbAR0B/wGWASwBJgH/AagBNAEuAf8BqAE0AS4B/wGoATQBLgH/AagBNAEuAf8BnQEy
|
||||||
|
ASwB/wMmAf8DzwH/Ax0B/wIVAYoB/wEcAT4BmAH/ATEBlQG2Af8BGwFCAYgB/wENARsBSwH/AQ0BGwFQ
|
||||||
|
Af8BDQEbAVAB/wENARsBUAH/AQ0BGwFKAf8BDQEbAUoB/wENARsBSgH/AQ0BGwFFAf8BBgEVAUQB/wEG
|
||||||
|
ARUBRAH/AQYBFQFEAf8BBgEVAUQB/wEGARUBRAH/AQYBFQFEAf8BBgEVAUQB/wEGARUBRAH/AQ0BGwFF
|
||||||
|
Af8BDQEcAUsB/wENAR0BTAH/AQ0BHQFMAf8BDQEdAVIB/wENAR0BUgH/AQ0BHAFRAf8BDQEbAUsB/wEZ
|
||||||
|
AUIBhwH/ATABlAG1Af8BHAE+AZgB/wIVAYoB/xMAAQEDBwEKAyYBOANKAYsBWQJcAc8BcgF6AX4B+AHz
|
||||||
|
AfgB/AH/AfID/wHmA/8B6AP/AfoD/wGoAbgBwgH+A2EB7gNVAbIDOAFcAxUBHQMFAQcDAAEBqAADHQH/
|
||||||
|
A9cB/wMdAf8BnwEwASwB/wGkATEBLQH/AaQBMQEtAf8BpAExAS0B/wGkATEBLQH/AaQBMQEtAf8BmQEs
|
||||||
|
ASgB/wFFARkBHQH/Aa8B3AHkAf8B4gHwAfIB/wGNAaQBrwH/AUkBTwFbAf8BNwEzAUEB/wE4ATQBQgH/
|
||||||
|
AToBNwFEAf8BVAFgAYYB/wGlAcABxQH/Ae8C+wH/AUABggGXAf8BVgEaARkB/wGjATABLAH/AaQBMQEt
|
||||||
|
Af8BpAExAS0B/wGkATEBLQH/AaQBMQEtAf8BmQEvASsB/wMmAf8D1wH/Ax0B/wIWAZQB/wEbATkBmwH/
|
||||||
|
ATwBogHDAf8BTwG3Ac0B/wFLAbkBzQH/AUsBuQHNAf8BSQG5Ac0B/wFIAbkBzQH/AUgBuQHNAf8BSAG5
|
||||||
|
Ac0B/wFIAbkBzQH/AUgBuQHNAf8BSAG5Ac0B/wFIAbkBzQH/AUgBuQHNAf8BSAG5Ac0B/wFIAbkBzQH/
|
||||||
|
AUgBuQHNAf8BSAG5Ac0B/wFIAbkBzQH/AUsBuQHNAf8BSwG8Ac8B/wFLAb8B0gH/AUsBvwHSAf8BSwG/
|
||||||
|
AdIB/wFLAb8B0gH/AUkBvAHPAf8BSAG5Ac0B/wFHAbYByAH/ATcBngHAAf8BGwE4AZsB/wIWAZQB/xQA
|
||||||
|
AwQBBQMRARcDKQE/A0QBeQFVAlYBtAFcAmEB3AFfAWQBagHzAXEBfQGKAfoBcQF9AYoB+gJdAV8B7QFb
|
||||||
|
Al4B0AFQAlEBnwM2AVkDGAEhAwcBCgMBAQKsAAMdAf8D3wH/Ax0B/wGcAS0BKwH/AaEBLgEsAf8BoQEu
|
||||||
|
ASwB/wGhAS4BLAH/AaEBLgEsAf8BoQEuASwB/wGbASsBKQH/AUsBGAEbAf8BjwGWAaEB/wE5ARYBHgH/
|
||||||
|
AVMCGAH/AVYBGAEXAf8BgQEgAR4B/wGBASABHgH/AYEBIAEeAf8BVQEYARcB/wFQARgBGQH/AS0BIQEw
|
||||||
|
Af8BXQFhAYgB/wFVARgBFwH/AaABLQErAf8BoQEuASwB/wGhAS4BLAH/AaEBLgEsAf8BoQEuASwB/wGW
|
||||||
|
ASwBKgH/AycB/wPfAf8DHQH/AhcBngH/ARgBHwGUAf8BJwFBAZ8B/wE6AWEBrgH/AT0BZQGrAf8BPQFl
|
||||||
|
AasB/wE7AWUBqwH/AToBZQGnAf8BOgFlAaYB/wE4AWIBpgH/ATQBXwGmAf8BNAFfAaIB/wE0AV8BoQH/
|
||||||
|
ATQBXwGhAf8BNAFfAaEB/wE0AV8BoQH/ATQBXwGhAf8BNAFfAaEB/wE0AV8BoQH/ATQBXwGhAf8BOAFf
|
||||||
|
AaIB/wE4AV8BpgH/ATsBYgGmAf8BPQFlAaYB/wE9AWUBpwH/AT0BZQGrAf8BOwFlAasB/wE6AWUBqwH/
|
||||||
|
ATcBYQGuAf8BJQFBAZ8B/wEYAR8BlAH/AhcBngH/FwABAQMEAQYDDAEQAxwBKAMxAU0DQgF1A04BmQFT
|
||||||
|
AlUBrQNSAakDSwGOATwCPQFnAykBPgMUARsDBwEJAwIBA7AAA0wB8wPfAf8DNAH/AYoCJwH/AZsBKQEq
|
||||||
|
Af8BmwEpASoB/wGbASkBKgH/AZsBKQEqAf8BmwEpASoB/wGaASgBKQH/AVABFQEWAf8BSgEVARgB/wFS
|
||||||
|
AhUB/wGZASgBKQH/AZoBKQEqAf8BmwEpASoB/wGbASkBKgH/AZsBKQEqAf8BmgEoASkB/wGSASUBJgH/
|
||||||
|
AVECFQH/AUcBFQEZAf8BUgIVAf8BmgEpASoB/wGbASkBKgH/AZsBKQEqAf8BmwEpASoB/wGbASkBKgH/
|
||||||
|
AWIBJQEmAf8DPAH/A90B/wNOAfACHAGkAf8CFwGeAf8CFgGUAf8CFQGPAf8CFQGMAf8CFQGGAf8CFQGC
|
||||||
|
Af8CEAFkAf8CDwFkAf8CDgFhAf8CDQFeAf8CDQFcAf8CDQFcAf8CDQFcAf8CDQFcAf8CDQFcAf8CDQFc
|
||||||
|
Af8CDQFcAf8CDQFcAf8CDQFcAf8CDQFcAf8CDQFeAf8CDgFhAf8CDwFkAf8CEAFkAf8CFQGCAf8CFQGG
|
||||||
|
Af8CFQGMAf8CFQGPAf8CFgGUAf8CFwGeAf8CHAGkAf8bAAEBAwIBAwMGAQgDDAEQAxYBHgMiATIDKgFA
|
||||||
|
AykBPgMfASwDEgEZAwoBDQMEAQYDAQECtAADVwG9A78B/wOUAf8BSAEmASgB/wGKASUBKwH/AZMBIwEq
|
||||||
|
Af8BkwEjASoB/wGTASMBKgH/AZMBIwEqAf8BkwEjASoB/wGSASMBKQH/AY4BIQEoAf8BkgEjASoB/wGT
|
||||||
|
ASMBKgH/AZMBIwEqAf8BkwEjASoB/wGTASMBKgH/AZMBIwEqAf8BkwEjASoB/wGTASMBKgH/AZIBIwEp
|
||||||
|
Af8BjQEhAScB/wGSASMBKgH/AZMBIwEqAf8BkwEjASoB/wGTASMBKgH/AZMBIwEqAf8BgAEmASsB/wE9
|
||||||
|
ASUBJwH/A7QB/wO0Af8DVAGuAh8BrAH/Ah8BqQH/Ah8BpgH/AhoBpgH/AhkBpgH/AhkBowH/AhkBnwH/
|
||||||
|
AhcBngH/AhcBlwH/AhcBlwH/AhcBlgH/AhcBlgH/AhcBjgH/AhcBjgH/AhcBjgH/AhcBjgH/AhcBjgH/
|
||||||
|
AhcBjgH/AhcBjgH/AhcBjgH/AhcBlgH/AhcBlgH/AhcBlwH/AhcBlwH/AhcBngH/AhkBnwH/AhkBowH/
|
||||||
|
AhkBpgH/AhoBpgH/Ah8BpgH/Ah8BqQH/Ah8BrAH/JAADAQECAwMEBAQGAQgDBgEIAwQBBgMDAQQDAAEB
|
||||||
|
vAADNAFUA0wB/wPuAf8DkwH/AzMB/wMdAf8DHQH/Ax0B/wMdAf8DHQH/Ax0B/wMdAf8DHQH/Ax0B/wMd
|
||||||
|
Af8DHQH/Ax0B/wMdAf8DHQH/Ax0B/wMdAf8DHQH/Ax0B/wMdAf8DHQH/Ax0B/wMdAf8DPAH/A7IB/wPq
|
||||||
|
Af8DPAH/Ay0BRQIfAawB/wIfAawB/wIfAawB/wIfAawB/wIfAawB/wIfAawB/wIfAawB/wIbAagB/wIa
|
||||||
|
AaQB/wIXAaIB/wIXAZ8B/wIXAZ8B/wIXAZwB/wIXAZwB/wIXAZwB/wIXAZwB/wIXAZwB/wIXAZwB/wIX
|
||||||
|
AZwB/wIXAZwB/wIXAZ8B/wIXAZ8B/wIXAaIB/wIaAacB/wIbAagB/wIfAawB/wIfAawB/wIfAawB/wIf
|
||||||
|
AawB/wIfAawB/wIfAawB/wIfAawB//8ABQADSgGNA0sB/wPNAf8D+QH/A/sB/wP7Af8D+wH/A/sB/wP7
|
||||||
|
Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7Af8D+wH/A/sB/wP7
|
||||||
|
Af8D+wH/A/sB/wPrAf8DvQH/AzYB/wNIAYcEAANIAYUCHwGsAf8CHwGsAf8CHwGsAf8CHwGsAf8CHwGs
|
||||||
|
Af8CHwGsAf8CHwGsAf8CHgGpAf8CHAGpAf8CHAGmAf8CGAGkAf8CFwGhAf8CFwGhAf8CFwGhAf8CFwGh
|
||||||
|
Af8CFwGhAf8CFwGhAf8CFwGhAf8CFwGhAf8CGAGkAf8CHAGmAf8CHAGpAf8CHgGrAf8CHwGsAf8CHwGs
|
||||||
|
Af8CHwGsAf8CHwGsAf8CHwGsAf8CHwGsAf8CHwGsAf8DSAGF/wAJAAM3AVoDWQHDAysB/AMdAf8DHQH/
|
||||||
|
Ax0B/wMdAf8DHQH/Ax0B/wMdAf8DHQH/Ax0B/wMdAf8DHQH/Ax0B/wMdAf8DHQH/Ax0B/wMdAf8DHQH/
|
||||||
|
Ax0B/wMdAf8DHQH/Ax0B/wMdAf8DVQHqA1QBrgMtAUUIAAMHAQoDSAGFAh8BrAH/Ah8BrAH/Ah8BrAH/
|
||||||
|
Ah8BrAH/Ah8BrAH/Ah8BrAH/Ah8BrAH/Ah8BrAH/Ah8BqwH/Ah4BqgH/Ah0BqgH/Ah0BqAH/Ah0BpAH/
|
||||||
|
Ah0BpAH/Ah0BpAH/Ah0BpAH/Ah0BqAH/Ah0BqgH/Ah4BqgH/Ah8BqwH/Ah8BrAH/Ah8BrAH/Ah8BrAH/
|
||||||
|
Ah8BrAH/Ah8BrAH/Ah8BrAH/Ah8BrAH/Ah8BrAH/A0gBhQMHAQr/AAEAAUIBTQE+BwABPgMAASgDAAGA
|
||||||
|
AwABIAMAAQEBAAEBBgABAhYAA/8BAAHAAgABAwQABP8EAAGAAgABAQQAAv8B+AEHDAAC/wHwAQMMAAL/
|
||||||
|
AeABAQwAAv8BwAEBDAAC/wGAAQEMAAL/AQABAQwAAf8B/gEAAQEMAAH/AfwBAAEBDAAB/wH8AQABAQwA
|
||||||
|
Af8BgAEAAQEMAAH+AgABAQwAAfgCAAEDDAAB8AIAAQcMAAHwAgABHwwAAfACAAE/DAAB8AIAAX8MAAHw
|
||||||
|
AgAB/wwAAfABAAEBAf8MAAHwAQABAwH/DAAB8AEAAQMB/wwAAfABAAEDAf8MAAHwAQABAwH/DAAB8AEA
|
||||||
|
AQMB/wwAAfABAAEDAf8MAAH4AQABBwH/DAAB+AEAAQ8B/wwAAfwBAAEfAf8MAAH/AYABfwH/DAAE/wQA
|
||||||
|
AYACAAEBBAAE/wQAAcACAAEDBAAE/wQACw==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
79
ThirdParty/Converter.cs
vendored
Normal file
79
ThirdParty/Converter.cs
vendored
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
namespace DutyContent.ThirdParty
|
||||||
|
{
|
||||||
|
static class Converter
|
||||||
|
{
|
||||||
|
public static bool TryInt(string s, out int ret)
|
||||||
|
{
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < s.Length; i++)
|
||||||
|
{
|
||||||
|
var n = s[i] - '0';
|
||||||
|
if (n < 0 || n > 9)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
ret = ret * 10 + n;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int ToInt(string s, int failret = 0)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < s.Length; i++)
|
||||||
|
{
|
||||||
|
var n = s[i] - '0';
|
||||||
|
if (n < 0 || n > 9)
|
||||||
|
return failret;
|
||||||
|
|
||||||
|
ret = ret * 10 + n;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool TryUshort(string s, out ushort ret)
|
||||||
|
{
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < s.Length; i++)
|
||||||
|
{
|
||||||
|
var n = s[i] - '0';
|
||||||
|
if (n < 0 || n > 9)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
ret = (ushort)(ret * 10 + n);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ushort ToUshort(string s, ushort failret=0)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < s.Length; i++)
|
||||||
|
{
|
||||||
|
var n = s[i] - '0';
|
||||||
|
if (n < 0 || n > 9)
|
||||||
|
return failret;
|
||||||
|
|
||||||
|
ret = ret * 10 + n;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (ushort)ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool ToBool(string s)
|
||||||
|
{
|
||||||
|
return s.ToUpper().Equals("TRUE");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static float ToFloat(string s, float failret=0.0f)
|
||||||
|
{
|
||||||
|
return float.TryParse(s, out float v) ? v : failret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
223
ThirdParty/LineDb.cs
vendored
Normal file
223
ThirdParty/LineDb.cs
vendored
Normal file
|
@ -0,0 +1,223 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace DutyContent.ThirdParty
|
||||||
|
{
|
||||||
|
class LineDb
|
||||||
|
{
|
||||||
|
private Dictionary<string, string> _dbstr = new Dictionary<string, string>();
|
||||||
|
private Dictionary<int, string> _dbint = new Dictionary<int, string>();
|
||||||
|
|
||||||
|
public static string InvalidKey = "<invalid>";
|
||||||
|
|
||||||
|
public LineDb(string ctx, bool useintdb)
|
||||||
|
{
|
||||||
|
LoadString(ctx, useintdb, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public LineDb(string filename, Encoding enc, bool useintdb)
|
||||||
|
{
|
||||||
|
LoadFile(filename, enc, useintdb, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LoadString(string ctx, bool useintdb, bool reset = false)
|
||||||
|
{
|
||||||
|
if (reset)
|
||||||
|
{
|
||||||
|
_dbstr.Clear();
|
||||||
|
_dbint.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
ParseLines(ctx, useintdb);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LoadFile(string filename, Encoding enc, bool useintdb, bool reset = false)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var ctx = File.ReadAllText(filename, enc);
|
||||||
|
LoadString(ctx, useintdb, reset);
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool SaveFile(string filename, Encoding enc, string header = null)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(filename))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
using (var sw = new StreamWriter(filename, false, enc))
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(header))
|
||||||
|
{
|
||||||
|
sw.WriteLine(header);
|
||||||
|
sw.WriteLine();
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var l in _dbstr)
|
||||||
|
{
|
||||||
|
if (l.Key.IndexOf('=') < 0)
|
||||||
|
sw.WriteLine($"{l.Key}={l.Value}");
|
||||||
|
else
|
||||||
|
sw.WriteLine($"\"{l.Key}\"={l.Value}");
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var l in _dbint)
|
||||||
|
sw.WriteLine($"{l.Key}={l.Value}");
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ParseLines(string ctx, bool useintdb)
|
||||||
|
{
|
||||||
|
_dbstr.Clear();
|
||||||
|
|
||||||
|
var ss = ctx.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
|
||||||
|
foreach (var v in ss)
|
||||||
|
{
|
||||||
|
string name, value, l = v.TrimStart();
|
||||||
|
|
||||||
|
if (l[0] == '#' || l.StartsWith("//"))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (l[0] == '"')
|
||||||
|
{
|
||||||
|
var qt = l.IndexOf('"', 1);
|
||||||
|
if (qt < 0)
|
||||||
|
{
|
||||||
|
// no end quote?
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
value = l.Substring(qt + 1).TrimStart();
|
||||||
|
|
||||||
|
if (value.Length == 0 || value[0] != '=')
|
||||||
|
{
|
||||||
|
// no value
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
name = l.Substring(1, qt - 1).Trim();
|
||||||
|
value = value.Substring(1).Trim();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var div = l.IndexOf('=');
|
||||||
|
if (div <= 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
name = l.Substring(0, div).Trim();
|
||||||
|
value = l.Substring(div + 1).Trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!useintdb)
|
||||||
|
{
|
||||||
|
if (_dbstr.TryGetValue(name, out _))
|
||||||
|
_dbstr.Remove(name);
|
||||||
|
_dbstr.Add(name, value);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!Converter.TryInt(name, out int nkey))
|
||||||
|
{
|
||||||
|
if (_dbstr.TryGetValue(name, out _))
|
||||||
|
_dbstr.Remove(name);
|
||||||
|
_dbstr.Add(name, value);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (_dbint.TryGetValue(nkey, out _))
|
||||||
|
_dbint.Remove(nkey);
|
||||||
|
_dbint.Add(nkey, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Get(string name)
|
||||||
|
{
|
||||||
|
if (!_dbstr.TryGetValue(name, out string value))
|
||||||
|
return name;
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Get(int key)
|
||||||
|
{
|
||||||
|
if (!_dbint.TryGetValue(key, out string value))
|
||||||
|
return InvalidKey;
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Try(string name, out string value)
|
||||||
|
{
|
||||||
|
return _dbstr.TryGetValue(name, out value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Try(int key, out string value)
|
||||||
|
{
|
||||||
|
return _dbint.TryGetValue(key, out value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Try(string name, out int value)
|
||||||
|
{
|
||||||
|
if (!_dbstr.TryGetValue(name, out string v))
|
||||||
|
{
|
||||||
|
value = 0;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!ThirdParty.Converter.TryInt(v, out value))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Try(string name, out ushort value)
|
||||||
|
{
|
||||||
|
if (!_dbstr.TryGetValue(name, out string v))
|
||||||
|
{
|
||||||
|
value = 0;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!ThirdParty.Converter.TryUshort(v, out value))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerator<KeyValuePair<string, string>> GetStringDb()
|
||||||
|
{
|
||||||
|
return (IEnumerator<KeyValuePair<string, string>>)_dbstr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerator<KeyValuePair<int, string>> GetIntDb()
|
||||||
|
{
|
||||||
|
return (IEnumerator<KeyValuePair<int, string>>)_dbint;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Count { get { return _dbstr.Count + _dbint.Count; } }
|
||||||
|
|
||||||
|
public string this[string index]
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Try(index, out string v) ? v : "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string this[int key]
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Try(key, out string v) ? v : "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
114
ThirdParty/NativeMethods.cs
vendored
Normal file
114
ThirdParty/NativeMethods.cs
vendored
Normal file
|
@ -0,0 +1,114 @@
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.NetworkInformation;
|
||||||
|
using System.Net.Sockets;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace DutyContent.ThirdParty
|
||||||
|
{
|
||||||
|
class NativeMethods
|
||||||
|
{
|
||||||
|
[DllImport("user32.dll", CharSet = CharSet.Auto)]
|
||||||
|
public static extern IntPtr SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam);
|
||||||
|
|
||||||
|
public static void ScrollToBottom(RichTextBox richTextBox)
|
||||||
|
{
|
||||||
|
SendMessage(richTextBox.Handle, 277, (IntPtr)7, IntPtr.Zero);
|
||||||
|
richTextBox.SelectionStart = richTextBox.Text.Length;
|
||||||
|
}
|
||||||
|
|
||||||
|
[DllImport("kernel32.dll")]
|
||||||
|
public static extern IntPtr OpenProcess(uint access_flag, bool inherit_handle, int process_id);
|
||||||
|
|
||||||
|
[DllImport("kernel32.dll")]
|
||||||
|
public static extern int CloseHandle(IntPtr handle);
|
||||||
|
|
||||||
|
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
|
||||||
|
public static extern IntPtr GetForegroundWindow();
|
||||||
|
|
||||||
|
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
||||||
|
public static extern int GetWindowThreadProcessId(IntPtr handle, out int process_id);
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
public static extern bool ReleaseCapture();
|
||||||
|
|
||||||
|
public class ProcessHandle
|
||||||
|
{
|
||||||
|
public Process Process { get; private set; }
|
||||||
|
public IntPtr Handle { get; private set; }
|
||||||
|
public System.Net.IPEndPoint EndPoint { get; set; }
|
||||||
|
|
||||||
|
public ProcessHandle(Process p)
|
||||||
|
{
|
||||||
|
Process = p;
|
||||||
|
|
||||||
|
if (p != null && !p.HasExited)
|
||||||
|
Handle = OpenProcess(16, false, p.Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
~ProcessHandle()
|
||||||
|
{
|
||||||
|
if (Handle != IntPtr.Zero)
|
||||||
|
CloseHandle(Handle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[DllImport("Iphlpapi.dll", SetLastError = true)]
|
||||||
|
public static extern uint GetExtendedTcpTable(IntPtr tcpTable, ref int tcpTableLength, bool sort, AddressFamily ipVersion, int tcpTableType, int reserved = 0);
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct TcpTable
|
||||||
|
{
|
||||||
|
public uint entries;
|
||||||
|
[MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 1)]
|
||||||
|
public TcpRow[] row;
|
||||||
|
}
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct TcpRow : IEquatable<TcpRow>
|
||||||
|
{
|
||||||
|
public TcpState state;
|
||||||
|
public uint __localAddr;
|
||||||
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
|
||||||
|
public byte[] __localPort;
|
||||||
|
public uint __remoteAddr;
|
||||||
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
|
||||||
|
public byte[] __remotePort;
|
||||||
|
public uint owningPid;
|
||||||
|
|
||||||
|
public IPAddress LocalAddress => new IPAddress(__localAddr);
|
||||||
|
public ushort LocalPort => BitConverter.ToUInt16(new byte[2] { __localPort[1], __localPort[0] }, 0);
|
||||||
|
|
||||||
|
public IPAddress RemoteAddress => new IPAddress(__remoteAddr);
|
||||||
|
public ushort RemotePort => BitConverter.ToUInt16(new byte[2] { __remotePort[1], __remotePort[0] }, 0);
|
||||||
|
|
||||||
|
public bool Equals(TcpRow right)
|
||||||
|
{
|
||||||
|
return
|
||||||
|
__localAddr == right.__localAddr && LocalPort == right.LocalPort &&
|
||||||
|
__remoteAddr == right.__remoteAddr && RemotePort == right.RemotePort &&
|
||||||
|
owningPid == right.owningPid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool Equals(object obj)
|
||||||
|
{
|
||||||
|
return !(obj is null) && obj is TcpRow && Equals((TcpRow)obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int GetHashCode()
|
||||||
|
{
|
||||||
|
unchecked
|
||||||
|
{
|
||||||
|
var h = (int)__localAddr;
|
||||||
|
h = (h * 397) ^ LocalPort;
|
||||||
|
h = (h * 397) ^ (int)__remoteAddr;
|
||||||
|
h = (h * 397) ^ RemotePort;
|
||||||
|
h = (h * 397) ^ (int)owningPid;
|
||||||
|
return h;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
62
WorkerAct.cs
Normal file
62
WorkerAct.cs
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Advanced_Combat_Tracker;
|
||||||
|
|
||||||
|
namespace DutyContent
|
||||||
|
{
|
||||||
|
static class WorkerAct
|
||||||
|
{
|
||||||
|
public delegate object ObjectReturnerDelegate();
|
||||||
|
|
||||||
|
private static object _lock_effect_sound = new object();
|
||||||
|
private static long _last_effect_sound;
|
||||||
|
|
||||||
|
// main invoker
|
||||||
|
public static object Invoker(ObjectReturnerDelegate dgt)
|
||||||
|
{
|
||||||
|
return ActGlobals.oFormActMain.Invoke(dgt);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public static void Invoker(Action dgt)
|
||||||
|
{
|
||||||
|
ActGlobals.oFormActMain.Invoke(dgt);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public static void Tts(string msg)
|
||||||
|
{
|
||||||
|
ActGlobals.oFormActMain.TTS(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public static void PlaySound(string filename, int volume_percent = 100)
|
||||||
|
{
|
||||||
|
ActGlobals.oFormActMain.PlaySoundWinApi(filename, volume_percent);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
public static void PlayEffectSound(string filename, int volume_percent = 100)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(filename) || !File.Exists(filename))
|
||||||
|
return;
|
||||||
|
|
||||||
|
lock (_lock_effect_sound)
|
||||||
|
{
|
||||||
|
long now = DateTime.Now.Ticks;
|
||||||
|
long delta = now - _last_effect_sound;
|
||||||
|
TimeSpan span = new TimeSpan(delta);
|
||||||
|
|
||||||
|
if (span.TotalSeconds > 2)
|
||||||
|
{
|
||||||
|
_last_effect_sound = now;
|
||||||
|
PlaySound(filename, volume_percent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
4
packages.config
Normal file
4
packages.config
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net472" />
|
||||||
|
</packages>
|
Loading…
Reference in a new issue