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
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
MyCard
ygopro-core
Commits
cf32e53e
Commit
cf32e53e
authored
Aug 12, 2018
by
DailyShana
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update effect label object
parent
c6f757aa
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
34 additions
and
14 deletions
+34
-14
effect.cpp
effect.cpp
+3
-0
effect.h
effect.h
+2
-1
field.cpp
field.cpp
+1
-1
interpreter.cpp
interpreter.cpp
+8
-0
interpreter.h
interpreter.h
+1
-0
libeffect.cpp
libeffect.cpp
+19
-12
No files found.
effect.cpp
View file @
cf32e53e
...
@@ -672,6 +672,9 @@ int32 effect::check_value_condition(uint32 extraargs) {
...
@@ -672,6 +672,9 @@ int32 effect::check_value_condition(uint32 extraargs) {
return
(
int32
)
value
;
return
(
int32
)
value
;
}
}
}
}
void
*
effect
::
get_label_object
()
{
return
pduel
->
lua
->
get_ref_object
(
label_object
);
}
int32
effect
::
get_speed
()
{
int32
effect
::
get_speed
()
{
if
(
!
(
type
&
EFFECT_TYPE_ACTIONS
))
if
(
!
(
type
&
EFFECT_TYPE_ACTIONS
))
return
0
;
return
0
;
...
...
effect.h
View file @
cf32e53e
...
@@ -55,7 +55,7 @@ public:
...
@@ -55,7 +55,7 @@ public:
card
*
active_handler
;
card
*
active_handler
;
uint16
status
;
uint16
status
;
uint32
label
;
uint32
label
;
void
*
label_object
;
int32
label_object
;
int32
condition
;
int32
condition
;
int32
cost
;
int32
cost
;
int32
target
;
int32
target
;
...
@@ -90,6 +90,7 @@ public:
...
@@ -90,6 +90,7 @@ public:
void
get_value
(
card
*
pcard
,
uint32
extraargs
,
std
::
vector
<
int32
>*
result
);
void
get_value
(
card
*
pcard
,
uint32
extraargs
,
std
::
vector
<
int32
>*
result
);
void
get_value
(
effect
*
peffect
,
uint32
extraargs
,
std
::
vector
<
int32
>*
result
);
void
get_value
(
effect
*
peffect
,
uint32
extraargs
,
std
::
vector
<
int32
>*
result
);
int32
check_value_condition
(
uint32
extraargs
=
0
);
int32
check_value_condition
(
uint32
extraargs
=
0
);
void
*
get_label_object
();
int32
get_speed
();
int32
get_speed
();
effect
*
clone
();
effect
*
clone
();
card
*
get_owner
()
const
;
card
*
get_owner
()
const
;
...
...
field.cpp
View file @
cf32e53e
...
@@ -2028,7 +2028,7 @@ int32 field::adjust_grant_effect() {
...
@@ -2028,7 +2028,7 @@ int32 field::adjust_grant_effect() {
}
}
for
(
auto
cit
=
add_set
.
begin
();
cit
!=
add_set
.
end
();
++
cit
)
{
for
(
auto
cit
=
add_set
.
begin
();
cit
!=
add_set
.
end
();
++
cit
)
{
card
*
pcard
=
*
cit
;
card
*
pcard
=
*
cit
;
effect
*
geffect
=
(
effect
*
)
peffect
->
label_object
;
effect
*
geffect
=
(
effect
*
)
peffect
->
get_label_object
()
;
effect
*
ceffect
=
geffect
->
clone
();
effect
*
ceffect
=
geffect
->
clone
();
ceffect
->
owner
=
pcard
;
ceffect
->
owner
=
pcard
;
pcard
->
add_effect
(
ceffect
);
pcard
->
add_effect
(
ceffect
);
...
...
interpreter.cpp
View file @
cf32e53e
...
@@ -1175,6 +1175,14 @@ int32 interpreter::clone_function_ref(int32 func_ref) {
...
@@ -1175,6 +1175,14 @@ int32 interpreter::clone_function_ref(int32 func_ref) {
int32
ref
=
luaL_ref
(
current_state
,
LUA_REGISTRYINDEX
);
int32
ref
=
luaL_ref
(
current_state
,
LUA_REGISTRYINDEX
);
return
ref
;
return
ref
;
}
}
void
*
interpreter
::
get_ref_object
(
int32
ref_handler
)
{
if
(
ref_handler
==
0
)
return
nullptr
;
lua_rawgeti
(
current_state
,
LUA_REGISTRYINDEX
,
ref_handler
);
void
*
p
=
*
(
void
**
)
lua_touserdata
(
current_state
,
-
1
);
lua_pop
(
current_state
,
1
);
return
p
;
}
//Convert a pointer to a lua value, +1 -0
//Convert a pointer to a lua value, +1 -0
void
interpreter
::
card2value
(
lua_State
*
L
,
card
*
pcard
)
{
void
interpreter
::
card2value
(
lua_State
*
L
,
card
*
pcard
)
{
if
(
!
pcard
||
pcard
->
ref_handle
==
0
)
if
(
!
pcard
||
pcard
->
ref_handle
==
0
)
...
...
interpreter.h
View file @
cf32e53e
...
@@ -69,6 +69,7 @@ public:
...
@@ -69,6 +69,7 @@ public:
int32
get_function_value
(
int32
f
,
uint32
param_count
,
std
::
vector
<
int32
>*
result
);
int32
get_function_value
(
int32
f
,
uint32
param_count
,
std
::
vector
<
int32
>*
result
);
int32
call_coroutine
(
int32
f
,
uint32
param_count
,
uint32
*
yield_value
,
uint16
step
);
int32
call_coroutine
(
int32
f
,
uint32
param_count
,
uint32
*
yield_value
,
uint16
step
);
int32
clone_function_ref
(
int32
func_ref
);
int32
clone_function_ref
(
int32
func_ref
);
void
*
get_ref_object
(
int32
ref_handler
);
static
void
card2value
(
lua_State
*
L
,
card
*
pcard
);
static
void
card2value
(
lua_State
*
L
,
card
*
pcard
);
static
void
group2value
(
lua_State
*
L
,
group
*
pgroup
);
static
void
group2value
(
lua_State
*
L
,
group
*
pgroup
);
...
...
libeffect.cpp
View file @
cf32e53e
...
@@ -10,6 +10,7 @@
...
@@ -10,6 +10,7 @@
#include "field.h"
#include "field.h"
#include "card.h"
#include "card.h"
#include "effect.h"
#include "effect.h"
#include "group.h"
int32
scriptlib
::
effect_new
(
lua_State
*
L
)
{
int32
scriptlib
::
effect_new
(
lua_State
*
L
)
{
check_param_count
(
L
,
1
);
check_param_count
(
L
,
1
);
...
@@ -186,10 +187,17 @@ int32 scriptlib::effect_set_label_object(lua_State *L) {
...
@@ -186,10 +187,17 @@ int32 scriptlib::effect_set_label_object(lua_State *L) {
peffect
->
label_object
=
0
;
peffect
->
label_object
=
0
;
return
0
;
return
0
;
}
}
if
(
!
lua_isuserdata
(
L
,
2
))
if
(
check_param
(
L
,
PARAM_TYPE_CARD
,
2
,
TRUE
))
{
card
*
p
=
*
(
card
**
)
lua_touserdata
(
L
,
2
);
peffect
->
label_object
=
p
->
ref_handle
;
}
else
if
(
check_param
(
L
,
PARAM_TYPE_EFFECT
,
2
,
TRUE
))
{
effect
*
p
=
*
(
effect
**
)
lua_touserdata
(
L
,
2
);
peffect
->
label_object
=
p
->
ref_handle
;
}
else
if
(
check_param
(
L
,
PARAM_TYPE_GROUP
,
2
,
TRUE
))
{
group
*
p
=
*
(
group
**
)
lua_touserdata
(
L
,
2
);
peffect
->
label_object
=
p
->
ref_handle
;
}
else
luaL_error
(
L
,
"Parameter 2 should be
\"
Card
\"
or
\"
Effect
\"
or
\"
Group
\"
."
);
luaL_error
(
L
,
"Parameter 2 should be
\"
Card
\"
or
\"
Effect
\"
or
\"
Group
\"
."
);
void
*
p
=
*
(
void
**
)
lua_touserdata
(
L
,
2
);
peffect
->
label_object
=
p
;
return
0
;
return
0
;
}
}
int32
scriptlib
::
effect_set_category
(
lua_State
*
L
)
{
int32
scriptlib
::
effect_set_category
(
lua_State
*
L
)
{
...
@@ -342,15 +350,14 @@ int32 scriptlib::effect_get_label_object(lua_State *L) {
...
@@ -342,15 +350,14 @@ int32 scriptlib::effect_get_label_object(lua_State *L) {
lua_pushnil
(
L
);
lua_pushnil
(
L
);
return
1
;
return
1
;
}
}
int32
type
=
*
(
int32
*
)
peffect
->
label_object
;
lua_rawgeti
(
L
,
LUA_REGISTRYINDEX
,
peffect
->
label_object
);
if
(
type
==
1
)
if
(
lua_isuserdata
(
L
,
-
1
))
interpreter
::
card2value
(
L
,
(
card
*
)
peffect
->
label_object
);
return
1
;
else
if
(
type
==
2
)
else
{
interpreter
::
group2value
(
L
,
(
group
*
)
peffect
->
label_object
);
lua_pop
(
L
,
1
);
else
if
(
type
==
3
)
lua_pushnil
(
L
);
interpreter
::
effect2value
(
L
,
(
effect
*
)
peffect
->
label_object
);
return
1
;
else
lua_pushnil
(
L
);
}
return
1
;
}
}
int32
scriptlib
::
effect_get_category
(
lua_State
*
L
)
{
int32
scriptlib
::
effect_get_category
(
lua_State
*
L
)
{
check_param_count
(
L
,
1
);
check_param_count
(
L
,
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