Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
D
DataEditorX
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
聖園ミカ
DataEditorX
Commits
d97f836d
Commit
d97f836d
authored
Jun 14, 2020
by
JoyJ
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
effect creator UI (incomplete)
parent
857ccd03
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
906 additions
and
35 deletions
+906
-35
DataEditorX/CodeEditForm.Designer.cs
DataEditorX/CodeEditForm.Designer.cs
+0
-1
DataEditorX/Common/CheckUpdate.cs
DataEditorX/Common/CheckUpdate.cs
+1
-1
DataEditorX/EffectCreatorForm.Designer.cs
DataEditorX/EffectCreatorForm.Designer.cs
+686
-24
DataEditorX/EffectCreatorForm.cs
DataEditorX/EffectCreatorForm.cs
+189
-7
DataEditorX/data/effect_creator_settings.txt
DataEditorX/data/effect_creator_settings.txt
+30
-2
No files found.
DataEditorX/CodeEditForm.Designer.cs
View file @
d97f836d
...
...
@@ -212,7 +212,6 @@ private void InitializeComponent()
this
.
effectCreatorToolStripMenuItem
.
ShortcutKeys
=
System
.
Windows
.
Forms
.
Keys
.
F3
;
this
.
effectCreatorToolStripMenuItem
.
Size
=
new
System
.
Drawing
.
Size
(
180
,
22
);
this
.
effectCreatorToolStripMenuItem
.
Text
=
"Effect Creator"
;
this
.
effectCreatorToolStripMenuItem
.
Visible
=
false
;
this
.
effectCreatorToolStripMenuItem
.
Click
+=
new
System
.
EventHandler
(
this
.
effectCreatorToolStripMenuItem_Click
);
//
// tb_input
...
...
DataEditorX/Common/CheckUpdate.cs
View file @
d97f836d
...
...
@@ -65,7 +65,7 @@ public static bool CheckVersion(string ver, string oldver)
{
bool
hasNew
=
false
;
#if DEBUG
System
.
Windows
.
Forms
.
MessageBox
.
Show
(
oldver
+
"=>"
+
ver
);
System
.
Windows
.
Forms
.
MessageBox
.
Show
(
oldver
+
"=>"
+
ver
);
#endif
string
[]
vers
=
ver
.
Split
(
'.'
);
string
[]
oldvers
=
oldver
.
Split
(
'.'
);
...
...
DataEditorX/EffectCreatorForm.Designer.cs
View file @
d97f836d
This diff is collapsed.
Click to expand it.
DataEditorX/EffectCreatorForm.cs
View file @
d97f836d
using
System
;
using
System.Collections.Generic
;
using
System.IO
;
using
WeifenLuo.WinFormsUI.Docking
;
using
System.Linq
;
using
System.Text
;
using
System.Windows.Forms
;
namespace
DataEditorX
{
public
partial
class
EffectCreatorForm
:
DockContent
public
partial
class
EffectCreatorForm
:
Form
{
public
EffectCreatorForm
()
{
...
...
@@ -17,6 +19,7 @@ class EffectCreatorItem
public
string
Key
;
public
string
Value
;
public
string
Hint
;
public
bool
IsSelected
;
public
EffectCreatorItem
(
string
key
,
string
value
)
{
...
...
@@ -34,7 +37,7 @@ public override string ToString()
return
Value
;
}
}
Dictionary
<
string
,
List
<
EffectCreatorItem
>>
itemDic
=
new
Dictionary
<
string
,
List
<
EffectCreatorItem
>>();
readonly
Dictionary
<
string
,
List
<
EffectCreatorItem
>>
itemDic
=
new
Dictionary
<
string
,
List
<
EffectCreatorItem
>>();
private
void
EffectCreatorForm_Load
(
object
sender
,
EventArgs
e
)
{
string
config
=
$"data
{
Path
.
DirectorySeparatorChar
}
effect_creator_settings.txt"
;
...
...
@@ -72,14 +75,193 @@ private void EffectCreatorForm_Load(object sender, EventArgs e)
itemDic
[
nowType
].
Add
(
new
EffectCreatorItem
(
split
[
0
],
split
[
1
],
split
[
2
]));
}
}
foreach
(
var
item
in
itemDic
[
"EFFECT_CODES"
])
sr
.
Close
();
fs
.
Close
();
listEffectCode
.
Items
.
AddRange
(
itemDic
[
"EFFECT_CODES"
].
ToArray
());
listEffectCode
.
Items
.
AddRange
(
itemDic
[
"EVENT_CODES"
].
ToArray
());
listEffectCategory
.
Items
.
AddRange
(
itemDic
[
"CATEGORY"
].
ToArray
());
listEffectProperty
.
Items
.
AddRange
(
itemDic
[
"EFFECT_PROPERTY"
].
ToArray
());
}
private
void
btnStart_Click
(
object
sender
,
EventArgs
e
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
Append
(
this
.
ProcessDescription
());
sb
.
Append
(
this
.
ProcessSpecialOptions
());
sb
.
Append
(
this
.
ProcessEffectType
());
sb
.
Append
(
this
.
ProcessEffectCategory
());
sb
.
Append
(
this
.
ProcessEffectProperty
());
sb
.
Append
(
this
.
ProcessEffectCode
());
txtOutput
.
Text
=
sb
.
ToString
();
}
private
string
ProcessEffectProperty
()
{
var
selected
=
(
from
EffectCreatorItem
item
in
listEffectProperty
.
Items
.
Cast
<
EffectCreatorItem
>()
where
item
.
IsSelected
select
item
).
ToArray
();
if
(
selected
.
Length
<
1
)
{
return
""
;
}
string
property
=
selected
[
0
].
Key
;
if
(
selected
.
Length
>
1
)
{
for
(
int
i
=
1
;
i
<
selected
.
Length
;
i
++)
{
property
+=
$"+
{
selected
[
i
].
Key
}
"
;
}
}
return
$"e
{
numEffectNum
.
Value
}
:SetCategory(
{
property
}
)"
;
}
private
string
ProcessEffectCategory
()
{
var
selected
=
(
from
EffectCreatorItem
item
in
listEffectCategory
.
Items
.
Cast
<
EffectCreatorItem
>()
where
item
.
IsSelected
select
item
).
ToArray
();
if
(
selected
.
Length
<
1
)
{
return
""
;
}
string
category
=
selected
[
0
].
Key
;
if
(
selected
.
Length
>
1
)
{
for
(
int
i
=
1
;
i
<
selected
.
Length
;
i
++)
{
category
+=
$"+
{
selected
[
i
].
Key
}
"
;
}
}
return
$"e
{
numEffectNum
.
Value
}
:SetCategory(
{
category
}
)"
;
}
private
string
ProcessEffectCode
()
{
var
selected
=
(
from
EffectCreatorItem
item
in
listEffectCode
.
Items
.
Cast
<
EffectCreatorItem
>()
where
item
.
IsSelected
select
item
).
ToArray
();
if
(
selected
.
Length
<
1
)
{
return
""
;
}
return
$"e
{
numEffectNum
.
Value
}
:SetCode(
{
selected
[
0
].
Key
}
)"
;
}
private
string
ProcessDescription
()
{
if
(
numDescription
.
Value
>=
0
)
{
return
$"e
{
numEffectNum
.
Value
}
:SetDescription(aux.Stringid(
{
numCardCode
.
Value
}
,
{
numDescription
.
Value
}
))"
;
}
return
""
;
}
private
string
ProcessEffectType
()
{
string
effectType
=
""
;
foreach
(
RadioButton
radio
in
gbEffectType
.
Controls
)
{
if
(
radio
.
Name
.
StartsWith
(
"radioEffectType"
))
{
this
.
AddEffectTypeByCheckRadio
(
radio
,
ref
effectType
);
}
}
foreach
(
RadioButton
radio
in
gbEffectType2
.
Controls
)
{
if
(
radio
.
Name
.
StartsWith
(
"radioEffectType"
))
{
this
.
AddEffectTypeByCheckRadio
(
radio
,
ref
effectType
);
}
}
return
$"e
{
numEffectNum
.
Value
}
:SetType(
{
effectType
}
)"
;
}
private
void
AddEffectTypeByCheckRadio
(
RadioButton
radio
,
ref
string
effectType
)
{
if
(
radio
.
Checked
)
{
if
(
effectType
!=
""
)
{
effectType
+=
"+"
;
}
effectType
+=
$"EFFECT_TYPE_
{
radio
.
Name
.
Substring
(
15
).
ToUpper
()}
"
;
}
}
private
string
ProcessSpecialOptions
()
{
StringBuilder
sb
=
new
StringBuilder
();
if
(
checkEnableReviveLimit
.
Checked
)
{
listEffectCode
.
Items
.
Add
(
item
);
sb
.
AppendLine
(
"c:EnableReviveLimit()"
);
}
foreach
(
var
item
in
itemDic
[
"EVENT_CODES"
]
)
if
(
checkRegisterToPlayer
.
Checked
)
{
listEffectCode
.
Items
.
Add
(
item
);
sb
.
AppendLine
(
$"local e
{
numEffectNum
.
Value
}
=Effect.CreateEffect(c)"
);
}
else
{
sb
.
AppendLine
(
$"local e
{
numEffectNum
.
Value
}
=Effect.GlobalEffect()"
);
}
return
sb
.
ToString
();
}
private
void
SearchListBoxWithTextBox
(
ref
CheckedListBox
clb
,
TextBox
tb
)
{
if
(
tb
.
Text
==
""
)
{
return
;
}
var
selected
=
(
from
EffectCreatorItem
item
in
clb
.
Items
.
Cast
<
EffectCreatorItem
>()
where
item
.
IsSelected
select
item
).
ToArray
();
var
searched
=
(
from
EffectCreatorItem
item
in
clb
.
Items
.
Cast
<
EffectCreatorItem
>()
where
item
.
Value
.
Contains
(
tb
.
Text
)
&&
!
selected
.
Contains
(
item
)
select
item
).
ToArray
();
var
notSearched
=
(
from
EffectCreatorItem
item
in
clb
.
Items
.
Cast
<
EffectCreatorItem
>()
where
!
searched
.
Contains
(
item
)
&&
!
selected
.
Contains
(
item
)
select
item
).
ToArray
();
searched
=
selected
.
Concat
(
searched
).
Concat
(
notSearched
).
ToArray
();
clb
.
Items
.
Clear
();
clb
.
Items
.
AddRange
(
searched
);
for
(
int
i
=
0
;
i
<
clb
.
Items
.
Count
;
i
++)
{
if
((
clb
.
Items
[
i
]
as
EffectCreatorItem
).
IsSelected
)
{
clb
.
SetItemChecked
(
i
,
true
);
}
}
}
private
void
txtSearchEffectCode_TextChanged
(
object
sender
,
EventArgs
e
)
{
this
.
SearchListBoxWithTextBox
(
ref
listEffectCode
,
txtSearchEffectCode
);
}
private
void
listEffectCode_ItemCheck
(
object
sender
,
ItemCheckEventArgs
e
)
{
if
(
e
.
NewValue
==
CheckState
.
Checked
)
{
for
(
int
i
=
0
;
i
<
((
CheckedListBox
)
sender
).
Items
.
Count
;
i
++)
{
if
(((
CheckedListBox
)
sender
).
GetItemChecked
(
i
)
&&
i
!=
e
.
Index
)
{
((
CheckedListBox
)
sender
).
SetItemChecked
(
i
,
false
);
(((
CheckedListBox
)
sender
).
Items
[
i
]
as
EffectCreatorItem
).
IsSelected
=
false
;
}
}
}
(
listEffectCode
.
Items
[
e
.
Index
]
as
EffectCreatorItem
).
IsSelected
=
e
.
NewValue
==
CheckState
.
Checked
;
}
private
void
txtSearchEffectCategory_TextChanged
(
object
sender
,
EventArgs
e
)
{
this
.
SearchListBoxWithTextBox
(
ref
listEffectCategory
,
txtSearchEffectCategory
);
}
private
void
txtSearchProperty_TextChanged
(
object
sender
,
EventArgs
e
)
{
this
.
SearchListBoxWithTextBox
(
ref
listEffectProperty
,
txtSearchProperty
);
}
}
}
DataEditorX/data/effect_creator_settings.txt
View file @
d97f836d
...
...
@@ -313,7 +313,35 @@ EVENT_PHASE 阶段结束时
EVENT_PHASE_START 阶段开始时
EVENT_ADD_COUNTER 增加指示物时
EVENT_REMOVE_COUNTER 去除指示物时 Card.RemoveCounter()必须手动触发此事件
EVENT_CUSTOM 自訂事件
EVENT_CUSTOM 自定义事件
!EFFECT_PROPERTY
EFFECT_FLAG_CARD_TARGET 此效果取对象
EFFECT_FLAG_IGNORE_RANGE 此效果影响任何区域的卡
EFFECT_FLAG_ABSOLUTE_TARGET 此效果的Target Range不会因为控制权的改变而改变
EFFECT_FLAG_IGNORE_IMMUNE 此效果无视效果免疫
EFFECT_FLAG_SET_AVAILABLE 此效果影响场上里侧的卡,或可在里侧状态发动
EFFECT_FLAG_CANNOT_INACTIVATE 此卡的发动不能被无效
EFFECT_FLAG_CANNOT_NEGATE 此效果的发动不能被无效
EFFECT_FLAG_CANNOT_DISABLE 此效果的效果不能被无效
EFFECT_FLAG_PLAYER_TARGET 此效果以玩家为对象
EFFECT_FLAG_BOTH_SIDE 此效果双方都能使用 如王宫的弹压
EFFECT_FLAG_COPY_INHERIT 此效果若被复制,则继承其Reset属性
EFFECT_FLAG_DAMAGE_STEP 此效果可以在伤害步骤发动
EFFECT_FLAG_DAMAGE_CAL 此效果可以在伤害计算时发动
EFFECT_FLAG_DELAY 此效果是“场合”效果(另开连锁)而非“时”效果
EFFECT_FLAG_SINGLE_RANGE 此效果只对持有效果的卡有效
EFFECT_FLAG_UNCOPYABLE 此效果不能复制
EFFECT_FLAG_OATH 此效果是对卡效果的誓约限制(发动无效不适用,效果无效也适用)
EFFECT_FLAG_SPSUM_PARAM 此效果将怪兽出场时需要遵守一定表示形式 用于EFFECT_SPSUMMON_PROC等正规召唤手续相关Code,在TargetRange设置
EFFECT_FLAG_REPEAT 此效果在场面变化后需要重新计算 只适用于永续效果
EFFECT_FLAG_NO_TURN_RESET 此效果的使用次数计数不随回合结束而重置 发条全家
EFFECT_FLAG_EVENT_PLAYER 此效果视为玩家进行的动作 影响效果处理的触发者是“效果持有者”还是“受影响的玩家/受影响的卡的持有者”
EFFECT_FLAG_OWNER_RELATE 此效果在效果持有者(Owner)失效后也失效
EFFECT_FLAG_CLIENT_HINT 此效果在触发时需要进行提示客户端 用于诸如全场代破的效果,让玩家知道效果适用
EFFECT_FLAG_CONTINUOUS_TARGET 此效果要与其他卡建立持续对象关系
EFFECT_FLAG_LIMIT_ZONE 此魔法·陷阱卡发动时只能在某些区域发动 如灵摆转移:要将卡转移到灵摆区,就不能在灵摆区发动
EFFECT_FLAG_IMMEDIATELY_APPLY 此效果在发动时而不是效果处理时就适用 基本上只用于永续效果。大概只能用于辅助其他事件?
EFFECT_FLAG2_COF 此通常魔法卡可以在主要阶段以外发动
!CATEGORY
CATEGORY_DESTROY 破坏效果
CATEGORY_RELEASE 解放效果
...
...
@@ -344,7 +372,7 @@ CATEGORY_DICE 骰子效果
CATEGORY_LEAVE_GRAVE 涉及墓地的效果
CATEGORY_LVCHANGE 改变等级效果
CATEGORY_NEGATE 使发动无效效果
CATEGORY_ANNOUNCE
發動
時宣言卡名的效果
CATEGORY_ANNOUNCE
发动
時宣言卡名的效果
CATEGORY_FUSION_SUMMON 融合召唤效果
CATEGORY_TOEXTRA 回额外卡组效果
!TIMING
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment