• R/O
  • SSH
  • HTTPS

marathon: コミット


コミットメタ情報

リビジョン284 (tree)
日時2007-05-05 00:15:29
作者hogepiyo

ログメッセージ

*** empty log message ***

変更サマリ

差分

--- marathon/trunk/MapEditorOne/Reminder.txt (revision 283)
+++ marathon/trunk/MapEditorOne/Reminder.txt (revision 284)
@@ -13,3 +13,50 @@
1313 MapEditorSDI.hおよびMapEditorSDI.cppにはいくつかMap関連の関数がある。
1414 もうすこし整備してHPLLibに収められると良い。
1515 特に点の追加・削除・セットアップなどなどは煩雑になりそうだし、良く分からん部分が多すぎる
16+
17+・theApp(CMapEditorOne)の持ち物チェック(イベント管理上特に重要なもの)
18+
19+-bool isSelectingGroup;
20+「現在範囲選択中であるかどうか」を指定するもの。
21+ViewEvent.cppの
22+void CMapEditorSDIView::setStartPointForSelectGroup(int px, int py)
23+でtrue。
24+
25+
26+・そうでもないけど書いちゃったもの
27+-CStringArray LevelNameList;
28+MapEditorSDIView_Event_mMenu.cppで登録
29+ void CMapEditorSDIView::OnFileOpen()
30+上記ファイルと、LevelParameterDialog.cpp, SelectLevelDialog.cppで利用。
31+
32+-int zoomDivision;
33+割る数。
34+MapEditorSDI.cpp, MapEditorSDIView.cpp, MapEditorSDIView_Event.cpp, MapEditorSDIView_Event_Menu.cppで利用。
35+HPLMapTool.cppでは引数として用いられている
36+
37+-int gridIntervals[NUMBER_OF_GLID];
38+グリッドの間隔
39+
40+・マウスイベント整理
41+-共通
42+Ctrl+クリック1 なし
43+Ctrl+D&D 全体移動(Handツールと同様)
44+Ctrl+ホイール 拡大縮小(虫眼鏡ツール・メニューの拡大縮小・+/^キーと同様)
45+表示は特になし
46+
47+-Drawモード
48+クリック 選択・(無ければ)選択解除
49+D&D 範囲選択・(無ければ)選択解除・(選択物を)移動
50+選択時には赤く表示
51+ポリゴンは斜線表示
52+
53+範囲選択時には破線の矩形表示。
54+
55+-Skullモード
56+クリック オブジェクト配置
57+
58+-Lineモード
59+クリック はあまりしないほうがいい…(閾値以下なら)
60+D&D 線を描く(Downが始点。Upが終点に相当)
61+
62+-
\ No newline at end of file
--- marathon/trunk/MapEditorOne/src/MapEditorSDI.cpp (revision 283)
+++ marathon/trunk/MapEditorOne/src/MapEditorSDI.cpp (revision 284)
@@ -172,7 +172,16 @@
172172 is.close();
173173 }
174174
175+ //内部専用設定さん
176+ char* tagNameFilePath = "data/InnerSettingTagList.ini";
177+ char* innerDataFilePath = "data/InnerSetting.ini";
178+ //設定読み込み
179+ mapeditorone::MapEditorOneInnerSetting innerSetting =
180+ mapeditorone::MapEditorOneInnerSetting(tagNameFilePath, innerDataFilePath);
181+
182+
175183 //Zoom
184+ //innerSetting.getInt(mapeditorone::TagType::ZOOM_DIVISION_DEFAULT);
176185 zoomDivision = ZOOM_DIVISION_DEFAULT;
177186
178187 isPressLButtonWithCtrl = false;
@@ -427,6 +436,18 @@
427436 return this->editMode;
428437 }
429438
439+int CMapEditorSDIApp::getZoomDivision()
440+{
441+ return this->zoomDivision;
442+}
443+void CMapEditorSDIApp::zoomIn()
444+{
445+
446+}
447+void CMapEditorSDIApp::zoomOut()
448+{
449+}
450+
430451 void loadIcon(int id, CImageList* imageList){
431452 HICON icon;
432453 icon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(id));
--- marathon/trunk/MapEditorOne/src/MapEditorOneInnerSetting.cpp (nonexistent)
+++ marathon/trunk/MapEditorOne/src/MapEditorOneInnerSetting.cpp (revision 284)
@@ -0,0 +1,51 @@
1+#include "MapEditorOneInnerSetting.h"
2+#include <fstream>
3+#include <cstdio>
4+#include <cstdlib>
5+
6+#include <windows.h>
7+
8+mapeditorone::MapEditorOneInnerSetting::MapEditorOneInnerSetting(const char* tagNameFilePath, const char* dataFilePath)
9+{
10+ ifstream ifs;
11+ ifs.open(tagNameFilePath);
12+ if(!ifs.is_open()){
13+ MessageBox(L"Cannot open tag file", MB_OK);
14+ exit(-1);
15+ }
16+ ifs.close();
17+
18+ ifs.open(dataFilePath);
19+ if(!ifs.is_open){
20+ MessageBox(L"Cannot open inner data file", MB_OK);
21+ exit(-1);
22+ }
23+ ifs.close();
24+}
25+mapeditorone::MapEditorOneInnerSetting::~MapEditorOneInnerSetting()
26+{
27+ this->tagMap.clear();
28+ this->datas.clear();
29+}
30+
31+std::string mapeditorone::MapEditorOneInnerSetting::getString(int type)
32+{
33+ std::string str = this->datas[type];
34+ if(str == NULL){
35+ MessageBox(L"Cannot find setting:", MB_OK);
36+ exit(-1);
37+ }
38+ return str;
39+}
40+int mapeditorone::MapEditorOneInnerSetting::getInt(int type)
41+{
42+ std::string str = this->getString(type);
43+ int num = atoi(str.c_str());
44+ return num;
45+}
46+double mapeditorone::MapEditorOneInnerSetting::getDouble(int type)
47+{
48+ std::string str = this->getString(type);
49+ double num = atof(str.c_str());
50+ return num;
51+}
--- marathon/trunk/MapEditorOne/src/MapEditorSDI.h (revision 283)
+++ marathon/trunk/MapEditorOne/src/MapEditorSDI.h (revision 284)
@@ -63,9 +63,9 @@
6363 #include "SidePropertyDialog.h"
6464
6565 #include "MapEditorOneSetting.h"
66+#include "MapEditorOneInnerSetting.h"
6667
6768 #include <HPLLib/HPLAlephLib.h>
68-#include <HPLLib/HPLDoneHistory.h>
6969
7070 // CMapEditorSDIApp:
7171 // このクラスの実装については、MapEditorSDI.cpp を参照してください。
@@ -187,36 +187,49 @@
187187 public:
188188 virtual BOOL InitInstance();
189189 public:
190- //レベルの名称
190+ ///////////////////////
191+ //レベル関連
192+
193+ /**レベルの名称*/
191194 CStringArray LevelNameList;
192195
193- //選択中の倍率
196+ //選択中のレベルインデックス
197+ int editLevelIndex;
198+
199+
200+ ///////////////////////////
201+ //グリッド・表示関係
202+
203+public:
204+ /**拡大縮小・スクロール管理マネージャー*/
205+ hpl::aleph::view::HPLViewGridManager* viewGrid;
206+
207+ /**選択中の倍率*/
194208 int zoomDivision;
195209
196- //グリッド表示用間隔(世界距離に対応し、拡大縮小で大きさ変化)
210+ /**グリッド表示用間隔(世界距離に対応し、拡大縮小で大きさ変化)*/
197211 int gridIntervals[NUMBER_OF_GLID];
198- //int nowGridInterval;
199212
200213 //位置オフセット
201214 POINT offset;
202215
216+ /**現在のマウス座標*/
203217 POINT nowMousePoint;
218+
219+ /**一つ前のマウス座標*/
204220 POINT oldMousePoint;
205221
206- //選択したものの種類
207-// int selectType;
208- //選択したもののインデックス
209-// int selectIndex;
210-
211- //グリッド
212- //ボタン押してる?
213- bool isPressLButtonWithCtrl;
214-
215- //選択中のレベルインデックス
216- int editLevelIndex;
217222 //ポリゴンタイプの色
218223 COLORREF polygonTypeColor[NUMBER_OF_POLYGON_TYPE];
219224
225+ //ダブルバッファリング
226+ CDC doubleBufferDC;
227+ CBitmap doubleBuffserBitmap;
228+
229+
230+ ///////////////////////
231+ //ツール・プロパティダイアログ
232+
220233 //モードレスモンスタープロパティダイアログ
221234 CMonsterPropertyDialog *objectPropertyDialog;
222235 //モードレスポリゴンタイプダイアログ
@@ -233,6 +246,9 @@
233246 //texture dialog (palette)
234247 CTextureDialog *textureDialog;
235248
249+ ///////////////////////////
250+ //名称などのストック
251+
236252 //大別
237253 Information objectTypeInformations[NUMBER_OF_MAP_OBJECT_TYPES];
238254 //モンスターの種類
@@ -269,25 +285,21 @@
269285 Information ambientSoundTypeInformations[NUMBER_OF_AMBIENT_SOUND_DEFINITIONS];
270286 //random sounds
271287 Information randomSoundTypeInformations[NUMBER_OF_RANDOM_SOUND_DEFINITIONS];
272-// 実装
288+
289+ // 実装
273290 afx_msg void OnAppAbout();
274- /*BOOL isObjectPropertyDialogShow;
275- BOOL isHeightDialogShow;
276- BOOL isPolygonTypeDialogShow;
277- BOOL isToolDialogShow;
278- BOOL isPolygonPropertyDialogShow;
279-*/
280- //ダブルバッファリング
281- CDC doubleBufferDC;
282- CBitmap doubleBuffserBitmap;
283291
284- //ポリゴンや線を持ったときのマウス座標からのオフセット
285- //相対座標
286-// POINT polygonPoints[8];
287-// int polygonPointNum;
288292
293+ /////////////////////
294+ //イベント管理
295+
296+ //ボタン押してる?
297+ bool isPressLButtonWithCtrl;
298+
289299 //選択範囲始点
290300 POINT selectStartPoint;
301+
302+ //グループ選択中か?
291303 bool isSelectingGroup;
292304
293305 //複数選択時の選択物リスト
--- marathon/trunk/MapEditorOne/src/MapEditorOneInnerSetting.h (nonexistent)
+++ marathon/trunk/MapEditorOne/src/MapEditorOneInnerSetting.h (revision 284)
@@ -0,0 +1,54 @@
1+/**
2+ ユーザーが知ることの無い・知るべきでない設定ファイルです
3+ <en>user should not change these settings
4+
5+*/
6+
7+#ifndef _MAP_EDITOR_ONE_INNER_SETTING_
8+#define _MAP_EDITOR_ONE_INNER_SETTING_
9+
10+//#include <vector>
11+#include <string>
12+#include <map>
13+
14+namespace mapeditorone{
15+ namespace TagType{
16+ enum{
17+ //zooms
18+ ZOOM_DIVISION_STEP,
19+ ZOOM_DIV_STEP_THRESHOLD,
20+ ZOOM_DIVISION_STEP_DETAIL,
21+ ZOOM_DIVISION_MAX,
22+ ZOOM_DIVISION_MIN,
23+ ZOOM_DIVISION_DEFAULT,
24+ WORLD_OFFSET_X,
25+ WORLD_OFFSET_Y,
26+ POINT_DISTANCE_THRESHOLD,
27+ OBJECT_DISTANCE_THRESHOLD,
28+ LINE_DISTANCE_THRESHOLD,
29+ MaxTagTypes
30+ };
31+ };
32+
33+ class MapEditorOneInnerSetting{
34+ private:
35+/* //元データ
36+ std::vector<std::string> rawData;
37+*/
38+ /**タグ名称のリスト。別のファイルから読み込む*/
39+ std::map<int, std::string> tagMap;
40+
41+ /**タグに対応するデータ*/
42+ std::map<int, std::string> datas;
43+ public:
44+ MapEditorOneInnerSetting(const char* tagNameFilePath, const char* dataFilePath);
45+ ~MapEditorOneInnerSetting();
46+ public:
47+ std::string getString(int type);
48+ int getInt(int type);
49+ double getDouble(int type);
50+ };
51+
52+};
53+
54+#endif
--- marathon/trunk/MapEditorOne/繧?k縺ケ縺阪%縺ィ(TODO_jp).txt (revision 283)
+++ marathon/trunk/MapEditorOne/繧?k縺ケ縺阪%縺ィ(TODO_jp).txt (revision 284)
@@ -12,13 +12,13 @@
1212 長方形の交点)
1313 (あるいは、一旦正n角形を作って、上下の端を短辺に合わせ、
1414 それ以外を横へ引き伸ばすことで決定する方法でもよい)
15- -object property dialog
16- launch by...
17- directions=facing
18- -polygon property
19- type(uneditable)(done)
20- enlarge edit space
21- enenglish
15+ -オブジェクトダイアログ
16+ 選択時に表示(済)
17+ 向きがバグっとる
18+ -ポリゴンダイアログ
19+ 種類(編集不可能にする)(done)
20+ 編集部分を大きくする
21+ 英語化
2222 floor light(stored)
2323 ceiling light(stored)
2424 media
@@ -25,14 +25,14 @@
2525 media light(stored)
2626 ambSnd(stored)
2727 RndSnd(stored)
28- -polygon types
28+ -ポリゴンタイプ
2929 enenglish
3030 change selection when click other polygon
3131 高さ情報の表示
32- -preferences
32+ -設定
3333 custom color
3434 settings
35- -platform dialog
35+ -プラットフォームダイアログ
3636 type
3737 speed cmb
3838 delay cmb
@@ -70,11 +70,12 @@
7070 -塗りつぶせるポリゴンを探す
7171 -近い点から見ていく
7272 -点から伸びる線のうち、先がマウスクリックに近いもの順に確認する
73- -
7473
7574 回転ツール考えようぜ!(それかマウス+Altとかでもいいけど)
7675 反転とかもね
7776
77+ -範囲選択でポリゴンが追加されていないんじゃないか?
78+ isPolygonInRect(int[2][8], rx, ry, rw, rh)を作るべし
7879
7980 ・階段ツール
8081 ・自動ポリゴン塗りつぶしツール(8以上や、逆鋭角があるポリゴンでも塗りつぶせるように
@@ -98,3 +99,7 @@
9899 -set selecting when launch level-select dialog
99100 -ハンドツール(全体移動)実装
100101 -拡大縮小ツール実装
102+
103+ -ビジュアルモード
104+ ダッシュモードとかジャンプもつけてくれ
105+
\ No newline at end of file
--- marathon/trunk/MapEditorOne/data/InnerSettingTagList.ini (nonexistent)
+++ marathon/trunk/MapEditorOne/data/InnerSettingTagList.ini (revision 284)
@@ -0,0 +1,11 @@
1+ZoomDivisionStep
2+ZoomDivStepThreshold
3+ZOomDivisionStepDetail
4+ZoomDivisionMax
5+ZoomDivisionMin
6+ZoomDivisionDefault
7+WorldOffsetX
8+WorldOffsetY
9+PointDistanceThreshold
10+ObjectDistanceThreshold
11+LineDistanceThreshold
--- marathon/trunk/MapEditorOne/data/InnerSetting.ini (nonexistent)
+++ marathon/trunk/MapEditorOne/data/InnerSetting.ini (revision 284)
@@ -0,0 +1,11 @@
1+ZoomDivisionStep=5
2+ZoomDivStepThreshold=50
3+ZOomDivisionStepDetail=1
4+ZoomDivisionMax=200
5+ZoomDivisionMin=1
6+ZoomDivisionDefault=100
7+WorldOffsetX=32768
8+WorldOffsetY=32768
9+PointDistanceThreshold=5
10+ObjectDistanceThreshold=8
11+LineDistanceThreshold=5
--- marathon/trunk/AlephOneSrc/build/VC8/AlephOneSrc/AlephOneSrc/ReadMe.txt (nonexistent)
+++ marathon/trunk/AlephOneSrc/build/VC8/AlephOneSrc/AlephOneSrc/ReadMe.txt (revision 284)
@@ -0,0 +1,28 @@
1+========================================================================
2+スタティック ライブラリ : AlephOneSrc プロジェクトの概要
3+========================================================================
4+
5+この AlephOneSrc ライブラリ プロジェクトは、AppWizard によって
6+作成されました。
7+
8+ソース ファイルはプロジェクトの一部として作成されませんでした。
9+
10+
11+AlephOneSrc.vcproj
12+ これは、アプリケーション ウィザードで生成される VC++ プロジェクトのメインの
13+ プロジェクト ファイルです。
14+ ファイルを生成した Visual C++ のバージョン情報と、アプリケーション
15+ ウィザードで選択したプラットフォーム、構成、およびプロジェクトの機能に関する
16+ 情報が記述されています。
17+
18+/////////////////////////////////////////////////////////////////////////////
19+その他のメモ :
20+
21+AppWizard では "TODO:" コメントを使用して、ユーザーが追加またはカスタマイズする
22+ソース部分を示します。
23+
24+/////////////////////////////////////////////////////////////////////////////
25+
26+
27+
28+
--- marathon/trunk/HPLLib/HPLViewGridManager.cpp (nonexistent)
+++ marathon/trunk/HPLLib/HPLViewGridManager.cpp (revision 284)
@@ -0,0 +1,69 @@
1+#include "HPLViewGridManager.h"
2+#include <memory.h>
3+#include "HPLMath.h"
4+
5+hpl::aleph::view::HPLViewGridManager::HPLViewGridManager(ZoomProperties *zoomProp)
6+{
7+ memcpy(&this->zoomProperties, zoomProp, sizeof(struct ZoomProperties));
8+
9+}
10+
11+hpl::aleph::view::HPLViewGridManager::~HPLViewGridManager()
12+{
13+}
14+
15+/**
16+ 拡大率取得
17+ <en>get zoom division
18+*/
19+int hpl::aleph::view::HPLViewGridManager::getZoomDivision()
20+{
21+ return zoomDivision;
22+}
23+/**
24+ zoom in
25+*/
26+void hpl::aleph::view::HPLViewGridManager::zoomIn(int viewW, int viewH)
27+{
28+ this->addZoom(this->zoomProperties.zoomDivisionStep);
29+}
30+
31+/**
32+ zoom out
33+*/
34+void hpl::aleph::view::HPLViewGridManager::zoomOut(int viewW, int viewH)
35+{
36+ this->addZoom(this->zoomProperties.zoomDivisionStep);
37+}
38+
39+/**
40+ ズーム調整
41+ @param step 変化量
42+*/
43+void hpl::aleph::view::HPLViewGridManager::addZoom(int step, int viewW, int viewH)
44+{
45+ int oldZoomDiv = this->zoomDivision;
46+
47+ //拡大割率が閾値を越えたら増減速度Down
48+ //<en>set zoom step small when division num is over threshold
49+ if(zoomDivision < this->zoomProperties.zoomDivStepThreshold){
50+ step = hpl::math::sgn<int>(step) * this->zoomProperties.zoomDivisionStepDetail;
51+ }
52+
53+ //adjustment
54+ if(this->zoomDivision < this->zoomProperties.zoomDivisionMin){
55+ this->zoomDivision = this->zoomProperties.zoomDivisionMin;
56+ }else if(this->zoomDivision > this->zoomProperties.zoomDivisionMax){
57+ this->zoomDivision = this->zoomProperties.zoomDivisionMax;
58+ }
59+
60+ int oldOffset[2] = {this->viewOffset[0], this->viewOffset[1]};
61+ int center[2] = {viewW / 2, viewH / 2};
62+
63+ int newZoomDiv = this->zoomDivision;
64+ //位置修正
65+ int ax = center[0] - oldOffset[1];
66+ this->viewOffset[0] = center[0] - ax * oldZoomDiv / newZoomDiv;
67+ int ay = center[1] - oldOffset[1];
68+ this->viewOffset[1] = center[1] - ay * oldZoomDiv / newZoomDiv;
69+}
--- marathon/trunk/HPLLib/HPLViewGridManager.h (nonexistent)
+++ marathon/trunk/HPLLib/HPLViewGridManager.h (revision 284)
@@ -0,0 +1,74 @@
1+/**
2+ <jp>拡大縮小や、編集位置Offsetの修正、座標変換、スクロール表示など
3+ をまとめて管理するマネージャーです
4+ <en>the manager that manage zooming in or out, offsets for editing, exchanging
5+ different coordinates, scrolling, and so on
6+*/
7+#ifndef _HPL_VIEW_GRID_MANAGER_
8+#define _HPL_VIEW_GRID_MANAGER_
9+
10+namespace hpl{
11+namespace aleph{
12+namespace view{
13+ struct ZoomProperties{
14+ /**一回の拡大縮小で生じる変化量*/
15+ int zoomDivisionStep;
16+
17+ /**拡大率を下げる閾値*/
18+ int zoomDivStepThreshold;
19+
20+ /**拡大率を下げた後の増減速度*/
21+ int zoomDivisionStepDetail;
22+
23+ /**最大値*/
24+ int zoomDivisionMax;
25+
26+ /**最小値*/
27+ int zoomDivisionMin;
28+
29+ };
30+ /**
31+ 拡大縮小、スクロールなどの管理
32+ */
33+ class HPLViewGridManager{
34+ private:
35+ /**拡大関係の定数*/
36+ ZoomProperties zoomProperties;
37+
38+ /**現在の拡大割合*/
39+ int zoomDivision;
40+
41+ /**View座標のオフセット*/
42+ int viewOffset;
43+ public:
44+ HPLViewGridManager(ZoomProperties *zoomProp);
45+ ~HPLViewGridManager();
46+
47+ public:
48+ /**
49+ 拡大率取得
50+ <en>get zoom division
51+ */
52+ int getZoomDivision();
53+ /**
54+ zoom in
55+ @param viewW, viewH View範囲のサイズ
56+ */
57+ void zoomIn(int viewW, int viewH);
58+
59+ /**
60+ zoom out
61+ */
62+ void zoomOut(int viewW, int viewH);
63+ private:
64+ /**
65+ ズーム調整
66+ @param step 変化量
67+ */
68+ void addZoom(int step, int viewW, int viewH);
69+ };
70+};
71+};
72+};
73+#endif
74+
--- marathon/trunk/HPLLib/HPLAlephLib.h (revision 283)
+++ marathon/trunk/HPLLib/HPLAlephLib.h (revision 284)
@@ -1,16 +1,16 @@
11 #ifndef _HPL_ALEPH_LIB_
22 #define _HPL_ALEPH_LIB_
33
4+//just for AlephOne
45 #include "HPLMapTool.h"
6+#include "HPLSelectData.h"
7+#include "HPLDoneHistory.h"
8+#include "HPLViewGridManager.h"
59
10+//一般向け
611 #include "HPLMath.h"
7-
8-#include "HPLSelectData.h"
9-
1012 #include "HPLStringModifier.h"
11-
1213 #include "HPLQuickSort.h"
13-
1414 #include "HPLSurfaceModifier.h"
1515
1616 #endif
旧リポジトリブラウザで表示