Code:
towerInit()
{
eleva = spawnstruct();
eleva.cab = spawnstruct();
for(i=1; i<10; i++)
{
eleva.floor[i] = spawnstruct();
}
eleva.floor[1].ri = getent("a1ri", "targetname");
eleva.floor[1].ro = getent("a1ro", "targetname");
eleva.floor[1].li = getent("a1li", "targetname");
eleva.floor[1].lo = getent("a1lo", "targetname");
eleva.floor[2].ri = getent("a2ri", "targetname");
eleva.floor[2].ro = getent("a2ro", "targetname");
eleva.floor[2].li = getent("a2li", "targetname");
eleva.floor[2].lo = getent("a2lo", "targetname");
eleva.floor[3].ri = getent("a3ri", "targetname");
eleva.floor[3].ro = getent("a3ro", "targetname");
eleva.floor[3].li = getent("a3li", "targetname");
eleva.floor[3].lo = getent("a3lo", "targetname");
eleva.floor[4].ri = getent("a4ri", "targetname");
eleva.floor[4].ro = getent("a4ro", "targetname");
eleva.floor[4].li = getent("a4li", "targetname");
eleva.floor[4].lo = getent("a4lo", "targetname");
eleva.floor[5].ri = getent("a5ri", "targetname");
eleva.floor[5].ro = getent("a5ro", "targetname");
eleva.floor[5].li = getent("a5li", "targetname");
eleva.floor[5].lo = getent("a5lo", "targetname");
eleva.floor[6].ri = getent("a6ri", "targetname");
eleva.floor[6].ro = getent("a6ro", "targetname");
eleva.floor[6].li = getent("a6li", "targetname");
eleva.floor[6].lo = getent("a6lo", "targetname");
eleva.floor[7].ri = getent("a7ri", "targetname");
eleva.floor[7].ro = getent("a7ro", "targetname");
eleva.floor[7].li = getent("a7li", "targetname");
eleva.floor[7].lo = getent("a7lo", "targetname");
eleva.floor[8].ri = getent("a8ri", "targetname");
eleva.floor[8].ro = getent("a8ro", "targetname");
eleva.floor[8].li = getent("a8li", "targetname");
eleva.floor[8].lo = getent("a8lo", "targetname");
eleva.floor[9].ri = getent("a9ri", "targetname");
eleva.floor[9].ro = getent("a9ro", "targetname");
eleva.floor[9].li = getent("a9li", "targetname");
eleva.floor[9].lo = getent("a9lo", "targetname");
eleva.cab.ri = getent("acri", "targetname");
eleva.cab.ro = getent("acro", "targetname");
eleva.cab.li = getent("acli", "targetname");
eleva.cab.lo = getent("aclo", "targetname");
eleva.cab.cab = getent("acab", "targetname");
eleva thread elevatorThink();
}
elevatorThink()
{
down = -1;
up = 1;
i = 1;
while(1)
{
for(;i<9;i++)
{
openDoor(self, i);
wait 3;
closeDoor(self, i);
moveCab(self, up);
}
for(;i>1;i--)
{
openDoor(self, i);
wait 3;
closeDoor(self, i);
moveCab(self, down);
}
}
}
openDoor(elevator, floor)
{
elevator.floor[floor].ri movex(62, 1);
elevator.floor[floor].ro movex(31, 1);
elevator.floor[floor].li movex(-62, 1);
elevator.floor[floor].lo movex(-31, 1);
elevator.cab.ri movex(62, 1);
elevator.cab.ro movex(31, 1);
elevator.cab.li movex(-62, 1);
elevator.cab.lo movex(-31, 1);
elevator.cab.li waittill("movedone");
}
closeDoor(elevator, floor)
{
elevator.floor[floor].ri movex(-62, 1);
elevator.floor[floor].ro movex(-31, 1);
elevator.floor[floor].li movex(62, 1);
elevator.floor[floor].lo movex(31, 1);
elevator.cab.ri movex(-62, 1);
elevator.cab.ro movex(-31, 1);
elevator.cab.li movex(62, 1);
elevator.cab.lo movex(31, 1);
elevator.cab.li waittill("movedone");
}
moveCab(elevator, direction)
{
elevator.cab.cab movez((136*direction), 5, 2, 2);
elevator.cab.ri movez((136*direction), 5, 2, 2);
elevator.cab.ro movez((136*direction), 5, 2, 2);
elevator.cab.li movez((136*direction), 5, 2, 2);
elevator.cab.lo movez((136*direction), 5, 2, 2);
elevator.cab.cab waittill("movedone");
}
I'm still working on cleaning it up, and getting it to the point that you can select the floor you go to, but for now, it works. It goes up and then down, floor by floor. The main reason I wanted to create the structure variable is not only because of the 9 floors, but because I have 3 elevators. This way makes the code much neater and more customizable. =P
And the lo,li,ri, and ro entities are the parts of the door. It's the modern sliding door with two panels on each side. li is the left inside panel, lo is the left outside, etc.