Okay, I've done a lot of re-working that I've been putting off to get myself out of this standstill because of limited original controller functions.
datablock fxDTSBrickData (BotTileBrickData)
{
brickFile = "./Shapes/botTile.blb";
category = "Special";
subCategory = "Bot Wars";
uiName = "Bot Tile";
iconName = "./Shapes/botTile";
orientationFix = 3;
hasPrint = 1;
printAspectRatio = "ModTer";
collisionShapeName = "./Shapes/botTile.dts";
};
function serverCmdWar(%client, %a)
{
if(%a $= "move" || %a $= "spawn")
{
%client.actionQue = %a;
messageClient(%client,'',"\c6Action type set to \c3" @ %a @".");
}
else
messageClient(%client,'',"\c6Unknown action type. (Move, Spawn)");
}
function fxDTSBrick::onActivate(%brick, %obj, %client, %pos, %dir)
{
if(%brick.getDatablock().getName() $= BotTileBrickData)
{
// if(isObject(%client.activeTroop))
// {
// if(%client.activeTroop.activeBrick $= %brick)
// {
// %client.activeTroop.delete();
// return;
// }
//
// BotWars_HandleMovement(%client.activeTroop, %brick);
//
// return;
// }
//
// %client.activeTroop = new AIPlayer(){datablock = playerstandardarmor; position = %brick.getPosition();};
// %client.activeTroop.activeBrick = %brick;
// %client.activetroop.isWarTroop = true;
//
// if(BotWars_settleMovementType(%brick) $= "water")
// {
// %client.activeTroop.movementType = "water";
// }
// else
// {
// %client.activeTroop.movementType = "ground";
// }
if(%client.actionQue $= "move")
{
if(!isObject(%client.activeTroop))
{
talk("no set troop"); //NO TROOP SET
return;
}
if(%brick $= %client.activetroop.activebrick)
{
talk("same brick"); //SAME BRICK, NO MOVEMENT
return;
}
BotWars_HandleMovement(%client.activeTroop, %brick);
return;
}
if(%client.actionQue $= "spawn")
{
if(isobject(%brick.activeTroop))
{
%brick.activeTroop.delete(); //TROOP DELETE
talk("there is active troop");
return;
}
%currentTroop = new AIPlayer(){datablock = playerstandardarmor; position = %brick.getPosition(); owner = %client; activeBrick=%brick; isWarTroop = true;};
%movementType = BotWars_settleMovementType(%brick);
%currentTroop.movementType = %movementType;
%brick.activeTroop = %currentTroop;
return;
}
}
}
package BotWars_activateStuffPackage
{
function Player::Activatestuff(%obj)
{
parent::activateStuff(%obj);
%ray = containerRaycast(%obj.getEyePoint(),vectorAdd(%obj.getEyePoint(),vectorScale(%obj.getEyeVector(),3)),$Typemasks::playerObjectType,%obj); //Checking if the player clicked a bot
if(isObject(%col=firstWord(%ray)) && %col.isWarTroop)
{
%obj.client.activetroop = %col;
talk("set active troop");
}
}
};
activatePackage(Botwars_activateStuffPackage);
function printBrickToPrintName(%brick)
{
%texture = getPrintTexture(%brick.getPrintId());
%path = filePath(%texture);
%underscorePos = strPos(%path, "_");
%name = getSubStr(%path, %underscorePos + 1, strPos(%path, "_", 14) - 14) @ "/" @ fileBase(%texture);
if($printNameTable[%name] !$= "")
%f = %name;
return %f;
}
function BotWars_HandleMovement(%troop, %brick)
{
%bricktype = BotWars_settleMovementType(%brick);
%trooptype = %troop.movementType;
if(%bricktype !$= %trooptype)
{
talk("Can't go");
return;
}
talk("movement pass"); //MOVEMENT HERE
}
function BotWars_settleMovementType(%brick)
{
%name = printBrickToPrintName(%brick);
if(%name $= "ModTer/defaultwater")
return "water";
else
return "ground";
}
Are all the necessary variables being carried along to continue to the actual movement part?
Suggestions on what to change to make my life easier?
Anything that sticks out as dumbly made? (Oh boy, this should be fun :P)