マスタエディタの出力ファイルチェッカ:SRLと提出確認書が正しいかどうかをファイル名をもとに調べる。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlToolsRED@162 7061adef-622a-194b-ae81-725974e89856
This commit is contained in:
nishikawa_takeshi 2009-02-12 11:15:13 +00:00
parent 8cf7e6c07e
commit 284c4ae675
26 changed files with 1303 additions and 0 deletions

View File

@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Config>
<Region>
<JP>
<J>日本のみ</J>
<E></E>
</JP>
<US>
<J>北米のみ</J>
<E></E>
</US>
<EU>
<J>欧州のみ</J>
<E></E>
</EU>
<AU>
<J>豪州のみ</J>
<E></E>
</AU>
<EUAU>
<J>欧州および豪州</J>
<E></E>
</EUAU>
</Region>
<Rating>
<CERO>
<r00><J>A (全年齢)</J><E></E></r00>
<r12><J>B (12歳以上)</J><E></E></r12>
<r15><J>C (15歳以上)</J><E></E></r15>
<r17><J>D (17歳以上)</J><E></E></r17>
<r18><J>Z (18歳以上)</J><E></E></r18>
<rRP><J>審査中</J><E></E></rRP>
</CERO>
<ESRB>
<r00><J>年齢制限なし(全年齢)</J><E></E></r00>
<r03><J>EC (3歳以上)</J><E></E></r03>
<r06><J>E (6歳以上)</J><E></E></r06>
<r10><J>E10+ (10歳以上)</J><E></E></r10>
<r13><J>T (13歳以上)</J><E></E></r13>
<r17><J>M (17歳以上)</J><E></E></r17>
<rRP><J>審査中</J><E></E></rRP>
</ESRB>
<USK>
<r00><J></J><E></E></r00>
<r06><J></J><E></E></r06>
<r12><J></J><E></E></r12>
<r16><J></J><E></E></r16>
<r18><J></J><E></E></r18>
<rRP><J></J><E></E></rRP>
</USK>
<PEGI>
<r00><J></J><E></E></r00>
<r03><J></J><E></E></r03>
<r07><J></J><E></E></r07>
<r12><J></J><E></E></r12>
<r16><J></J><E></E></r16>
<r18><J></J><E></E></r18>
<rRP><J></J><E></E></rRP>
</PEGI>
<PRT>
<r00><J></J><E></E></r00>
<r04><J></J><E></E></r04>
<r06><J></J><E></E></r06>
<r12><J></J><E></E></r12>
<r16><J></J><E></E></r16>
<r18><J></J><E></E></r18>
<rRP><J></J><E></E></rRP>
</PRT>
<BBFC>
<r00><J></J><E></E></r00>
<r03><J></J><E></E></r03>
<r04><J></J><E></E></r04>
<r07><J></J><E></E></r07>
<r08><J></J><E></E></r08>
<r12><J></J><E></E></r12>
<r15><J></J><E></E></r15>
<r16><J></J><E></E></r16>
<r18><J></J><E></E></r18>
<rRP><J></J><E></E></rRP>
</BBFC>
<UN>
<r00><J></J><E></E></r00>
</UN>
<Undefined>
<J>不可</J>
<E></E>
</Undefined>
</Rating>
</Config>

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
<xsl:template match="/">
<Sheet>
<xsl:apply-templates select="ss:Workbook/ss:Worksheet/ss:Table/ss:Row/ss:Cell" />
</Sheet>
</xsl:template>
<xsl:template match="*">
<xsl:apply-templates />
</xsl:template>
<!-- 特定のセルだけ抜き出して新たにタグづけする -->
<xsl:template match="ss:Cell">
<!-- NamedCellードの名前を変数に代入 -->
<xsl:variable name="tag">
<xsl:apply-templates select="ss:NamedCell" />
</xsl:variable>
<!-- NamedCellードの名前がRegionのときのみ出力 -->
<xsl:if test="$tag='Region'">
<Region><xsl:value-of select="ss:Data" /></Region>
</xsl:if>
<xsl:if test="$tag='RatingCERO'">
<RatingCERO><xsl:value-of select="ss:Data" /></RatingCERO>
</xsl:if>
<xsl:if test="$tag='RatingESRB'">
<RatingESRB><xsl:value-of select="ss:Data" /></RatingESRB>
</xsl:if>
<xsl:if test="$tag='RatingUSK'">
<RatingUSK><xsl:value-of select="ss:Data" /></RatingUSK>
</xsl:if>
<xsl:if test="$tag='RatingPEGI'">
<RatingPEGI><xsl:value-of select="ss:Data" /></RatingPEGI>
</xsl:if>
<xsl:if test="$tag='RatingPEGIPRT'">
<RatingPEGIPRT><xsl:value-of select="ss:Data" /></RatingPEGIPRT>
</xsl:if>
<xsl:if test="$tag='RatingPEGIBBFC'">
<RatingPEGIBBFC><xsl:value-of select="ss:Data" /></RatingPEGIBBFC>
</xsl:if>
<xsl:if test="$tag='RatingOFLC'">
<RatingOFLC><xsl:value-of select="ss:Data" /></RatingOFLC>
</xsl:if>
<xsl:if test="$tag='IsUnnecessaryRating'">
<IsUnnecessaryRating><xsl:value-of select="ss:Data" /></IsUnnecessaryRating>
</xsl:if>
</xsl:template>
<!-- NamedCellードの名前(属性で指定されている)を取得 -->
<xsl:template match="ss:NamedCell">
<xsl:value-of select="@ss:Name" />
</xsl:template>
</xsl:stylesheet>

