LosaDev source snapshot 2019

This commit is contained in:
LosaDev committed 2026-11-07 13:30:45 +07:00
commit c198676e97
20588 files changed
+8812878

No files matched your search

+20
View File
@@ -0,0 +1,20 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BillingInfoList", "BillingInfoList\BillingInfoList.vcxproj", "{7E0D6193-D7F6-4BC5-AAFB-3E2361C24027}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{7E0D6193-D7F6-4BC5-AAFB-3E2361C24027}.Debug|Win32.ActiveCfg = Debug|Win32
{7E0D6193-D7F6-4BC5-AAFB-3E2361C24027}.Debug|Win32.Build.0 = Debug|Win32
{7E0D6193-D7F6-4BC5-AAFB-3E2361C24027}.Release|Win32.ActiveCfg = Release|Win32
{7E0D6193-D7F6-4BC5-AAFB-3E2361C24027}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
@@ -0,0 +1,94 @@
// BillingInfoList.cpp : 응용 프로그램에 대한 클래스 동작을 정의합니다.
//
#include "stdafx.h"
#include "BillingInfoList.h"
#include "BillingInfoListDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CBillingInfoListApp
BEGIN_MESSAGE_MAP(CBillingInfoListApp, CWinApp)
ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()
// CBillingInfoListApp 생성
CBillingInfoListApp::CBillingInfoListApp()
{
// 다시 시작 관리자 지원
m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;
// TODO: 여기에 생성 코드를 추가합니다.
// InitInstance에 모든 중요한 초기화 작업을 배치합니다.
}
// 유일한 CBillingInfoListApp 개체입니다.
CBillingInfoListApp theApp;
// CBillingInfoListApp 초기화
BOOL CBillingInfoListApp::InitInstance()
{
// 응용 프로그램 매니페스트가 ComCtl32.dll 버전 6 이상을 사용하여 비주얼 스타일을
// 사용하도록 지정하는 경우, Windows XP 상에서 반드시 InitCommonControlsEx()가 필요합니다.
// InitCommonControlsEx()를 사용하지 않으면 창을 만들 수 없습니다.
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// 응용 프로그램에서 사용할 모든 공용 컨트롤 클래스를 포함하도록
// 이 항목을 설정하십시오.
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
AfxEnableControlContainer();
// 대화 상자에 셸 트리 뷰 또는
// 셸 목록 뷰 컨트롤이 포함되어 있는 경우 셸 관리자를 만듭니다.
CShellManager *pShellManager = new CShellManager;
// 표준 초기화
// 이들 기능을 사용하지 않고 최종 실행 파일의 크기를 줄이려면
// 아래에서 필요 없는 특정 초기화
// 루틴을 제거해야 합니다.
// 해당 설정이 저장된 레지스트리 키를 변경하십시오.
// TODO: 이 문자열을 회사 또는 조직의 이름과 같은
// 적절한 내용으로 수정해야 합니다.
SetRegistryKey(_T("로컬 응용 프로그램 마법사에서 생성된 응용 프로그램"));
CBillingInfoListDlg dlg(m_lpCmdLine);
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: 여기에 [확인]을 클릭하여 대화 상자가 없어질 때 처리할
// 코드를 배치합니다.
}
else if (nResponse == IDCANCEL)
{
// TODO: 여기에 [취소]를 클릭하여 대화 상자가 없어질 때 처리할
// 코드를 배치합니다.
}
// 위에서 만든 셸 관리자를 삭제합니다.
if (pShellManager != NULL)
{
delete pShellManager;
}
// 대화 상자가 닫혔으므로 응용 프로그램의 메시지 펌프를 시작하지 않고 응용 프로그램을 끝낼 수 있도록 FALSE를
// 반환합니다.
return FALSE;
}
@@ -0,0 +1,32 @@
// BillingInfoList.h : PROJECT_NAME 응용 프로그램에 대한 주 헤더 파일입니다.
//
#pragma once
#ifndef __AFXWIN_H__
#error "PCH에 대해 이 파일을 포함하기 전에 'stdafx.h'를 포함합니다."
#endif
#include "resource.h" // 주 기호입니다.
// CBillingInfoListApp:
// 이 클래스의 구현에 대해서는 BillingInfoList.cpp을 참조하십시오.
//
class CBillingInfoListApp : public CWinApp
{
public:
CBillingInfoListApp();
// 재정의입니다.
public:
virtual BOOL InitInstance();
// 구현입니다.
DECLARE_MESSAGE_MAP()
};
extern CBillingInfoListApp theApp;
@@ -0,0 +1,133 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{7E0D6193-D7F6-4BC5-AAFB-3E2361C24027}</ProjectGuid>
<RootNamespace>BillingInfoList</RootNamespace>
<Keyword>MFCProj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>Dynamic</UseOfMfc>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<IntDir>./$(ProjectName)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>
</AdditionalDependencies>
</Link>
<Midl>
<MkTypLibCompatible>false</MkTypLibCompatible>
<ValidateAllParameters>true</ValidateAllParameters>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</Midl>
<ResourceCompile>
<Culture>0x0412</Culture>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
<Midl>
<MkTypLibCompatible>false</MkTypLibCompatible>
<ValidateAllParameters>true</ValidateAllParameters>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</Midl>
<ResourceCompile>
<Culture>0x0412</Culture>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<None Include="ReadMe.txt" />
<None Include="res\BillingInfoList.ico" />
<None Include="res\BillingInfoList.rc2" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="BillingInfoList.h" />
<ClInclude Include="BillingInfoListDlg.h" />
<ClInclude Include="cFile.h" />
<ClInclude Include="define.h" />
<ClInclude Include="Resource.h" />
<ClInclude Include="stdafx.h" />
<ClInclude Include="targetver.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="BillingInfoList.cpp" />
<ClCompile Include="BillingInfoListDlg.cpp" />
<ClCompile Include="cFile.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="BillingInfoList.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<ProjectExtensions>
<VisualStudio>
<UserProperties RESOURCE_FILE="BillingInfoList.rc" />
</VisualStudio>
</ProjectExtensions>
</Project>
@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="소스 파일">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="헤더 파일">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="리소스 파일">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="Main">
<UniqueIdentifier>{8b3e1285-3304-466e-ba71-07730c088d0d}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<None Include="ReadMe.txt" />
<None Include="res\BillingInfoList.rc2">
<Filter>리소스 파일</Filter>
</None>
<None Include="res\BillingInfoList.ico">
<Filter>리소스 파일</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ClInclude Include="BillingInfoList.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="stdafx.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="targetver.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="Resource.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="BillingInfoListDlg.h">
<Filter>Main</Filter>
</ClInclude>
<ClInclude Include="cFile.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="define.h">
<Filter>Main</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="BillingInfoList.cpp">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="stdafx.cpp">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="BillingInfoListDlg.cpp">
<Filter>Main</Filter>
</ClCompile>
<ClCompile Include="cFile.cpp">
<Filter>소스 파일</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="BillingInfoList.rc">
<Filter>리소스 파일</Filter>
</ResourceCompile>
</ItemGroup>
</Project>
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,151 @@
// BillingInfoListDlg.h : 헤더 파일
//
// CBillingInfoListDlg 대화 상자
#include "afxwin.h"
class CBillingInfoListDlg : public CDialogEx
{
// 생성입니다.
public:
CBillingInfoListDlg(const TCHAR* strParameter, CWnd* pParent = NULL); // 표준 생성자입니다.
public:
float m_fChangeCash;
int m_iEtcItemValue;
int m_iDecoItem;
int m_iHero_Normal;
int m_iHero_Rare;
int m_iHero_Premium;
int m_iChange;
// 빌링
std::map<int, CString> m_GoodsInfoMap;
typedef std::vector< SoldierInfo > vSoldierInfo;
vSoldierInfo m_vSoldierInfo;
int m_iMortmainCharGoodsNoValue;
DWORDVec m_vPackageEtcItemShortTypeList;
DWORDVec m_vPackageExtraItemMachineCodeList;
// 아이템 이름리스트
std::map<int, CString> m_mapItemName;
// 기타아이템
float fMortmainCharMultiplyCash;
float fMortmainPremiumCharMultiplyCash;
float fMortmainRareCharMultiplyCash;
typedef std::vector< LimitData* > vLimitData; // vector을 다른것으로 대체할때 INI Reload 개선 필요
vLimitData m_vPesoLimitDataList;
vLimitData m_vCashLimitDataList;
vLimitData m_vPremiumCashLimitDataList;
vLimitData m_vRareCashLimitDataList;
std::map<int, CItemEtc*> MapItemEtc;
// 용병아이템
vHeroClassRate m_vecHeroClassRate;
std::map<int, PriceData*> m_MapItemClass;
// 치장아이템
typedef std::vector< SexDecoList > vSexDecoList; // vector을 다른것으로 대체할때 INI Reload 개선 필요
vSexDecoList m_vSexList;
//ExtraItem
mExtraItem m_mapExtraItem;
// 팝업스토어상점
vPopupItemInfo m_vPopupItemInfo;
// 세일관련
vSaleInfoVector m_vSaleInfoVector;
// 대화 상자 데이터입니다.
enum { IDD = IDD_BILLINGINFOLIST_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
protected:
// Init Info
void LoadChangeItemInfo();
// INI Read
int LoadIntSetting(CString lpAppName, CString lpKeyName, int iDefailt, CString strfullPath);
float LoadFloatSetting(CString lpAppName, CString lpKeyName, float fDefailt, CString strfullPath);
CString LoadStringSetting(CString lpAppName, CString lpKeyName, CString strDefault, CString strfullPath);
void ChangeIntSetting(CString lpAppName, CString lpKeyName, int ChangeValue, CString strfullPath);
// Load
void LoadBillingGoods();
void LoadBillingEtcItem(CString fullPath);
void LoadBillingExtraItem(CString fullPath);
void LoadItemNameINI(const TCHAR* file);
void LoadEtcItemINI(const TCHAR* file);
void LoadDecoItemINI(const TCHAR* file);
void LoadDecoInfoItemINI(const TCHAR* path);
void LoadSoldierItemINI(const TCHAR* file);
void LoadExtraItemINI(const TCHAR* file);
void LoadPopupItemINI(const TCHAR* file);
// 저장처리시 필요
int GetGoodsNoValue( int iLimitSeconds );
bool IsPackageItem( int iEtcItemShortType );
bool IsPackageItemExtra( int iExtraItemMachineCode );
int GetClassRate(int iClass);
CString GetGoodsName( int iGoodsNo);
DWORD ConvertYYMMDDHHMMToDate( WORD wYear, WORD wMonth, WORD wDay, WORD wHour, WORD wMinute );
bool IsCheckAlive( SYSTEMTIME st , DWORD dwStartDate, DWORD dwEndDate );
int GetCash( ItemType eItemType, int iType1, int iType2 );
// 저장
void SaveEtcItemTotal();
void SaveEtcItemActive();
void SaveDecoItemTotal();
void SaveDecoItemActive();
void SaveSoldierItemTotal();
void SaveSoldierItemActive();
void SaveExtraItemTotal();
void SaveExtraItemActive();
void SavePopupItemTotal();
void SavePopupItemActive();
// 구현입니다.
protected:
HICON m_hIcon;
CString m_strParameter;
// 생성된 메시지 맵 함수
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedEtcitem();
afx_msg void OnBnClickedDecoitem();
afx_msg void OnBnClickedSoldier();
afx_msg void OnBnClickedExtraitem();
afx_msg void OnBnClickedPopup();
afx_msg void OnBnClickedTotal();
afx_msg void OnBnClickedItemtotal();
afx_msg void OnBnClickedItemetc();
afx_msg void OnBnClickedItemdeco();
afx_msg void OnBnClickedItemsoldier();
afx_msg void OnBnClickedItemextra();
afx_msg void OnBnClickedItemPopup();
CStatic text_total;
};
@@ -0,0 +1,100 @@
================================================================================
MFC 라이브러리 : BillingInfoList 프로젝트 개요
================================================================================
응용 프로그램 마법사에서 이 BillingInfoList 응용 프로그램을
만들었습니다. 이 응용 프로그램은 MFC의 기본 사용법을 보여 줄 뿐만 아니라 응용
프로그램작성을 위한 기본 구조를 제공합니다.
이 파일에는 BillingInfoList 응용 프로그램을 구성하는 각 파일에 대한
요약 설명이 포함되어 있습니다.
BillingInfoList.vcxproj
응용 프로그램 마법사를 사용하여 생성된 VC++ 프로젝트의 주 프로젝트 파일입니다.
파일을 생성한 Visual C++ 버전에 대한 정보와 응용 프로그램 마법사를 사용하여 선택한
플랫폼, 구성 및 프로젝트 기능에 대한 정보가 들어 있습니다.
BillingInfoList.vcxproj.filters
응용 프로그램 마법사를 사용하여 생성된 VC++ 프로젝트의 필터 파일입니다.
이 파일에는 프로젝트의 파일과 필터 간의 연결 정보가 들어 있습니다. 이러한
연결은 특정 노드에서 유사한 확장명으로 그룹화된 파일을 표시하기 위해
IDE에서 사용됩니다. 예를 들어 ".cpp" 파일은 "소스 파일" 필터와 연결되어
있습니다.
BillingInfoList.h
응용 프로그램의 기본 헤더 파일입니다. 여기에는 다른 프로젝트 관련
헤더(Resource.h 포함)가 들어 있고 CBillingInfoListApp 응용 프로그램
클래스를 선언합니다.
BillingInfoList.cpp
응용 프로그램 클래스 CBillingInfoListApp이(가) 들어 있는 기본 응용 프로그램
소스 파일입니다.
BillingInfoList.rc
프로그램에서 사용하는 모든 Microsoft Windows 리소스의 목록입니다.
여기에는 RES 하위 디렉터리에 저장된 아이콘, 비트맵 및 커서가
포함됩니다. 이 파일은 Microsoft Visual C++에서 직접
편집할 수 있습니다. 프로젝트 리소스는 1042에 있습니다.
res\BillingInfoList.ico
응용 프로그램의 아이콘으로 사용되는 아이콘 파일입니다. 이 아이콘은
주 리소스 파일인 BillingInfoList.rc에 의해 포함됩니다.
res\BillingInfoList.rc2
이 파일에는 Microsoft Visual C++ 이외의 다른 도구에서 편집한 리소스가
들어 있습니다. 리소스 편집기로 편집할 수 없는 모든 리소스는
이 파일에 넣어야 합니다.
/////////////////////////////////////////////////////////////////////////////
응용 프로그램 마법사에서 하나의 대화 상자 클래스가 만들어집니다.
BillingInfoListDlg.h, BillingInfoListDlg.cpp - 대화 상자
이 파일에는 CBillingInfoListDlg 클래스가 들어 있습니다. 이 클래스는
응용 프로그램의 주 대화 상자 동작을 정의합니다. 대화 상자의 템플릿은
Microsoft Visual C++에서 편집할 수 있는 BillingInfoList.rc에 있습니다.
/////////////////////////////////////////////////////////////////////////////
기타 기능:
ActiveX 컨트롤
응용 프로그램에서 ActiveX 컨트롤을 사용할 수 있도록 지원합니다.
/////////////////////////////////////////////////////////////////////////////
기타 표준 파일:
StdAfx.h, StdAfx.cpp
이 파일은 미리 컴파일된 헤더 파일(PCH)인 BillingInfoList.pch와
미리 컴파일된 형식 파일인 StdAfx.obj를 빌드하는 데 사용됩니다.
Resource.h
새 리소스 ID를 정의하는 표준 헤더 파일입니다.
Microsoft Visual C++에서 이 파일을 읽고 업데이트합니다.
BillingInfoList.manifest
응용 프로그램 매니페스트 파일은 Windows XP에서 특정 버전의 Side-by-Side
어셈블리에 대한 응용 프로그램 종속성을 설명하는 데 사용됩니다. 로더는 이 정보를
사용하여 어셈블리 캐시에서 적절한 어셈블리를 로드하거나 응용 프로그램에서 전용
어셈블리를 로드합니다. 응용 프로그램 매니페스트는 응용 프로그램 실행 파일과 같은
폴더에 설치된 외부 .manifest 파일로 재배포를 위해 포함되거나 리소스의 형태로
실행 파일에 포함될 수 있습니다.
/////////////////////////////////////////////////////////////////////////////
기타 참고:
응용 프로그램 마법사는 "TODO:"를 사용하여 추가하거나 사용자 지정해야 하는
소스 코드 부분을 나타냅니다.
응용 프로그램이 공유 DLL에서 MFC를 사용하는 경우 해당 MFC DLL을
재배포해야 합니다. 그리고 응용 프로그램이 운영 체제의 로캘과
다른 언어를 사용하는 경우 해당 지역화된 리소스인 MFC100XXX.DLL을
재배포해야 합니다. 이 두가지 항목에 대한 자세한 내용은
MSDN 설명서의 Visual C++ 응용 프로그램 재배포 항목을
참조하십시오.
/////////////////////////////////////////////////////////////////////////////
@@ -0,0 +1,271 @@
// cFile.cpp: implementation of the cFile class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "cFile.h"
#include <stdio.h>
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
cFile::cFile() : m_hFile(INVALID_HANDLE_VALUE), m_dwSizeLow(0), m_dwSizeHigh(0)
{
}
cFile::cFile(LPCTSTR fileName, DWORD dwMode, DWORD dwShareMode, DWORD dwCreationDisposition) : m_hFile(INVALID_HANDLE_VALUE), m_dwSizeLow(0), m_dwSizeHigh(0)
{
Open(fileName, dwMode, dwShareMode, dwCreationDisposition);
}
cFile::~cFile()
{
Close();
}
//////////////////////////////////////////////////////////////////////
// operation
//////////////////////////////////////////////////////////////////////
BOOL cFile::Open(const TCHAR* fileName, DWORD dwMode, DWORD dwShareMode, DWORD dwCreationDisposition)
{
Close();
m_hFile = CreateFile( reinterpret_cast<LPCTSTR>(fileName),
dwMode,
dwShareMode,
NULL,
dwCreationDisposition,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(m_hFile == INVALID_HANDLE_VALUE) return FALSE;
return (m_hFile == INVALID_HANDLE_VALUE) ? FALSE : TRUE;
}
void cFile::Close()
{
if(m_hFile != INVALID_HANDLE_VALUE)
{
CloseHandle(m_hFile);
m_hFile = NULL;
}
m_dwSizeLow = 0;
m_dwSizeHigh = 0;
}
BOOL cFile::Move(DWORD dwOrigin, LONG lOffset)
{
if(m_hFile != INVALID_HANDLE_VALUE)
{
DWORD dwResult = SetFilePointer( m_hFile,
lOffset,
NULL,
dwOrigin);
return (dwResult == 0xFFFFFFFF) ? FALSE : TRUE;
}
return FALSE;
}
DWORD cFile::GetFileSize()
{
if(m_dwSizeLow != 0)
return m_dwSizeLow;
DWORD dwError = 0;
if(m_hFile != INVALID_HANDLE_VALUE)
{
m_dwSizeLow = ::GetFileSize(m_hFile, &m_dwSizeHigh);
if((INVALID_FILE_SIZE == m_dwSizeLow) &&
((dwError = GetLastError()) != NO_ERROR))
return 0;
}
return m_dwSizeLow;
}
//////////////////////////////////////////////////////////////////////
// cFileReader class
//////////////////////////////////////////////////////////////////////
cFileReader::cFileReader(const TCHAR* fileName) : m_nReadType(-1)
{
if(fileName != NULL)
{
Open(fileName);
}
}
BOOL cFileReader::Open(const TCHAR* fileName)
{
if(cFile::Open(fileName, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, OPEN_EXISTING))
{
return (GetBOM() > 0) ? TRUE : FALSE;
}
return FALSE;
}
BOOL cFileReader::Read(BYTE* buffer, const DWORD dwLength)
{
DWORD dwWritten = 0;
if(m_hFile == INVALID_HANDLE_VALUE) return FALSE;
if(ReadFile( m_hFile,
buffer,
dwLength,
&dwWritten,
NULL))
{
if(dwLength == dwWritten) return TRUE;
}
return FALSE;
}
BOOL cFileReader::Convert(const BYTE* bufferA, const int lengthA, BYTE* bufferB, const int lengthB)
{
switch(m_nReadType)
{
case FILEFORMAT_ANSI :
CopyMemory(bufferB, bufferA, (lengthA > lengthB) ? lengthB : lengthA);
return TRUE;
case FILEFORMAT_UNICODE_UTF8 :
CopyMemory(bufferB, bufferA, (lengthA > lengthB) ? lengthB : lengthA);
return TRUE;
case FILEFORMAT_UNICODE_LE :
WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)bufferA, lengthA, (LPSTR)bufferB, lengthB, NULL, NULL);
return TRUE;
case FILEFORMAT_UNICODE_BE :
return TRUE;
}
return FALSE;
}
int cFileReader::GetBOM()
{
if((-1) == m_nReadType)
{
Move(FILE_BEGIN, 0);
WORD BOM = 0;
if(Read(reinterpret_cast<BYTE*>(&BOM), sizeof(WORD)))
{
switch(BOM)
{
case 0xFEFF :
m_nReadType = FILEFORMAT_UNICODE_LE;
Move(FILE_BEGIN, 2);
break;
case 0xFFFE :
m_nReadType = 0; //FILEFORMAT_UNICODE_BE; not supported
Move(FILE_BEGIN, 2);
break;
case 0xBBEF :
m_nReadType = FILEFORMAT_UNICODE_UTF8;
Move(FILE_BEGIN, 3);
break;
default:
m_nReadType = FILEFORMAT_ANSI;
Move(FILE_BEGIN, 0);
break;
}
return m_nReadType;
}
return 0;
}
return m_nReadType;
}
DWORD cFileReader::GetFileSize()
{
if(0 == m_dwSizeLow)
{
cFile::GetFileSize();
switch(m_nReadType)
{
case FILEFORMAT_UNICODE_LE :
case FILEFORMAT_UNICODE_BE :
m_dwSizeLow -= (2);
break;
case FILEFORMAT_UNICODE_UTF8 :
m_dwSizeLow -= (3);
break;
default:
break;
}
}
return m_dwSizeLow;
}
//////////////////////////////////////////////////////////////////////
// cFileWriter class
//////////////////////////////////////////////////////////////////////
cFileWriter::cFileWriter(const TCHAR* fileName)
{
if(fileName != NULL)
{
Open(fileName);
}
}
BOOL cFileWriter::Open(const TCHAR* fileName)
{
if(cFile::Open(fileName, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, CREATE_ALWAYS))
{
WriteHeader();
return TRUE;
}
return FALSE;
}
BOOL cFileWriter::Write(const BYTE* buffer, const DWORD dwLength)
{
if(dwLength == 0)
return TRUE;
DWORD dwBytes = 0;
if(WriteFile( m_hFile,
buffer,
dwLength,
&dwBytes,
NULL))
{
return (dwBytes == dwLength) ? TRUE : FALSE;
}
return FALSE;
}
BOOL cFileWriter::WriteFormat(const TCHAR* format, ...)
{
TCHAR buffer[4096];
va_list marker;
va_start(marker, format);
_vstprintf_s(buffer, _countof(buffer), format, marker);
va_end(marker);
return Write(reinterpret_cast<BYTE*>(buffer), (_tcslen(buffer) * sizeof(TCHAR)));
}
void cFileWriter::WriteHeader()
{
#ifdef _UNICODE
Move(FILE_BEGIN, 0);
WORD BOM = 0xFEFF;
Write(reinterpret_cast<BYTE*>(&BOM), sizeof(BOM));
#endif
}
@@ -0,0 +1,68 @@
#pragma once
// cFile
class cFile
{
public:
cFile();
cFile(LPCTSTR fileName, DWORD dwMode, DWORD dwShareMode, DWORD dwCreationDisposition);
virtual ~cFile();
public:
BOOL Open(const TCHAR* fileName, DWORD dwMode, DWORD dwShareMode, DWORD dwCreationDisposition);
void Close();
BOOL Move(DWORD dwOrigin, LONG lOffset);
virtual DWORD GetFileSize();
enum SaveFileFormat
{
FILEFORMAT_ANSI = 1,
FILEFORMAT_UNICODE_UTF8,
FILEFORMAT_UNICODE_LE,
FILEFORMAT_UNICODE_BE,
};
protected:
HANDLE m_hFile;
DWORD m_dwSizeLow, m_dwSizeHigh;
};
// cFileReader
class cFileReader : public cFile
{
public:
cFileReader(const TCHAR* fileName=NULL);
public:
BOOL Open(const TCHAR* fileName);
BOOL Read(BYTE* buffer, const DWORD dwLength);
BOOL Convert(const BYTE* bufferA, const int lengthA, BYTE* bufferB, const int lengthB);
int GetBOM();
virtual DWORD GetFileSize();
private:
int m_nReadType;
};
// cFileWriter
class cFileWriter : public cFile
{
public:
cFileWriter(const TCHAR* fileName=NULL);
public:
BOOL Open(const TCHAR* fileName);
BOOL Write(const BYTE* buffer, const DWORD dwLength);
BOOL WriteFormat(const TCHAR* format, ...);
void WriteHeader();
};
@@ -0,0 +1,25 @@
[ChangeInfo]
; 기본값을 100으로 한다.
ChangeCash = 2.3571
etcitem = 100
decoItem = 100
Class_Max = 3
Class_1Start = 1
Class_1End = 1
Class_1Rate = 70
Class_2Start = 2
Class_2End = 10
Class_2Rate = 50
Class_32Start = 20
Class_3End = 30
Class_3Rate = 10
normal_char = 100
rare_char = 100
premium_char = 100
Change = 1
@@ -0,0 +1,319 @@
#pragma once
#define COMPARE(x,min,max) (((x)>=(min))&&((x)<(max)))
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
/// 기타관련 ///
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
class CEtcValue
{
public:
int iValue; // 갯수
int iPeso; // 돈
int iCash; // 캐쉬
int iActive; // 실행여부
};
class CItemEtc
{
public:
CString strName; // 이름
int iType; // type
std::vector<CEtcValue*> EtcValueList;
};
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
/// 치장관련 ///
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
typedef std::vector<DWORD> DWORDVec;
typedef struct tagSoldierInfo
{
int m_iLimitSeconds;
int m_iGoodsNoValue;
tagSoldierInfo()
{
m_iLimitSeconds = 0;
m_iGoodsNoValue = 0;
}
}SoldierInfo;
//////////////////////////////////////////////////////////////////////////////
typedef struct tagDecoData
{
CString m_szName;
int m_iDecoCode;
int m_iPeso;
int m_iCash;
int m_iBonusPeso;
int m_iSellPeso;
bool m_bActive;
int m_iLimitLevel;
int m_iSubscriptionType;
tagDecoData()
{
m_iDecoCode = 999999999;
m_iPeso = 0;
m_iCash = 0;
m_iBonusPeso = 0;
m_iSellPeso = 0;
m_bActive = false;
m_iLimitLevel = 0;
}
}DecoData;
typedef std::vector< DecoData > vDecoData; // vector을 다른것으로 대체할때 INI Reload 개선 필요
typedef struct tagDecoList
{
CString m_strTitle;
int m_iDecoType;
int m_iPackageKeepPeso;
vDecoData m_vList;
tagDecoList()
{
m_strTitle = "";
m_iDecoType = m_iPackageKeepPeso = 0;
}
}DecoList;
typedef std::vector< DecoList > vDecoList; // vector을 다른것으로 대체할때 INI Reload 개선 필요
typedef std::vector<int> IntVec;
typedef struct tagDefaultList
{
int m_iDecoType;
IntVec m_vDecoCodeList;
tagDefaultList()
{
m_iDecoType = 0;
}
}DefaultList;
typedef std::vector< DefaultList > vDefaultList; // vector을 다른것으로 대체할때 INI Reload 개선 필요
struct SexDecoList
{
CString m_szName;
CString m_szINI;
int m_iSex;
vDecoList m_vList;
vDefaultList m_vDefaultList;
SexDecoList()
{
m_iSex = 0;
}
};
/////////////////////////////////////////////////////////////////////////
enum ItemType
{
IT_NONE = -1,
IT_CLASS = 0,
IT_DECO = 1,
IT_ETC = 2,
IT_EXTRA_BOX = 3,
};
struct BackUpInfo // 향후 항목 추가를 대비해서 struct로
{
int m_iCash;
int m_iPeso;
bool m_bItemActive;
BackUpInfo()
{
Clear();
}
void Clear()
{
m_iCash = 0;
m_iPeso = 0;
m_bItemActive = false;
}
};
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
/// 용병관련 ///
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
struct HeroClassRate
{
int m_iStart;
int m_iEnd;
int m_iRate;
HeroClassRate()
{
m_iStart = 0;
m_iEnd = 0;
m_iRate = 0;
}
};
typedef std::vector< HeroClassRate* > vHeroClassRate;
enum PriceType
{
PT_NORMAL = 0,
PT_PREMIUM = 1,
PT_RARE = 2,
};
struct PriceData
{
int m_iSetCode;
int m_bActive;
int m_iBuyCash;
PriceType m_eType;
PriceData()
{
m_iSetCode = 0;
m_bActive = 0;
m_iBuyCash = 0;
m_eType = PT_NORMAL;
}
};
// 기간제 & 영구
enum CharPeriodType
{
CPT_TIME = 0,
CPT_MORTMAIN = 1, // 영구
CPT_MAX = 2,
};
struct LimitData
{
int m_iLimitDate;
float m_fLimitPricePer;
LimitData()
{
m_iLimitDate = 0;
m_fLimitPricePer = 1.0f;
}
};
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
/// 추가관련 ///
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
struct RandomItem
{
int m_iItemCode;
int m_iRandomRate;
RandomItem()
{
m_iItemCode = 0;
m_iRandomRate = 0;
}
};
typedef std::vector< RandomItem > RandomItemList;
struct ExtraItem
{
int m_iMachine_code;
int m_iType;
int m_iActive;
int m_iBuyCash;
int m_iPackage;
CString m_strMachineName;
RandomItemList m_vRandomItemList;
ExtraItem()
{
m_iMachine_code = 0;
m_iType = 0;
m_iActive = 0;
m_iBuyCash = 0;
m_strMachineName.Empty();
m_vRandomItemList.clear();
}
};
typedef std::map<int, ExtraItem*> mExtraItem;
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
/// 특별상점관련 ///
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
struct sPopupItemInfo
{
int m_iActive;
int m_iIndex;
int m_iPresentType;
int m_iPresentValue1;
int m_iPresentValue2;
int m_iCash;
int m_iPrevCash;
int m_iDisCount;
};
typedef std::vector< sPopupItemInfo* > vPopupItemInfo;
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
/// 특별상점관련 ///
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
struct SaleInfo
{
ItemType m_eItemType;
int m_iType1;
int m_iType2;
int m_iStartDate;
int m_iEndDate;
int m_iCash;
bool m_bActive;
SaleInfo()
{
Clear();
}
void Clear()
{
m_eItemType = IT_NONE;
m_iType1 = 0;
m_iType2 = 0;
m_iStartDate = 0;
m_iEndDate = 0;
m_iCash = 0;
m_bActive = false;
}
};
typedef std::vector< SaleInfo* > vSaleInfoVector;
Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.
@@ -0,0 +1,8 @@
// stdafx.cpp : 표준 포함 파일만 들어 있는 소스 파일입니다.
// BillingInfoList.pch는 미리 컴파일된 헤더가 됩니다.
// stdafx.obj에는 미리 컴파일된 형식 정보가 포함됩니다.
#include "stdafx.h"
@@ -0,0 +1,59 @@
// stdafx.h : 자주 사용하지만 자주 변경되지는 않는
// 표준 시스템 포함 파일 및 프로젝트 관련 포함 파일이
// 들어 있는 포함 파일입니다.
#pragma once
#ifndef _SECURE_ATL
#define _SECURE_ATL 1
#endif
#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN // 거의 사용되지 않는 내용은 Windows 헤더에서 제외합니다.
#endif
#include "targetver.h"
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 일부 CString 생성자는 명시적으로 선언됩니다.
// MFC의 공통 부분과 무시 가능한 경고 메시지에 대한 숨기기를 해제합니다.
#define _AFX_ALL_WARNINGS
#include <afxwin.h> // MFC 핵심 및 표준 구성 요소입니다.
#include <afxext.h> // MFC 확장입니다.
#include <afxdisp.h> // MFC 자동화 클래스입니다.
#ifndef _AFX_NO_OLE_SUPPORT
#include <afxdtctl.h> // Internet Explorer 4 공용 컨트롤에 대한 MFC 지원입니다.
#endif
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // Windows 공용 컨트롤에 대한 MFC 지원입니다.
#endif // _AFX_NO_AFXCMN_SUPPORT
#include <afxcontrolbars.h> // MFC의 리본 및 컨트롤 막대 지원
#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
#endif
#include <vector>
#include <map>
#include "cFile.h"
#include "define.h"
@@ -0,0 +1,8 @@
#pragma once
// 포함 SDKDDKVer.h는 사용 가능한 Windows 플랫폼 중 버전이 가장 높은 플랫폼을 정의합니다.
// 이전 Windows 플랫폼에 대해 응용 프로그램을 빌드하려는 경우에는 SDKDDKVer.h를 포함하기 전에
// WinSDKVer.h를 포함하고 _WIN32_WINNT 매크로를 지원하려는 플랫폼으로 설정하십시오.
#include <SDKDDKVer.h>