O sistema operacional ASCII ninguém pediu.
Junte -se a nós na discórdia! https://discord.gg/fptu8eb
O SOS é uma simulação de um sistema operacional baseado em texto escrito em Lua com a ajuda do Löve 2D. Os aplicativos também podem ser carregados, permitindo que você desenvolva ou baixe qualquer coisa que possa imaginar e executá -lo no SOS! Isso é completamente seguro para você, como usuário, baixar scripts aleatórios da Lua na Internet e lançá -los em / programas / porque todos os aplicativos são carregados em um ambiente de caixa de areia. Os aplicativos só têm acesso a funções matemáticas, a API do SOS e alguns outros utilitários.
Você precisa ter o amor 2D instalado para executar o SOS. Se você tiver o Zerobrane IDE instalado, poderá abrir o SOS como um projeto, ir para o Project> lua intérprete e configurá -lo para amar e use F6 para executar. Caso contrário, arraste a pasta em que o SOS está no 'love.exe'.
0.1 é o nosso primeiro marco importante. Parece estranho chamá-lo de que, porque o SOS ainda é um sistema operacional de pseudo-de-texto com base no buggy como hell escrito em Lua, mas está aqui. Agora, os aplicativos podem ser carregados, fechados, temos um método novo e um pouco mais otimizado de renderização. Agora, você tem um aplicativo que é praticamente completo no meio da tela e uma barra lateral em cada lado exibindo aplicativos em execução atuais e outras informações do sistema. Temos um longo caminho a percorrer, mas para um projeto que começou há menos de uma semana (sim, eu sei ... O_O), chegamos muito longe.
Fique atento!
À esquerda...
A guia (ou shift + guia ) percorre os aplicativos abertos. Mesmo quando os aplicativos estão abertos, você pode percorrer a entrada do 'No App', fazendo com que todos os aplicativos sejam executados em segundo plano.
Escape fecha o aplicativo CurrentLty selecionado. Se nenhum aplicativo for selecionado (descrito acima), o Escape fecha o SOS.
À direita...
Page up e Page Down Cycle através dos aplicativos detectados. O aplicativo selecionado tem um '>' ao lado.
Comutadores finais entre a seleção de aplicativos do sistema (na parte superior) e os aplicativos de usuário (na parte inferior).
Home inicia um novo processo com o aplicativo selecionado.
O desenvolvimento de aplicativos usa o código S, o que é apenas uma maneira mais fácil de dizer Lua limitada pelo meio ambiente com API SOS. O link para a configuração para o ambiente da Sandbox está aqui: https://hastebin.com/acolabiqez.lua Você pode usar quaisquer funções Lua incluídas lá, incluindo as funções da API na parte inferior. Esta página será atualizada à medida que mais recursos estiverem implementados.
api.g.set (x, y, char)
Entradas: 'x' e 'y' são as coordenadas do personagem, com (1, 1) sendo o canto superior esquerdo. 'char' deve ser um único personagem.
Resultado: 'Char' é colocado nessa coordenada na tela a ser renderizada no próximo sorteio (). Use em draw ().
Retorno: True
api.g.get (x, y)
Entradas: 'x' e 'y' são as coordenadas do personagem, com (1, 1) sendo o canto superior esquerdo.
Resultado: busca o char nessa coordenada do último sorteio (). Use em tick ().
Retornar: String
api.g.text (x, y, str)
Entradas: 'x' e 'y' são as coordenadas para o início da string, com (1, 1) sendo o canto superior esquerdo. 'str' deve ser uma série de um ou mais caracteres.
Resultado: 'STR' é colocado nessa coordenada na tela a ser renderizada no próximo sorteio (). Use em draw ().
Retorno: True
api.g.box (x, y, w, h, adapta)
Entradas: 'x' e 'y' são as coordenadas para o início da caixa, com (1, 1) sendo o canto superior esquerdo. 'W' e 'H' são a largura e a altura da parte externa da caixa; portanto, o interior é de 2 unidades a menos em cada dimensão. 'Adapt' é um booleano para se as bordas e os cantos da caixa que estão sendo desenhados devem se reformular automaticamente para fazer grades ou linhas que se cruzam em vez de substituir as bordas de outras caixas.
Resultado: retira um retângulo dos caracteres ASCII. O Adapt tem efeitos especiais descritos acima.
Retorno: True
API.G.BAR (X, Y, Legth, Direção, Estilo, Porcentagem)
Entradas: 'x' e 'y' são coordenadas para o início da barra, com (1, 1) sendo o canto superior esquerdo. 'Comprimento' é quantos caracteres há muito tempo a barra deve ser. 'Direção' é a direção, desde o início, que a barra entrará. 'Estilo' é a aparência da barra (mais informações sobre estilos posteriormente, os estilos atuais são 'blocos' e 'desbotamento'). 'Porcentagem' é quanto da barra deve ser preenchida.
Resultado: cria um display de barra de progresso usando caracteres. As barras sempre redondo até a tela exclusiva mais próxima, portanto, 0,9999 não preencherá a barra, apenas 1,0 (ou mais) vontade. 0,0 sempre será uma barra vazia.
Retorno: True
API.I.KEYSTAT (chave)
Entradas: 'key' é uma string para o nome da chave a ser verificada. Por exemplo, "A", "Shift", "Space".
Resultado: verifica para ver se a chave está sendo pressionada. Não detectará chaves se não for um aplicativo ativo.
Retorno: true se a tecla for pressionada, falsa caso contrário.
API.S.AppStable ()
Entradas: nada.
Resultado: Retornos (uma cópia profunda de) A tabela de aplicativos. Isso é um pouco mais complicado e será documentado no wiki mais tarde.
Retorno: Apps (tabela)
As seguintes funções são chamadas pelo SOS. Esta também é a ordem em que eles são chamados, então codifique de acordo.
carregar()
Chamado uma vez na carga. Deve conter informações sobre o aplicativo.
textinput (char)
Opcional. 'Char' é um personagem digitado e formatado corretamente. Por exemplo, se você segurar 'shift' e acertar 'a', essa função chamará com o argumento 'a'. Útil para fácil digitação.
keypress (key, rep)
Opcional. 'key' é o nome de uma chave. 'Rep' é se a chamada é por causa da chave repetida sem liberá -la, assim como se você segurar uma chave em uma caixa de bate -papo e digitar uma letra, fazer uma pausa e depois repetir esse caractere. Isso é definido pelo seu sistema operacional real e pode ser ignorado ignorando a chamada se 'representante' for verdadeira.
keyrelease (chave)
Opcional. 'key' é o nome de uma chave. Esta função é chamada se uma chave for lançada.
marcação()
Chamado a cada carrapato. Ainda tem acesso à tela do último ciclo, para que a api.g.get () ainda funcione.
A tela é redefinida após o tick () e antes do draw ().
Desenhe (largura, altura)
Chamado depois de cada taco. Agora é a hora de atrair as coisas para a tela para exibir. 'Largura' e 'altura' são argumentos para a largura e altura da tela atual.
Este é um modelo: https://hastebin.com/iquikigiril.lua Não faz nada além de configurar o aplicativo.
O aplicativo deve começar com 'App local = {}' e terminar com 'return (app)'. Todas as funções devem começar com 'aplicativo', como 'App.load ()' ou 'App.customfunction ()'.
Os aplicativos devem ser colocados no / Programa / pasta do SOS. Eles serão automaticamente detectados.