View File

@ -0,0 +1,20 @@

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MasterEditorTWLChecker", "MasterEditorTWLChecker\MasterEditorTWLChecker.vcproj", "{100CD619-6964-4A1E-98E0-648848933F30}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{100CD619-6964-4A1E-98E0-648848933F30}.Debug|Win32.ActiveCfg = Debug|Win32
{100CD619-6964-4A1E-98E0-648848933F30}.Debug|Win32.Build.0 = Debug|Win32
{100CD619-6964-4A1E-98E0-648848933F30}.Release|Win32.ActiveCfg = Release|Win32
{100CD619-6964-4A1E-98E0-648848933F30}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,40 @@
#include "stdafx.h"
using namespace System;
using namespace System::Reflection;
using namespace System::Runtime::CompilerServices;
using namespace System::Runtime::InteropServices;
using namespace System::Security::Permissions;
//
// アセンブリに関する一般情報は以下の属性セットをとおして制御されます。
// アセンブリに関連付けられている情報を変更するには、
// これらの属性値を変更してください。
//
[assembly:AssemblyTitleAttribute("MasterEditorTWLChecker")];
[assembly:AssemblyDescriptionAttribute("")];
[assembly:AssemblyConfigurationAttribute("")];
[assembly:AssemblyCompanyAttribute("任天堂株式会社")];
[assembly:AssemblyProductAttribute("MasterEditorTWLChecker")];
[assembly:AssemblyCopyrightAttribute("Copyright (c) 任天堂株式会社 2009")];
[assembly:AssemblyTrademarkAttribute("")];
[assembly:AssemblyCultureAttribute("")];
//
// アセンブリのバージョン情報は、以下の 4 つの値で構成されています:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// すべての値を指定するか、下のように '*' を使ってリビジョンおよびビルド番号を
// 既定値にすることができます:
[assembly:AssemblyVersionAttribute("1.0.*")];
[assembly:ComVisible(false)];
[assembly:CLSCompliantAttribute(true)];
[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)];

View File

@ -0,0 +1,28 @@
// MasterEditorTWLChecker.cpp : メイン プロジェクト ファイルです。
#include "stdafx.h"
#include "check.h"
using namespace System;
int main(array<System::String ^> ^args)
{
FilenameItem ^fItem = gcnew FilenameItem;
fItem->parseFilename( args[0] );
SheetItem ^sItem = gcnew SheetItem;
sItem->readSheet( args[0] );
System::String^ errmsg = checkSheet( fItem, sItem );
if( errmsg != nullptr )
{
Console::WriteLine( "NG " + errmsg );
}
else
{
Console::WriteLine( "OK" );
}
Console::WriteLine(L"Hello World");
return 0;
}

View File

