forked from pyrex/chameleonic
		
	main #21
| @@ -26,10 +26,10 @@ function music_off() | ||||
|  menuitem(3, "music: off", music_on) | ||||
| end | ||||
|  | ||||
| function gsv(s) | ||||
|  local ret=split(s,"\n") | ||||
| function gsv(s,sep1,sep2) | ||||
|  local ret=split(s,sep1 or "\n") | ||||
|  for i,v in ipairs(ret) do | ||||
|   ret[i] = type(v) == "string" and split(v,"`") or {v} end | ||||
|   ret[i] = type(v) == "string" and split(v,sep2 or "`") or {v} end | ||||
|  return ret | ||||
| end | ||||
|  | ||||
| @@ -293,7 +293,7 @@ function level:init() | ||||
| end | ||||
|  | ||||
| function level:reinit(n) | ||||
|  self.hintlevel = 0 | ||||
|  self.hintlevel=255 | ||||
|  self.ix=n | ||||
|  self.todo={} | ||||
|  self.bigx,self.bigy=n%8,n\8 | ||||
| @@ -1754,8 +1754,10 @@ end | ||||
| -- [3] y coord | ||||
| -- [4] message line 1 (rot13) | ||||
| -- [5] message llne 2 (rot13) | ||||
| -- [6] arrow  (semicolon separated list: each element is two comma-separated integers) | ||||
| -- row 5 can be omitted | ||||
| -- for a 1-line hint | ||||
| -- row 6 can be omitted if there is no arrow | ||||
| -- | ||||
| -- multiple hints for the same | ||||
| -- room are revealed in order | ||||
| @@ -1765,19 +1767,21 @@ add(real_modules,hints) | ||||
|  | ||||
| function hints:init() | ||||
|  local h = gsv[[0`42`57`🅾️ yVPX`  ■ | ||||
| 0`42`73`❎, ❎ cHYY | ||||
| 1`35`34`⁘ sVYY | ||||
| 1`99`82`■ cHYY | ||||
| 1`42`98`⁘`VTABER | ||||
| 2`75`65`i <`⁘ | ||||
| 2`104`73` ■`cHYY | ||||
| 2`27`42`⁘ | ||||
| 3`51`106`■ cHYY | ||||
| 3`27`81`⁘ HAOYBPX ZR | ||||
| 3`91`33`■ FGNAQ`  URER]] | ||||
| 0`42`73`❎, ❎ cHYY``69,67;55,67 | ||||
| 1`35`33`⁘`   cHYY`62,35;41,35 | ||||
| 1`79`82`cHYY ■``100,94;100,88 | ||||
| 1`42`98`⁘`VTABER`66,99;52,99;52,75;28,75;28,120 | ||||
| 2`75`65`   `⁘`86,67;76,67;76,71 | ||||
| 2`104`73` ■`cHYY`81,75;86,75 | ||||
| 2`27`42`⁘``36,16;36,44;31,44 | ||||
| 3`51`106`■``52,97;52,104 | ||||
| 3`-1`-1```28,78;28,45 | ||||
| 3`-1`-1```65,35;83,35 | ||||
| 3`-1`-1```97,35;105,35]] | ||||
|  for rec in all(h) do | ||||
|   rec[4]=rot13(rec[4]) | ||||
|   if(rec[5]) rec[5]=rot13(rec[5]) | ||||
|   if(rec[6]) rec[6]=gsv(rec[6],";",",") | ||||
|   local lh = self[rec[1]] | ||||
|   if lh then | ||||
|    add(lh,rec) | ||||
| @@ -1791,11 +1795,6 @@ function hints:init() | ||||
|  poke(0x5f2d,1) | ||||
| end | ||||
|  | ||||
| function shdprint(txt,x,y,c) | ||||
|  print(txt,x-1,y+1,1) | ||||
|  print(txt,x,y,c) | ||||
| end | ||||
|  | ||||
| hintflicker={7,10,9,8,8,9,10,7} | ||||
| function hints:draw2() | ||||
|  pal() | ||||
| @@ -1807,12 +1806,34 @@ function hints:draw2() | ||||
|  end | ||||
|  | ||||
|  | ||||
|  local function body() | ||||
|   for i,h in ipairs(self[level.ix]) do | ||||
|    if (i > level.hintlevel) return | ||||
|   local _,x,y,txt,txt2=unpack(h) | ||||
|   shdprint(txt,x,y,c) | ||||
|   if (txt2) shdprint(txt2,x,y+8,c) | ||||
|    local _,x,y,txt,txt2,arrow=unpack(h) | ||||
|  | ||||
|    print(txt,x,y) | ||||
|    if (txt2) print(txt2,x,y+8) | ||||
|  | ||||
|    if arrow then | ||||
|     line() | ||||
|     local x0,y0,x1,y1 | ||||
|     for i=1,#arrow do | ||||
|      x0,y0,x1,y1=x1,y1,unpack(arrow[i]) | ||||
|      line(x1,y1) | ||||
|     end | ||||
|     local dir=atan2(x1-x0,y1-y0) | ||||
|     local function _ahead(d,r) | ||||
|      line(x1+r*sgn0(cos(dir+d)),y1+r*sgn0(sin(dir+d))) | ||||
|     end | ||||
|     _ahead(0.375,2) _ahead(0.625,2) _ahead(0,0) | ||||
|    end | ||||
|   end | ||||
|  end | ||||
|  | ||||
|  color(7) | ||||
|  camera(1,-1) pal(7,1) body() | ||||
|  camera() pal(7,c) body() | ||||
|  pal() | ||||
| end | ||||
|  | ||||
| __gfx__ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user