// Input Handling
// Default Keys
// Basic Movement & Camera/Flight Control
var k_moveForward;
var k_moveBackward;
var k_moveLeft;
var k_moveRight;
var k_moveUp;
var k_moveDown;
// Complex Character Movement
var k_leanLeft;
var k_leanRight;
var k_rollLeft;
var k_rollRight;
var k_takeCover;
// Move Varients
var k_sprintMove;
var k_toggleStance;
var k_jumpMove;
// Action Buttons
var k_interAction;
var k_fireMode;
var k_firePrimary;
var k_fireSecondary;
var k_throwObject;
// Hot Swap
var k_weapon1; // Melee Slot
var k_weapon2; // Pistol Slot
var k_weapon3; // Assault Slot
var k_weapon4; // Grenade Slot
var k_weapon5; // Equip Slot (C4 etc)
var k_nextWeap; // Next Weapon
var k_prevWeap; // Previous Weapon
// Add more later
// Editor Quick Tools
define e_select = 2; // 1
define e_move = 3; // 2
define e_place = 4; // 3
define e_link = 5; // 4
// Editor Specific Keys
define e_Parachute = 25;
string keystring1;
string keystring2;
var keycode = 0;
font arial_font = "Arial",1,12;
panel keydisplay
{
layer = 100;
pos_x = 200;
pos_y = 200;
digits 100,-100,keystring1,arial_font,0,0;
digits 100,-90,keystring2,arial_font,0,0;
digits 100,50,5.3,arial_font,1,keycode;
flags = visible;
}
// Read "indiled.ini"
text mapping_ini{strings=300;}
starter GetKeyMapping
{
var i;
txt_load(mapping_ini,"system\\keymap.ini");
// Find & Assign 'Mode' - Reset Search Each Time
i=0;while(str_cmpi(mapping_ini.string[i],"forward")!=1){i+=1;}
i+=1;k_moveForward = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"backward")!=1){i+=1;}
i+=1;k_moveBackward = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"stepleft")!=1){i+=1;}
i+=1;k_moveLeft = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"stepright")!=1){i+=1;}
i+=1;k_moveRight = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"up")!=1){i+=1;}
i+=1;k_moveUp = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"down")!=1){i+=1;}
i+=1;k_moveDown = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"leanleft")!=1){i+=1;}
i+=1;k_leanLeft = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"leanright")!=1){i+=1;}
i+=1;k_leanRight = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"rollleft")!=1){i+=1;}
i+=1;k_rollLeft = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"rollright")!=1){i+=1;}
i+=1;k_rollRight = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"takecover")!=1){i+=1;}
i+=1;k_takeCover = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"sprint")!=1){i+=1;}
i+=1;k_sprintMove = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"togglestance")!=1){i+=1;}
i+=1;k_toggleStance = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"jump")!=1){i+=1;}
i+=1;k_jumpMove = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"interaction")!=1){i+=1;}
i+=1;k_interaction = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"FireMode")!=1){i+=1;}
i+=1;k_fireMode = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"FirePrimary")!=1){i+=1;}
i+=1;k_firePrimary = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"FireSecondary")!=1){i+=1;}
i+=1;k_firePrimary = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"Throw")!=1){i+=1;}
i+=1;k_throwObject = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"Slot1")!=1){i+=1;}
i+=1;k_weapon1 = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"Slot2")!=1){i+=1;}
i+=1;k_weapon2 = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"Slot3")!=1){i+=1;}
i+=1;k_weapon3 = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"Slot4")!=1){i+=1;}
i+=1;k_weapon4 = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"Slot5")!=1){i+=1;}
i+=1;k_weapon5 = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"next")!=1){i+=1;}
i+=1;k_nextWeap = key_for_str(mapping_ini.string[i]);
i=0;while(str_cmpi(mapping_ini.string[i],"prev")!=1){i+=1;}
i+=1;k_prevWeap = key_for_str(mapping_ini.string[i]);
WriteKeyMapping();
}
var_nsave ini_filehandle;
string _keystring;
function WriteKeyMapping
{
ini_filehandle = file_open_write ("system\\keymap.ini");
file_str_write (ini_filehandle,"[KeyMapping]");file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"\n"); // Nice Formatting
file_str_write(ini_filehandle,"Forward,");str_for_key(_keystring,k_moveForward);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"Backward,");str_for_key(_keystring,k_moveBackward);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"StepLeft,");str_for_key(_keystring,k_moveLeft);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"StepRight,");str_for_key(_keystring,k_moveRight);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"Up,");str_for_key(_keystring,k_moveUp);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"Down,");str_for_key(_keystring,k_moveDown);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"\n"); // Nice Formatting:)
file_str_write(ini_filehandle,"LeanLeft,");str_for_key(_keystring,k_leanLeft);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"LeanRight,");str_for_key(_keystring,k_leanRight);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"RollLeft,");str_for_key(_keystring,k_rollLeft);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"RollRight,");str_for_key(_keystring,k_rollRight);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"TakeCover,");str_for_key(_keystring,k_takeCover);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"\n"); // Nice Formatting :)
file_str_write(ini_filehandle,"Sprint,");str_for_key(_keystring,k_sprintMove);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"ToggleStance,");str_for_key(_keystring,k_toggleStance);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"Jump,");str_for_key(_keystring,k_jumpMove);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"\n"); // Nice Formatting :)
file_str_write(ini_filehandle,"Interaction,");str_for_key(_keystring,k_interAction);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"FireMode,");str_for_key(_keystring,k_fireMode);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"FirePrimary,");str_for_key(_keystring,k_firePrimary);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"FireSecondary,");str_for_key(_keystring,k_fireSecondary);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"Throw,");str_for_key(_keystring,k_throwObject);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"\n"); // Nice Formatting :)
file_str_write(ini_filehandle,"Slot1,");str_for_key(_keystring,k_weapon1);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"Slot2,");str_for_key(_keystring,k_weapon2);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"Slot3,");str_for_key(_keystring,k_weapon3);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"Slot4,");str_for_key(_keystring,k_weapon4);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"Slot5,");str_for_key(_keystring,k_weapon5);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"Next,");str_for_key(_keystring,k_nextWeap);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_str_write(ini_filehandle,"Prev,");str_for_key(_keystring,k_prevWeap);file_str_write(ini_filehandle,_keystring);file_str_write(ini_filehandle,"\n");
file_close (ini_filehandle);
}
function KeyPress()
{
keycode = key_lastpressed;
// Catch Complex Keys
if(str_for_key(keystring1,keycode)==null){
str_cpy(keystring1, "Special Key");<<<<-- Here we find the major problem
}
// Quick Tools Links
if(keycode == e_select){SelectTool();}
if(keycode == e_move){MoveTool();}
if(keycode == e_place){PlaceTool();}
if(keycode == e_link){LinkTool();}
// Editor Shortcuts
if(keycode == e_parachute){Parachute();}
// E.G Get Movement Intention for Debug Cam
if(keycode == k_moveForward){CamEnt.camforce_x += 1;}
if(keycode == k_moveBackward){CamEnt.camforce_x -= 1;}
if(keycode == k_moveRight){CamEnt.camforce_y -= 1;}
if(keycode == k_moveLeft){CamEnt.camforce_y += 1;}
if(keycode == k_moveUp){CamEnt.camforce_z += 1;}
if(keycode == k_moveDown){CamEnt.camforce_z -= 1;}
}
on_anykey = KeyPress;