@ -0,0 +1,288 @@
<?xml version="1.0" encoding="shift_jis"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="MasterEditorTWLChecker"
ProjectGUID="{100CD619-6964-4A1E-98E0-648848933F30}"
RootNamespace="MasterEditorTWLChecker"
Keyword="ManagedCProj"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
ManagedExtensions="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="&quot;C:\Documents and Settings\nishikawa_takeshi\My Documents\Visual Studio 2008\Projects\MasterEditorTWL\MasterEditorTWL&quot;;C:\twlsdk\build\tools\makerom.TWL;C:\twlsdk\include;&quot;C:\Documents and Settings\nishikawa_takeshi\My Documents\Visual Studio 2008\Projects\MasterEditorTWL_Common\launcher&quot;"
PreprocessorDefinitions="WIN32;_DEBUG"
RuntimeLibrary="3"
UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="libacsign_X86.a libaes_X86.a libdigest_X86.a libflags_X86.a $(NOINHERIT)"
LinkIncremental="2"
AdditionalLibraryDirectories="&quot;C:\Documents and Settings\nishikawa_takeshi\My Documents\Visual Studio 2008\Projects\MasterEditorTWL_Common\flags\lib\X86&quot;;C:\twlsdk\build\tools\makerom.TWL\digest\lib\X86;C:\twlsdk\build\tools\makerom.TWL\aes\lib\X86;C:\twlsdk\build\tools\makerom.TWL\acsign\lib\X86"
GenerateDebugInformation="true"
AssemblyDebug="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
ManagedExtensions="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="&quot;C:\Documents and Settings\nishikawa_takeshi\My Documents\Visual Studio 2008\Projects\MasterEditorTWL\MasterEditorTWL&quot;;C:\twlsdk\build\tools\makerom.TWL;C:\twlsdk\include;&quot;C:\Documents and Settings\nishikawa_takeshi\My Documents\Visual Studio 2008\Projects\MasterEditorTWL_Common\user&quot;"
PreprocessorDefinitions="WIN32;NDEBUG"
RuntimeLibrary="2"
UsePrecompiledHeader="2"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="libacsign_X86.a libaes_X86.a libdigest_X86.a libflags_X86.a $(NOINHERIT)"
LinkIncremental="1"
AdditionalLibraryDirectories="&quot;C:\Documents and Settings\nishikawa_takeshi\My Documents\Visual Studio 2008\Projects\MasterEditorTWL_Common\flags\lib\X86&quot;;C:\twlsdk\build\tools\makerom.TWL\digest\lib\X86;C:\twlsdk\build\tools\makerom.TWL\aes\lib\X86;C:\twlsdk\build\tools\makerom.TWL\acsign\lib\X86"
GenerateDebugInformation="true"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
<AssemblyReference
RelativePath="System.dll"
AssemblyName="System, Version=2.0.0.0, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"
MinFrameworkVersion="131072"
/>
<AssemblyReference
RelativePath="System.Data.dll"
AssemblyName="System.Data, Version=2.0.0.0, PublicKeyToken=b77a5c561934e089, processorArchitecture=x86"
MinFrameworkVersion="131072"
/>
<AssemblyReference
RelativePath="System.XML.dll"
AssemblyName="System.Xml, Version=2.0.0.0, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"
MinFrameworkVersion="131072"
/>
</References>
<Files>
<Filter
Name="ソース ファイル"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\AssemblyInfo.cpp"
>
</File>
<File
RelativePath=".\check.cpp"
>
</File>
<File
RelativePath=".\check_rom.cpp"
>
</File>
<File
RelativePath=".\check_sheet.cpp"
>
</File>
<File
RelativePath="..\..\MasterEditorTWL\MasterEditorTWL\keys.cpp"
>
</File>
<File
RelativePath=".\MasterEditorTWLChecker.cpp"
>
</File>
<File
RelativePath=".\stdafx.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\..\MasterEditorTWL\MasterEditorTWL\utility.cpp"
>
</File>
</Filter>
<Filter
Name="ヘッダー ファイル"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\check.h"
>
</File>
<File
RelativePath="..\..\MasterEditorTWL\MasterEditorTWL\common.h"
>
</File>
<File
RelativePath="..\..\MasterEditorTWL\MasterEditorTWL\keys.h"
>
</File>
<File
RelativePath=".\resource.h"
>
</File>
<File
RelativePath=".\stdafx.h"
>
</File>
<File
RelativePath="..\..\MasterEditorTWL\MasterEditorTWL\utility.h"
>
</File>
</Filter>
<Filter
Name="リソース ファイル"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
<File
RelativePath=".\app.ico"
>
</File>
<File
RelativePath=".\app.rc"
>
</File>
</Filter>
<File
RelativePath=".\ReadMe.txt"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="shift_jis"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="9.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="PC2355"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
<Configuration
Name="Release|Win32"
>
<DebugSettings
Command="$(TargetPath)"
WorkingDirectory=""
CommandArguments=""
Attach="false"
DebuggerType="3"
Remote="1"
RemoteMachine="PC2355"
RemoteCommand=""
HttpUrl=""
PDBPath=""
SQLDebugging=""
Environment=""
EnvironmentMerge="true"
DebuggerFlavor=""
MPIRunCommand=""
MPIRunArguments=""
MPIRunWorkingDirectory=""
ApplicationCommand=""
ApplicationArguments=""
ShimCommand=""
MPIAcceptMode=""
MPIAcceptFilter=""
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

View File

