SoUI 0.5版本占坑
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2013 lines
85 KiB

#ifndef YDWECinematicSystemIncluded
#define YDWECinematicSystemIncluded
#include "YDWEBase.j"
library YDWEScriptSystem requires YDWEBase
// ****************************************************************************
// **
// ** CALIBRATION FUNCTIONS
// **
// ****************************************************************************
globals
//ScriptSystem
private unit array YDWE_cinS_actor
private camerasetup array YDWE_cinS_camera
private real array YDWE_cinS_act_moveX
private real array YDWE_cinS_act_moveY
private real array YDWE_cinS_act_moveZ
private real array YDWE_cinS_act_moveVX
private real array YDWE_cinS_act_moveVY
private real array YDWE_cinS_act_moveVZ
private real array YDWE_cinS_act_moveAZ
private real array YDWE_cinS_act_moveTime
private real array YDWE_cinS_act_turnFi
private real array YDWE_cinS_act_turnVFi
private real array YDWE_cinS_act_turnTime
private real array YDWE_cinS_act_colourR
private real array YDWE_cinS_act_colourG
private real array YDWE_cinS_act_colourB
private real array YDWE_cinS_act_colourA
private real array YDWE_cinS_act_colourVR
private real array YDWE_cinS_act_colourVG
private real array YDWE_cinS_act_colourVB
private real array YDWE_cinS_act_colourVA
private real array YDWE_cinS_act_colourTime
private real array YDWE_cinS_act_sizeS
private real array YDWE_cinS_act_sizeVS
private real array YDWE_cinS_act_sizeTime
private real array YDWE_cinS_cam_startval
private real array YDWE_cinS_cam_startvel
private real array YDWE_cinS_cam_accprim
private real array YDWE_cinS_cam_accsec
private real array YDWE_cinS_cam_time
private real array YDWE_cinS_cam_endtime
private group array YDWE_cinS_act_groups
private unit YDWE_cinS_cam_OvRxyzUnitPrim = null
private real array YDWE_cinS_cam_OvRoffset
private real YDWE_cinS_cam_OvRxyzTime = 0
private real YDWE_cinS_cam_OvRxyzEndtime = 0
private real YDWE_cinS_cam_OvRangTime = 0
private real YDWE_cinS_cam_OvRangEndtime = 0
private unit YDWE_cinS_cam_OvRxyzUnitSec = null
private unit YDWE_cinS_cam_OvRangUnitPrim = null
private unit YDWE_cinS_cam_OvRangUnitSec = null
private boolean YDWE_cinS_cam_OvRxyzSmooth = false
private boolean YDWE_cinS_cam_OvRangSmooth = false
private unit YDWE_cinS_cam_fadeUnit = null
private location YDWE_cinS_tempPoint = null
private boolean YDWE_cinS_cam_ignoreTerrain = false
private boolean YDWE_cinS_displaySubtitles = true
private integer YDWE_cinS_FadeFilterUnit = 'e000'
private real YDWE_cinS_ScriptSystemPeriod = 0.02
private real YDWE_cinS_ParticlePeriod = 0.02
private real YDWE_cinS_CameraPeriod = 0.02
endglobals
function YDWEScriptSystemPeriod takes real timeout returns nothing
set YDWE_cinS_ScriptSystemPeriod=timeout
endfunction
function YDWEParticlePeriod takes real timeout returns nothing
set YDWE_cinS_ParticlePeriod=timeout
endfunction
function YDWECameraPeriod takes real timeout returns nothing
set YDWE_cinS_CameraPeriod=timeout
endfunction
function YDWEFadeFilterUnit takes integer uid returns nothing
set YDWE_cinS_FadeFilterUnit=uid
endfunction
//===========================================================================
//ϵͳ-ScriptSystem
//===========================================================================
function YDWECinSInitTempPoint takes location point returns nothing
set YDWE_cinS_tempPoint=point
//return
endfunction
function YDWECinSActor takes integer i returns unit
return YDWE_cinS_actor[i]
endfunction
// ****************************************************************************
// **
// ** GENERAL AND MISCELANEOUS FUNCTIONS
// **
// ****************************************************************************
//function GC takes nothing returns gamecache
// if YDWE_cinS_GC == null then
// call FlushGameCache(InitGameCache( "CinemaCache" ))
// set YDWE_cinS_GC = InitGameCache( "CinemaCache" )
// endif
// return YDWE_cinS_GC
//endfunction
function YDWECameraSetupAssign takes camerasetup cs, integer actID returns nothing
set YDWE_cinS_camera[actID] = cs
endfunction
function YDWEActorCreate takes player p, integer actID, integer unitType returns nothing
local unit u = CreateUnit(p, unitType, 0.0, 0.0, 0.0)
call SetUnitUserData(u, actID)
call YDWEFlyEnable(u)
set YDWE_cinS_actor[actID] = u
set YDWE_cinS_act_colourR[actID] = 100.0
set YDWE_cinS_act_colourG[actID] = 100.0
set YDWE_cinS_act_colourB[actID] = 100.0
set YDWE_cinS_act_colourA[actID] = 100.0
set u = null
endfunction
// ****************************************************************************
// **
// ** CAMERA SYSTEM
// **
// ****************************************************************************
function YDWECinematicCameraEnable takes nothing returns nothing
local trigger t = YDWEGetTriggerByString( "Globals", "CamTrig")
call EnableTrigger(t)
set t = null
endfunction
function YDWECinematicCameraDisable takes nothing returns nothing
local trigger t = YDWEGetTriggerByString( "Globals", "CamTrig")
call DisableTrigger(t)
set t = null
endfunction
function YDWESetCameraZ takes real z returns nothing
//thanks to ToadCop for this function
set z = GetCameraField(CAMERA_FIELD_ZOFFSET)+z-GetCameraTargetPositionZ()
call SetCameraField(CAMERA_FIELD_ZOFFSET,z,- 0.01)
call SetCameraField(CAMERA_FIELD_ZOFFSET,z,0.01)
endfunction
function YDWECameraMainLoop takes nothing returns nothing
local real array s
local location stupid = YDWE_cinS_tempPoint
local integer i = 0
local real ovrFactor
// camera motion
loop
exitwhen i == 18
set i = i + 1
set YDWE_cinS_cam_time[i] = YDWE_cinS_cam_time[i] + YDWE_cinS_CameraPeriod
set s[i] = YDWE_cinS_cam_startval[i] + ( YDWE_cinS_cam_startvel[i] * YDWE_cinS_cam_time[i] ) + ( YDWE_cinS_cam_accprim[i] * YDWE_cinS_cam_time[i] * YDWE_cinS_cam_time[i] / 2 )
if i > 3 and i < 7 then
loop
if s[i] > 360 then
set s[i] = s[i] - 360
elseif s[i] < 0 then
set s[i] = s[i] + 360
else
exitwhen true
endif
endloop
endif
if YDWE_cinS_cam_time[i] + YDWE_cinS_CameraPeriod >= YDWE_cinS_cam_endtime[i] then
if YDWE_cinS_cam_accsec[i] != 0 then
set YDWE_cinS_cam_startvel[i] = YDWE_cinS_cam_startvel[i] + ( YDWE_cinS_cam_accprim[i] * YDWE_cinS_cam_time[i] )
set YDWE_cinS_cam_accprim[i] = YDWE_cinS_cam_accsec[i]
set YDWE_cinS_cam_startval[i] = s[i]
set YDWE_cinS_cam_time[i] = 0.0
set YDWE_cinS_cam_accsec[i] = 0.0
else
if i>9 then
set YDWE_cinS_cam_startvel[i] = 0.0
set YDWE_cinS_cam_startval[i] = s[i]
set YDWE_cinS_cam_time[i] = 0.0
endif
endif
endif
endloop
// camera lock-to-unit override
if YDWE_cinS_cam_OvRxyzUnitPrim!=null or YDWE_cinS_cam_OvRxyzUnitSec!=null then
set YDWE_cinS_cam_OvRxyzTime = YDWE_cinS_cam_OvRxyzTime + YDWE_cinS_CameraPeriod
if YDWE_cinS_cam_OvRxyzTime > YDWE_cinS_cam_OvRxyzEndtime then
set YDWE_cinS_cam_OvRxyzTime = YDWE_cinS_cam_OvRxyzEndtime
endif
set ovrFactor = YDWE_cinS_cam_OvRxyzTime/YDWE_cinS_cam_OvRxyzEndtime
if YDWE_cinS_cam_OvRxyzSmooth then
set ovrFactor = (1.0 - Cos(ovrFactor*bj_PI)) / 2
endif
call MoveLocation(stupid, GetUnitX(YDWE_cinS_cam_OvRxyzUnitPrim),GetUnitY(YDWE_cinS_cam_OvRxyzUnitPrim))
set s[19] = GetLocationZ(stupid)
call MoveLocation(stupid, GetUnitX(YDWE_cinS_cam_OvRxyzUnitSec),GetUnitY(YDWE_cinS_cam_OvRxyzUnitSec))
set s[20] = GetLocationZ(stupid)
if YDWE_cinS_cam_OvRxyzUnitSec==null then //going from null to unit
set s[1] = s[1]*(1-ovrFactor) + (GetUnitX(YDWE_cinS_cam_OvRxyzUnitPrim)+YDWE_cinS_cam_OvRoffset[1])*ovrFactor
set s[2] = s[2]*(1-ovrFactor) + (GetUnitY(YDWE_cinS_cam_OvRxyzUnitPrim)+YDWE_cinS_cam_OvRoffset[2])*ovrFactor
set s[3] = s[3]*(1-ovrFactor) + (s[19]+GetUnitFlyHeight(YDWE_cinS_cam_OvRxyzUnitPrim)+YDWE_cinS_cam_OvRoffset[3])*ovrFactor
elseif YDWE_cinS_cam_OvRxyzUnitPrim==null then //going from unit to null
set s[1] = s[1]*ovrFactor + (GetUnitX(YDWE_cinS_cam_OvRxyzUnitSec)+YDWE_cinS_cam_OvRoffset[7])*(1.0-ovrFactor)
set s[2] = s[2]*ovrFactor + (GetUnitY(YDWE_cinS_cam_OvRxyzUnitSec)+YDWE_cinS_cam_OvRoffset[8])*(1.0-ovrFactor)
set s[3] = s[3]*ovrFactor + (s[20]+GetUnitFlyHeight(YDWE_cinS_cam_OvRxyzUnitSec)+YDWE_cinS_cam_OvRoffset[9])*(1.0-ovrFactor)
else //going from unit to unit
set s[1] = (GetUnitX(YDWE_cinS_cam_OvRxyzUnitSec)+YDWE_cinS_cam_OvRoffset[7])*(1-ovrFactor) + (GetUnitX(YDWE_cinS_cam_OvRxyzUnitPrim)+YDWE_cinS_cam_OvRoffset[1])*ovrFactor
set s[2] = (GetUnitY(YDWE_cinS_cam_OvRxyzUnitSec)+YDWE_cinS_cam_OvRoffset[8])*(1-ovrFactor) + (GetUnitY(YDWE_cinS_cam_OvRxyzUnitPrim)+YDWE_cinS_cam_OvRoffset[2])*ovrFactor
set s[3] = (s[20]+GetUnitFlyHeight(YDWE_cinS_cam_OvRxyzUnitSec)+YDWE_cinS_cam_OvRoffset[9])*(1-ovrFactor) + (s[19]+GetUnitFlyHeight(YDWE_cinS_cam_OvRxyzUnitPrim)+YDWE_cinS_cam_OvRoffset[3])*ovrFactor
endif
if YDWE_cinS_cam_OvRxyzTime == YDWE_cinS_cam_OvRxyzEndtime then
if YDWE_cinS_cam_OvRxyzUnitPrim==null then
set YDWE_cinS_cam_OvRxyzUnitSec = null
endif
endif
endif
// camera face-to-unit override
if YDWE_cinS_cam_OvRangUnitPrim!=null or YDWE_cinS_cam_OvRangUnitSec!=null then
set YDWE_cinS_cam_OvRangTime = YDWE_cinS_cam_OvRangTime + YDWE_cinS_CameraPeriod
if YDWE_cinS_cam_OvRangTime > YDWE_cinS_cam_OvRangEndtime then
set YDWE_cinS_cam_OvRangTime = YDWE_cinS_cam_OvRangEndtime
endif
set ovrFactor = YDWE_cinS_cam_OvRangTime/YDWE_cinS_cam_OvRangEndtime
if YDWE_cinS_cam_OvRangSmooth then
set ovrFactor = (1.0 - Cos(ovrFactor*bj_PI)) / 2
endif
call MoveLocation(stupid, GetUnitX(YDWE_cinS_cam_OvRangUnitPrim),GetUnitY(YDWE_cinS_cam_OvRangUnitPrim))
set s[19] = GetLocationZ(stupid)
call MoveLocation(stupid, GetUnitX(YDWE_cinS_cam_OvRangUnitSec),GetUnitY(YDWE_cinS_cam_OvRangUnitSec))
set s[20] = GetLocationZ(stupid)
if YDWE_cinS_cam_OvRangUnitPrim!=null then
set s[21]=(GetUnitX(YDWE_cinS_cam_OvRangUnitPrim)+YDWE_cinS_cam_OvRoffset[4])-s[1]
set s[22]=(GetUnitY(YDWE_cinS_cam_OvRangUnitPrim)+YDWE_cinS_cam_OvRoffset[5])-s[2]
set s[23]=(s[19]+GetUnitFlyHeight(YDWE_cinS_cam_OvRangUnitPrim)+YDWE_cinS_cam_OvRoffset[6])-s[3]
set s[24]=Atan2(s[22], s[21]) * bj_RADTODEG
set s[25]=Atan2(s[23], SquareRoot(s[21]*s[21]+s[22]*s[22])) * bj_RADTODEG
else
set s[24]=s[4]
set s[25]=s[5]
endif
if YDWE_cinS_cam_OvRangUnitSec!=null then
set s[21]=(GetUnitX(YDWE_cinS_cam_OvRangUnitSec)+YDWE_cinS_cam_OvRoffset[10])-s[1]
set s[22]=(GetUnitY(YDWE_cinS_cam_OvRangUnitSec)+YDWE_cinS_cam_OvRoffset[11])-s[2]
set s[23]=(s[20]+GetUnitFlyHeight(YDWE_cinS_cam_OvRangUnitSec)+YDWE_cinS_cam_OvRoffset[12])-s[3]
set s[26]=Atan2(s[22], s[21]) * bj_RADTODEG
set s[27]=Atan2(s[23], SquareRoot(s[21]*s[21]+s[22]*s[22])) * bj_RADTODEG
else
set s[26]=s[4]
set s[27]=s[5]
endif
if (s[26] - s[24]) > 180 then
set s[24] = s[24] + 360
elseif (s[26] - s[24]) < -180 then
set s[24] = s[24] - 360
endif
set s[4] = ovrFactor * s[24] + (1-ovrFactor) * s[26]
if (s[27] - s[25]) > 180 then
set s[25] = s[25] + 360
elseif (s[27] - s[25]) < -180 then
set s[25] = s[25] - 360
endif
set s[5] = ovrFactor * s[25] + (1-ovrFactor) * s[27]
if YDWE_cinS_cam_OvRangTime == YDWE_cinS_cam_OvRangEndtime then
if YDWE_cinS_cam_OvRangUnitPrim==null then
set YDWE_cinS_cam_OvRangUnitSec = null
endif
endif
endif
if s[9]<100.0 then
set s[9]=100.0
endif
// camera fade filter unit
if s[18]>0 then
set s[23]=Sin(s[5]*bj_DEGTORAD)
set s[20]=Cos(s[5]*bj_DEGTORAD)
set s[21]=Cos(s[4]*bj_DEGTORAD)*s[20]
set s[22]=Sin(s[4]*bj_DEGTORAD)*s[20]
set s[19]=(s[9]-128.0)
set s[20]=Tan(s[7]*bj_DEGTORAD/2) *40
set s[21]=s[1]-s[19]*s[21]
set s[22]=s[2]-s[19]*s[22]
set s[23]=s[3]-s[19]*s[23]
call MoveLocation(stupid, s[21], s[22])
set s[23]=s[23]-GetLocationZ(stupid)
call SetUnitX(YDWE_cinS_cam_fadeUnit, s[21])
call SetUnitY(YDWE_cinS_cam_fadeUnit, s[22])
call SetUnitFlyHeight(YDWE_cinS_cam_fadeUnit, s[23], 0.0)
call SetUnitScale(YDWE_cinS_cam_fadeUnit, s[20],s[20],s[20])
endif
call PanCameraToTimed( s[1], s[2], 0.0 )
call MoveLocation(stupid, s[1], s[2])
if YDWE_cinS_cam_ignoreTerrain then
call YDWESetCameraZ(s[3])
else
call SetCameraField( CAMERA_FIELD_ZOFFSET, s[3]-GetLocationZ(stupid), 0.00 )
endif
call SetCameraField( CAMERA_FIELD_ROTATION, s[4], 0.00 )
call SetCameraField( CAMERA_FIELD_ANGLE_OF_ATTACK, s[5], 0.00 )
call SetCameraField( CAMERA_FIELD_ROLL, s[6], 0.00 )
call SetCameraField( CAMERA_FIELD_FIELD_OF_VIEW, s[7], 0.00 )
call SetCameraField( CAMERA_FIELD_FARZ, s[8], 0.00 )
call SetCameraField( CAMERA_FIELD_TARGET_DISTANCE, s[9], 0.00 )
call SetUnitVertexColor(YDWE_cinS_cam_fadeUnit, R2I(s[15]*256), R2I(s[16]*256), R2I(s[17]*256), R2I(s[18]*256))
call SetTerrainFogEx(0, s[10], s[11], 0.0, s[12], s[13], s[14])
set stupid = null
endfunction
function YDWECameraStatChangeLin takes integer stat, real endvalue, real time returns nothing
local real startvalue = YDWE_cinS_cam_startval[stat] + ( YDWE_cinS_cam_startvel[stat] * YDWE_cinS_cam_time[stat] ) + ( YDWE_cinS_cam_accprim[stat] * YDWE_cinS_cam_time[stat] * YDWE_cinS_cam_time[stat] / 2 )
set YDWE_cinS_cam_startval[stat] = startvalue
set YDWE_cinS_cam_startvel[stat] = (endvalue - startvalue)/time
set YDWE_cinS_cam_accprim[stat] = 0.0
set YDWE_cinS_cam_accsec[stat] = 0.0
set YDWE_cinS_cam_time[stat] = 0.0
set YDWE_cinS_cam_endtime[stat] = time
endfunction
function YDWECameraStatChangeLinRad takes integer stat, real endvalue, real time returns nothing
local real startvalue = YDWE_cinS_cam_startval[stat] + ( YDWE_cinS_cam_startvel[stat] * YDWE_cinS_cam_time[stat] ) + ( YDWE_cinS_cam_accprim[stat] * YDWE_cinS_cam_time[stat] * YDWE_cinS_cam_time[stat] / 2 )
local real distance = endvalue - startvalue
local real velocity1 = distance/time
local real velocity2 = -( RSignBJ(distance) * (360 - RAbsBJ(distance)) )/time
set YDWE_cinS_cam_startval[stat] = startvalue
if RAbsBJ(velocity1) < RAbsBJ(velocity2) then
set YDWE_cinS_cam_startvel[stat] = velocity1
else
set YDWE_cinS_cam_startvel[stat] = velocity2
endif
set YDWE_cinS_cam_accprim[stat] = 0.0
set YDWE_cinS_cam_accsec[stat] = 0.0
set YDWE_cinS_cam_time[stat] = 0.0
set YDWE_cinS_cam_endtime[stat] = time
endfunction
function YDWECameraStatChange takes integer stat, real endvalue, real time returns nothing
local real startvalue = YDWE_cinS_cam_startval[stat] + ( YDWE_cinS_cam_startvel[stat] * YDWE_cinS_cam_time[stat] ) + ( YDWE_cinS_cam_accprim[stat] * YDWE_cinS_cam_time[stat] * YDWE_cinS_cam_time[stat] / 2 )
local real startvelocity = YDWE_cinS_cam_startvel[stat] + ( YDWE_cinS_cam_accprim[stat] * YDWE_cinS_cam_time[stat] )
local real distance = endvalue - startvalue
local real accel = 2 * ( distance - startvelocity * time ) / ( time * time )
set YDWE_cinS_cam_startval[stat] = startvalue
set YDWE_cinS_cam_startvel[stat] = startvelocity
set YDWE_cinS_cam_accprim[stat] = accel
set YDWE_cinS_cam_accsec[stat] = 0.0
set YDWE_cinS_cam_time[stat] = 0.0
set YDWE_cinS_cam_endtime[stat] = time
endfunction
function YDWECameraStatChangeRad takes integer stat, real endvalue, real time returns nothing
local real startvalue = YDWE_cinS_cam_startval[stat] + ( YDWE_cinS_cam_startvel[stat] * YDWE_cinS_cam_time[stat] ) + ( YDWE_cinS_cam_accprim[stat] * YDWE_cinS_cam_time[stat] * YDWE_cinS_cam_time[stat] / 2 )
local real startvelocity = YDWE_cinS_cam_startvel[stat] + ( YDWE_cinS_cam_accprim[stat] * YDWE_cinS_cam_time[stat] )
local real distance = endvalue - startvalue
local real accel1 = 2 * ( distance - startvelocity * time ) / ( time * time )
local real accel2 = 2 * ( -( RSignBJ(distance) * (360 - RAbsBJ(distance)) ) - startvelocity * time ) / ( time * time )
set YDWE_cinS_cam_startval[stat] = startvalue
set YDWE_cinS_cam_startvel[stat] = startvelocity
if RAbsBJ(accel1) < RAbsBJ(accel2) then
set YDWE_cinS_cam_accprim[stat] = accel1
else
set YDWE_cinS_cam_accprim[stat] = accel2
endif
set YDWE_cinS_cam_accsec[stat] = 0.0
set YDWE_cinS_cam_time[stat] = 0.0
set YDWE_cinS_cam_endtime[stat] = time
endfunction
function YDWECameraStatChangeAdv takes integer stat, real endvalue, real endvelocity, real time returns nothing
local real startvalue = YDWE_cinS_cam_startval[stat] + ( YDWE_cinS_cam_startvel[stat] * YDWE_cinS_cam_time[stat] ) + ( YDWE_cinS_cam_accprim[stat] * YDWE_cinS_cam_time[stat] * YDWE_cinS_cam_time[stat] / 2 )
local real startvelocity = YDWE_cinS_cam_startvel[stat] + ( YDWE_cinS_cam_accprim[stat] * YDWE_cinS_cam_time[stat] )
local real distance = endvalue - startvalue
local real accel1 = 4 * ( distance ) / ( time * time ) - ( endvelocity + 3 * startvelocity ) / time
local real accel2 = ( 3 * endvelocity + startvelocity ) / time - 4 * ( distance ) / ( time * time )
set YDWE_cinS_cam_startval[stat] = startvalue
set YDWE_cinS_cam_startvel[stat] = startvelocity
set YDWE_cinS_cam_accprim[stat] = accel1
set YDWE_cinS_cam_accsec[stat] = accel2
set YDWE_cinS_cam_time[stat] = 0.0
set YDWE_cinS_cam_endtime[stat] = time/2
endfunction
function YDWECameraStatChangeAdvRad takes integer stat, real endvalue, real endvelocity, real time returns nothing
local real startvalue = YDWE_cinS_cam_startval[stat] + ( YDWE_cinS_cam_startvel[stat] * YDWE_cinS_cam_time[stat] ) + ( YDWE_cinS_cam_accprim[stat] * YDWE_cinS_cam_time[stat] * YDWE_cinS_cam_time[stat] / 2 )
local real startvelocity = YDWE_cinS_cam_startvel[stat] + ( YDWE_cinS_cam_accprim[stat] * YDWE_cinS_cam_time[stat] )
local real distance = endvalue - startvalue
local real accel1 = 4 * ( distance ) / ( time * time ) - ( endvelocity + 3 * startvelocity ) / time
local real accel2 = ( 3 * endvelocity + startvelocity ) / time - 4 * ( distance ) / ( time * time )
local real accel3 = 4 * ( -( RSignBJ(distance) * (360 - RAbsBJ(distance)) ) ) / ( time * time ) - ( endvelocity + 3 * startvelocity ) / time
local real accel4 = ( 3 * endvelocity + startvelocity ) / time - 4 * ( -( RSignBJ(distance) * (360 - RAbsBJ(distance)) ) ) / ( time * time )
set YDWE_cinS_cam_startval[stat] = startvalue
set YDWE_cinS_cam_startvel[stat] = startvelocity
if (RAbsBJ(accel3) + RAbsBJ(accel4)) > (RAbsBJ(accel1) + RAbsBJ(accel2)) then
set YDWE_cinS_cam_accprim[stat] = accel1
set YDWE_cinS_cam_accsec[stat] = accel2
else
set YDWE_cinS_cam_accprim[stat] = accel3
set YDWE_cinS_cam_accsec[stat] = accel4
endif
set YDWE_cinS_cam_time[stat] = 0.0
set YDWE_cinS_cam_endtime[stat] = time/2
endfunction
function YDWECameraLockToUnitOverride takes unit u, real xoff, real yoff, real zoff, boolean smooth, real duration returns nothing
if duration < YDWE_cinS_CameraPeriod then
set duration = YDWE_cinS_CameraPeriod
endif
set YDWE_cinS_cam_OvRxyzUnitSec = YDWE_cinS_cam_OvRxyzUnitPrim
set YDWE_cinS_cam_OvRxyzUnitPrim = u
set YDWE_cinS_cam_OvRxyzSmooth = smooth
set YDWE_cinS_cam_OvRoffset[7]=YDWE_cinS_cam_OvRoffset[1]
set YDWE_cinS_cam_OvRoffset[8]=YDWE_cinS_cam_OvRoffset[2]
set YDWE_cinS_cam_OvRoffset[9]=YDWE_cinS_cam_OvRoffset[3]
set YDWE_cinS_cam_OvRoffset[1]=xoff
set YDWE_cinS_cam_OvRoffset[2]=yoff
set YDWE_cinS_cam_OvRoffset[3]=zoff
set YDWE_cinS_cam_OvRxyzTime = 0.0
set YDWE_cinS_cam_OvRxyzEndtime = duration
endfunction
function YDWECameraLockToUnitReset takes boolean smooth, real duration returns nothing
call YDWECameraLockToUnitOverride(null, 0.0,0.0,0.0, smooth, duration)
endfunction
function YDWECameraFaceToUnitOverride takes unit u, real xoff, real yoff, real zoff, boolean smooth, real duration returns nothing
if duration < YDWE_cinS_CameraPeriod then
set duration = YDWE_cinS_CameraPeriod
endif
set YDWE_cinS_cam_OvRangUnitSec = YDWE_cinS_cam_OvRangUnitPrim
set YDWE_cinS_cam_OvRangUnitPrim = u
set YDWE_cinS_cam_OvRangSmooth = smooth
set YDWE_cinS_cam_OvRoffset[10]=YDWE_cinS_cam_OvRoffset[4]
set YDWE_cinS_cam_OvRoffset[11]=YDWE_cinS_cam_OvRoffset[5]
set YDWE_cinS_cam_OvRoffset[12]=YDWE_cinS_cam_OvRoffset[6]
set YDWE_cinS_cam_OvRoffset[4]=xoff
set YDWE_cinS_cam_OvRoffset[5]=yoff
set YDWE_cinS_cam_OvRoffset[6]=zoff
set YDWE_cinS_cam_OvRangTime = 0.0
set YDWE_cinS_cam_OvRangEndtime = duration
endfunction
function YDWECameraFaceToUnitReset takes boolean smooth, real duration returns nothing
call YDWECameraFaceToUnitOverride(null, 0.0,0.0,0.0, smooth, duration)
endfunction
function YDWEApplyCameraInstantly takes camerasetup whichSetup returns nothing
local integer i = 0
set YDWE_cinS_cam_startval[1] = CameraSetupGetDestPositionX( whichSetup )
set YDWE_cinS_cam_startval[2] = CameraSetupGetDestPositionY( whichSetup )
call MoveLocation(YDWE_cinS_tempPoint, CameraSetupGetDestPositionX( whichSetup ), CameraSetupGetDestPositionY( whichSetup ))
set YDWE_cinS_cam_startval[3] = CameraSetupGetField( whichSetup, CAMERA_FIELD_ZOFFSET) + GetLocationZ(YDWE_cinS_tempPoint)
set YDWE_cinS_cam_startval[4] = CameraSetupGetField( whichSetup, CAMERA_FIELD_ROTATION )
set YDWE_cinS_cam_startval[5] = CameraSetupGetField( whichSetup, CAMERA_FIELD_ANGLE_OF_ATTACK )
set YDWE_cinS_cam_startval[6] = CameraSetupGetField( whichSetup, CAMERA_FIELD_ROLL )
set YDWE_cinS_cam_startval[7] = CameraSetupGetField( whichSetup, CAMERA_FIELD_FIELD_OF_VIEW )
set YDWE_cinS_cam_startval[8] = CameraSetupGetField( whichSetup, CAMERA_FIELD_FARZ )
set YDWE_cinS_cam_startval[9] = CameraSetupGetField( whichSetup, CAMERA_FIELD_TARGET_DISTANCE )
loop
set i = i + 1
exitwhen i > 9
set YDWE_cinS_cam_startvel[i] = 0.0
set YDWE_cinS_cam_accprim[i] = 0.0
set YDWE_cinS_cam_accsec[i] = 0.0
set YDWE_cinS_cam_time[i] = 0.0
set YDWE_cinS_cam_endtime[i] = 0.0
endloop
endfunction
function YDWEApplyCameraLinear takes camerasetup whichSetup, real duration returns nothing
if duration < YDWE_cinS_CameraPeriod then
set duration = YDWE_cinS_CameraPeriod
endif
call YDWECameraStatChangeLin(1, CameraSetupGetDestPositionX( whichSetup ), duration)
call YDWECameraStatChangeLin(2, CameraSetupGetDestPositionY( whichSetup ), duration)
call MoveLocation(YDWE_cinS_tempPoint, CameraSetupGetDestPositionX( whichSetup ), CameraSetupGetDestPositionY( whichSetup ))
call YDWECameraStatChangeLin(3, CameraSetupGetField( whichSetup, CAMERA_FIELD_ZOFFSET ) + GetLocationZ(YDWE_cinS_tempPoint), duration)
call YDWECameraStatChangeLinRad(4, CameraSetupGetField( whichSetup, CAMERA_FIELD_ROTATION ), duration)
call YDWECameraStatChangeLinRad(5, CameraSetupGetField( whichSetup, CAMERA_FIELD_ANGLE_OF_ATTACK ), duration)
call YDWECameraStatChangeLinRad(6, CameraSetupGetField( whichSetup, CAMERA_FIELD_ROLL ), duration)
call YDWECameraStatChangeLin(7, CameraSetupGetField( whichSetup, CAMERA_FIELD_FIELD_OF_VIEW ), duration)
call YDWECameraStatChangeLin(8, CameraSetupGetField( whichSetup, CAMERA_FIELD_FARZ ), duration)
call YDWECameraStatChangeLin(9, CameraSetupGetField( whichSetup, CAMERA_FIELD_TARGET_DISTANCE ), duration)
endfunction
function YDWEApplyCameraSmooth takes camerasetup whichSetup, real duration returns nothing
if duration < YDWE_cinS_CameraPeriod then
set duration = YDWE_cinS_CameraPeriod
endif
call YDWECameraStatChange(1, CameraSetupGetDestPositionX( whichSetup ), duration)
call YDWECameraStatChange(2, CameraSetupGetDestPositionY( whichSetup ), duration)
call MoveLocation(YDWE_cinS_tempPoint, CameraSetupGetDestPositionX( whichSetup ), CameraSetupGetDestPositionY( whichSetup ))
call YDWECameraStatChange(3, CameraSetupGetField( whichSetup, CAMERA_FIELD_ZOFFSET ) + GetLocationZ(YDWE_cinS_tempPoint), duration)
call YDWECameraStatChangeRad(4, CameraSetupGetField( whichSetup, CAMERA_FIELD_ROTATION ), duration)
call YDWECameraStatChangeRad(5, CameraSetupGetField( whichSetup, CAMERA_FIELD_ANGLE_OF_ATTACK ), duration)
call YDWECameraStatChangeRad(6, CameraSetupGetField( whichSetup, CAMERA_FIELD_ROLL ), duration)
call YDWECameraStatChange(7, CameraSetupGetField( whichSetup, CAMERA_FIELD_FIELD_OF_VIEW ), duration)
call YDWECameraStatChange(8, CameraSetupGetField( whichSetup, CAMERA_FIELD_FARZ ), duration)
call YDWECameraStatChange(9, CameraSetupGetField( whichSetup, CAMERA_FIELD_TARGET_DISTANCE ), duration)
endfunction
function YDWEApplyCameraSmoothStop takes camerasetup whichSetup, real duration returns nothing
if duration < YDWE_cinS_CameraPeriod then
set duration = YDWE_cinS_CameraPeriod
endif
call YDWECameraStatChangeAdv(1, CameraSetupGetDestPositionX( whichSetup ), 0.00, duration)
call YDWECameraStatChangeAdv(2, CameraSetupGetDestPositionY( whichSetup ), 0.00, duration)
call MoveLocation(YDWE_cinS_tempPoint, CameraSetupGetDestPositionX( whichSetup ), CameraSetupGetDestPositionY( whichSetup ))
call YDWECameraStatChangeAdv(3, CameraSetupGetField( whichSetup, CAMERA_FIELD_ZOFFSET ) + GetLocationZ(YDWE_cinS_tempPoint), 0.00, duration)
call YDWECameraStatChangeAdvRad(4, CameraSetupGetField( whichSetup, CAMERA_FIELD_ROTATION ), 0.00, duration)
call YDWECameraStatChangeAdvRad(5, CameraSetupGetField( whichSetup, CAMERA_FIELD_ANGLE_OF_ATTACK ), 0.00, duration)
call YDWECameraStatChangeAdvRad(6, CameraSetupGetField( whichSetup, CAMERA_FIELD_ROLL ), 0.00, duration)
call YDWECameraStatChangeAdv(7, CameraSetupGetField( whichSetup, CAMERA_FIELD_FIELD_OF_VIEW ), 0.00, duration)
call YDWECameraStatChangeAdv(8, CameraSetupGetField( whichSetup, CAMERA_FIELD_FARZ ), 0.00, duration)
call YDWECameraStatChangeAdv(9, CameraSetupGetField( whichSetup, CAMERA_FIELD_TARGET_DISTANCE ), 0.00, duration)
endfunction
function YDWEApplyFog takes real startZ, real endZ, real red, real green, real blue, real duration returns nothing
if duration < YDWE_cinS_CameraPeriod then
set duration = YDWE_cinS_CameraPeriod
endif
call YDWECameraStatChangeLin(10,startZ,duration)
call YDWECameraStatChangeLin(11,endZ, duration)
call YDWECameraStatChangeLin(12,red*0.01, duration)
call YDWECameraStatChangeLin(13,green*0.01, duration)
call YDWECameraStatChangeLin(14,blue*0.01, duration)
endfunction
function YDWEApplyFade takes real red, real green, real blue, real opacity, real duration returns nothing
if duration < YDWE_cinS_CameraPeriod then
set duration = YDWE_cinS_CameraPeriod
endif
call YDWECameraStatChangeLin(15,red*0.01, duration)
call YDWECameraStatChangeLin(16,green*0.01, duration)
call YDWECameraStatChangeLin(17,blue*0.01, duration)
call YDWECameraStatChangeLin(18,opacity*0.01, duration)
endfunction
function YDWECameraSystemInit takes nothing returns nothing
local trigger t = CreateTrigger()
local camerasetup cs = CreateCameraSetup()
call TriggerRegisterTimerEvent(t, YDWE_cinS_CameraPeriod, true)
call TriggerAddAction( t, function YDWECameraMainLoop )
call YDWESaveTriggerByString( "Globals", "CamTrig", t )
set t = null
call CameraSetupSetField(cs, CAMERA_FIELD_TARGET_DISTANCE, GetCameraField(CAMERA_FIELD_TARGET_DISTANCE), 0)
call CameraSetupSetField(cs, CAMERA_FIELD_FARZ, GetCameraField(CAMERA_FIELD_FARZ), 0)
call CameraSetupSetField(cs, CAMERA_FIELD_ZOFFSET, GetCameraField(CAMERA_FIELD_ZOFFSET), 0)
call CameraSetupSetField(cs, CAMERA_FIELD_ANGLE_OF_ATTACK, bj_RADTODEG * GetCameraField(CAMERA_FIELD_ANGLE_OF_ATTACK), 0)
call CameraSetupSetField(cs, CAMERA_FIELD_FIELD_OF_VIEW, bj_RADTODEG * GetCameraField(CAMERA_FIELD_FIELD_OF_VIEW), 0)
call CameraSetupSetField(cs, CAMERA_FIELD_ROLL, bj_RADTODEG * GetCameraField(CAMERA_FIELD_ROLL), 0)
call CameraSetupSetField(cs, CAMERA_FIELD_ROTATION, bj_RADTODEG * GetCameraField(CAMERA_FIELD_ROTATION), 0)
call CameraSetupSetDestPosition(cs, GetCameraTargetPositionX(), GetCameraTargetPositionY(), 0)
call YDWEApplyCameraInstantly( cs )
set cs = null
call YDWEApplyFog( 10000.0, 10000.0, 0.0,0.0,0.0, 0.0 )
set YDWE_cinS_cam_fadeUnit = CreateUnit(Player(12), YDWE_cinS_FadeFilterUnit, 0,0,0)
call YDWEFlyEnable(YDWE_cinS_cam_fadeUnit)
set YDWE_cinS_cam_ignoreTerrain = false
endfunction
// ****************************************************************************
// **
// ** PARTICLE SYSTEM
// **
// ****************************************************************************
function YDWEParticleMove takes nothing returns nothing
local unit u = GetEnumUnit()
local integer i = GetUnitUserData(u)
local real h
local location stupid = YDWE_cinS_tempPoint
set YDWE_cinS_act_moveTime[i] = YDWE_cinS_act_moveTime[i] - YDWE_cinS_ParticlePeriod
set YDWE_cinS_act_moveX[i]=YDWE_cinS_act_moveX[i]+YDWE_cinS_act_moveVX[i]
set YDWE_cinS_act_moveY[i]=YDWE_cinS_act_moveY[i]+YDWE_cinS_act_moveVY[i]
if YDWE_cinS_act_moveAZ[i] != 0 then
set YDWE_cinS_act_moveVZ[i] = YDWE_cinS_act_moveVZ[i] + YDWE_cinS_act_moveAZ[i]
set YDWE_cinS_act_moveZ[i] = YDWE_cinS_act_moveZ[i] + YDWE_cinS_act_moveVZ[i]
call MoveLocation(stupid, YDWE_cinS_act_moveX[i],YDWE_cinS_act_moveY[i])
set h=YDWE_cinS_act_moveZ[i]-GetLocationZ(stupid)
call SetUnitFlyHeight( u, h, 0 )
if h <= 0.0 then
call GroupRemoveUnit(YDWE_cinS_act_groups[0], u)
set YDWE_cinS_act_moveZ[i] = 0.0
endif
elseif YDWE_cinS_act_moveTime[i]<=0.0 then
call GroupRemoveUnit(YDWE_cinS_act_groups[0], u)
endif
call SetUnitX(u,YDWE_cinS_act_moveX[i])
call SetUnitY(u,YDWE_cinS_act_moveY[i])
set stupid=null
set u = null
endfunction
function YDWEParticleTurn takes nothing returns nothing
local unit u = GetEnumUnit()
local integer i = GetUnitUserData(u)
set YDWE_cinS_act_turnTime[i] = YDWE_cinS_act_turnTime[i] - YDWE_cinS_ParticlePeriod
set YDWE_cinS_act_turnFi[i] = YDWE_cinS_act_turnFi[i] + YDWE_cinS_act_turnVFi[i]
call SetUnitFacing( u, YDWE_cinS_act_turnFi[i] )
if YDWE_cinS_act_turnTime[i]<=0.0 then
call GroupRemoveUnit(YDWE_cinS_act_groups[1], u)
endif
set u = null
endfunction
function YDWEParticleColour takes nothing returns nothing
local unit u = GetEnumUnit()
local integer i = GetUnitUserData(u)
set YDWE_cinS_act_colourTime[i] = YDWE_cinS_act_colourTime[i] - YDWE_cinS_ParticlePeriod
set YDWE_cinS_act_colourR[i] = YDWE_cinS_act_colourR[i] + YDWE_cinS_act_colourVR[i]
set YDWE_cinS_act_colourG[i] = YDWE_cinS_act_colourG[i] + YDWE_cinS_act_colourVG[i]
set YDWE_cinS_act_colourB[i] = YDWE_cinS_act_colourB[i] + YDWE_cinS_act_colourVB[i]
set YDWE_cinS_act_colourA[i] = YDWE_cinS_act_colourA[i] + YDWE_cinS_act_colourVA[i]
call SetUnitVertexColor(u, PercentTo255(YDWE_cinS_act_colourR[i]), PercentTo255(YDWE_cinS_act_colourG[i]), PercentTo255(YDWE_cinS_act_colourB[i]), PercentTo255(YDWE_cinS_act_colourA[i]))
if YDWE_cinS_act_colourTime[i]<=0.0 then
call GroupRemoveUnit(YDWE_cinS_act_groups[2], u)
endif
set u = null
endfunction
function YDWEParticleSize takes nothing returns nothing
local unit u = GetEnumUnit()
local integer i = GetUnitUserData(u)
set YDWE_cinS_act_sizeTime[i] = YDWE_cinS_act_sizeTime[i] - YDWE_cinS_ParticlePeriod
set YDWE_cinS_act_sizeS[i] = YDWE_cinS_act_sizeS[i] + YDWE_cinS_act_sizeVS[i]
call SetUnitScale(u,YDWE_cinS_act_sizeS[i],YDWE_cinS_act_sizeS[i],YDWE_cinS_act_sizeS[i])
if YDWE_cinS_act_sizeTime[i]<=0.0 then
call GroupRemoveUnit(YDWE_cinS_act_groups[3], u)
endif
set u = null
endfunction
function YDWEParticleMain takes nothing returns nothing
call GroupAddUnit(YDWE_cinS_act_groups[0], null)
call ForGroup(YDWE_cinS_act_groups[0], function YDWEParticleMove )
call GroupAddUnit(YDWE_cinS_act_groups[1], null)
call ForGroup(YDWE_cinS_act_groups[1], function YDWEParticleTurn )
call GroupAddUnit(YDWE_cinS_act_groups[2], null)
call ForGroup(YDWE_cinS_act_groups[2], function YDWEParticleColour )
call GroupAddUnit(YDWE_cinS_act_groups[3], null)
call ForGroup(YDWE_cinS_act_groups[3], function YDWEParticleSize )
endfunction
function YDWEUnitMove takes unit u, real destX, real destY, real duration, real g returns nothing
local real x = GetUnitX( u )
local real y = GetUnitY( u )
local integer i = GetUnitUserData( u )
local location stupid = YDWE_cinS_tempPoint
local real z
if duration < YDWE_cinS_ParticlePeriod then
set duration = YDWE_cinS_ParticlePeriod
endif
if g != 0 then
if YDWE_cinS_act_moveZ[i] == 0.0 then
call MoveLocation(stupid, x,y)
set z = GetLocationZ(stupid)
set YDWE_cinS_act_moveZ[i] = z
else
set z = YDWE_cinS_act_moveZ[i]
endif
call MoveLocation(stupid, destX, destY)
set z = GetLocationZ(stupid)-z
set YDWE_cinS_act_moveVZ[i] = ((g*duration/2)+(z/duration))*YDWE_cinS_ParticlePeriod
set YDWE_cinS_act_moveAZ[i] = (-g*YDWE_cinS_ParticlePeriod*YDWE_cinS_ParticlePeriod)
else
set YDWE_cinS_act_moveAZ[i] = 0.0
endif
set YDWE_cinS_act_moveX[i] = x
set YDWE_cinS_act_moveY[i] = y
set YDWE_cinS_act_moveVX[i] = (destX - x)/duration*YDWE_cinS_ParticlePeriod
set YDWE_cinS_act_moveVY[i] = (destY - y)/duration*YDWE_cinS_ParticlePeriod
set YDWE_cinS_act_moveTime[i] = duration
call GroupAddUnit( YDWE_cinS_act_groups[0], u )
set stupid = null
endfunction
function YDWEUnitTurn takes unit u, real destAng, real duration, integer clockwise returns nothing
// input angle between 0.00 and 360.00 please
local real angle = GetUnitFacing(u)
local integer i = GetUnitUserData(u)
local real turnspeed
if duration < YDWE_cinS_ParticlePeriod then
set duration = YDWE_cinS_ParticlePeriod
endif
if clockwise > 0 and angle > destAng then
set destAng = destAng + 360.0
elseif clockwise < 0 and angle < destAng then
set destAng = destAng - 360.0
elseif clockwise == 0 then
if (angle - destAng) > 180 then
set destAng = destAng + 360
elseif (angle - destAng) < -180 then
set destAng = destAng - 360
endif
endif
set turnspeed = (destAng - angle)/duration*YDWE_cinS_ParticlePeriod
set YDWE_cinS_act_turnFi[i] = angle
set YDWE_cinS_act_turnVFi[i] = turnspeed
set YDWE_cinS_act_turnTime[i] = duration
call GroupAddUnit( YDWE_cinS_act_groups[1], u )
endfunction
function YDWEUnitColour takes unit u, real red, real green, real blue, real opacity, real duration returns nothing
local integer i = GetUnitUserData(u)
if duration < YDWE_cinS_ParticlePeriod then
set duration = YDWE_cinS_ParticlePeriod
endif
set red = red - YDWE_cinS_act_colourR[i]
set YDWE_cinS_act_colourVR[i] = red / duration * YDWE_cinS_ParticlePeriod
set green = green - YDWE_cinS_act_colourG[i]
set YDWE_cinS_act_colourVG[i] = green / duration * YDWE_cinS_ParticlePeriod
set blue = blue - YDWE_cinS_act_colourB[i]
set YDWE_cinS_act_colourVB[i] = blue / duration * YDWE_cinS_ParticlePeriod
set opacity = opacity - YDWE_cinS_act_colourA[i]
set YDWE_cinS_act_colourVA[i] = opacity / duration * YDWE_cinS_ParticlePeriod
set YDWE_cinS_act_colourTime[i] = duration
call GroupAddUnit( YDWE_cinS_act_groups[2], u )
endfunction
function YDWEUnitSize takes unit u, real size, real duration returns nothing
local integer i = GetUnitUserData(u)
if duration < YDWE_cinS_ParticlePeriod then
set duration = YDWE_cinS_ParticlePeriod
endif
set size = size - YDWE_cinS_act_sizeS[i]
set YDWE_cinS_act_sizeVS[i] = size / duration * YDWE_cinS_ParticlePeriod
set YDWE_cinS_act_sizeTime[i] = duration
call GroupAddUnit( YDWE_cinS_act_groups[3], u )
endfunction
function YDWEParticleInit takes nothing returns nothing
local trigger t = CreateTrigger()
set YDWE_cinS_act_groups[0]=CreateGroup()
set YDWE_cinS_act_groups[1]=CreateGroup()
set YDWE_cinS_act_groups[2]=CreateGroup()
set YDWE_cinS_act_groups[3]=CreateGroup()
call TriggerRegisterTimerEvent(t, YDWE_cinS_ParticlePeriod, true)
call TriggerAddAction( t, function YDWEParticleMain )
set t = null
endfunction
// ****************************************************************************
// **
// ** SUBTITLE ENGINE
// **
// ****************************************************************************
constant function DefaultCharWidth takes nothing returns real
return 1.56
endfunction
function YDWEDisplaySubtitle takes string line1 returns nothing
local string char
local integer i
local real charwidth
local real totalwidth
set i = 0
set totalwidth = 0
loop
set char = SubString(line1, i, i+1)
exitwhen char == ""
if StringCase(char, false)==char then
set charwidth = YDWEGetRealByString( "subtitles", "low"+char)
else
set charwidth = YDWEGetRealByString( "subtitles", "upp"+char)
endif
if charwidth == 0.0 then
set charwidth = DefaultCharWidth()
endif
set totalwidth=totalwidth+charwidth
set i = i + 1
endloop
set i = R2I((50.0-totalwidth/2)/YDWEGetRealByString( "subtitles", "low "))
set char = ""
loop
exitwhen i <= 3
set char=char+" "
set i = i-1
endloop
set line1=char+line1
// call DisplayTimedTextToPlayer(GetLocalPlayer(), 0.25,0.0, 1000.0, line1)
call DisplayTimedTextToPlayer( GetLocalPlayer(), 0.25, 0.0, 1000.0, "\n\n\n\n\n\n" + line1 + "\n\n\n\n\n\n\n\n\n\n\n\n")
//set g=null
endfunction
function YDWEClearSubtitles takes nothing returns nothing
call ClearTextMessages()
endfunction
function YDWESubtitlesInit takes nothing returns nothing
call YDWESaveRealByString("subtitles", "uppa", 2.06)
call YDWESaveRealByString("subtitles", "uppb", 1.62)
call YDWESaveRealByString("subtitles", "uppc", 1.83)
call YDWESaveRealByString("subtitles", "uppd", 1.93)
call YDWESaveRealByString("subtitles", "uppe", 1.53)
call YDWESaveRealByString("subtitles", "uppf", 1.22)
call YDWESaveRealByString("subtitles", "uppg", 2.04)
call YDWESaveRealByString("subtitles", "upph", 2.00)
call YDWESaveRealByString("subtitles", "uppi", 0.77)
call YDWESaveRealByString("subtitles", "uppj", 0.80)
call YDWESaveRealByString("subtitles", "uppk", 1.83)
call YDWESaveRealByString("subtitles", "uppl", 1.48)
call YDWESaveRealByString("subtitles", "uppm", 2.64)
call YDWESaveRealByString("subtitles", "uppn", 2.00)
call YDWESaveRealByString("subtitles", "uppo", 2.25)
call YDWESaveRealByString("subtitles", "uppp", 1.56)
call YDWESaveRealByString("subtitles", "uppq", 2.37)
call YDWESaveRealByString("subtitles", "uppr", 1.79)
call YDWESaveRealByString("subtitles", "upps", 1.56)
call YDWESaveRealByString("subtitles", "uppt", 1.51)
call YDWESaveRealByString("subtitles", "uppu", 1.87)
call YDWESaveRealByString("subtitles", "uppv", 1.83)
call YDWESaveRealByString("subtitles", "uppw", 2.82)
call YDWESaveRealByString("subtitles", "uppx", 2.04)
call YDWESaveRealByString("subtitles", "uppy", 1.79)
call YDWESaveRealByString("subtitles", "uppz", 1.79)
call YDWESaveRealByString("subtitles", "lowa", 1.51)
call YDWESaveRealByString("subtitles", "lowb", 1.59)
call YDWESaveRealByString("subtitles", "lowc", 1.47)
call YDWESaveRealByString("subtitles", "lowd", 1.62)
call YDWESaveRealByString("subtitles", "lowe", 1.59)
call YDWESaveRealByString("subtitles", "lowf", 0.98)
call YDWESaveRealByString("subtitles", "lowg", 1.76)
call YDWESaveRealByString("subtitles", "lowh", 1.59)
call YDWESaveRealByString("subtitles", "lowi", 0.65)
call YDWESaveRealByString("subtitles", "lowj", 0.77)
call YDWESaveRealByString("subtitles", "lowk", 1.47)
call YDWESaveRealByString("subtitles", "lowl", 0.68)
call YDWESaveRealByString("subtitles", "lowm", 2.27)
call YDWESaveRealByString("subtitles", "lown", 1.56)
call YDWESaveRealByString("subtitles", "lowo", 1.66)
call YDWESaveRealByString("subtitles", "lowp", 1.62)
call YDWESaveRealByString("subtitles", "lowq", 1.62)
call YDWESaveRealByString("subtitles", "lowr", 0.98)
call YDWESaveRealByString("subtitles", "lows", 1.26)
call YDWESaveRealByString("subtitles", "lowt", 1.00)
call YDWESaveRealByString("subtitles", "lowu", 1.59)
call YDWESaveRealByString("subtitles", "lowv", 1.59)
call YDWESaveRealByString("subtitles", "loww", 2.29)
call YDWESaveRealByString("subtitles", "lowx", 1.59)
call YDWESaveRealByString("subtitles", "lowy", 1.59)
call YDWESaveRealByString("subtitles", "lowz", 1.47)
call YDWESaveRealByString("subtitles", "low.", 0.51)
call YDWESaveRealByString("subtitles", "low,", 0.55)
call YDWESaveRealByString("subtitles", "low ", 0.80)
call YDWESaveRealByString("subtitles", "low-", 1.04)
//set g=null
endfunction
// ****************************************************************************
// **
// ** SOUND ENGINE
// **
// ****************************************************************************
function YDWEAllocateSound takes string path, integer id, integer volume, real pitch returns nothing
endfunction
// ****************************************************************************
// **
// ** SCRIPT SYSTEM
// **
// ****************************************************************************
function YDWEPlayScene takes integer scene returns nothing
call YDWESaveIntegerByString( "Interpreter", "Scene", scene )
call YDWESaveRealByString( "Interpreter", "SceneTime", 0.00 )
call YDWESaveIntegerByString( "Interpreter", "PendingAction", YDWEGetIntegerByString( "Scene"+I2S(scene), "FirstSpot" ) )
endfunction
function YDWEPlaySceneFromTime takes integer scene, real time returns nothing
local string s
local integer previous = YDWEGetIntegerByString( "Scene"+I2S(scene), "LastSpot" )
if time < 0.00 then
debug call BJDebugMsg( "User error: negative action time" )
return
endif
loop
set s = "S"+I2S(scene)+"A"+I2S(previous)
exitwhen time > YDWEGetRealByString( s, "Time" )
set previous = YDWEGetIntegerByString( s, "PrevAction" )
endloop
call YDWESaveIntegerByString( "Interpreter", "Scene", scene )
call YDWESaveRealByString( "Interpreter", "SceneTime", time )
call YDWESaveIntegerByString( "Interpreter", "PendingAction", YDWEGetIntegerByString( s, "NextAction" ) )
endfunction
function YDWEScriptInterpreter takes nothing returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local real time = YDWEGetRealByString( "Interpreter", "SceneTime" ) + YDWE_cinS_ScriptSystemPeriod
local string s
if scene == 0 then
return
endif
loop
set s = "S"+I2S(scene)+"A"+I2S(action)
exitwhen time < YDWEGetRealByString( s, "Time" )
if action == 0 then
return
endif
call ExecuteFunc( YDWEGetStringByString( s, "YDWEActionType" ) )
if scene != YDWEGetIntegerByString( "Interpreter", "Scene" ) then
return
endif
set action = YDWEGetIntegerByString( s, "NextAction" )
call YDWESaveIntegerByString( "Interpreter", "PendingAction", action )
endloop
call YDWESaveRealByString( "Interpreter", "SceneTime", time )
endfunction
function YDWEWriteToScene takes integer scene returns nothing
call YDWESaveIntegerByString( "Scripter", "Scene", scene )
endfunction
function YDWEGetActionSpot takes integer scene, real time returns integer
//local gamecache g = GC()
local string s
local integer previous = YDWEGetIntegerByString( "Scene"+I2S(scene), "LastSpot" )
local integer length = YDWEGetIntegerByString( "Scene"+I2S(scene), "Length" ) + 1
local integer next = 0
if time < 0.00 then
debug call BJDebugMsg( "User error: negative action time" )
return -1
endif
call YDWESaveIntegerByString( "Scene"+I2S(scene), "Length", length )
loop
if previous == 0 then
call YDWESaveIntegerByString( "Scene"+I2S(scene), "FirstSpot", length )
endif
set s = "S"+I2S(scene)+"A"+I2S(previous)
exitwhen time >= YDWEGetRealByString( s, "Time" )
set previous = YDWEGetIntegerByString( s, "PrevAction" )
endloop
if previous == YDWEGetIntegerByString( "Scene"+I2S(scene), "LastSpot" ) then
call YDWESaveIntegerByString( "Scene"+I2S(scene), "LastSpot", length )
call YDWESaveIntegerByString( s, "NextAction", length )
else
set next = YDWEGetIntegerByString( s, "NextAction" )
call YDWESaveIntegerByString( s, "NextAction", length )
set s = "S"+I2S(scene)+"A"+I2S(next)
call YDWESaveIntegerByString( s, "PrevAction", length )
endif
set s = "S"+I2S(scene)+"A"+I2S(length)
call YDWESaveIntegerByString( s, "PrevAction", previous )
call YDWESaveIntegerByString( s, "NextAction", next )
return length
endfunction
// next scene
function YDWENextScene takes nothing returns nothing
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
call YDWEPlayScene(scene+1)
endfunction
function YDWEScriptNextScene takes real time returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWENextScene" )
call YDWESaveRealByString( s, "Time", time )
//set g=null
endfunction
// external function
function YDWEScriptExternalFunc takes real time, string funcName returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", funcName )
call YDWESaveRealByString( s, "Time", time )
//set g=null
endfunction
// special effect
function YDWESpecialEffectDestroy takes nothing returns nothing
local timer t = GetExpiredTimer()
local effect eff = YDWEGetEffectByString( I2S(YDWEH2I(t)), "effect" )
call DestroyEffect( eff )
call YDWEFlushMissionByString(I2S(YDWEH2I(t)))
call DestroyTimer( t )
set t = null
set eff = null
endfunction
function YDWESpecialEffectDestroyOverTime takes effect eff, real duration returns nothing
local timer t = CreateTimer()
call YDWESaveEffectByString( I2S(YDWEH2I(t)), "effect", eff )
call TimerStart(t, duration, false, function YDWESpecialEffectDestroy)
set t = null
endfunction
function YDWESpecialEffectPoint takes nothing returns nothing
//local gamecache g = GC()
local effect eff = null
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local real x = YDWEGetRealByString( s, "real1" )
local real y = YDWEGetRealByString( s, "real2" )
local real z = YDWEGetRealByString( s, "real3" )
local real duration = YDWEGetRealByString( s, "real4" )
local string path = YDWEGetStringByString( s, "str1" )
local destructable d = CreateDestructableZ( 'OTip', x, y, z, 0.00, 1, 0 )
set eff = AddSpecialEffect(path, x, y)
call RemoveDestructable( d )
call YDWESpecialEffectDestroyOverTime(eff, duration)
set d = null
set eff = null
//set g=null
endfunction
function YDWEScriptPointEffect takes real time, real x, real y, real z, string path, real duration returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWESpecialEffectPoint" )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveRealByString( s, "real1", x )
call YDWESaveRealByString( s, "real2", y )
call YDWESaveRealByString( s, "real3", z )
call YDWESaveRealByString( s, "real4", duration )
call YDWESaveStringByString( s, "str1", path )
//set g=null
endfunction
function YDWESpecialEffectActor takes nothing returns nothing
//local gamecache g = GC()
local effect eff = null
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local integer actID = YDWEGetIntegerByString( s, "actor" )
local real duration = YDWEGetRealByString( s, "real1" )
local string path = YDWEGetStringByString( s, "str1" )
local string attPoint = YDWEGetStringByString( s, "str2" )
set eff = AddSpecialEffectTarget(path, YDWE_cinS_actor[actID], attPoint)
call YDWESpecialEffectDestroyOverTime(eff, duration)
set eff = null
//set g=null
endfunction
function YDWEScriptActEffect takes real time, integer actor, string path, string attachpoint, real duration returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWESpecialEffectActor" )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveIntegerByString( s, "actor", actor )
call YDWESaveRealByString( s, "real1", duration )
call YDWESaveStringByString( s, "str1", path )
call YDWESaveStringByString( s, "str2", attachpoint )
//set g=null
endfunction
// play sound
function YDWEPlaySoundPath takes nothing returns nothing
//local gamecache g = GC()
local sound snd = null
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local integer volume = YDWEGetIntegerByString( s, "int1" )
local real pitch = YDWEGetRealByString( s, "real1" )
local string path = YDWEGetStringByString( s, "str1" )
set snd = CreateSound(path, false, false, false, 10, 10, "")
call SetSoundPitch(snd, pitch)
call SetSoundVolume(snd, volume)
call StartSound(snd)
call KillSoundWhenDone(snd)
set snd = null
//set g=null
endfunction
function YDWEPreloadSoundPath takes nothing returns nothing
//local gamecache g = GC()
local timer t = GetExpiredTimer()
local string path = YDWEGetStringByString( I2S(YDWEH2I(t)), "path" )
local sound snd = CreateSound(path, false, false, false, 10, 10, "")
call SetSoundVolume(snd, 0)
call StartSound(snd)
call KillSoundWhenDone(snd)
set snd = null
call YDWEFlushMissionByString( I2S(YDWEH2I(t)) )
call DestroyTimer(t)
set t = null
//set g=null
endfunction
function YDWEScriptPlaySound takes real time, string path, real pitch, integer volume returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local timer t
if not(YDWEGetBooleanByString("preloading", path)) then
set t = CreateTimer()
call YDWESaveStringByString( I2S(YDWEH2I(t)), "path", path )
call TimerStart(t, 1.00, false, function YDWEPreloadSoundPath)
call YDWESaveBooleanByString("preloading", path, true)
set t = null
endif
call YDWESaveStringByString( s, "YDWEActionType", "YDWEPlaySoundPath" )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveRealByString( s, "real1", pitch )
call YDWESaveIntegerByString( s, "int1", volume )
call YDWESaveStringByString( s, "str1", path )
//set g=null
endfunction
// ability level
function YDWEActorAbilityLevel takes nothing returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local integer actID = YDWEGetIntegerByString( s, "actor" )
local integer abilityID = YDWEGetIntegerByString( s, "int1" )
local integer level = YDWEGetIntegerByString( s, "int2" )
if level>0 then
call UnitRemoveAbility( YDWE_cinS_actor[actID], abilityID )
call UnitAddAbility( YDWE_cinS_actor[actID], abilityID )
call SetUnitAbilityLevel( YDWE_cinS_actor[actID], abilityID, level )
else
call UnitRemoveAbility( YDWE_cinS_actor[actID], abilityID )
endif
//set g=null
endfunction
function YDWEScriptActAbilityLvl takes real time, integer actor, integer abilityID, integer level returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWEActorAbilityLevel" )
call YDWESaveIntegerByString( s, "actor", actor )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveIntegerByString( s, "int1", abilityID )
call YDWESaveIntegerByString( s, "int2", level )
//set g=null
endfunction
// play animation
function YDWEActorPlayAnimation takes nothing returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local integer actID = YDWEGetIntegerByString( s, "actor" )
local integer animationID = YDWEGetIntegerByString( s, "int1" )
local real animationBlend = YDWEGetRealByString( s, "real1" )
call SetUnitBlendTime(YDWE_cinS_actor[actID], animationBlend)
call SetUnitAnimationByIndex( YDWE_cinS_actor[actID], animationID )
//set g=null
endfunction
function YDWEScriptActAnimPlay takes real time, integer actor, integer animationID, real animationBlend returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWEActorPlayAnimation" )
call YDWESaveIntegerByString( s, "actor", actor )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveIntegerByString( s, "int1", animationID )
call YDWESaveRealByString( s, "real1", animationBlend )
//set g=null
endfunction
function YDWEActorResetAnimation takes nothing returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local integer actID = YDWEGetIntegerByString( s, "actor" )
call ResetUnitAnimation( YDWE_cinS_actor[actID] )
//set g=null
endfunction
function YDWEScriptActAnimReset takes real time, integer actor returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWEActorResetAnimation" )
call YDWESaveIntegerByString( s, "actor", actor )
call YDWESaveRealByString( s, "Time", time )
//set g=null
endfunction
// animation speed
function YDWEActorSpeedAnimation takes nothing returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local integer actID = YDWEGetIntegerByString( s, "actor" )
local real animationSpeed = YDWEGetRealByString( s, "real1" )
call SetUnitTimeScale( YDWE_cinS_actor[actID], animationSpeed )
//set g=null
endfunction
function YDWEScriptActAnimSpeed takes real time, integer actor, real speed returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWEActorSpeedAnimation" )
call YDWESaveIntegerByString( s, "actor", actor )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveRealByString( s, "real1", speed )
//set g=null
endfunction
// slide unit
function YDWEActorSlide takes nothing returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local integer actID = YDWEGetIntegerByString( s, "actor" )
local real destX = YDWEGetRealByString( s, "real1" )
local real destY = YDWEGetRealByString( s, "real2" )
local real duration = YDWEGetRealByString( s, "real3" )
local real gr = YDWEGetRealByString( s, "real4" )
call YDWEUnitMove( YDWE_cinS_actor[actID], destX, destY, duration, gr )
//set g=null
endfunction
function YDWEScriptActSlide takes real time, integer actor, real x, real y, real duration, real gr returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWEActorSlide" )
call YDWESaveIntegerByString( s, "actor", actor )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveRealByString( s, "real1", x )
call YDWESaveRealByString( s, "real2", y )
call YDWESaveRealByString( s, "real3", duration )
call YDWESaveRealByString( s, "real4", gr )
//set g=null
endfunction
// walk unit
function YDWEActorWalkProperties takes integer unitID, integer walkAnimID, real walkAnimDuration, real walkSpeed returns nothing
local real speed = walkSpeed / walkAnimDuration
local string s = "ActorStats "+I2S(unitID)
call YDWESaveRealByString( s, "speed", speed )
call YDWESaveIntegerByString( s, "animation", walkAnimID )
endfunction
function YDWEActorWalk takes nothing returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local integer actID = YDWEGetIntegerByString( s, "actor" )
local real destX = YDWEGetRealByString( s, "real1" )
local real destY = YDWEGetRealByString( s, "real2" )
local real duration = YDWEGetRealByString( s, "real3" )
local real animationBlend = YDWEGetRealByString( s, "real4" )
call YDWEUnitMove( YDWE_cinS_actor[actID], destX, destY, duration, 0 )
set s = "ActorStats "+I2S(GetUnitTypeId(YDWE_cinS_actor[actID]))
set destX=destX-GetUnitX(YDWE_cinS_actor[actID])
set destY=destY-GetUnitY(YDWE_cinS_actor[actID])
call YDWEUnitTurn( YDWE_cinS_actor[actID], bj_RADTODEG * Atan2(destY , destX), animationBlend, 0 )
call SetUnitBlendTime(YDWE_cinS_actor[actID], animationBlend)
call SetUnitTimeScale( YDWE_cinS_actor[actID], (SquareRoot(destX*destX+destY*destY) / (duration+0.01) / (YDWEGetRealByString( s, "speed"))+0.01) )
call SetUnitAnimationByIndex( YDWE_cinS_actor[actID], YDWEGetIntegerByString( s, "animation") )
//set g=null
endfunction
function YDWEScriptActWalk takes real time, integer actor, real x, real y, real duration, real animationBlend returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWEActorWalk" )
call YDWESaveIntegerByString( s, "actor", actor )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveRealByString( s, "real1", x )
call YDWESaveRealByString( s, "real2", y )
call YDWESaveRealByString( s, "real3", duration )
call YDWESaveRealByString( s, "real4", animationBlend )
//set g=null
endfunction
// turn unit
function YDWEActorTurn takes nothing returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local integer actID = YDWEGetIntegerByString( s, "actor" )
local real destAng = YDWEGetRealByString( s, "real1" )
local real duration = YDWEGetRealByString( s, "real2" )
local integer clockwise = YDWEGetIntegerByString( s, "int1" )
call YDWEUnitTurn( YDWE_cinS_actor[actID], destAng, duration, clockwise )
//set g=null
endfunction
function YDWEScriptActTurn takes real time, integer actor, real destAng, real duration, integer clockwise returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWEActorTurn" )
call YDWESaveIntegerByString( s, "actor", actor )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveRealByString( s, "real1", destAng )
call YDWESaveRealByString( s, "real2", duration )
call YDWESaveIntegerByString( s, "int1", clockwise )
//set g=null
endfunction
function YDWEActorFace takes nothing returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local integer actID = YDWEGetIntegerByString( s, "actor" )
local integer targetID = YDWEGetIntegerByString( s, "int1" )
local integer headORchest = YDWEGetIntegerByString( s, "int2" )
local real x = YDWEGetRealByString( s, "real1" )
local real y = YDWEGetRealByString( s, "real2" )
local real z = YDWEGetRealByString( s, "real3" )
local real animationBlend = YDWEGetRealByString( s, "real4" )
if headORchest == 0 then
set s = "Bone_Head"
else
set s = "Bone_Chest"
endif
call SetUnitBlendTime(YDWE_cinS_actor[actID], animationBlend)
call SetUnitLookAt( YDWE_cinS_actor[actID], s, YDWE_cinS_actor[targetID], x,y,z )
//set g=null
endfunction
function YDWEScriptActFace takes real time, integer actor, integer destActor, integer headORchest, real xoff, real yoff, real zoff, real animationBlend returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWEActorFace" )
call YDWESaveIntegerByString( s, "actor", actor )
call YDWESaveIntegerByString( s, "int1", destActor )
call YDWESaveIntegerByString( s, "int2", headORchest )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveRealByString( s, "real1", xoff )
call YDWESaveRealByString( s, "real2", yoff )
call YDWESaveRealByString( s, "real3", zoff )
call YDWESaveRealByString( s, "real4", animationBlend )
//set g=null
endfunction
function YDWEActorFaceReset takes nothing returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local integer actID = YDWEGetIntegerByString( s, "actor" )
local real animationBlend = YDWEGetRealByString( s, "real1" )
call SetUnitBlendTime(YDWE_cinS_actor[actID], animationBlend)
call ResetUnitLookAt( YDWE_cinS_actor[actID] )
//set g=null
endfunction
function YDWEScriptActFaceReset takes real time, integer actor, real animationBlend returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWEActorFaceReset" )
call YDWESaveIntegerByString( s, "actor", actor )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveRealByString( s, "real1", animationBlend )
//set g=null
endfunction
// vertex colouring
function YDWEActorColour takes nothing returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local integer actID = YDWEGetIntegerByString( s, "actor" )
local real red = YDWEGetRealByString( s, "real1" )
local real green = YDWEGetRealByString( s, "real2" )
local real blue = YDWEGetRealByString( s, "real3" )
local real opacity = YDWEGetRealByString( s, "real4" )
local real duration = YDWEGetRealByString( s, "real5" )
call YDWEUnitColour( YDWE_cinS_actor[actID], red, green, blue, opacity, duration )
//set g=null
endfunction
function YDWEScriptActColour takes real time, integer actor, real red, real green, real blue, real opacity, real duration returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWEActorColour" )
call YDWESaveIntegerByString( s, "actor", actor )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveRealByString( s, "real1", red )
call YDWESaveRealByString( s, "real2", green )
call YDWESaveRealByString( s, "real3", blue )
call YDWESaveRealByString( s, "real4", opacity )
call YDWESaveRealByString( s, "real5", duration )
//set g=null
endfunction
// size unit
function YDWEActorSize takes nothing returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local integer actID = YDWEGetIntegerByString( s, "actor" )
local real size = YDWEGetRealByString( s, "real1" )
local real duration = YDWEGetRealByString( s, "real2" )
call YDWEUnitSize( YDWE_cinS_actor[actID], size, duration )
//set g=null
endfunction
function YDWEScriptActSize takes real time, integer actor, real size, real duration returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWEActorSize" )
call YDWESaveIntegerByString( s, "actor", actor )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveRealByString( s, "real1", size )
call YDWESaveRealByString( s, "real2", duration )
//set g=null
endfunction
// camera scripting
function YDWECameraAction takes nothing returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local integer camID = YDWEGetIntegerByString( s, "actor" )
local integer changeType = YDWEGetIntegerByString( s, "int1" )
local real duration = YDWEGetRealByString( s, "real1" )
if changeType == 1 then
call YDWEApplyCameraInstantly( YDWE_cinS_camera[camID] )
elseif changeType == 2 then
call YDWEApplyCameraLinear( YDWE_cinS_camera[camID], duration )
elseif changeType == 3 then
call YDWEApplyCameraSmooth( YDWE_cinS_camera[camID], duration )
elseif changeType == 4 then
call YDWEApplyCameraSmoothStop( YDWE_cinS_camera[camID], duration )
endif
//set g=null
endfunction
function YDWEScriptCamera takes real time, integer camera, real duration, integer changeType returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWECameraAction" )
call YDWESaveIntegerByString( s, "actor", camera )
call YDWESaveIntegerByString( s, "int1", changeType )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveRealByString( s, "real1", duration )
//set g=null
endfunction
function YDWECameraStatChangeInst takes integer stat, real endvalue returns nothing
set YDWE_cinS_cam_startval[stat] = endvalue
set YDWE_cinS_cam_startvel[stat] = 0.0
set YDWE_cinS_cam_accprim[stat] = 0.0
set YDWE_cinS_cam_accsec[stat] = 0.0
set YDWE_cinS_cam_time[stat] = 0.0
set YDWE_cinS_cam_endtime[stat] = 0.0
endfunction
function YDWECameraStatAction takes nothing returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local integer statID = YDWEGetIntegerByString( s, "actor" )
local integer changeType = YDWEGetIntegerByString( s, "int1" )
local real duration = YDWEGetRealByString( s, "real1" )
local real endValue = YDWEGetRealByString( s, "real2" )
local real endSpeed = YDWEGetRealByString( s, "real3" )
if statID==4 or statID==5 or statID==6 then
if changeType == 1 then
call YDWECameraStatChangeInst( statID, endValue )
elseif changeType == 2 then
call YDWECameraStatChangeLinRad( statID, endValue, duration )
elseif changeType == 3 then
call YDWECameraStatChangeRad( statID, endValue, duration )
elseif changeType == 4 then
call YDWECameraStatChangeAdvRad( statID, endValue, endSpeed, duration )
endif
else
if changeType == 1 then
call YDWECameraStatChangeInst( statID, endValue )
elseif changeType == 2 then
call YDWECameraStatChangeLin( statID, endValue, duration )
elseif changeType == 3 then
call YDWECameraStatChange( statID, endValue, duration )
elseif changeType == 4 then
call YDWECameraStatChangeAdv( statID, endValue, endSpeed, duration )
endif
endif
//set g=null
endfunction
function YDWEScriptCameraStat takes real time, integer statID, real duration, real endValue, real endSpeed, integer changeType returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWECameraStatAction" )
call YDWESaveIntegerByString( s, "actor", statID )
call YDWESaveIntegerByString( s, "int1", changeType )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveRealByString( s, "real1", duration )
call YDWESaveRealByString( s, "real2", endValue )
call YDWESaveRealByString( s, "real3", endSpeed )
//set g=null
endfunction
// camera statID list
// 1 - x coordinate; 2 - y coordinate; 3 - z coordinate;
// 4 - facing angle; 5 - angle of attack; 6 - roll angle;
// 7 - field ov view; 8 - far z; 9 - distance to target
function YDWECameraIgnoreTerrain takes nothing returns nothing
set YDWE_cinS_cam_ignoreTerrain = true
endfunction
function YDWECameraUnignoreTerrain takes nothing returns nothing
set YDWE_cinS_cam_ignoreTerrain = false
endfunction
function YDWEScriptCameraIgnoreTerrain takes real time, boolean ignore returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
if ignore then
call YDWESaveStringByString( s, "YDWEActionType", "YDWECameraIgnoreTerrain" )
else
call YDWESaveStringByString( s, "YDWEActionType", "YDWECameraUnignoreTerrain" )
endif
//set g=null
endfunction
function YDWEActorCameraLock takes nothing returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local integer actID = YDWEGetIntegerByString( s, "actor" )
local real duration = YDWEGetRealByString( s, "real1" )
local real xoff = YDWEGetRealByString( s, "real2" )
local real yoff = YDWEGetRealByString( s, "real3" )
local real zoff = YDWEGetRealByString( s, "real4" )
local boolean smooth = YDWEGetIntegerByString( s, "int1" )==1
call YDWECameraLockToUnitOverride(YDWE_cinS_actor[actID], xoff, yoff, zoff, smooth, duration )
//set g=null
endfunction
function YDWEScriptActCameraLock takes real time, integer actor, real xoff, real yoff, real zoff, boolean smooth, real duration returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWEActorCameraLock" )
call YDWESaveIntegerByString( s, "actor", actor )
call YDWESaveRealByString( s, "real2", xoff )
call YDWESaveRealByString( s, "real3", yoff )
call YDWESaveRealByString( s, "real4", zoff )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveRealByString( s, "real1", duration )
if smooth then
call YDWESaveIntegerByString( s, "int1", 1 )
else
call YDWESaveIntegerByString( s, "int1", 0 )
endif
//set g=null
endfunction
function YDWEActorCameraLockReset takes nothing returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local real duration = YDWEGetRealByString( s, "real1" )
local boolean smooth = YDWEGetIntegerByString( s, "int1" )==1
call YDWECameraLockToUnitReset( smooth, duration )
//set g=null
endfunction
function YDWEScriptActCameraLockReset takes real time, boolean smooth, real duration returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWEActorCameraLockReset" )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveRealByString( s, "real1", duration )
if smooth then
call YDWESaveIntegerByString( s, "int1", 1 )
else
call YDWESaveIntegerByString( s, "int1", 0 )
endif
//set g=null
endfunction
function YDWEActorCameraFace takes nothing returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local integer actID = YDWEGetIntegerByString( s, "actor" )
local real duration = YDWEGetRealByString( s, "real1" )
local real xoff = YDWEGetRealByString( s, "real2" )
local real yoff = YDWEGetRealByString( s, "real3" )
local real zoff = YDWEGetRealByString( s, "real4" )
local boolean smooth = YDWEGetIntegerByString( s, "int1" )==1
call YDWECameraFaceToUnitOverride(YDWE_cinS_actor[actID], xoff, yoff, zoff, smooth, duration )
//set g=null
endfunction
function YDWEScriptActCameraFace takes real time, integer actor, real xoff, real yoff, real zoff, boolean smooth, real duration returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWEActorCameraFace" )
call YDWESaveIntegerByString( s, "actor", actor )
call YDWESaveRealByString( s, "real2", xoff )
call YDWESaveRealByString( s, "real3", yoff )
call YDWESaveRealByString( s, "real4", zoff )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveRealByString( s, "real1", duration )
if smooth then
call YDWESaveIntegerByString( s, "int1", 1 )
else
call YDWESaveIntegerByString( s, "int1", 0 )
endif
//set g=null
endfunction
function YDWEActorCameraFaceReset takes nothing returns nothing
//local gamecache g = GC()
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local real duration = YDWEGetRealByString( s, "real1" )
local boolean smooth = YDWEGetIntegerByString( s, "int1" )==1
call YDWECameraFaceToUnitReset( smooth, duration )
//set g=null
endfunction
function YDWEScriptActCameraFaceReset takes real time, boolean smooth, real duration returns nothing
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWEActorCameraFaceReset" )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveRealByString( s, "real1", duration )
if smooth then
call YDWESaveIntegerByString( s, "int1", 1 )
else
call YDWESaveIntegerByString( s, "int1", 0 )
endif
//set g=null
endfunction
function YDWEFogChange takes nothing returns nothing
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local real duration = YDWEGetRealByString( s, "real1" )
local real startZ = YDWEGetRealByString( s, "real2" )
local real endZ = YDWEGetRealByString( s, "real3" )
local real red = YDWEGetRealByString( s, "real4" )
local real green = YDWEGetRealByString( s, "real5" )
local real blue = YDWEGetRealByString( s, "real6" )
call YDWEApplyFog(startZ, endZ, red, green, blue, duration)
endfunction
function YDWEScriptFog takes real time, real startZ, real endZ, real red, real green, real blue, real duration returns nothing
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWEFogChange" )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveRealByString( s, "real1", duration )
call YDWESaveRealByString( s, "real2", startZ )
call YDWESaveRealByString( s, "real3", endZ )
call YDWESaveRealByString( s, "real4", red )
call YDWESaveRealByString( s, "real5", green )
call YDWESaveRealByString( s, "real6", blue )
//set g=null
endfunction
function YDWEFadeChange takes nothing returns nothing
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local real duration = YDWEGetRealByString( s, "real1" )
local real red = YDWEGetRealByString( s, "real2" )
local real green = YDWEGetRealByString( s, "real3" )
local real blue = YDWEGetRealByString( s, "real4" )
local real opacity = YDWEGetRealByString( s, "real5" )
call YDWEApplyFade(red, green, blue, opacity, duration)
endfunction
function YDWEScriptFade takes real time, real red, real green, real blue, real opacity, real duration returns nothing
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWEFadeChange" )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveRealByString( s, "real1", duration )
call YDWESaveRealByString( s, "real2", red )
call YDWESaveRealByString( s, "real3", green )
call YDWESaveRealByString( s, "real4", blue )
call YDWESaveRealByString( s, "real5", opacity )
//set g=null
endfunction
function YDWESubtitleDisplay takes nothing returns nothing
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
local string line = YDWEGetStringByString( s, "string1" )
if YDWE_cinS_displaySubtitles then
call YDWEDisplaySubtitle(line)
endif
//set g=null
endfunction
function YDWEScriptSubtitleLine takes real time, string line returns nothing
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWESubtitleDisplay" )
call YDWESaveRealByString( s, "Time", time )
call YDWESaveStringByString( s, "string1", line )
//set g=null
endfunction
function YDWESubtitleClear takes nothing returns nothing
local integer scene = YDWEGetIntegerByString( "Interpreter", "Scene" )
local integer action = YDWEGetIntegerByString( "Interpreter", "PendingAction" )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWEClearSubtitles()
//set g=null
endfunction
function YDWEScriptSubtitleClear takes real time returns nothing
local integer scene = YDWEGetIntegerByString( "Scripter", "Scene" )
local integer action = YDWEGetActionSpot( scene, time )
local string s = "S"+I2S(scene)+"A"+I2S(action)
call YDWESaveStringByString( s, "YDWEActionType", "YDWESubtitleClear" )
call YDWESaveRealByString( s, "Time", time )
//set g=null
endfunction
function YDWEScriptSystemInit takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterTimerEvent(t, YDWE_cinS_ScriptSystemPeriod, true)
call TriggerAddAction( t, function YDWEScriptInterpreter )
set t = null
endfunction
function YDWEInitCinematicSystem takes nothing returns nothing
set YDWE_cinS_tempPoint=Location(0.0,0.0)
call YDWEScriptSystemInit()
call YDWECameraSystemInit()
call YDWEParticleInit()
call YDWESubtitlesInit()
endfunction
endlibrary
#endif /// YDWECinematicSystemIncluded