Advertisement
szymski

Untitled

Jul 25th, 2016
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.62 KB | None | 0 0
  1. client {
  2.  
  3. // 25.07.2016
  4. // NOTE: I have a new domain, szymekk.me, links to the music and sound effects won't work
  5.  
  6. //Maps array contains tables like that:
  7. //1, color - Background color
  8. //2, color - Main color
  9. //3, color - Center color
  10. //4, string - Music URL
  11. //5, int - Rotation speed
  12. //6, int - Wall speed
  13. //7, int - Cursor speed
  14. //8, int - Spawn delay
  15. array maps = tableArray()
  16. maps[#maps+1] = {
  17. color(100,0,0),
  18. color(150,0,0),
  19. color(200,0,0),
  20. "http://szymekk.info/music/hex1.ogg",
  21. 50,
  22. 100,
  23. 200,
  24. 2
  25. }
  26.  
  27. maps[#maps+1] = {
  28. color(0,0,100),
  29. color(0,0,150),
  30. color(0,0,200),
  31. "http://szymekk.info/music/hex2.ogg",
  32. 80,
  33. 200,
  34. 200,
  35. 1.5
  36. }
  37. maps[#maps+1] = {
  38. color(0,100,0),
  39. color(0,150,0),
  40. color(0,200,0),
  41. "http://szymekk.info/music/hex3.ogg",
  42. 150,
  43. 250,
  44. 400,
  45. 1
  46. }
  47. maps[#maps+1] = {
  48. color(230,230,230),
  49. color(230,200,230),
  50. color(175,33,179),
  51. "http://szymekk.info/music/mazeOfMayonnaise.ogg",
  52. 150,
  53. 300,
  54. 500,
  55. 1
  56. }
  57.  
  58. int curMap = 3
  59.  
  60. table map = maps[curMap, table]
  61.  
  62. setFPS(60)
  63.  
  64. int startTime = realtime()
  65.  
  66. int deltaTime = 0
  67. int lastTime = realtime()
  68.  
  69. int rotation = 0
  70. int plRot = 30
  71.  
  72. int dieBox = 0
  73.  
  74. int level = 1
  75. int rotSpeed = 0
  76. int wallSpeed = 0
  77. int cursorSpeed = 0
  78. int spawnDelay = 0
  79.  
  80. bool alive = true
  81. int aliveTime = 0
  82.  
  83. //Walls array contains tables like that:
  84. //1, int - distance from center
  85. //2, array - array with normalized vertexes
  86. array walls = tableArray()
  87.  
  88. int fftf = 0;
  89.  
  90. function void PlayURL(string url) {
  91. if(canPlayFromURL()) playURL(url,"",function(audio a) { a.play() },function() {})
  92.  
  93. }
  94.  
  95. event drawScreen(int w, int h) {
  96.  
  97. color bgc = (round(realtime()/4) % 2 == 0 ? map[1, color] : map[2, color])
  98. color mainc = (round(realtime()/4) % 2 == 0 ? map[2, color] : map[1, color])
  99. color centerc = map[3, color]
  100.  
  101. setDrawColor(bgc)
  102. drawBox(vec2(0,0),vec2(w,h))
  103.  
  104. array ray1 = vector2Array(
  105. vec2(w/2 + sin(rotation)*50, h/2 + cos(rotation)*50),
  106. vec2(w/2 + sin(rotation + 60)*50, h/2 + cos(rotation + 60)*50),
  107. vec2(w/2 + sin(rotation + 60)*500, h/2 + cos(rotation + 60)*500),
  108. vec2(w/2 + sin(rotation)*500, h/2 + cos(rotation)*500)
  109. )
  110. array ray2 = vector2Array(
  111. vec2(w/2 + sin(rotation + 120)*50, h/2 + cos(rotation + 120)*50),
  112. vec2(w/2 + sin(rotation + 180)*50, h/2 + cos(rotation + 180)*50),
  113. vec2(w/2 + sin(rotation + 180)*500, h/2 + cos(rotation + 180)*500),
  114. vec2(w/2 + sin(rotation + 120)*500, h/2 + cos(rotation + 120)*500)
  115. )
  116. array ray3 = vector2Array(
  117. vec2(w/2 + sin(rotation + 240)*50, h/2 + cos(rotation + 240)*50),
  118. vec2(w/2 + sin(rotation + 300)*50, h/2 + cos(rotation + 300)*50),
  119. vec2(w/2 + sin(rotation + 300)*500, h/2 + cos(rotation + 300)*500),
  120. vec2(w/2 + sin(rotation + 240)*500, h/2 + cos(rotation + 240)*500)
  121. )
  122. setDrawColor(mainc)
  123. drawPoly(ray1)
  124. drawPoly(ray2)
  125. drawPoly(ray3)
  126.  
  127. array cursor = vector2Array(
  128. vec2(w/2 + sin(rotation + plRot)*70, h/2 + cos(rotation + plRot)*70),
  129. vec2(w/2 + sin(rotation + plRot - 8)*60, h/2 + cos(rotation + plRot -8)*60),
  130. vec2(w/2 + sin(rotation + plRot + 8)*60, h/2 + cos(rotation + plRot + 8)*60)
  131. )
  132. setDrawColor(centerc)
  133. drawPoly(cursor)
  134.  
  135. //Drawing Walls
  136. for(int i=1; #walls; 1) {
  137. table wa = walls[i, table]
  138. int dis = wa[1, int]
  139. array ve = wa[2, array]
  140. setDrawColor(centerc)
  141. array p = vector2Array(
  142. vec2(w/2 + sin(rotation + ve[1,vector2].getX() * 60)*(dis-ve[1,vector2].getY()), h/2 + cos(rotation + ve[1,vector2].getX() * 60)*(dis-ve[1,vector2].getY())),
  143. vec2(w/2 + sin(rotation + ve[2,vector2].getX() * 60)*(dis-ve[2,vector2].getY()), h/2 + cos(rotation + ve[2,vector2].getX() * 60)*(dis-ve[2,vector2].getY())),
  144. vec2(w/2 + sin(rotation + ve[3,vector2].getX() * 60)*(dis-ve[3,vector2].getY()), h/2 + cos(rotation + ve[3,vector2].getX() * 60)*(dis-ve[3,vector2].getY())),
  145. vec2(w/2 + sin(rotation + ve[4,vector2].getX() * 60)*(dis-ve[4,vector2].getY()), h/2 + cos(rotation + ve[4,vector2].getX() * 60)*(dis-ve[4,vector2].getY()))
  146. )
  147. drawPoly(p)
  148. }
  149.  
  150. array center = vector2Array()
  151. for(int i=0; 6; 1) {
  152. center[i] = vec2(w/2 + sin(i/6*360+rotation)*(50+fftf),h/2 + cos(i/6*360+rotation)*(50+fftf))
  153. }
  154. setDrawColor(centerc)
  155. drawPoly(center)
  156.  
  157. center = vector2Array()
  158. for(int i=0; 6; 1) {
  159. center[i] = vec2(w/2 + sin(i/6*360+rotation)*(40+fftf),h/2 + cos(i/6*360+rotation)*(40+fftf))
  160. }
  161. setDrawColor(map[1, color])
  162. drawPoly(center)
  163.  
  164. setFontColor(color(255,255,255))
  165. setFont("Trebuchet24",32)
  166. drawText(vec2(5,5),""+aliveTime)
  167.  
  168. setFontColor(color(255,255,255))
  169. setFont("Trebuchet24",32)
  170. drawText(vec2(w-10-getTextWidth("Restart"),5),"Restart")
  171.  
  172. setDrawColor(color(255,255,255,dieBox))
  173. drawBox(vec2(0,0),vec2(w,h))
  174. }
  175.  
  176. function void Restart() {
  177. startTime = realtime()
  178. level = 1
  179. alive = true
  180. aliveTime = 0
  181. walls = tableArray()
  182. }
  183.  
  184. int spawnTime = realtime() + 6
  185. int rot = 1
  186. int nextChange = realtime()
  187. int circle = 0
  188. int circleStart = 0
  189. int circleRot = 1
  190.  
  191. event tick() {
  192. rotSpeed = map[5, int]
  193. wallSpeed = map[6, int]
  194. cursorSpeed = map[7, int]
  195. spawnDelay = map[8, int]
  196.  
  197. deltaTime = realtime() - lastTime; lastTime = realtime()
  198.  
  199. dieBox = clamp(dieBox-deltaTime*100,0,255)
  200.  
  201. rotation = (rotation+deltaTime*rotSpeed*rot) % 360
  202. if(realtime()>nextChange) {
  203. nextChange = realtime() + random(5,15)
  204. rot = -rot
  205. }
  206.  
  207. if(localPlayer().getScreenCursor().getX()>460 && localPlayer().getScreenCursor().getY()<64 && localPlayer().keyUse()) {
  208. Restart()
  209. }
  210.  
  211. if(!alive) return
  212.  
  213. aliveTime = round((realtime()-startTime)*10)/10
  214.  
  215. //Spawning walls
  216.  
  217. if(realtime()>spawnTime) {
  218. if(circle > 0) {
  219. spawnTime = realtime() + 30/wallSpeed
  220. walls[#walls+1] ={ 500, vector2Array( vec2(circleStart+circle*circleRot,0), vec2(circleStart+circle*circleRot + 1,0), vec2(circleStart+circle*circleRot + 1,50), vec2(circleStart+circle*circleRot,50) ) }
  221. circle--
  222. if(circle == 0) spawnTime = realtime() + spawnDelay
  223. }
  224. else {
  225. spawnTime = realtime() + spawnDelay
  226. int type = round(random(0,6))
  227. int offset = round(random(0,6.4))
  228. if(type == 0) {
  229. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 0,0), vec2(offset + 1,0), vec2(offset + 1,50), vec2(offset + 0,50) ) }
  230. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 1,0), vec2(offset + 2,0), vec2(offset + 2,50), vec2(offset + 1,50) ) }
  231. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 2,0), vec2(offset + 3,0), vec2(offset + 3,50), vec2(offset + 2,50) ) }
  232. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 3,0), vec2(offset + 4,0), vec2(offset + 4,50), vec2(offset + 3,50) ) }
  233. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 4,0), vec2(offset + 5,0), vec2(offset + 5,50), vec2(offset + 4,50) ) }
  234. }
  235. elseif(type == 1) {
  236. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 0,0), vec2(offset + 1,0), vec2(offset + 1,50), vec2(offset + 0,50) ) }
  237. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 2,0), vec2(offset + 3,0), vec2(offset + 3,50), vec2(offset + 2,50) ) }
  238. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 4,0), vec2(offset + 5,0), vec2(offset + 5,50), vec2(offset + 4,50) ) }
  239. }
  240. elseif(type == 2) {
  241. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 0,0), vec2(offset + 1,0), vec2(offset + 1,50), vec2(offset + 0,50) ) }
  242. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 1,0), vec2(offset + 2,0), vec2(offset + 2,50), vec2(offset + 1,50) ) }
  243. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 2,0), vec2(offset + 3,0), vec2(offset + 3,50), vec2(offset + 2,50) ) }
  244. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 4,0), vec2(offset + 5,0), vec2(offset + 5,50), vec2(offset + 4,50) ) }
  245. }
  246. elseif(type == 3) {
  247. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 0,0), vec2(offset + 1,0), vec2(offset + 1,50), vec2(offset + 0,50) ) }
  248. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 1,0), vec2(offset + 2,0), vec2(offset + 2,50), vec2(offset + 1,50) ) }
  249. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 2,0), vec2(offset + 3,0), vec2(offset + 3,50), vec2(offset + 2,50) ) }
  250. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 3,0), vec2(offset + 4,0), vec2(offset + 4,50), vec2(offset + 3,50) ) }
  251. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 4,0), vec2(offset + 5,0), vec2(offset + 5,50), vec2(offset + 4,50) ) }
  252. }
  253. elseif(type == 4) {
  254. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 0,0), vec2(offset + 1,0), vec2(offset + 1,50), vec2(offset + 0,50) ) }
  255. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 2,0), vec2(offset + 3,0), vec2(offset + 3,50), vec2(offset + 2,50) ) }
  256. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 4,0), vec2(offset + 5,0), vec2(offset + 5,50), vec2(offset + 4,50) ) }
  257. }
  258. elseif(type == 5) {
  259. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 0,0), vec2(offset + 1,0), vec2(offset + 1,50), vec2(offset + 0,50) ) }
  260. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 1,0), vec2(offset + 2,0), vec2(offset + 2,50), vec2(offset + 1,50) ) }
  261. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 2,0), vec2(offset + 3,0), vec2(offset + 3,50), vec2(offset + 2,50) ) }
  262. walls[#walls+1] ={ 500, vector2Array( vec2(offset + 4,0), vec2(offset + 5,0), vec2(offset + 5,50), vec2(offset + 4,50) ) }
  263. }
  264. elseif(type == 6) {
  265. circle = round(random(6,16))
  266. circleStart = round(random(0,6))
  267. circleRot = -circleRot
  268. }
  269. }
  270. }
  271.  
  272. //Moving walls
  273. for(int i=1; #walls; 1) {
  274. walls[i,table][1] = walls[i,table][1,int] - deltaTime * wallSpeed * level
  275. if(walls[i,table][1,int]<=20) { walls.removetable(i); break }
  276. }
  277.  
  278. //Checking collisions
  279. for(int i=1; #walls; 1) {
  280. int tmp=walls[i,table][2,array][1,vector2].getX()*60
  281. int tmp2=walls[i,table][1,int]
  282. if(tmp % 360 < plRot && (tmp + 59.9) % 360 > plRot && tmp2 < 80+50 && tmp2 > 60)
  283. {
  284. alive = false
  285. dieBox = 255
  286. PlayURL("http://szymekk.info/music/hexagon/die.wav")
  287. }
  288. }
  289.  
  290. if(localPlayer().keyUse()) {
  291. if(localPlayer().getScreenCursor().getX()<256) {
  292. plRot += deltaTime * cursorSpeed
  293. }
  294. elseif(localPlayer().getScreenCursor().getX()>256) {
  295. plRot -= deltaTime * cursorSpeed
  296. }
  297. plRot = plRot % 360
  298. }
  299. }
  300.  
  301. function void Play() {
  302. playURL(map[4,string],"",function(audio a) {
  303. a.play()
  304. event think() {
  305. array fft = a.fft(128)
  306. if(#fft<=0) return
  307. fftf = clamp((#fft>0 ? fft[4,int] : 0) * 50,0,10)
  308. }
  309. },function() {})
  310. }
  311.  
  312. if(canPlayFromURL()) {
  313. Play()
  314. PlayURL("http://szymekk.info/music/hexagon/start.wav")
  315. }
  316.  
  317. event enablePlayURL() {
  318. Play()
  319. }
  320. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement