Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
mycard
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
xiaoye
mycard
Commits
3bd44e28
Commit
3bd44e28
authored
Jan 19, 2012
by
神楽坂玲奈
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
重写Move#run,指示物、备注支持。添加了几个操作指令,基本能解析各种常见指令了
parent
89688fc9
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
192 additions
and
103 deletions
+192
-103
graphics/field/counter.png
graphics/field/counter.png
+0
-0
lib/action.rb
lib/action.rb
+121
-71
lib/card.rb
lib/card.rb
+4
-4
lib/game_card.rb
lib/game_card.rb
+1
-1
lib/iduel/action.rb
lib/iduel/action.rb
+43
-17
lib/iduel/replay.rb
lib/iduel/replay.rb
+1
-1
lib/nbx/action.rb
lib/nbx/action.rb
+1
-1
lib/scene_replay.rb
lib/scene_replay.rb
+0
-1
lib/window_field.rb
lib/window_field.rb
+21
-7
No files found.
graphics/field/counter.png
0 → 100644
View file @
3bd44e28
This diff was suppressed by a .gitattributes entry.
lib/action.rb
View file @
3bd44e28
...
...
@@ -41,13 +41,6 @@ class Action
super
end
end
class
Note
<
Action
attr_reader
:card
def
initialize
(
from_player
,
msg
,
card
)
super
(
from_player
,
msg
)
@card
=
card
end
end
class
Coin
<
Action
attr_reader
:result
def
initialize
(
from_player
,
result
=
rand
(
1
)
==
0
,
msg
=
nil
)
...
...
@@ -75,89 +68,71 @@ class Action
end
class
Move
<
Action
attr_reader
:from_pos
,
:to_pos
,
:card
,
:position
def
initialize
(
from_player
,
from_pos
,
to_pos
=
nil
,
card
=
Card
::
Unknown
,
msg
=
nil
,
position
=
nil
)
def
initialize
(
from_player
,
from_pos
,
to_pos
=
nil
,
card
=
nil
,
msg
=
nil
,
position
=
nil
)
super
(
from_player
,
msg
)
@from_pos
=
from_pos
@to_pos
=
to_pos
@card
=
card
@position
=
position
end
def
run
$log
.
debug
(
'--------------move action run--------------'
){
self
.
inspect
}
from_field
=
case
@from_pos
when
0
..
10
def
parse_field
(
pos
)
case
pos
when
0
..
10
,
:field
player_field
.
field
when
Integer
,
:hand
when
11
..
70
,
:hand
,
:handtop
,
:handrandom
player_field
.
hand
when
:field
player_field
.
field
when
71
..
130
,
:deck
,
:decktop
,
:deckbottom
player_field
.
deck
when
:graveyard
player_field
.
graveyard
when
:deck
player_field
.
deck
when
:extra
player_field
.
extra
when
:removed
player_field
.
removed
end
from_pos
=
if
@from_pos
.
is_a?
Integer
if
@from_pos
>
10
@from_pos
-
11
else
@from_pos
end
elsif
@card
==
:deck
end
def
run
#$log.debug('移动操作执行'){self.inspect}
from_field
=
parse_field
(
@from_pos
)
from_pos
=
case
@from_pos
when
0
..
10
@from_pos
when
11
..
70
@from_pos
-
11
when
71
..
130
@from_pos
-
71
when
:handtop
player_field
.
hand
.
size
-
1
when
:decktop
player_field
.
deck
.
size
-
1
else
(
@card
.
is_a?
(
Game_Card
)
?
from_field
.
index
(
@card
)
:
from_field
.
index
{
|
card
|
card
.
card
==
@card
})
||
from_field
.
index
{
|
card
|!
card
.
known?
}
end
to_field
=
case
@to_pos
when
Integer
player_field
.
field
when
:hand
player_field
.
hand
when
:graveyard
player_field
.
graveyard
when
:deck
,
:deckbottom
player_field
.
deck
when
:extra
player_field
.
extra
when
:removed
player_field
.
removed
end
if
from_pos
card
=
case
@card
to_field
=
parse_field
(
@to_pos
)
card
=
if
from_pos
case
@card
when
Game_Card
from_field
[
from_pos
]
=
@card
when
nil
,
Card
::
Unknown
if
!
from_field
[
from_pos
]
from_field
[
from_pos
]
=
Game_Card
.
new
(
Card
::
Unknown
)
$log
.
warn
(
'卡片移动'
){
'似乎凭空产生了卡片'
+
self
.
inspect
}
from_field
[
from_pos
].
position
=
:attack
end
from_field
[
from_pos
]
@card
when
Card
if
!
from_field
[
from_pos
]
from_field
[
from_pos
]
=
Game_Card
.
new
(
@card
)
from_field
[
from_pos
].
position
=
:attack
else
if
from_field
[
from_pos
]
from_field
[
from_pos
].
card
=
@card
end
from_field
[
from_pos
]
when
:deck
player_field
.
deck
.
last
end
if
@to_pos
if
from_field
==
player_field
.
field
from_field
[
from_pos
]
=
nil
else
from_field
.
delete_at
from_pos
$log
.
warn
(
'移动操作1'
){
'似乎凭空产生了卡片'
+
self
.
inspect
}
from_field
[
from_pos
]
=
Game_Card
.
new
(
@card
)
end
from_field
[
from_pos
]
else
from_field
[
from_pos
]
||
Game_Card
.
new
end
else
card
=
@card
==
:deck
?
player_field
.
deck
.
first
:
Game_Card
.
new
(
@card
)
$log
.
warn
(
'卡片移动'
){
'似乎凭空产生了卡片'
+
self
.
inspect
}
else
#没有来源
$log
.
warn
(
'移动操作2'
){
'似乎凭空产生了卡片'
+
self
.
inspect
}
Game_Card
.
new
(
@card
)
end
if
@position
if
@position
==
:"face-up"
if
card
.
position
!=
:attack
and
(
6
..
10
).
include?
(
@to_pos
||
@from_pos
)
#里侧表示的怪兽
...
...
@@ -169,15 +144,27 @@ class Action
card
.
position
=
@position
end
end
if
@to_pos
if
@to_pos
.
is_a?
Integer
if
from_pos
if
from_field
==
player_field
.
field
from_field
[
from_pos
]
=
nil
else
from_field
.
delete_at
from_pos
end
end
case
@to_pos
when
0
..
10
to_field
[
@to_pos
]
=
card
elsif
@to_pos
==
:hand
or
@to_pos
==
:deck
to_field
<<
card
else
when
:hand
,
:deck
,
:decktop
,
:extra
,
:graveyard
,
:removed
to_field
.
push
card
when
:deckbottom
to_field
.
unshift
card
else
$log
.
error
(
'移动操作3'
){
'错误的to_pos'
+
self
.
inspect
}
end
end
super
end
end
...
...
@@ -249,6 +236,7 @@ class Action
card
.
card
=
@card
card
else
$log
.
warn
(
'转移控制权'
){
'似乎凭空产生了卡片'
+
self
.
inspect
}
Game_Card
.
new
(
@card
)
end
...
...
@@ -291,7 +279,7 @@ class Action
class
Draw
<
Move
def
initialize
(
from_player
=
true
,
msg
=
nil
)
@from_player
=
from_player
super
(
from_player
,
:deck
,
:hand
,
:deck
,
msg
,
:set
)
super
(
from_player
,
:deck
top
,
:hand
,
nil
,
msg
,
:set
)
end
end
class
Counter
<
Action
...
...
@@ -304,7 +292,7 @@ class Action
end
def
run
super
player_field
.
hand
+=
player_field
.
deck
.
pop
(
@count
)
player_field
.
hand
.
concat
player_field
.
deck
.
pop
(
@count
)
end
end
class
MultiMove
<
Action
...
...
@@ -491,10 +479,32 @@ class Action
end
end
class
MultiShow
<
Action
def
initialize
(
from_player
,
cards
)
def
initialize
(
from_player
,
from_pos
=
nil
,
cards
)
super
(
from_player
,
nil
)
@from_pos
=
from_pos
@cards
=
cards
end
def
run
return
if
@cards
[
0
].
is_a?
Game_Card
#本地消息,不处理
case
@from_pos
when
:hand
if
player_field
.
hand
.
size
>
@cards
.
size
player_field
.
hand
.
pop
(
player_field
.
hand
.
size
-
@cards
.
size
)
end
@cards
.
each_with_index
do
|
card
,
index
|
if
player_field
.
hand
[
index
]
player_field
.
hand
[
index
].
card
=
card
else
player_field
.
hand
[
index
]
=
Game_Card
.
new
card
end
end
when
71
..
130
cards
=
@cards
.
to_enum
player_field
.
deck
[
@from_pos
-
71
,
@cards
.
size
].
each
do
|
game_card
|
game_card
.
card
=
cards
.
next
end
end
end
end
class
EffectActivate
<
Move
def
initialize
(
from_player
,
from_pos
,
card
)
...
...
@@ -615,6 +625,46 @@ class Action
end
end
end
class
Note
<
Action
def
initialize
(
from_player
,
from_pos
,
card
,
note
)
super
(
from_player
)
@from_pos
=
from_pos
@card
=
card
@note
=
note
end
def
run
card
=
if
@card
.
is_a?
Game_Card
@card
else
if
player_field
.
field
[
@from_pos
]
player_field
.
field
[
@from_pos
].
card
=
@card
else
$log
.
warn
(
'指示物操作'
){
'似乎凭空产生了卡片'
+
self
.
inspect
}
player_field
.
field
[
@from_pos
]
=
Game_Card
.
new
(
@card
)
player_field
.
field
[
@from_pos
].
position
=
:attack
end
player_field
.
field
[
@from_pos
]
end
card
.
note
=
@note
end
end
class
Token
<
SpecialSummon
def
initialize
(
from_player
,
to_pos
,
card
,
position
=
:defense
)
super
(
from_player
,
nil
,
to_pos
,
card
)
end
end
class
MultiToken
<
SpecialSummon
def
initialize
(
from_player
,
num
,
card
,
position
=
:attack
)
super
(
from_player
,
nil
,
nil
,
card
)
@num
=
num
end
def
run
@num
.
times
do
@to_pos
=
player_field
.
field
[
6
..
10
].
index
(
nil
)
+
6
super
end
end
end
class
Add
<
Action
def
initialize
(
from_player
,
card
)
super
(
from_player
)
...
...
lib/card.rb
View file @
3bd44e28
...
...
@@ -47,6 +47,7 @@ class Card
def
new
(
id
)
find
(
id
)
end
def
load_from_ycff3
(
db
=
"E:/game/yu-gi-oh/YGODATA/YGODAT.mdb"
)
require
'win32ole'
conn
=
WIN32OLE
.
new
(
'ADODB.Connection'
)
...
...
@@ -148,7 +149,6 @@ class Card
@token
=
hash
[
'token'
]
Card
.
cache
[
@id
]
=
self
end
def
create_image
@image
||=
Surface
.
load
(
"graphics/field/card.jpg"
).
display_format
...
...
@@ -185,9 +185,9 @@ class Card
def
token?
@token
end
def
inspect
"[
#{
card_type
}
][
#{
name
}
]"
end
#
def inspect
#
"[#{card_type}][#{name}]"
#
end
Unknown
=
Card
.
new
(
'id'
=>
0
,
'number'
=>
:"00000000"
,
'name'
=>
""
,
'lore'
=>
''
,
'card_type'
=>
:
通常怪兽
,
'stats'
=>
""
,
'archettypes'
=>
""
,
'mediums'
=>
""
)
Unknown
.
instance_eval
{
@image
=
CardBack
;
@image_small
=
CardBack_Small
}
end
\ No newline at end of file
lib/game_card.rb
View file @
3bd44e28
#encoding: UTF-8
class
Game_Card
attr_accessor
:card
,
:position
,
:counters
attr_accessor
:card
,
:position
,
:counters
,
:note
attr_writer
:atk
,
:def
@@count
=
0
def
initialize
(
card
=
nil
)
...
...
lib/iduel/action.rb
View file @
3bd44e28
#encoding: UTF-8
#这个文件iduel和nbx相同,编辑时推荐使用软/硬链接来保持一致
class
Action
CardFilter
=
/(
(?:<)?(?:\[.*?\])?\[(?:.*?)\].*?(?:>)
?|一张怪兽卡|一张魔\/陷卡|一张卡|\?\?)/
PosFilter
=
/((?:手卡|手牌|场上|魔陷区|怪兽区|墓地|额外牌堆|除外区|卡组|卡组顶端|\(\d+\)){1,2})/
CardFilter
=
/(
<?\[?Token[ \\\d]*\]?>?|<?(?:\[.*?\])?\[(?:.*?)\][ \d]*>
?|一张怪兽卡|一张魔\/陷卡|一张卡|\?\?)/
PosFilter
=
/((?:手卡|手牌|场上|魔陷区|怪兽区|墓地|
墓地\|,,,,,\|\*\:\d+张\:\*|
额外牌堆|除外区|卡组|卡组顶端|\(\d+\)){1,2})/
PositionFilter
=
/(表攻|表守|里守|攻击表示|防守表示|里侧表示|背面守备表示)/
PhaseFilter
=
/(抽卡`阶段|准备`阶段|主`阶段1|战斗`阶段|主`阶段2|结束`阶段)/
CountersFilter
=
/(?:\()?(\d+)?(?:\))?/
...
...
@@ -25,15 +25,19 @@ class Action
:extra
when
"除外区"
:removed
when
"卡组顶端"
,
"卡组"
when
"卡组顶端"
:decktop
when
"卡组"
:deck
end
end
end
def
self
.
parse_card
(
card
)
if
index
=
card
.
rindex
(
"["
)
if
card
[
'Token'
]
@token
||=
Card
.
new
(
'name'
=>
:Token
,
'id'
=>-
1
,
'token'
=>
true
,
'number'
=>
:"00000000"
,
'card_type'
=>
:
通常怪兽
,
'stats'
=>
""
,
'archettypes'
=>
""
,
'mediums'
=>
""
,
'lore'
=>
"这张卡作为衍生物使用。"
)
elsif
index
=
card
.
rindex
(
'['
)
index
+=
1
name
=
card
[
index
,
card
.
rindex
(
"]"
)
-
index
].
to_sym
name
=
card
[
index
,
card
.
rindex
(
']'
)
-
index
].
to_sym
Card
.
find
(
name
)
else
Card
.
find
(
nil
)
...
...
@@ -209,8 +213,6 @@ class Action
Side
.
new
from_player
when
"卡组洗切"
,
"切洗卡组"
Shuffle
.
new
from_player
when
"查看卡组"
ViewDeck
.
new
from_player
when
"要连锁吗?"
ActivateAsk
.
new
from_player
when
"我要连锁!"
...
...
@@ -218,9 +220,11 @@ class Action
when
"请继续吧~"
ActivateAnswer
.
new
from_player
,
false
when
"将顶牌放回卡组底部"
ReturnToDeckBottom
.
new
(
from_player
,
:deck
)
ReturnToDeckBottom
.
new
(
from_player
,
:deck
top
)
when
/抽取\((\d+)\)张卡/
MultiDraw
.
new
from_player
,
$1
.
to_i
when
/己方卡组第(\d+)张加入手卡/
ReturnToHand
.
new
(
from_player
,
$1
.
to_i
+
71
,
nil
)
when
/\[\d+年\d+月\d+日禁卡表\](?:<(.+)> )?先攻/
FirstToGo
.
new
from_player
,
$1
when
/\[\d+年\d+月\d+日禁卡表\](?:<(.+)> )?后攻/
...
...
@@ -229,6 +233,12 @@ class Action
Dice
.
new
from_player
,
$2
.
to_i
,
$1
when
/(.*)抛硬币,结果为(.+)/
Coin
.
new
from_player
,
$2
==
"正面"
,
$1
when
"查看卡组"
ViewDeck
.
new
from_player
when
/查看卡组上方(\d+)张卡/
ViewDeck
.
new
from_player
,
$1
.
to_i
when
/刚才抽到的卡是:
#{
CardFilter
}
/
Show
.
new
(
from_player
,
:handtop
,
parse_card
(
$1
))
when
/从
#{
PosFilter
}
~发动
#{
CardFilter
}#{
PosFilter
}
/
Activate
.
new
from_player
,
parse_pos
(
$1
),
parse_pos
(
$3
),
parse_card
(
$2
)
when
/从
#{
PosFilter
}
~召唤
#{
CardFilter
}#{
PosFilter
}
/
...
...
@@ -244,15 +254,23 @@ class Action
when
/随机将一张卡从手卡\((\d+\))~放回卡组顶端/
ReturnToDeck
.
new
(
from_player
,
$1
.
to_i
+
10
,
nil
)
when
/随机舍弃~手卡~
#{
CardFilter
}
/
Discard
.
new
(
from_player
,
:hand
,
parse_card
(
$1
))
Discard
.
new
(
from_player
,
:hand
random
,
parse_card
(
$1
))
when
/随机将手卡的
#{
CardFilter
}
从游戏中除外/
Remove
.
new
from_player
,
:hand
,
parse_card
(
$1
)
Remove
.
new
from_player
,
:hand
random
,
parse_card
(
$1
)
when
/随机显示一张手卡为:
#{
CardFilter
}
/
Show
.
new
(
from_player
,
:hand
,
parse_card
(
$1
))
Show
.
new
(
from_player
,
:hand
random
,
parse_card
(
$1
))
when
/第(\d+)张手牌为:
#{
CardFilter
}
/
Show
.
new
(
from_player
,
$1
.
to_i
+
10
,
parse_card
(
$2
))
when
/\|--\+>手卡:(?:\[
#{
CardFilter
}
\])*/
MultiShow
.
new
from_player
,
$&
.
scan
(
CardFilter
).
collect
{
|
matched
|
parse_card
(
matched
.
first
)}
MultiShow
.
new
from_player
,
:hand
,
$&
.
scan
(
CardFilter
).
collect
{
|
matched
|
parse_card
(
matched
.
first
)}
when
/^(?:(\d+)
#{
CardFilter
}
\n?)+$/
from_pos
=
71
cards
=
$&
.
lines
.
collect
do
|
line
|
line
=~
/(\d+)
#{
CardFilter
}
/
from_pos
||=
$1
.
to_i
+
71
parse_card
(
$2
)
end
MultiShow
.
new
from_player
,
from_pos
,
cards
when
/将
#{
PosFilter
}
的
#{
CardFilter
}
从游戏中除外/
Remove
.
new
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
)
when
/
#{
CardFilter
}
从
#{
PosFilter
}
~放回卡组顶端/
...
...
@@ -263,7 +281,7 @@ class Action
ReturnToExtra
.
new
from_player
,
parse_pos
(
$2
),
parse_card
(
$1
)
when
/从
#{
PosFilter
}
取
#{
CardFilter
}
加入手卡/
ReturnToHand
.
new
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
)
when
/(?:己方)?
#{
PosFilter
}
.*?
#{
CardFilter
}
效果发(?:\~)?动/
when
/(?:己方)?
#{
PosFilter
}
.*?
#{
CardFilter
}
(?:选择(.*)为对象>)?
效果发(?:\~)?动/
EffectActivate
.
new
(
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
))
when
/
#{
PosFilter
}#{
CardFilter
}
(?:变|改)为
#{
PositionFilter
}
/
ChangePosition
.
new
(
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
),
parse_position
(
$3
))
...
...
@@ -304,8 +322,8 @@ class Action
MultiMove
.
new
(
from_player
,
from_pos
,
to_pos
,
cards
)
when
/己方
#{
PosFilter
}#{
CardFilter
}
送入对手墓地/
SendToOpponentGraveyard
.
new
(
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
))
when
/
#{
PosFilter
}#{
CardFilter
}
选择(我方)?-
#{
PosFilter
}
-
#{
CardFilter
}
为效果对象/
Target
.
new
(
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
),
$3
?
true
:
false
,
parse_pos
(
$4
),
parse_card
(
$
5
))
when
/
#{
PosFilter
}#{
CardFilter
}
选择(我方)?-
#{
PosFilter
}
-
(?:
#{
PositionFilter
}
\|)?
#{
CardFilter
}
为效果对象/
Target
.
new
(
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
),
$3
?
true
:
false
,
parse_pos
(
$4
),
parse_card
(
$
6
))
when
/
#{
PhaseFilter
}
/
ChangePhase
.
new
(
from_player
,
parse_phase
(
$1
))
when
/LP(损失|回复|变成)<(-?\d+)>/
...
...
@@ -316,6 +334,12 @@ class Action
Attack
.
new
(
from_player
,
nil
,
nil
,
parse_card
(
$1
))
when
/(?:清空)?
#{
PosFilter
}#{
CardFilter
}
的指示物(?:加一|减一)?,现为
#{
CountersFilter
}
/
Counter
.
new
(
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
),
:become
,
parse_counters
(
$3
))
when
/己方
#{
PosFilter
}#{
CardFilter
}
修改备注为:(.*)/
Note
.
new
(
from_player
,
parse_pos
(
$1
),
parse_card
(
$2
),
$3
)
when
/~特殊召唤
#{
CardFilter
}#{
PosFilter
}
呈
#{
PositionFilter
}
/
Token
.
new
(
from_player
,
parse_pos
(
$2
),
parse_card
(
$1
),
parse_position
(
$3
))
when
/~特殊召唤(\d+)个
#{
CardFilter
}
呈
#{
PositionFilter
}
/
MultiToken
.
new
(
from_player
,
$1
.
to_i
,
parse_card
(
$2
),
parse_position
(
$3
))
when
/添加一张手牌
#{
CardFilter
}
/
Add
.
new
(
from_player
,
parse_card
(
$1
))
when
/将
#{
PosFilter
}#{
CardFilter
}
撕掉!/
...
...
@@ -328,8 +352,10 @@ class Action
end
result
.
id
=
id
result
when
/^(
#{
CardFilter
}
\n)*$/
MultiShow
.
new
from_player
,
$&
.
lines
.
collect
{
|
card
|
parse_card
(
card
)}
when
/系统消息:.+?\(\d+\)已经退出房间/
Reset
.
new
from_player
when
/^(
#{
CardFilter
}
\n?)*$/
MultiShow
.
new
from_player
,
nil
,
$&
.
lines
.
collect
{
|
card
|
parse_card
(
card
)}
else
Unknown
.
new
str
end
...
...
lib/iduel/replay.rb
View file @
3bd44e28
...
...
@@ -17,7 +17,7 @@ class Replay
file
.
set_encoding
"GBK"
,
"UTF-8"
,
:invalid
=>
:replace
,
:undef
=>
:replace
result
=
self
.
new
(
file
)
contents
=
file
.
read
.
strip
if
contents
[
0
,
7
]
==
"<table>"
if
contents
[
'<td width="75%" valign="top">'
]
result
.
player1
=
User
.
new
(
$2
.
to_i
,
$1
)
if
contents
=~
HTML_Player_Filter
result
.
player2
=
User
.
new
(
$2
.
to_i
,
$1
)
if
contents
=~
HTML_Opponent_Filter
from_players
=
contents
.
scan
(
Regexp
.
union
(
HTML_Player_Filter
,
HTML_Opponent_Filter
)).
collect
{
|
matched
|
matched
[
0
]
?
true
:
false
}
#匹配player成功matched前两位有值,opponent成功后两位有值,["尸体", "100015", nil, nil], il, nil], [nil, nil, "游戏的徒弟", "288436"]
...
...
lib/nbx/action.rb
View file @
3bd44e28
...
...
@@ -435,7 +435,7 @@ class Action
case
from_pos
when
0
..
10
#场上
when
Integer
when
11
..
70
"第
#{
@from_pos
-
10
}
张手牌为:
#{
@card
.
escape
}
"
end
end
...
...
lib/scene_replay.rb
View file @
3bd44e28
...
...
@@ -12,7 +12,6 @@ class Scene_Replay < Scene_Watch
def
save_replay
end
def
update
#p Time.now
if
@count
and
@count
>=
60
event
=
@replay
.
get
if
event
...
...
lib/window_field.rb
View file @
3bd44e28
...
...
@@ -20,6 +20,7 @@ class Window_Field < Window
#Card_Size = [Card::CardBack.w, Card::CardBack.h]
Card_Size
=
[
54
,
81
]
attr_accessor
:action_window
WLH
=
16
def
initialize
(
x
,
y
,
field
,
player
=
true
)
@border
=
Surface
.
load
(
'graphics/field/border.png'
)
@border_horizontal
=
Surface
.
load
(
'graphics/field/border_horizontal.png'
)
#@border.transform_surface(0x66000000,90,1,1,Surface::TRANSFORM_SAFE|Surface::TRANSFORM_AA)#FUCK!
...
...
@@ -96,20 +97,33 @@ class Window_Field < Window
@contents
.
put
(
@border
,
x
-
1
,
y
-
1
)
if
status
==
1
end
if
(
6
..
10
).
include?
(
index
)
and
@cards
[
index
].
position
!=
:set
spacing
,
height
=
@font
.
text_size
(
'/'
)
spacing
=
@font
.
text_size
(
'/'
)[
0
]
atkdef_x
=
x
+
(
Card_Size
[
0
]
-
spacing
)
/
2
atkdef_y
=
y
+
Card_Size
[
1
]
-
height
@font
.
draw_blended_utf8
(
@contents
,
'/'
,
atkdef_x
,
atkdef_y
,
0xFF
,
0xFF
,
0xFF
)
@font
.
draw_blended_utf8
(
@contents
,
@cards
[
index
].
atk
.
to_s
,
atkdef_x
-
@font
.
text_size
(
@cards
[
index
].
atk
.
to_s
)[
0
],
atkdef_y
,
0xFF
,
0xFF
,
0xFF
)
@font
.
draw_blended_utf8
(
@contents
,
@cards
[
index
].
def
.
to_s
,
atkdef_x
+
spacing
,
atkdef_y
,
0xFF
,
0xFF
,
0xFF
)
atkdef_y
=
y
+
Card_Size
[
1
]
-
WLH
draw_shaded_text
(
'/'
,
atkdef_x
,
atkdef_y
)
draw_shaded_text
(
@cards
[
index
].
atk
.
to_s
,
atkdef_x
-
@font
.
text_size
(
@cards
[
index
].
atk
.
to_s
)[
0
],
atkdef_y
)
draw_shaded_text
(
@cards
[
index
].
def
.
to_s
,
atkdef_x
+
spacing
,
atkdef_y
)
#@font.draw_blended_utf8(@contents, '/' , atkdef_x, atkdef_y, 0xFF, 0xFF, 0xFF)
#@font.draw_blended_utf8(@contents, @cards[index].atk.to_s , atkdef_x - @font.text_size(@cards[index].atk.to_s)[0], atkdef_y, 0xFF, 0xFF, 0xFF)
#@font.draw_blended_utf8(@contents, @cards[index].def.to_s , atkdef_x + spacing, atkdef_y, 0xFF, 0xFF, 0xFF)
end
if
@cards
[
index
].
note
&&
!
@cards
[
index
].
note
.
empty?
note_x
=
x
note_y
=
y
+
Card_Size
[
1
]
-
WLH
*
3
draw_shaded_text
(
@cards
[
index
].
note
,
note_x
,
note_y
)
end
if
@cards
[
index
].
counters
!=
0
height
||=
@font
.
text_size
(
'/'
)[
1
]
#不太规范,凑合能用
counters_x
=
x
counters_y
=
y
+
Card_Size
[
1
]
-
height
*
2
@font
.
draw_blended_utf8
(
@contents
,
@cards
[
index
].
counters
.
to_s
,
counters_x
,
counters_y
,
0xFF
,
0xFF
,
0xFF
)
@@counter
||=
Surface
.
load
(
"graphics/field/counter.png"
)
@contents
.
put
@@counter
,
counters_x
,
counters_y
draw_shaded_text
(
" ×
#{
@cards
[
index
].
counters
}
"
,
counters_x
+
16
,
counters_y
)
end
end
def
draw_shaded_text
(
text
,
x
,
y
,
size
=
1
,
font
=
@font
)
@font
.
draw_blended_utf8
(
@contents
,
text
,
x
+
size
,
y
+
size
,
0x00
,
0x00
,
0x00
)
@font
.
draw_blended_utf8
(
@contents
,
text
,
x
,
y
,
0xFF
,
0xFF
,
0xFF
)
end
def
item_rect
(
index
)
@items
[
index
]
...
...
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