I've made a new parent java for a Franco's brakes and now they have adjustable caliper and adjustable offset positions.
Functions work good.
But if i adjust one of the functions, other get back in defaults.
Here the code;
package java.game.parts.disc_brake_pack;
import java.render.osd.;
import java.io.;
import java.util.;
import java.util.resource.;
import java.game.;
import java.game.parts.rgearpart.reciprocatingrgearpart.brake.;
public class DiscExtend extends DiscBrake
{
float rads, degs, f_offset, default_offset, old_offset;
public DiscExtend( int id )
{
super( id );
carCategory = COMMON;
name = "Universal Caliper";
description = "Paintable";
value = tHUF2USD(40.000);
brand_new_prestige_value = 50.00;
rads = 0.0;
degs = rad2deg(rads);
setSlotPos( 1, null, new Ypr(0.000,rads,0.000) );
}
public void load( File saveGame )
{
super.load( saveGame );
int save_ver = saveGame.readInt();
if (save_ver >= 1)
{
rads = saveGame.readFloat();
f_offset = saveGame.readFloat();
setSlotPos( 1, new Vector3(f_offset/1000.0, 0, 0), null );
}
}
public void save( File saveGame )
{
super.save( saveGame );
int save_ver = 2;
saveGame.write( save_ver );
if (save_ver >= 1)
{
saveGame.write( rads );
saveGame.write( f_offset );
}
}
float old_rads;
public int isTuneable()
{
return true;
}
public void buildTuningMenu( Menu m )
{
old_rads = rads;
degs = rad2deg(rads);
old_offset = f_offset;
m.addItem( "Caliper position", 1, degs, -180.0, 180.0, 0.5+1, null ).printValue(" %1.1f degrees");
m.addItem( "Offset", 2, f_offset, -20.0, 40.0, 1.1, null ).printValue(" %1.0f" + " degrees");
m.addItem( "Reset to factory defaults", 0); //this should always be with cmd=0
}
public void endTuningSession( int cancelled )
{
if( cancelled )
{
rads = old_rads;
f_offset = old_offset;
}
else
{
if (rads != old_rads)
GameLogic.spendTime(5*60);
if (f_offset != old_offset)
GameLogic.spendTime(5*60);
getCar_LocalVersion();
if (the_car)
the_car.forceUpdate();
}
}
public void handleMessage( Event m )
{
if( m.cmd == 0 )
{
rads = 0.0;
f_offset = default_offset;
m.gadget.osd.findGadget( this, 1 ).setValue( 0.0 );
setSlotPos( 1, null, new Ypr(0.000,rads,0.000) );
m.gadget.osd.findGadget( this, 2 ).setValue( default_offset );
setSlotPos( 1, new Vector3(f_offset/1000.0, 0, 0), null );
}
else
if( m.cmd == 1 )
{
rads = deg2rad(((Slider)m.gadget).value);
degs = ((Slider)m.gadget).value;
((Slider)m.gadget).changeVLabelText( Float.toString(degs, " %1.1f degrees"));
setSlotPos( 1, null, new Ypr(0.000,rads,0.000) );
}
else
if( m.cmd == 2 )
{
f_offset = ((Slider)m.gadget).value;
((Slider)m.gadget).changeVLabelText( Float.toString(f_offset, " %1.1f"));
setSlotPos( 1, new Vector3(f_offset/1000.0, 0, 0), null );
}
}
public float rad2deg( float rad )
{
return(rad * 180 / 3.141);
}
public float deg2rad( float deg )
{
return(deg * 3.141 / 180);
}
public void updatevariables()
{
super.updatevariables();
setSlotPos( 1, null, new Ypr(0.000,rads,0.000) );
setSlotPos( 1, new Vector3(f_offset/1000.0, 0, 0), null );
}
}
Added 1 day later:
I guess i'm doing it wrong in "public void load and save" :/