Sistem operasi ASCII yang tidak diminta siapa pun.
Bergabunglah dengan kami di Perselisihan! https://discord.gg/fptu8eb
SOS adalah simulasi OS berbasis teks yang ditulis di Lua dengan bantuan Löve 2D. Aplikasi juga dapat dimuat, memungkinkan Anda untuk mengembangkan atau mengunduh apa pun yang dapat Anda bayangkan dan menjalankannya di SOS! Ini benar -benar aman bagi Anda sebagai pengguna untuk mengunduh skrip LUA acak di internet dan melemparkannya ke dalam / program / karena semua aplikasi dimuat di lingkungan kotak pasir. Aplikasi hanya mendapatkan akses ke fungsi matematika, API SOS, dan beberapa utilitas lainnya.
Anda perlu menginstal 2D Love 2D untuk menjalankan SOS. Jika Anda memiliki IDE Zerobrane yang diinstal, Anda dapat membuka SOS sebagai proyek, buka Project> Lua Interpreter dan atur untuk mencintai, lalu gunakan F6 untuk dieksekusi. Kalau tidak, seret folder bahwa SOS masuk ke 'love.exe'.
0.1 adalah tonggak utama pertama kami. Rasanya aneh menyebutnya bahwa karena SOS masih merupakan sistem operasi semu berbasis teks yang ditulis di Lua, tetapi di sini. Aplikasi sekarang dapat dimuat, tertutup, kami memiliki metode rendering yang baru dan sedikit lebih dioptimalkan. Sekarang, Anda memiliki satu aplikasi yang cukup banyak layar penuh di tengah layar dan bilah samping di setiap sisi menampilkan aplikasi saat ini dan informasi sistem lainnya. Kami masih harus menempuh jalan panjang, tetapi untuk proyek yang dimulai kurang dari seminggu yang lalu (ya, saya tahu ... o_o) kami telah membuatnya cukup jauh.
Pantau terus!
Di sebelah kiri ...
Tab (atau Shift + tab ) siklus melalui aplikasi terbuka. Bahkan ketika aplikasi terbuka, Anda dapat memulihkan entri 'No App', membuat semua aplikasi berjalan di latar belakang.
Escape menutup aplikasi yang dipilih saat ini. Jika tidak ada aplikasi yang dipilih (dijelaskan di atas), Escape menutup SOS.
Di sebelah kanan ...
Halaman ke atas dan halaman bawah siklus melalui aplikasi yang terdeteksi. Aplikasi yang dipilih memiliki '>' di sebelahnya.
Sakelar end antara memilih aplikasi sistem (di atas) dan aplikasi pengguna (di bagian bawah).
Beranda memulai proses baru dengan aplikasi yang dipilih.
Pengembangan aplikasi menggunakan S-Code, yang hanya merupakan cara yang lebih mudah untuk mengatakan Lua terbatas lingkungan dengan SOS API. Tautan untuk pengaturan untuk lingkungan Sandbox ada di sini: https://hastebin.com/acolabiqez.lua Anda dapat menggunakan fungsi LUA yang termasuk di sana, termasuk fungsi API di bagian bawah. Halaman ini akan diperbarui karena lebih banyak fitur yang ditimbulkan.
Api.g.set (x, y, char)
Input: 'x' dan 'y' adalah koordinat untuk karakter, dengan (1, 1) menjadi kiri atas. 'Char' harus menjadi satu karakter.
Hasil: 'Char' dimasukkan ke dalam koordinat di atas kanvas yang akan diterjemahkan dalam undian berikutnya (). Gunakan di Draw ().
Kembali: Benar
Api.g.get (x, y)
Input: 'x' dan 'y' adalah koordinat untuk karakter, dengan (1, 1) menjadi kiri atas.
Hasil: Mengambil char pada koordinat itu dari undian terakhir (). Gunakan dalam centang ().
Return: String
API.G.TEXT (X, Y, STR)
Input: 'x' dan 'y' adalah koordinat untuk awal string, dengan (1, 1) menjadi kiri atas. 'str' harus berupa satu atau lebih karakter atau lebih.
Hasil: 'str' dimasukkan ke dalam koordinat di atas kanvas yang akan diterjemahkan dalam undian berikutnya (). Gunakan di Draw ().
Kembali: Benar
API.G.BOX (X, Y, W, H, ADAPT)
Input: 'x' dan 'y' adalah koordinat untuk awal kotak, dengan (1, 1) menjadi kiri atas. 'W' dan 'H' adalah lebar dan tinggi bagian luar kotak, sehingga bagian dalamnya adalah 2 unit lebih sedikit pada setiap dimensi. 'Adapt' adalah boolean karena jika tepi dan sudut kotak yang ditarik harus secara otomatis memformat ulang untuk membuat kisi -kisi atau memotong garis alih -alih menimpa tepi kotak lain.
Hasil: Menggambar persegi panjang dari karakter ASCII. Adapt memiliki efek khusus yang dijelaskan di atas.
Kembali: Benar
Api.g.bar (x, y, legth, arah, gaya, persentase)
Input: 'x' dan 'y' adalah koordinat untuk awal bilah, dengan (1, 1) menjadi kiri atas. 'Panjang' adalah berapa banyak karakter yang harus dilakukan bilah. 'arah' adalah arah, dari awal, bahwa bilah akan masuk. 'Gaya' adalah penampilan bilah (info lebih lanjut tentang gaya nanti, gaya saat ini adalah 'blok' dan 'fade'). 'Persentase' adalah berapa banyak bilah yang harus diisi.
Hasil: Membuat tampilan progres-bar menggunakan karakter. Bar selalu membulatkan ke tampilan unik terdekat, jadi 0,9999 tidak akan mengisi bilah, hanya 1,0 (atau lebih besar) yang akan. 0.0 akan selalu menjadi bilah kosong.
Kembali: Benar
Api.i.keystat (Key)
Input: 'Key' adalah string untuk nama kunci yang akan diperiksa. Misalnya, "A", "Shift", "Space".
Hasil: Periksa untuk melihat apakah tombol sedang ditekan. Tidak akan mendeteksi kunci jika bukan aplikasi aktif.
Return: Benar jika tombol ditekan, FALSE sebaliknya.
Api.sAppstable ()
Input: Tidak ada.
Hasil: Mengembalikan (salinan dalam) tabel aplikasi. Ini sedikit lebih rumit dan akan didokumentasikan di wiki nanti.
Return: Apps (Tabel)
Fungsi -fungsi berikut disebut oleh SOS. Ini juga merupakan urutan di mana mereka dipanggil, jadi kode sesuai.
memuat()
Dipanggil sekali saat dimuat. Harus berisi informasi tentang aplikasi.
TextInput (char)
Opsional. 'Char' adalah karakter yang diketik dan diformat dengan benar. Misalnya, jika Anda memegang 'shift' dan tekan 'A', fungsi ini akan memanggil dengan argumen 'a'. Berguna untuk pengetikan yang mudah.
Keypress (Key, Rep)
Opsional. 'Key' adalah nama kunci. 'Rep' adalah jika panggilan itu karena kunci yang diulang tanpa melepaskannya, seperti jika Anda memegang kunci dalam kotak obrolan dan itu mengetik satu huruf, berhenti, dan kemudian mengulangi karakter itu. Ini ditentukan oleh sistem operasi Anda yang sebenarnya dan dapat diabaikan dengan mengabaikan panggilan jika 'rep' benar.
keyrelease (kunci)
Opsional. 'Key' adalah nama kunci. Fungsi ini dipanggil jika kunci dilepaskan.
kutu()
Memanggil setiap kutu. Masih memiliki akses ke kanvas siklus terakhir, jadi api.g.get () masih akan berfungsi.
Kanvas diatur ulang setelah centang () dan sebelum draw ().
Draw (lebar, tinggi)
Menelepon setelah setiap kutu. Sekarang adalah waktu untuk menarik barang -barang ke kanvas untuk ditampilkan. 'Lebar' dan 'tinggi' adalah argumen untuk lebar dan tinggi kanvas saat ini.
Ini adalah templat: https://hastebin.com/iquKigiril.lua itu tidak melakukan apa -apa selain mengatur aplikasi.
Aplikasi harus dimulai dengan 'aplikasi lokal = {}' dan berakhir dengan 'return (app)'. Semua fungsi harus dimulai dengan 'app.', Seperti 'app.load ()' atau 'app.customfunction ()'.
Aplikasi harus ditempatkan ke dalam / program / folder SOS. Mereka akan secara otomatis terdeteksi.