@ -0,0 +1,29 @@
===============================================================================
アプリケーション : MasterEditorTWLChecker プロジェクトの概要
===============================================================================
この MasterEditorTWLChecker アプリケーションは、AppWizard によって作成されました。
このファイルには、MasterEditorTWLChecker アプリケーションを構成する各ファイルの
内容の概略が記述されています。
MasterEditorTWLChecker.vcproj
これは、アプリケーション ウィザードで生成される VC++ プロジェクトのメインの
プロジェクト ファイルです。
ファイルを生成した Visual C++ のバージョン情報と、アプリケーション ウィザー
ドで選択したプラットフォーム、構成、およびプロジェクトの機能に関する情報が
記述されています。
MasterEditorTWLChecker.cpp
これは、メインのアプリケーション ソース ファイルです。
AssemblyInfo.cpp
アセンブリ メタデータを変更するためのカスタム属性が含まれています。
///////////////////////////////////////////////////////////////////////////////
その他のメモ :
AppWizard では、"TODO:" を使用して、ユーザーが追加またはカスタマイズするソース
部分を示します。
///////////////////////////////////////////////////////////////////////////////

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,63 @@
// Microsoft Visual C++ で生成されたリソース スクリプトです。
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// 英語 (米国) リソース
/////////////////////////////////////////////////////////////////////////////
//
// アイコン
//
// 最初に配置されたアイコン、または ID 値が最も低いアイコンが、アプリケーション アイコンになります。
LANGUAGE 17, 1
#pragma code_page(932)
1 ICON "app.ico"
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
"\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE 3 リソースから生成されました。
//
/////////////////////////////////////////////////////////////////////////////
#endif // APSTUDIO_INVOKED でない場合

View File

@ -0,0 +1,27 @@
#include "stdafx.h"
#include "check.h"
using namespace System;
// ------------------------------------------------------------------
// ƒtƒ@ƒCƒ¼Ì‰ð<E280B0>Í
// ------------------------------------------------------------------
System::Boolean FilenameItem::parseFilename( System::String ^filepath )
{
System::String ^filename = System::IO::Path::GetFileNameWithoutExtension(filepath);
cli::array<System::String^> ^list = filename->Split( '_' );
this->region = System::String::Copy(list[0]);
this->ogn = System::String::Copy(list[1]);
this->rating = System::String::Copy(list[2]);
this->lang = System::String::Copy(list[3]);
Console::WriteLine( "[In Filename]" );
Console::WriteLine( "Region: " + this->region );
Console::WriteLine( "Ogn: " + this->ogn );
Console::WriteLine( "Rating: " + this->rating );
Console::WriteLine( "Lang: " + this->lang );
return true;
}

View File

@ -0,0 +1,40 @@
#pragma once
//
// ファイル名から抽出されるファイル情報の構造体
//
ref class FilenameItem
{
public:
property System::String ^region;
property System::String ^ogn;
property System::String ^rating;
property System::String ^lang;
public:
FilenameItem(){}
public:
System::Boolean parseFilename( System::String ^filepath );
};
//
// 提出確認書から抽出される情報の構造体
//
ref class SheetItem
{
public:
property System::String ^region;
property System::String ^CERO;
property System::String ^ESRB;
property System::String ^USK;
property System::String ^PEGI;
property System::String ^PEGIPRT;
property System::String ^PEGIBBFC;
property System::String ^OFLC;
property System::Boolean IsUnnecessaryRating;
public:
SheetItem(){}
public:
System::Boolean readSheet( System::String ^sheetfile );
};
System::String^ checkSheet( FilenameItem ^fItem, SheetItem ^sItem );

View File

@ -0,0 +1,6 @@
#include "stdafx.h"
//
// 出力SRLのチェック
//

View File

