 1698c17caa
			
		
	
	1698c17caa
	
	
	
		
			
			* Fix links to TASVideos.org using HTTP * Revise all docs mentioning Lua in EmuHawk which are in English resolves TASEmulators/BizHawk#3650 * Correct capitalisation of "BizHawk" in strings and camelCase identifiers * Use the term "EmuHawk" when referring to the app, in English docs --------- Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
		
			
				
	
	
		
			110 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| print("Loading AP lua connector script")
 | |
| 
 | |
| local lua_major, lua_minor = _VERSION:match("Lua (%d+)%.(%d+)")
 | |
| lua_major = tonumber(lua_major)
 | |
| lua_minor = tonumber(lua_minor)
 | |
| -- lua compat shims
 | |
| if lua_major > 5 or (lua_major == 5 and lua_minor >= 3) then
 | |
|   require("lua_5_3_compat")
 | |
| end
 | |
| 
 | |
| function table.empty (self)
 | |
|     for _, _ in pairs(self) do
 | |
|         return false
 | |
|     end
 | |
|     return true
 | |
| end
 | |
| 
 | |
| local bizhawk_version = client.getversion()
 | |
| local bizhawk_major, bizhawk_minor, bizhawk_patch = bizhawk_version:match("(%d+)%.(%d+)%.?(%d*)")
 | |
| bizhawk_major = tonumber(bizhawk_major)
 | |
| bizhawk_minor = tonumber(bizhawk_minor)
 | |
| if bizhawk_patch == "" then
 | |
|   bizhawk_patch = 0
 | |
| else
 | |
|   bizhawk_patch = tonumber(bizhawk_patch)
 | |
| end
 | |
| 
 | |
| local is23Or24Or25 = (bizhawk_version=="2.3.1") or (bizhawk_major == 2 and bizhawk_minor >= 3 and bizhawk_minor <= 5)
 | |
| local isGreaterOrEqualTo26 = bizhawk_major > 2 or (bizhawk_major == 2 and bizhawk_minor >= 6)
 | |
| local isUntestedBizHawk = bizhawk_major > 2 or (bizhawk_major == 2 and bizhawk_minor > 9)
 | |
| local untestedBizHawkMessage = "Warning: this version of BizHawk is newer than we know about. If it doesn't work, consider downgrading to 2.9"
 | |
| 
 | |
| u8 = memory.read_u8
 | |
| wU8 = memory.write_u8
 | |
| u16 = memory.read_u16_le
 | |
| uRange = memory.readbyterange
 | |
| 
 | |
| function getMaxMessageLength()
 | |
|   local denominator = 12
 | |
|   if is23Or24Or25 then
 | |
|     denominator = 11
 | |
|   end
 | |
|   return math.floor(client.screenwidth()/denominator)
 | |
| end
 | |
| 
 | |
| function drawText(x, y, message, color)
 | |
|   if is23Or24Or25 then
 | |
|       gui.addmessage(message)
 | |
|   elseif isGreaterOrEqualTo26 then
 | |
|       gui.drawText(x, y, message, color, 0xB0000000, 18, "Courier New", "middle", "bottom", nil, "client")
 | |
|   end
 | |
| end
 | |
| 
 | |
| function clearScreen()
 | |
|   if is23Or24Or25 then
 | |
|       return
 | |
|   elseif isGreaterOrEqualTo26 then
 | |
|       drawText(0, 0, "", "black")
 | |
|   end
 | |
| end
 | |
| 
 | |
| itemMessages = {}
 | |
| 
 | |
| function drawMessages()
 | |
|   if table.empty(itemMessages) then
 | |
|       clearScreen()
 | |
|       return
 | |
|   end
 | |
|   local y = 10
 | |
|   found = false
 | |
|   maxMessageLength = getMaxMessageLength()
 | |
|   for k, v in pairs(itemMessages) do
 | |
|       if v["TTL"] > 0 then
 | |
|           message = v["message"]
 | |
|           while true do
 | |
|               drawText(5, y, message:sub(1, maxMessageLength), v["color"])
 | |
|               y = y + 16
 | |
| 
 | |
|               message = message:sub(maxMessageLength + 1, message:len())
 | |
|               if message:len() == 0 then
 | |
|                   break
 | |
|               end
 | |
|           end
 | |
|           newTTL = 0
 | |
|           if isGreaterOrEqualTo26 then
 | |
|               newTTL = itemMessages[k]["TTL"] - 1
 | |
|           end
 | |
|           itemMessages[k]["TTL"] = newTTL
 | |
|           found = true
 | |
|       end
 | |
|   end
 | |
|   if found == false then
 | |
|       clearScreen()
 | |
|   end
 | |
| end
 | |
| 
 | |
| function checkBizHawkVersion()
 | |
|   if not is23Or24Or25 and not isGreaterOrEqualTo26 then
 | |
|     print("Must use a version of BizHawk 2.3.1 or higher")
 | |
|     return false
 | |
|   elseif isUntestedBizHawk then
 | |
|     print(untestedBizHawkMessage)
 | |
|   end
 | |
|   return true
 | |
| end
 | |
| 
 | |
| function stripPrefix(s, p)
 | |
|   return (s:sub(0, #p) == p) and s:sub(#p+1) or s
 | |
| end
 |