From 5f0dc0ecc7da8882f16ded85da6bef8340a942f2 Mon Sep 17 00:00:00 2001
From: Redo <A509DCFC@cock.li>
Date: Fri, 28 Oct 2022 17:19:37 -0600
Subject: [PATCH] add robot prototype

---
 bricks/special/robot.cs | 41 +++++++++++++++++++++--------------------
 1 file changed, 21 insertions(+), 20 deletions(-)

diff --git a/bricks/special/robot.cs b/bricks/special/robot.cs
index a59e1bc..6ef15d8 100644
--- a/bricks/special/robot.cs
+++ b/bricks/special/robot.cs
@@ -160,24 +160,26 @@ function LogicGate_RobotController_Data::LuaLogic_Callback(%this, %brick, %data)
 		%field = getField(%data, %i);
 		%first = getWord(%field, 0);
 		
-		if(%first $= "R" || %first $= "D") { // remove / detect brick
+		if(%first $= "D") { // remove / detect brick
 			if(isObject(%tbrick)) {
-				if(%first $= "D") {
-					%field = "B" @ 1 SPC
-						%tbrick.getColorId() SPC
-						%tbrick.getColorFxID() SPC
-						%tbrick.getShapeFxId() SPC
-						%tbrick.isRaycasting() SPC
-						%tbrick.isColliding() SPC
-						%tbrick.isRendering();
-					%output = %output @ %field @ "\t";
-				} else if(%first $= "R") {
-					%tbrick.schedule(0, delete);
-				}
+				%field = "B" @ 1 SPC
+					%tbrick.getColorId() SPC
+					%tbrick.getColorFxID() SPC
+					%tbrick.getShapeFxId() SPC
+					%tbrick.isRaycasting() SPC
+					%tbrick.isColliding() SPC
+					%tbrick.isRendering();
+				%output = %output @ %field @ "\t";
 			} else {
 				%output = %output @ "B 0 0 0 0 0 0 0\t";
 			}
+		} else if(%first $= "R") {
+			if(isObject(%tbrick)) {
+				%tbrick.schedule(0, delete);
+			}
 		} else if(%first $= "P") { // plant brick
+			LogicRobot_CreateBrickGroup();
+			
 			%nbrick = new fxDTSBrick() {
 				datablock = brick1x1fData;
 				position = %pos;
@@ -186,17 +188,17 @@ function LogicGate_RobotController_Data::LuaLogic_Callback(%this, %brick, %data)
 				shapeFxId = getWord(%field, 3);
 				isPlanted = 1;
 			};
+			%nbrick.setTransform(%pos SPC "0 0 1 0");
 			
 			%err = %nbrick.plant();
 			if(%err != 0 && %err != 2 && %err != 3) {
 				%nbrick.delete();
-				talk(%err);
 			} else {
 				%nbrick.setRaycasting(getWord(%field, 4));
 				%nbrick.setColliding (getWord(%field, 5));
 				%nbrick.setRendering (getWord(%field, 6));
 				
-				LuaLogic_RobotBrickGroup.add(%nbrick);
+				BrickGroup_12345678.add(%nbrick);
 				%nbrick.setTrusted(1);
 			}
 		} else if(%first $= "M") { // move
@@ -224,19 +226,17 @@ function LogicGate_RobotController_Data::getRelativeVector(%this, %obj, %vec) {
 }
 
 function LogicRobot_CreateBrickGroup() {
-	if(!isObject(LuaLogic_RobotBrickGroup)) {
-		new SimGroup(LuaLogic_RobotBrickGroup) {
+	if(!isObject(BrickGroup_12345678)) {
+		new SimGroup(BrickGroup_12345678) {
 			bl_id = 12345678;
 			name = "\c1Robot";
 			QuotaObject = GlobalQuota;
 		};
-		mainBrickGroup.add(LuaLogic_RobotBrickGroup);
+		mainBrickGroup.add(BrickGroup_12345678);
 	}
 }
 
 function LogicGate_RobotController_Data::createRobot(%this, %obj) {
-	LogicRobot_CreateBrickGroup();
-	
 	if(isObject(%obj.luaLogicRobot)) return;
 	
 	%pos = %obj.getPosition();
@@ -245,6 +245,7 @@ function LogicGate_RobotController_Data::createRobot(%this, %obj) {
 		datablock = LuaLogic_RobotShapeData;
 		position = %rpos;
 	};
+	%robot.setScale("1 1 1");
 	%robot.setNodeColor("ALL", "1 1 1 1");
 	missionCleanup.add(%robot);