@ -0,0 +1,247 @@
//
// 提出確認書のチェック
//
#include "stdafx.h"
#include "check.h"
#include <utility.h>
using namespace System;
// ------------------------------------------------------------------
// 提出確認書の読み込み
// ------------------------------------------------------------------
System::Boolean SheetItem::readSheet( System::String ^sheetfile )
{
// XSLによってXML変換
System::String ^tmpfile = ".\\temp" + System::DateTime::Now.ToString("yyyyMMddHHmmss") + ".xml";
System::Xml::Xsl::XslCompiledTransform ^xslt = gcnew System::Xml::Xsl::XslCompiledTransform;
System::String ^xslpath = System::IO::Path::GetDirectoryName( System::Reflection::Assembly::GetEntryAssembly()->Location )
+ "\\extract_sheet.xsl";
try
{
//Console::WriteLine( "xslpath: " + xslpath );
xslt->Load( xslpath );
xslt->Transform( sheetfile, tmpfile );
}
catch( System::Exception ^ex )
{
(void)ex;
//Console::WriteLine( "XSLT Error" );
return false;
}
// 変換したXMLを読み込み
System::Xml::XmlDocument ^doc = gcnew System::Xml::XmlDocument;
try
{
doc->Load( tmpfile );
}
catch( System::Exception ^ex )
{
(void)ex;
//Console::WriteLine( "Load error" );
return false;
}
// XMLからデータを抽出
System::Xml::XmlElement ^root = doc->DocumentElement;
try
{
this->region = MasterEditorTWL::getXPathText( root, "/Sheet/Region" );
this->CERO = MasterEditorTWL::getXPathText( root, "/Sheet/RatingCERO" );
this->ESRB = MasterEditorTWL::getXPathText( root, "/Sheet/RatingESRB" );
this->USK = MasterEditorTWL::getXPathText( root, "/Sheet/RatingUSK" );
this->PEGI = MasterEditorTWL::getXPathText( root, "/Sheet/RatingPEGI" );
this->PEGIPRT = MasterEditorTWL::getXPathText( root, "/Sheet/RatingPEGIPRT" );
this->PEGIBBFC = MasterEditorTWL::getXPathText( root, "/Sheet/RatingPEGIBBFC" );
this->OFLC = MasterEditorTWL::getXPathText( root, "/Sheet/RatingOFLC" );
System::String ^text = MasterEditorTWL::getXPathText( root, "/Sheet/IsUnnecessaryRating" );
if( !System::String::IsNullOrEmpty( text ) && text->Equals( "" ) )
{
this->IsUnnecessaryRating = true;
}
else
{
this->IsUnnecessaryRating = false;
}
Console::WriteLine( "[In Sheet]" );
Console::WriteLine( "Region: " + this->region );
Console::WriteLine( "CERO: " + this->CERO );
Console::WriteLine( "ESRB: " + this->ESRB );
Console::WriteLine( "USK: " + this->USK );
Console::WriteLine( "PEGI: " + this->PEGI );
Console::WriteLine( "PEGIPRT: " + this->PEGIPRT );
Console::WriteLine( "PEGIBBFC: " + this->PEGIBBFC );
Console::WriteLine( "OFLC: " + this->OFLC );
Console::WriteLine( "Unnecessary: " + this->IsUnnecessaryRating.ToString() );
}
catch( System::Exception ^ex )
{
//(void)ex;
Console::WriteLine( ex->Message );
return false;
}
// 中間ファイルを削除
if( System::IO::File::Exists( tmpfile ) )
{
System::IO::File::Delete( tmpfile );
}
return true;
}
// ------------------------------------------------------------------
// 提出確認書のチェック (設定ファイル中の真値との比較)
// ------------------------------------------------------------------
// @arg [in] ファイル情報
// @arg [in] 提出確認書の情報
//
// @ret エラーメッセージ (エラーなしのときnullptr)
System::String^ checkSheet( FilenameItem ^fItem, SheetItem ^sItem )
{
System::Xml::XmlDocument ^doc = gcnew System::Xml::XmlDocument;
try
{
System::String ^cfgfile = System::IO::Path::GetDirectoryName( System::Reflection::Assembly::GetEntryAssembly()->Location )
+ "\\config.xml";
doc->Load( cfgfile );
}
catch( System::Exception ^ex )
{
(void)ex;
//Console::WriteLine( "Load error" );
return (gcnew System::String("Failed to load XML"));
}
// XMLからデータを抽出
System::Xml::XmlElement ^root = doc->DocumentElement;
// 設定ファイル中の真値と提出確認書の記述を比較
// (設定ファイルにはファイル名と対応させたタグ名で真値が記述されている)
System::String ^region = MasterEditorTWL::getXPathText( root, "/Config/Region/" + fItem->region + "/" + fItem->lang );
System::String ^undef = MasterEditorTWL::getXPathText( root, "/Config/Rating/Undefined/" + fItem->lang );
System::String ^rating = MasterEditorTWL::getXPathText( root, "/Config/Rating/" + fItem->ogn + "/r" + fItem->rating + "/" + fItem->lang );
Console::WriteLine( "[In Config file]" );
Console::WriteLine( "Region: " + region );
Console::WriteLine( "Rating: " + rating );
Console::WriteLine( "Undefined: " + undef );
System::String ^errmsg = nullptr;
// リージョンの文字列をチェック
if( sItem->region != region )
{
return (gcnew System::String("In Sheet, region is illegal string."));
}
// レーティングの文字列をチェック
if( fItem->region == "JP" )
{
if( sItem->CERO != rating )
{
errmsg = "In Sheet, CERO is illegal string.";
}
if( (sItem->ESRB != undef) ||
(sItem->USK != undef) ||
(sItem->PEGI != undef) ||
(sItem->PEGIPRT != undef) ||
(sItem->PEGIBBFC != undef) ||
(sItem->OFLC != undef) )
{
errmsg = "In Sheet, Other Ogn is illegal string.";
}
}
else if( fItem->region == "US" )
{
if( sItem->ESRB != rating )
{
errmsg = "In Sheet, ESRB is illegal string.";
}
if( (sItem->CERO != undef) ||
(sItem->USK != undef) ||
(sItem->PEGI != undef) ||
(sItem->PEGIPRT != undef) ||
(sItem->PEGIBBFC != undef) ||
(sItem->OFLC != undef) )
{
errmsg = "In Sheet, Other Ogn is illegal string.";
}
}
else if( fItem->region == "EU" )
{
if( sItem->USK != rating )
{
errmsg = "In Sheet, USK is illegal string.";
}
if( sItem->PEGI != rating )
{
errmsg = "In Sheet, PEGI is illegal string.";
}
if( sItem->PEGIPRT != rating )
{
errmsg = "In Sheet, PEGIPRT is illegal string.";
}
if( sItem->PEGIBBFC != rating )
{
errmsg = "In Sheet, PEGIBBFC is illegal string.";
}
if( (sItem->CERO != undef) ||
(sItem->ESRB != undef) ||
(sItem->OFLC != undef) )
{
errmsg = "In Sheet, Other Ogn is illegal string.";
}
}
else if( fItem->region == "AU" )
{
if( sItem->OFLC != rating )
{
errmsg = "In Sheet, OFLC is illegal string.";
}
if( (sItem->CERO != undef) ||
(sItem->ESRB != undef) ||
(sItem->USK != undef) ||
(sItem->PEGI != undef) ||
(sItem->PEGIPRT != undef) ||
(sItem->PEGIBBFC != undef) )
{
errmsg = "In Sheet, Other Ogn is illegal string.";
}
}
else if( fItem->region == "EUAU" )
{
if( sItem->USK != rating )
{
errmsg = "In Sheet, USK is illegal string.";
}
if( sItem->PEGI != rating )
{
errmsg = "In Sheet, PEGI is illegal string.";
}
if( sItem->PEGIPRT != rating )
{
errmsg = "In Sheet, PEGIPRT is illegal string.";
}
if( sItem->PEGIBBFC != rating )
{
errmsg = "In Sheet, PEGIBBFC is illegal string.";
}
if( sItem->OFLC != rating )
{
errmsg = "In Sheet, OFLC is illegal string.";
}
if( (sItem->CERO != undef) ||
(sItem->ESRB != undef) )
{
errmsg = "In Sheet, Other Ogn is illegal string.";
}
}
if( errmsg != nullptr )
{
return errmsg;
}
return nullptr;
}

