Skip to content

Commit

Permalink
Moved teleport location calculations to Lua
Browse files Browse the repository at this point in the history
  • Loading branch information
Elvish-Hunter committed May 11, 2015
1 parent 1572541 commit a9ca12c
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 136 deletions.
2 changes: 2 additions & 0 deletions changelog.txt
Expand Up @@ -6,3 +6,5 @@
* Merged six [have_unit] in one in the tactical victory event
* Added check_passability=no in WIF_TELEPORT_ACTION
* Added new Lua tag [wif_store_teleport_location]
* Moved teleport location calculations to Lua
* Deleted WIF_CETL_CHECK and WIF_CALCULATE_EFFECTIVE_TELEPORT_LOCATION macros
173 changes: 37 additions & 136 deletions torneo_wif_2015.cfg
Expand Up @@ -133,134 +133,6 @@

#-----

#define WIF_CETL_CHECK OPERATOR_X OPERATOR_Y POINTX POINTY VARX VAR_Y
# WIF_CETL_CHECK -> checking location from offset if free
# (Calculating Effective Teleport Location [CETL] sub-function)

# init temp vars to basic values
[set_variable]
name=varCetlCheckX
value={POINTX}
[/set_variable]
[set_variable]
name=varCetlCheckY
value={POINTY}
[/set_variable]

# apply offsets from center to temp vars
[set_variable]
name=varCetlCheckX
add={OPERATOR_X}
[/set_variable]
[set_variable]
name=varCetlCheckY
add={OPERATOR_Y}
[/set_variable]

# verify if location is free
[if]
[have_location]
x=$varCetlCheckX
y=$varCetlCheckY
[filter]
side=1
[or]
side=2
[/or]
[/filter]
[/have_location]
[then]
# casella occupata... VARX e VAR_Y non vengono settate con questo valore perché l'unità non può apparire in una casella occupata
[/then]
[else]
# casella libera... aggiorna il nuovo valore in VARX e VAR_Y
[set_variable]
name={VARX}
to_variable=varCetlCheckX
[/set_variable]
[set_variable]
name={VAR_Y}
to_variable=varCetlCheckY
[/set_variable]
[/else]
[/if]
{CLEAR_VARIABLE varCetlCheckX}
{CLEAR_VARIABLE varCetlCheckY}
#enddef

#-----

#define WIF_CALCULATE_EFFECTIVE_TELEPORT_LOCATION POINTX POINTY VARX VAR_Y

# set default values to VARX and VAR_Y
[set_variable]
name={VARX}
value={POINTX}
[/set_variable]
[set_variable]
name={VAR_Y}
value={POINTY}
[/set_variable]

# set variable varCetl_discriminante -> used to decide the order for checking locations
[set_variable]
name=varCetl_discriminante
value={POINTX}
[/set_variable]
[if]
[variable]
name=varCetl_discriminante
less_than=20
[/variable]
[then]
# checking for free location in reverse order (to avoid nesting)
# round order (reversed) for out_magic_source_left
# checking holes locations
{WIF_CETL_CHECK (-3) (0) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (-3) (1) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (1) (-1) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (-1) (-1) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (1) (2) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (-1) (2) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (2) (0) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (-2) (0) {POINTX} {POINTY} {VARX} {VAR_Y}}
# checking for free location in reverse order (to avoid nesting)
{WIF_CETL_CHECK (1) (0) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (1) (1) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (0) (1) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (-1) (1) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (-1) (0) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (0) (-1) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (0) (0) {POINTX} {POINTY} {VARX} {VAR_Y}}
[/then]
[else]
# checking for free location in reverse order (to avoid nesting)
# round order (reversed) for out_magic_source_right
# checking holes locations
{WIF_CETL_CHECK (3) (0) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (3) (1) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (-1) (-1) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (1) (-1) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (-1) (2) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (1) (2) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (-2) (0) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (2) (0) {POINTX} {POINTY} {VARX} {VAR_Y}}
# checking for free location in reverse order (to avoid nesting)
{WIF_CETL_CHECK (-1) (0) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (-1) (1) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (0) (1) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (1) (1) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (1) (0) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (0) (-1) {POINTX} {POINTY} {VARX} {VAR_Y}}
{WIF_CETL_CHECK (0) (0) {POINTX} {POINTY} {VARX} {VAR_Y}}
[/else]
[/if]

{CLEAR_VARIABLE varCetl_discriminante}
#enddef

#-----

#define WIF_TELEPORT_ACTION X Y X2
[event]
name=moveto
Expand All @@ -282,18 +154,45 @@
[scroll_to]
x,y={X2},{Y}
[/scroll_to]
# wmlscope: start ignoring
{WIF_CALCULATE_EFFECTIVE_TELEPORT_LOCATION {X2} {Y} varTeleportEffectiveX varTeleportEffectiveY}
# wmlscope: stop ignoring

# set variable varCetl_discriminante -> used to decide the order for checking locations
[set_variable]
name=varCetl_discriminante
value={X2}
[/set_variable]
[if]
[variable]
name=varCetl_discriminante
less_than=20
[/variable]
[then]
# checking for free location in reverse order (to avoid nesting)
[wif_store_teleport_location]
x,y={X2},{Y}
offset_x=-3,-3, 1,-1, 1,-1, 2,-2, 1, 1, 0,-1,-1, 0, 0
offset_y= 0, 1,-1,-1, 2, 2, 0, 0, 0, 1, 1, 1, 0,-1, 0
variable=varTeleportEffective
[/wif_store_teleport_location]
[/then]
[else]
# checking for free location in reverse order (to avoid nesting)
[wif_store_teleport_location]
x,y={X2},{Y}
offset_x= 3, 3,-1, 1,-1, 1,-2, 2,-1,-1, 0, 1, 1, 0, 0
offset_y= 0, 1,-1,-1, 2, 2, 0, 0, 0, 1, 1, 1, 0,-1, 0
variable=varTeleportEffective
[/wif_store_teleport_location]
[/else]
[/if]

[unstore_unit]
variable=teleport
find_vacant=yes
check_passability=no
text= _ "Blink!"
red,green,blue=255,255,255
x=$varTeleportEffectiveX
y=$varTeleportEffectiveY
x=$varTeleportEffective.x
y=$varTeleportEffective.y
[/unstore_unit]

[redraw]
Expand Down Expand Up @@ -372,6 +271,10 @@
[/then]
[/if]

[clear_variable]
name=varCetl_discriminante
[/clear_variable]

[clear_variable]
name=teleport
[/clear_variable]
Expand All @@ -380,8 +283,7 @@
name=unit_zoc
[/clear_variable]

{CLEAR_VARIABLE varTeleportEffectiveX}
{CLEAR_VARIABLE varTeleportEffectiveY}
{CLEAR_VARIABLE varTeleportEffective}
[/event]
#enddef

Expand Down Expand Up @@ -573,7 +475,6 @@
[/event]
[/multiplayer]

#undef WIF_CETL_CHECK
#undef WIF_PLACE_MAP_ITEMS
#undef WIF_PLACE_ELITE_UNITS
#undef WIF_TELEPORT_ACTION

0 comments on commit a9ca12c

Please sign in to comment.