Le système d'exploitation ASCII que personne n'a demandé.
Rejoignez-nous sur Discord! https://discord.gg/fptu8eb
SOS est une simulation d'un système d'exploitation textuel écrit dans LUA avec l'aide de Löve 2D. Les applications peuvent également être chargées, vous permettant de développer ou de télécharger tout ce que vous pouvez imaginer et l'exécuter dans SOS! Ceci est entièrement sûr pour vous en tant qu'utilisateur pour télécharger des scripts LUA aléatoires sur Internet et les jeter dans / programmes / parce que toutes les applications sont chargées dans un environnement de sable. Les applications n'ont accès qu'aux fonctions mathématiques, à l'API SOS et à quelques autres utilitaires.
Vous avez besoin d'installer Love 2D pour exécuter SOS. Si vous avez installé Zerobrane IDE, vous pouvez ouvrir SOS en tant que projet, accédez à un interprète de projet> LUA et le définir, puis utilisez F6 pour exécuter. Sinon, faites glisser le dossier dans lequel SOS est sur «love.exe».
0.1 est notre première étape importante. Cela semble bizarre de l'appeler parce que SOS est toujours un système d'exploitation pseudo basé sur du texte buggy écrit en Lua, mais c'est ici. Les applications peuvent désormais être chargées, fermées, nous avons une nouvelle méthode de rendu légèrement plus optimisée. Maintenant, vous avez une application qui est à peu près complète au milieu de l'écran et une barre latérale de chaque côté affichant des applications en cours d'exécution actuelles et d'autres informations système. Nous avons un long chemin à parcourir, mais pour un projet qui a commencé il y a moins d'une semaine (ouais, je sais ... o_o), nous avons rendu assez loin.
Restez à l'écoute!
À gauche ...
Tab (ou Shift + Tab ) cycles via des applications ouvertes. Même lorsque les applications sont ouvertes, vous pouvez parcourir l'entrée «sans application», ce qui fait que toutes les applications s'exécutent en arrière-plan.
Escape ferme l'application Currentlty sélectionnée. Si aucune application n'est sélectionnée (décrite ci-dessus), Escape ferme SOS.
Sur la droite...
PAGE UP ET PAGE DU CYCLE À LA CYCLE À LA PLUS DÉTÉRÉ. L'application sélectionnée a un '>' à côté.
Les commutateurs finaux entre la sélection des applications système (en haut) et les applications utilisateur (en bas).
Home démarre un nouveau processus avec l'application sélectionnée.
Le développement d'applications utilise S-Code, qui est juste un moyen plus facile de dire LUA limitée à l'environnement avec l'API SOS. Le lien de la configuration de l'environnement de bac à sable est ici: https://hastebin.com/acolabiqez.lua Vous pouvez utiliser toutes les fonctions LUA incluses dans là-dedans, y compris les fonctions API en bas. Cette page sera mise à jour à mesure que de plus en plus de fonctionnalités seront soumises.
api.g.set (x, y, char)
Entrées: «x» et «y» sont les coordonnées du caractère, avec (1, 1) étant en haut à gauche. «Char» devrait être un seul caractère.
Résultat: «Char» est mis sur cette coordonnée sur la toile à rendre dans le prochain tirage (). Utiliser dans Draw ().
Retour: vrai
api.g.get (x, y)
Entrées: «x» et «y» sont les coordonnées du caractère, avec (1, 1) étant en haut à gauche.
Résultat: récupère le char à cette coordonnée du dernier tirage (). Utiliser dans tick ().
Retour: chaîne
api.g.Text (x, y, str)
Entrées: «x» et «y» sont les coordonnées pour le début de la chaîne, avec (1, 1) étant en haut à gauche. «str» devrait être une chaîne d'un ou plusieurs caractères.
Résultat: «Str» est placé sur cette coordonnée sur la toile à rendre dans le prochain tirage (). Utiliser dans Draw ().
Retour: vrai
api.g.box (x, y, w, h, adapt)
Entrées: «x» et «y» sont les coordonnées pour le début de la boîte, avec (1, 1) étant en haut à gauche. «W» et «H» sont la largeur et la hauteur de l'extérieur de la boîte, donc l'intérieur est 2 unités moins sur chaque dimension. `` Adapt '' est un booléen si les bords et les coins de la boîte dessinés devraient reformater automatiquement pour fabriquer des grilles ou des lignes qui se croisent au lieu d'écraser les bords d'autres boîtes.
Résultat: dessine un rectangle des caractères ASCII. L'ADAPT a des effets spéciaux décrits ci-dessus.
Retour: vrai
API.G.BAR (X, Y, Legth, Direction, style, pourcentage)
Entrées: «x» et «y» sont des coordonnées pour le début de la barre, avec (1, 1) étant en haut à gauche. «Longueur» est le nombre de caractères que la barre devrait être. «Direction» est la direction, dès le début, que la barre entrera. «Style» est l'apparence de la barre (plus d'informations sur les styles plus tard, les styles actuels sont «Block» et «Fade»). Le «pourcentage» est la quantité de barre de la barre.
Résultat: crée un écran de progression-bar à l'aide de caractères. Les barres tournent toujours jusqu'à l'écran unique le plus proche, donc 0,9999 ne remplira pas la barre, seul le 1,0 (ou plus). 0.0 sera toujours une barre vide.
Retour: vrai
api.i.keystat (clé)
Entrées: «Key» est une chaîne pour le nom de la clé à vérifier. Par exemple, "A", "Shift", "Space".
Résultat: vérifie si la touche est enfoncée. Ne détectera pas les clés si ce n'est pas une application active.
Retour: vrai si la touche est enfoncée, fausse autrement.
api.s.appstable ()
Entrées: rien.
Résultat: retourne (une copie profonde de) le tableau des applications. C'est un peu plus compliqué et sera documenté sur le wiki plus tard.
Retour: applications (tableau)
Les fonctions suivantes sont appelées par SOS. Il s'agit également de l'ordre dans lequel ils sont appelés, donc code en conséquence.
charger()
Appelé une fois sur charge. Devrait contenir des informations sur l'application.
TextInput (char)
Facultatif. «Char» est un caractère tapé et formaté correctement. Par exemple, si vous maintenez «Maj» et appuyez sur «A», cette fonction appellera avec l'argument «A». Utile pour la saisie facile.
DESTRES DE LAPE (clé, représentant)
Facultatif. «Key» est le nom d'une clé. «Rep» est si l'appel est dû à la répétition de la clé sans la libérer, tout comme si vous tenez une clé dans une boîte de discussion et qu'elle tape une lettre, une pause, puis répète ce personnage. Ceci est défini par votre système d'exploitation réel et peut être ignoré en ignorant l'appel si «rep» est vrai.
Keyrelease (clé)
Facultatif. «Key» est le nom d'une clé. Cette fonction est appelée si une clé est libérée.
cocher()
Appelé chaque tique. A toujours accès à la toile de Last Cycle, donc API.g.get () fonctionnera toujours.
La toile est réinitialisée après Tick () et avant Draw ().
dessiner (largeur, hauteur)
Appelé après chaque tique. Il est maintenant temps de dessiner des choses sur la toile à afficher. La «largeur» et la «hauteur» sont des arguments pour la largeur et la hauteur de la toile actuelles.
Ceci est un modèle: https://hastebin.com/iqukigiril.lua il ne fait rien d'autre que de configurer l'application.
L'application doit commencer par «application locale = {}» et se terminer par «return (app)». Toutes les fonctions doivent commencer par «app», telles que «app.load ()» ou «app.customFunction ()».
Les applications doivent être placées dans les programmes / dossiers de SOS. Ils seront automatiquement détectés.