View File

@ -0,0 +1,3 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by app.rc

View File

@ -0,0 +1,7 @@
// stdafx.cpp : 標準インクルード MasterEditorTWLChecker.pch のみを
// 含むソース ファイルは、プリコンパイル済みヘッダーになります。
// stdafx.obj にはプリコンパイル済み型情報が含まれます。
#include "stdafx.h"

View File

@ -0,0 +1,8 @@
// stdafx.h : 標準のシステム インクルード ファイルのインクルード ファイル、または
// 参照回数が多く、かつあまり変更されない、プロジェクト専用のインクルード ファイル
// を記述します。
//
#pragma once
// TODO: プログラムに必要な追加ヘッダーをここで参照してください。

View File

@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Config>
<Region>
<JP>
<J>日本のみ</J>
<E></E>
</JP>
<US>
<J>北米のみ</J>
<E></E>
</US>
<EU>
<J>欧州のみ</J>
<E></E>
</EU>
<AU>
<J>豪州のみ</J>
<E></E>
</AU>
<EUAU>
<J>欧州および豪州</J>
<E></E>
</EUAU>
</Region>
<Rating>
<CERO>
<r00><J>A (全年齢)</J><E></E></r00>
<r12><J>B (12歳以上)</J><E></E></r12>
<r15><J>C (15歳以上)</J><E></E></r15>
<r17><J>D (17歳以上)</J><E></E></r17>
<r18><J>Z (18歳以上)</J><E></E></r18>
<rRP><J>審査中</J><E></E></rRP>
</CERO>
<ESRB>
<r00><J>年齢制限なし(全年齢)</J><E></E></r00>
<r03><J>EC (3歳以上)</J><E></E></r03>
<r06><J>E (6歳以上)</J><E></E></r06>
<r10><J>E10+ (10歳以上)</J><E></E></r10>
<r13><J>T (13歳以上)</J><E></E></r13>
<r17><J>M (17歳以上)</J><E></E></r17>
<rRP><J>審査中</J><E></E></rRP>
</ESRB>
<USK>
<r00><J></J><E></E></r00>
<r06><J></J><E></E></r06>
<r12><J></J><E></E></r12>
<r16><J></J><E></E></r16>
<r18><J></J><E></E></r18>
<rRP><J></J><E></E></rRP>
</USK>
<PEGI>
<r00><J></J><E></E></r00>
<r03><J></J><E></E></r03>
<r07><J></J><E></E></r07>
<r12><J></J><E></E></r12>
<r16><J></J><E></E></r16>
<r18><J></J><E></E></r18>
<rRP><J></J><E></E></rRP>
</PEGI>
<PRT>
<r00><J></J><E></E></r00>
<r04><J></J><E></E></r04>
<r06><J></J><E></E></r06>
<r12><J></J><E></E></r12>
<r16><J></J><E></E></r16>
<r18><J></J><E></E></r18>
<rRP><J></J><E></E></rRP>
</PRT>
<BBFC>
<r00><J></J><E></E></r00>
<r03><J></J><E></E></r03>
<r04><J></J><E></E></r04>
<r07><J></J><E></E></r07>
<r08><J></J><E></E></r08>
<r12><J></J><E></E></r12>
<r15><J></J><E></E></r15>
<r16><J></J><E></E></r16>
<r18><J></J><E></E></r18>
<rRP><J></J><E></E></rRP>
</BBFC>
<UN>
<r00><J></J><E></E></r00>
</UN>
<Undefined>
<J>不可</J>
<E></E>
</Undefined>
</Rating>
</Config>

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
<xsl:template match="/">
<Sheet>
<xsl:apply-templates select="ss:Workbook/ss:Worksheet/ss:Table/ss:Row/ss:Cell" />
</Sheet>
</xsl:template>
<xsl:template match="*">
<xsl:apply-templates />
</xsl:template>
<!-- 特定のセルだけ抜き出して新たにタグづけする -->
<xsl:template match="ss:Cell">
<!-- NamedCellードの名前を変数に代入 -->
<xsl:variable name="tag">
<xsl:apply-templates select="ss:NamedCell" />
</xsl:variable>
<!-- NamedCellードの名前がRegionのときのみ出力 -->
<xsl:if test="$tag='Region'">
<Region><xsl:value-of select="ss:Data" /></Region>
</xsl:if>
<xsl:if test="$tag='RatingCERO'">
<RatingCERO><xsl:value-of select="ss:Data" /></RatingCERO>
</xsl:if>
<xsl:if test="$tag='RatingESRB'">
<RatingESRB><xsl:value-of select="ss:Data" /></RatingESRB>
</xsl:if>
<xsl:if test="$tag='RatingUSK'">
<RatingUSK><xsl:value-of select="ss:Data" /></RatingUSK>
</xsl:if>
<xsl:if test="$tag='RatingPEGI'">
<RatingPEGI><xsl:value-of select="ss:Data" /></RatingPEGI>
</xsl:if>
<xsl:if test="$tag='RatingPEGIPRT'">
<RatingPEGIPRT><xsl:value-of select="ss:Data" /></RatingPEGIPRT>
</xsl:if>
<xsl:if test="$tag='RatingPEGIBBFC'">
<RatingPEGIBBFC><xsl:value-of select="ss:Data" /></RatingPEGIBBFC>
</xsl:if>
<xsl:if test="$tag='RatingOFLC'">
<RatingOFLC><xsl:value-of select="ss:Data" /></RatingOFLC>
</xsl:if>
<xsl:if test="$tag='IsUnnecessaryRating'">
<IsUnnecessaryRating><xsl:value-of select="ss:Data" /></IsUnnecessaryRating>
</xsl:if>
</xsl:template>
<!-- NamedCellードの名前(属性で指定されている)を取得 -->
<xsl:template match="ss:NamedCell">
<xsl:value-of select="@ss:Name" />
</xsl:template>
</xsl:stylesheet>

