Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: data/branches/presentation/scripts/hangar.lua @ 4130

Last change on this file since 4130 was 4100, checked in by snellen, 18 years ago

continued working

File size: 9.4 KB
RevLine 
[4051]1-- Get objects from orxonox
2thisscript:addObject("Claw", "spaceshipclaw")
3thisscript:addObject("RepairStation", "repair")
4thisscript:addObject("FPSPlayer", "Player")
5thisscript:addObject("SpaceShip", "spaceship")
[4070]6thisscript:addObject("GenericNPC", "mechanic")
[4100]7thisscript:addObject("GenericNPC", "mechanic2")
[3947]8
[4056]9-- Global Variables
10playerEnteredSpaceShip = false
11playerReachedTrigger = false
12spaceshipOnPad = false
13spaceshipLaunchReady = false
14
15
16-- Returns the distance between (x1,x2,x3) and (y1,y2,y3)
17function dist( x1,x2,x3, y1,y2,y3 )
18
19return math.sqrt( (x1-y1)^2 + (x2-y2)^2 + (x3-y3)^2 )
20
21end
22
23
24
25function observePlayer()
26
[4070]27--playerEnteredSpaceShip = spaceship:hasPlayer()
[4056]28
29playerX = Player:getAbsCoorX()
30playerY = Player:getAbsCoorY()
31playerZ = Player:getAbsCoorZ()
32
[4070]33if dist( playerX,playerY,playerZ,678.946838, -11.959779, -920.512634 ) < 200 then
[4056]34playerReachedTrigger = true
35end
36
37end
38
39
[4070]40
41
42
[4100]43mprogramRoute = true
[4070]44mheight = 5
45function mechanicMove(timestep)
[4100]46if mprogramRoute then
[4070]47
48mechanic:walkTo( 991.192261, mheight, -1878.394287)
49mechanic:walkTo( 976.976685, mheight, -1879.182129)
50mechanic:walkTo( 963.752625, mheight, -1880.202881)
51mechanic:walkTo( 948.094543, mheight, -1880.980713)
52mechanic:walkTo( 931.008606, mheight, -1880.974854)
53mechanic:walkTo( 917.888428, mheight, -1880.832764)
54mechanic:walkTo( 901.552368, mheight, -1880.655762)
55mechanic:walkTo( 886.475220, mheight, -1880.522949)
56mechanic:walkTo( 872.041504, mheight, -1880.545410)
57mechanic:walkTo( 851.380249, mheight, -1880.577637)
58mechanic:walkTo( 840.637512, mheight, -1880.594238)
59mechanic:walkTo( 828.564941, mheight, -1880.489868)
60mechanic:walkTo( 811.580322, mheight, -1880.085205)
61mechanic:walkTo( 801.953003, mheight, -1880.036377)
62mechanic:walkTo( 784.801086, mheight, -1880.280762)
63mechanic:walkTo( 774.514343, mheight, -1880.380005)
64mechanic:walkTo( 762.351746, mheight, -1880.248779)
65mechanic:walkTo( 750.737549, mheight, -1880.123413)
66mechanic:walkTo( 739.186890, mheight, -1879.999023)
67mechanic:walkTo( 728.210022, mheight, -1879.880371)
68mechanic:walkTo( 717.243835, mheight, -1879.761719)
69mechanic:walkTo( 708.253235, mheight, -1879.649048)
70mechanic:walkTo( 695.825867, mheight, -1877.611938)
71mechanic:walkTo( 687.077820, mheight, -1869.800659)
72mechanic:walkTo( 683.886963, mheight, -1859.888062)
73mechanic:walkTo( 685.589905, mheight, -1844.102051)
74mechanic:walkTo( 686.333069, mheight, -1837.212524)
75mechanic:walkTo( 687.256042, mheight, -1828.656860)
76mechanic:walkTo( 688.759583, mheight, -1820.024048)
77mechanic:walkTo( 690.621216, mheight, -1809.834595)
78mechanic:walkTo( 692.045593, mheight, -1803.566772)
79mechanic:walkTo( 695.021851, mheight, -1795.320923)
80mechanic:walkTo( 703.956360, mheight, -1789.028931)
81mechanic:walkTo( 711.400574, mheight, -1785.378418)
82mechanic:walkTo( 720.236267, mheight, -1782.750977)
83mechanic:walkTo( 741.346130, mheight, -1786.131836)
84mechanic:walkTo( 744.505798, mheight, -1788.214111)
85mechanic:walkTo( 753.788513, mheight, -1796.320557)
86mechanic:walkTo( 760.480408, mheight, -1804.107788)
87mechanic:walkTo( 765.918274, mheight, -1811.952393)
88mechanic:walkTo( 772.114990, mheight, -1823.565674)
89mechanic:walkTo( 776.130737, mheight, -1830.713989)
90mechanic:walkTo( 781.833313, mheight, -1836.770996)
91mechanic:walkTo( 796.051880, mheight, -1843.499512)
92mechanic:walkTo( 805.178101, mheight, -1844.844116)
93mechanic:walkTo( 816.733154, mheight, -1846.198608)
94mechanic:walkTo( 830.296326, mheight, -1844.374146)
95mechanic:walkTo( 841.234680, mheight, -1841.184814)
96mechanic:walkTo( 853.356201, mheight, -1837.650391)
97mechanic:walkTo( 866.242981, mheight, -1833.892944)
98mechanic:walkTo( 877.006836, mheight, -1830.820923)
99mechanic:walkTo( 889.236816, mheight, -1828.092773)
100mechanic:walkTo( 897.856689, mheight, -1826.204346)
101mechanic:walkTo( 909.685486, mheight, -1823.613037)
102mechanic:walkTo( 922.058777, mheight, -1819.907227)
103mechanic:walkTo( 933.861328, mheight, -1814.044800)
104mechanic:walkTo( 943.290588, mheight, -1809.960205)
105mechanic:walkTo( 952.188293, mheight, -1806.317261)
106mechanic:walkTo( 985.450745, mheight, -1800.297729)
107mechanic:walkTo( 1000.339722, mheight, -1800.916626)
108mechanic:walkTo( 1013.447937, mheight, -1802.642090)
109mechanic:walkTo( 1022.703430, mheight, -1808.694946)
110mechanic:walkTo( 1030.242554, mheight, -1821.859253)
111mechanic:walkTo( 1030.063354, mheight, -1839.935547)
112mechanic:walkTo( 1025.804932, mheight, -1864.135986)
113mechanic:walkTo( 1019.079651, mheight, -1878.196777)
114
[4100]115mprogramRoute = false
[4070]116end
117
118if mechanic:finalGoalReached() then
[4100]119mprogramRoute = true
[4070]120end
121
122end
123
[4100]124mtprogramRoute = true
125mtheight = 5
126waittime = 0
127waiting = false
128function mechanictMove(timestep)
129if mtprogramRoute then
130mechanic2:walkTo( 1564.473999, mtheight, -1923.821533)
131mechanic2:walkTo( 1556.049927, mtheight, -1916.359009)
132mechanic2:walkTo( 1550.970581, mtheight, -1913.087524)
133mechanic2:walkTo( 1542.345459, mtheight, -1912.611938)
134mechanic2:walkTo( 1534.643677, mtheight, -1912.361816)
135mechanic2:walkTo( 1524.490845, mtheight, -1912.074097)
136mechanic2:walkTo( 1516.120605, mtheight, -1912.511475)
137mechanic2:walkTo( 1508.607788, mtheight, -1912.904175)
138mechanic2:walkTo( 1498.452759, mtheight, -1913.434814)
139mechanic2:walkTo( 1492.513916, mtheight, -1913.744995)
140mechanic2:walkTo( 1483.056274, mtheight, -1914.239136)
141mechanic2:walkTo( 1471.428711, mtheight, -1916.435303)
142mechanic2:walkTo( 1460.068359, mtheight, -1916.473022)
143mechanic2:walkTo( 1451.006592, mtheight, -1913.691772)
144mechanic2:walkTo( 1444.585938, mtheight, -1911.533691)
145mechanic2:walkTo( 1439.008423, mtheight, -1909.659058)
146mechanic2:walkTo( 1421.636230, mtheight, -1915.466553)
147mechanic2:walkTo( 1420.582275, mtheight, -1926.693970)
148mechanic2:walkTo( 1422.506714, mtheight, -1934.938232)
149mechanic2:walkTo( 1430.749023, mtheight, -1942.431519)
150mechanic2:walkTo( 1440.773315, mtheight, -1948.152832)
151mechanic2:walkTo( 1452.532227, mtheight, -1950.169800)
152mechanic2:walkTo( 1465.584961, mtheight, -1949.407959)
153mechanic2:walkTo( 1475.635254, mtheight, -1948.756226)
154mechanic2:walkTo( 1481.961548, mtheight, -1948.346069)
155mechanic2:walkTo( 1495.564575, mtheight, -1947.588257)
156mechanic2:walkTo( 1505.660156, mtheight, -1947.679077)
157mechanic2:walkTo( 1514.055542, mtheight, -1947.901245)
158mechanic2:walkTo( 1523.532959, mtheight, -1948.351440)
159mechanic2:walkTo( 1537.855347, mtheight, -1949.461914)
160mechanic2:walkTo( 1545.510498, mtheight, -1950.162720)
161mechanic2:walkTo( 1553.132935, mtheight, -1950.860718)
162mechanic2:walkTo( 1556.371460, mtheight, -1951.157104)
163mechanic2:walkTo( 1563.450806, mtheight, -1951.804932)
164mechanic2:walkTo( 1572.594116, mtheight, -1952.320679)
165mechanic2:walkTo( 1582.691772, mtheight, -1950.470459)
166mechanic2:walkTo( 1589.872681, mtheight, -1929.683105)
167mechanic2:walkTo( 1587.794922, mtheight, -1922.749756)
168mechanic2:walkTo( 1582.800171, mtheight, -1917.671021)
169mechanic2:walkTo( 1573.449951, mtheight, -1915.750854)
170mechanic2:walkTo( 1564.055908, mtheight, -1914.986328)
171mtprogramRoute = false
172end
[4070]173
[4100]174mechanic2X = mechanic2:getAbsCoorX()
175mechanic2Y = mechanic2:getAbsCoorY()
176mechanic2Z = mechanic2:getAbsCoorZ()
[4070]177
[4100]178if dist(mechanic2X,mechanic2Y,mechanic2Z,1435.444824, mtheight, -1916.463013) < 10 and not waiting then
179mechanic2:stop()
180waittime = 5
181--io.write("mechanic2 stoped \n")
182waiting = true
183end
[4070]184
[4100]185if waittime >= 0 and waiting then
186waittime = waittime - timestep
187--io.write(waittime,"\n")
188if waittime < 0 then
189--io.write("mechanic2 finished waiting\n")
190mechanic2:resume()
191end
192end
[4070]193
[4100]194if dist(mechanic2X,mechanic2Y,mechanic2Z,1564.473999, mtheight, -1923.821533) < 10 and waiting then
195waiting = false
196end
[4070]197
198
[4100]199if mechanic2:finalGoalReached() then
200mtprogramRoute = true
201end
[4070]202
[4100]203end
[4070]204
[4100]205
206
207
208
209
210
211
[4056]212positionReached = false
213spaceShipReleased = false
214function moveToLaunchSite(timestep)
215
216if not positionReached then
[4070]217dx = 10 * timestep
[4056]218dy = 0 * timestep
[4070]219dz = 0* timestep
[4056]220end
221
222if not spaceShipReleased and positionReached then 
223dx = 0 * timestep
[4070]224dy = 10 * timestep
[4056]225dz = 0 * timestep
226end
227
228if positionReached and spaceShipReleased then
229dx = 0 * timestep
230dy = 1 * timestep
231dz = 0 * timestep
232end
233
234
235if spaceshipOnPad then
236
237if not spaceShipReleased then
[4070]238--spaceshipclaw:playAnimation(1,1)
[4100]239--io.write("release spaceship\n")
[4056]240spaceShipReleased = true
[4070]241playerEnteredSpaceShip = true
[4056]242end
243
[4070]244--if clawY > 100 then
[4056]245spaceshipLaunchReady = true
[4070]246--end
[4056]247
248end
249
250
251-- set new coordinates
[4070]252--clawX = claw:getAbsCoorX()
253--clawY = claw:getAbsCoorY()
254--clawZ = claw:getAbsCoorZ()
[4056]255
[4070]256--claw:setAbsCoor(clawX + dx, clawY + dy, clawZ + dz)
257spaceshipX = spaceship:getAbsCoorX()
258spaceshipY = spaceship:getAbsCoorY()
259spaceshipZ = spaceship:getAbsCoorZ()
[4056]260
[4070]261spaceship:setAbsCoor(spaceshipX + dx, spaceshipY + dy, spaceshipZ + dz)
[4056]262
263
[4070]264
265--if dist( clawX,clawY,clawZ,1020.025024, -11.959781, -1721.614380 ) < 60 then
266if dist( spaceshipX,spaceshipY,spaceshipZ,1020.025024, -11.959781, -1721.614380 ) < 60 then
[4056]267positionReached = true
268end
269
270
[4070]271--if dist( clawX,clawY,clawZ,167.361526,29,483.163818 ) < 60 then
272if  spaceshipY > 10 then
[4056]273spaceshipOnPad = true
274end
275
276
[4070]277end
[4056]278
279hoverPosReached = false
280function launchSpaceShip(timestep)
281
282if not hoverPosReached then
283dx = 0 * timestep
284dy = 1 * timestep
285dz = 0 * timestep
286else
[4070]287dx = 200 * timestep
[4056]288dy = 0 * timestep
[4070]289dz = 0 * timestep
[4056]290end
291
292spaceshipX = spaceship:getAbsCoorX()
293spaceshipY = spaceship:getAbsCoorY()
294spaceshipZ = spaceship:getAbsCoorZ()
295
296spaceship:setAbsCoor(spaceshipX + dx, spaceshipY + dy, spaceshipZ + dz)
297
[4070]298if spaceshipY > 15 then
[4056]299hoverPosReached = true
300end
301
302end
303
304
[3947]305function tick(timestep)
[4070]306
[4056]307observePlayer()
[4070]308mechanicMove(timestep)
[4100]309mechanictMove(timestep)
[4056]310
[4070]311if playerReachedTrigger and not spaceshipLaunchReady then
312moveToLaunchSite(timestep)
[4056]313end
314
315if spaceshipLaunchReady then
[4070]316launchSpaceShip(timestep)
[4056]317end
318
319
[3947]320return false
321end
Note: See TracBrowser for help on using the repository browser.