Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro-core
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
nanahira
ygopro-core
Commits
80cca853
Commit
80cca853
authored
Jun 17, 2024
by
nanahira
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'patch-uint8' of github.com:Fluorohydride/ygopro-core into develop
parents
df8dc6fc
d08afe0a
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
96 additions
and
84 deletions
+96
-84
common.h
common.h
+1
-1
field.h
field.h
+2
-1
libgroup.cpp
libgroup.cpp
+9
-8
operations.cpp
operations.cpp
+4
-4
playerop.cpp
playerop.cpp
+77
-67
processor.cpp
processor.cpp
+3
-3
No files found.
common.h
View file @
80cca853
...
...
@@ -31,7 +31,7 @@ typedef signed char int8;
#define TRUE 1
#define FALSE 0
#define SIZE_MESSAGE_BUFFER 0x2000
#define SIZE_RETURN_VALUE
128
#define SIZE_RETURN_VALUE
512
#define PROCESSOR_BUFFER_LEN 0x0fffffff
#define PROCESSOR_FLAG 0xf0000000
...
...
field.h
View file @
80cca853
...
...
@@ -160,7 +160,7 @@ constexpr int SIZE_SVALUE = SIZE_RETURN_VALUE / 2;
constexpr
int
SIZE_IVALUE
=
SIZE_RETURN_VALUE
/
4
;
constexpr
int
SIZE_LVALUE
=
SIZE_RETURN_VALUE
/
8
;
union
return_value
{
int8
bvalue
[
SIZE_RETURN_VALUE
];
u
int8
bvalue
[
SIZE_RETURN_VALUE
];
int16
svalue
[
SIZE_SVALUE
];
int32
ivalue
[
SIZE_IVALUE
];
int64
lvalue
[
SIZE_LVALUE
];
...
...
@@ -630,6 +630,7 @@ public:
int32
toss_dice
(
uint16
step
,
effect
*
reason_effect
,
uint8
reason_player
,
uint8
playerid
,
uint8
count1
,
uint8
count2
);
int32
rock_paper_scissors
(
uint16
step
,
uint8
repeat
);
bool
check_response
(
int32
vector_size
,
int32
min_len
,
int32
max_len
)
const
;
int32
select_battle_command
(
uint16
step
,
uint8
playerid
);
int32
select_idle_command
(
uint16
step
,
uint8
playerid
);
int32
select_effect_yes_no
(
uint16
step
,
uint8
playerid
,
uint32
description
,
card
*
pcard
);
...
...
libgroup.cpp
View file @
80cca853
...
...
@@ -328,14 +328,15 @@ int32 scriptlib::group_select_unselect(lua_State *L) {
pduel
->
game_field
->
add_process
(
PROCESSOR_SELECT_UNSELECT_CARD
,
0
,
0
,
0
,
playerid
+
(
cancelable
<<
16
),
min
+
(
max
<<
16
),
finishable
);
return
lua_yieldk
(
L
,
0
,
(
lua_KContext
)
pduel
,
[](
lua_State
*
L
,
int32
status
,
lua_KContext
ctx
)
{
duel
*
pduel
=
(
duel
*
)
ctx
;
if
(
pduel
->
game_field
->
returns
.
b
value
[
0
]
==
-
1
)
{
if
(
pduel
->
game_field
->
returns
.
i
value
[
0
]
==
-
1
)
{
lua_pushnil
(
L
);
}
else
{
card
*
pcard
;
if
((
size_t
)
pduel
->
game_field
->
returns
.
bvalue
[
1
]
<
pduel
->
game_field
->
core
.
select_cards
.
size
())
pcard
=
pduel
->
game_field
->
core
.
select_cards
[
pduel
->
game_field
->
returns
.
bvalue
[
1
]];
const
int32
index
=
pduel
->
game_field
->
returns
.
bvalue
[
1
];
if
(
index
<
(
int32
)
pduel
->
game_field
->
core
.
select_cards
.
size
())
pcard
=
pduel
->
game_field
->
core
.
select_cards
[
index
];
else
pcard
=
pduel
->
game_field
->
core
.
unselect_cards
[
pduel
->
game_field
->
returns
.
bvalue
[
1
]
-
pduel
->
game_field
->
core
.
select_cards
.
size
()];
pcard
=
pduel
->
game_field
->
core
.
unselect_cards
[
index
-
pduel
->
game_field
->
core
.
select_cards
.
size
()];
interpreter
::
card2value
(
L
,
pcard
);
}
return
1
;
...
...
@@ -401,7 +402,7 @@ int32 scriptlib::group_cancelable_select(lua_State *L) {
pduel
->
game_field
->
add_process
(
PROCESSOR_SELECT_CARD
,
0
,
0
,
0
,
playerid
+
0x10000
,
min
+
(
max
<<
16
));
return
lua_yieldk
(
L
,
0
,
(
lua_KContext
)
pduel
,
[](
lua_State
*
L
,
int32
status
,
lua_KContext
ctx
)
{
duel
*
pduel
=
(
duel
*
)
ctx
;
if
(
pduel
->
game_field
->
returns
.
b
value
[
0
]
==
-
1
)
{
if
(
pduel
->
game_field
->
returns
.
i
value
[
0
]
==
-
1
)
{
lua_pushnil
(
L
);
}
else
{
group
*
pgroup
=
pduel
->
new_group
();
...
...
@@ -493,8 +494,8 @@ int32 scriptlib::group_select_with_sum_equal(lua_State *L) {
min
=
0
;
if
(
max
<
min
)
max
=
min
;
if
(
max
>
127
)
return
luaL_error
(
L
,
"Parameter
\"
max
\"
exceeded
127
."
);
if
(
max
>
UINT8_MAX
)
return
luaL_error
(
L
,
"Parameter
\"
max
\"
exceeded
255
."
);
int32
extraargs
=
lua_gettop
(
L
)
-
6
;
pduel
->
game_field
->
core
.
select_cards
.
assign
(
pgroup
->
container
.
begin
(),
pgroup
->
container
.
end
());
for
(
auto
&
pcard
:
pduel
->
game_field
->
core
.
must_select_cards
)
{
...
...
@@ -512,7 +513,7 @@ int32 scriptlib::group_select_with_sum_equal(lua_State *L) {
interpreter
::
group2value
(
L
,
empty_group
);
return
1
;
}
pduel
->
game_field
->
add_process
(
PROCESSOR_SELECT_SUM
,
0
,
0
,
0
,
acc
,
playerid
+
(
min
<<
16
)
+
(
max
<<
24
)
);
pduel
->
game_field
->
add_process
(
PROCESSOR_SELECT_SUM
,
0
,
0
,
0
,
acc
,
playerid
,
min
,
max
);
return
lua_yieldk
(
L
,
0
,
(
lua_KContext
)
pduel
,
[](
lua_State
*
L
,
int32
status
,
lua_KContext
ctx
)
{
duel
*
pduel
=
(
duel
*
)
ctx
;
group
*
pgroup
=
pduel
->
new_group
();
...
...
operations.cpp
View file @
80cca853
...
...
@@ -5589,7 +5589,7 @@ int32 field::select_synchro_material(int16 step, uint8 playerid, card* pcard, in
pduel
->
write_buffer8
(
HINT_SELECTMSG
);
pduel
->
write_buffer8
(
playerid
);
pduel
->
write_buffer32
(
512
);
add_process
(
PROCESSOR_SELECT_SUM
,
0
,
0
,
0
,
lv
,
playerid
+
(
min
<<
16
)
+
(
max
<<
24
)
);
add_process
(
PROCESSOR_SELECT_SUM
,
0
,
0
,
0
,
lv
,
playerid
,
min
,
max
);
return
FALSE
;
}
case
8
:
{
...
...
@@ -5644,7 +5644,7 @@ int32 field::select_synchro_material(int16 step, uint8 playerid, card* pcard, in
pduel
->
write_buffer8
(
HINT_SELECTMSG
);
pduel
->
write_buffer8
(
playerid
);
pduel
->
write_buffer32
(
512
);
add_process
(
PROCESSOR_SELECT_SUM
,
0
,
0
,
0
,
lv
,
playerid
+
(
min
<<
16
)
+
(
max
<<
24
)
);
add_process
(
PROCESSOR_SELECT_SUM
,
0
,
0
,
0
,
lv
,
playerid
,
min
,
max
);
core
.
units
.
begin
()
->
step
=
7
;
return
FALSE
;
}
...
...
@@ -6173,7 +6173,7 @@ int32 field::select_release_cards(int16 step, uint8 playerid, uint8 cancelable,
}
case
7
:
{
core
.
select_cards
.
clear
();
returns
.
bvalue
[
0
]
=
(
int8
)
core
.
operated_set
.
size
();
returns
.
bvalue
[
0
]
=
(
u
int8
)
core
.
operated_set
.
size
();
int32
i
=
0
;
for
(
auto
cit
=
core
.
operated_set
.
begin
();
cit
!=
core
.
operated_set
.
end
();
++
cit
,
++
i
)
{
core
.
select_cards
.
push_back
(
*
cit
);
...
...
@@ -6374,7 +6374,7 @@ int32 field::select_tribute_cards(int16 step, card* target, uint8 playerid, uint
}
case
9
:
{
core
.
select_cards
.
clear
();
returns
.
bvalue
[
0
]
=
(
int8
)
core
.
operated_set
.
size
();
returns
.
bvalue
[
0
]
=
(
u
int8
)
core
.
operated_set
.
size
();
int32
i
=
0
;
for
(
auto
cit
=
core
.
operated_set
.
begin
();
cit
!=
core
.
operated_set
.
end
();
++
cit
,
++
i
)
{
core
.
select_cards
.
push_back
(
*
cit
);
...
...
playerop.cpp
View file @
80cca853
This diff is collapsed.
Click to expand it.
processor.cpp
View file @
80cca853
...
...
@@ -175,7 +175,7 @@ uint32 field::process() {
}
}
case
PROCESSOR_SELECT_SUM
:
{
if
(
select_with_sum_limit
(
it
->
step
,
it
->
arg2
&
0xffff
,
it
->
arg1
,
(
it
->
arg2
>>
16
)
&
0xff
,
(
it
->
arg2
>>
24
)
&
0xff
))
{
if
(
select_with_sum_limit
(
it
->
step
,
it
->
arg2
,
it
->
arg1
,
it
->
arg3
,
it
->
arg4
))
{
core
.
units
.
pop_front
();
return
pduel
->
message_buffer
.
size
();
}
else
{
...
...
@@ -674,12 +674,12 @@ uint32 field::process() {
add_process
(
PROCESSOR_SORT_CARD
,
0
,
0
,
0
,
sort_player
,
0
);
++
it
->
step
;
}
else
{
if
(
returns
.
bvalue
[
0
]
!=
-
1
)
{
if
(
returns
.
bvalue
[
0
]
!=
0xff
)
{
card
*
tc
[
16
];
for
(
i
=
0
;
i
<
count
;
++
i
)
player
[
target_player
].
list_main
.
pop_back
();
for
(
i
=
0
;
i
<
count
;
++
i
)
tc
[
(
uint8
)
returns
.
bvalue
[
i
]]
=
core
.
select_cards
[
i
];
tc
[
returns
.
bvalue
[
i
]]
=
core
.
select_cards
[
i
];
for
(
i
=
0
;
i
<
count
;
++
i
)
{
player
[
target_player
].
list_main
.
push_back
(
tc
[
count
-
i
-
1
]);
tc
[
count
-
i
-
1
]
->
current
.
sequence
=
(
uint8
)
player
[
target_player
].
list_main
.
size
()
-
1
;
...
...
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