View File

@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Config>
<Region>
<JP>
<J>日本のみ</J>
<E></E>
</JP>
<US>
<J>北米のみ</J>
<E></E>
</US>
<EU>
<J>欧州のみ</J>
<E></E>
</EU>
<AU>
<J>豪州のみ</J>
<E></E>
</AU>
<EUAU>
<J>欧州および豪州</J>
<E></E>
</EUAU>
</Region>
<Rating>
<CERO>
<r00><J>A (全年齢)</J><E></E></r00>
<r12><J>B (12歳以上)</J><E></E></r12>
<r15><J>C (15歳以上)</J><E></E></r15>
<r17><J>D (17歳以上)</J><E></E></r17>
<r18><J>Z (18歳以上)</J><E></E></r18>
<rRP><J>審査中</J><E></E></rRP>
</CERO>
<ESRB>
<r00><J>年齢制限なし(全年齢)</J><E></E></r00>
<r03><J>EC (3歳以上)</J><E></E></r03>
<r06><J>E (6歳以上)</J><E></E></r06>
<r10><J>E10+ (10歳以上)</J><E></E></r10>
<r13><J>T (13歳以上)</J><E></E></r13>
<r17><J>M (17歳以上)</J><E></E></r17>
<rRP><J>審査中</J><E></E></rRP>
</ESRB>
<USK>
<r00><J></J><E></E></r00>
<r06><J></J><E></E></r06>
<r12><J></J><E></E></r12>
<r16><J></J><E></E></r16>
<r18><J></J><E></E></r18>
<rRP><J></J><E></E></rRP>
</USK>
<PEGI>
<r00><J></J><E></E></r00>
<r03><J></J><E></E></r03>
<r07><J></J><E></E></r07>
<r12><J></J><E></E></r12>
<r16><J></J><E></E></r16>
<r18><J></J><E></E></r18>
<rRP><J></J><E></E></rRP>
</PEGI>
<PRT>
<r00><J></J><E></E></r00>
<r04><J></J><E></E></r04>
<r06><J></J><E></E></r06>
<r12><J></J><E></E></r12>
<r16><J></J><E></E></r16>
<r18><J></J><E></E></r18>
<rRP><J></J><E></E></rRP>
</PRT>
<BBFC>
<r00><J></J><E></E></r00>
<r03><J></J><E></E></r03>
<r04><J></J><E></E></r04>
<r07><J></J><E></E></r07>
<r08><J></J><E></E></r08>
<r12><J></J><E></E></r12>
<r15><J></J><E></E></r15>
<r16><J></J><E></E></r16>
<r18><J></J><E></E></r18>
<rRP><J></J><E></E></rRP>
</BBFC>
<UN>
<r00><J></J><E></E></r00>
</UN>
<Undefined>
<J>不可</J>
<E></E>
</Undefined>
</Rating>
</Config>

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
<xsl:template match="/">
<Sheet>
<xsl:apply-templates select="ss:Workbook/ss:Worksheet/ss:Table/ss:Row/ss:Cell" />
</Sheet>
</xsl:template>
<xsl:template match="*">
<xsl:apply-templates />
</xsl:template>
<!-- 特定のセルだけ抜き出して新たにタグづけする -->
<xsl:template match="ss:Cell">
<!-- NamedCellードの名前を変数に代入 -->
<xsl:variable name="tag">
<xsl:apply-templates select="ss:NamedCell" />
</xsl:variable>
<!-- NamedCellードの名前がRegionのときのみ出力 -->
<xsl:if test="$tag='Region'">
<Region><xsl:value-of select="ss:Data" /></Region>
</xsl:if>
<xsl:if test="$tag='RatingCERO'">
<RatingCERO><xsl:value-of select="ss:Data" /></RatingCERO>
</xsl:if>
<xsl:if test="$tag='RatingESRB'">
<RatingESRB><xsl:value-of select="ss:Data" /></RatingESRB>
</xsl:if>
<xsl:if test="$tag='RatingUSK'">
<RatingUSK><xsl:value-of select="ss:Data" /></RatingUSK>
</xsl:if>
<xsl:if test="$tag='RatingPEGI'">
<RatingPEGI><xsl:value-of select="ss:Data" /></RatingPEGI>
</xsl:if>
<xsl:if test="$tag='RatingPEGIPRT'">
<RatingPEGIPRT><xsl:value-of select="ss:Data" /></RatingPEGIPRT>
</xsl:if>
<xsl:if test="$tag='RatingPEGIBBFC'">
<RatingPEGIBBFC><xsl:value-of select="ss:Data" /></RatingPEGIBBFC>
</xsl:if>
<xsl:if test="$tag='RatingOFLC'">
<RatingOFLC><xsl:value-of select="ss:Data" /></RatingOFLC>
</xsl:if>
<xsl:if test="$tag='IsUnnecessaryRating'">
<IsUnnecessaryRating><xsl:value-of select="ss:Data" /></IsUnnecessaryRating>
</xsl:if>
</xsl:template>
<!-- NamedCellードの名前(属性で指定されている)を取得 -->
<xsl:template match="ss:NamedCell">
<xsl:value-of select="@ss:Name" />
</xsl:template>
</xsl:stylesheet>