diff options
37 files changed, 206 insertions, 16 deletions
diff --git a/sounds/user/beep/LICENSE b/sounds/user/beep/LICENSE new file mode 100644 index 0000000..a0acd3d --- /dev/null +++ b/sounds/user/beep/LICENSE @@ -0,0 +1,24 @@ +Files: error/buzzer.ogg +Source: http://www.freesound.org/people/guitarguy1985/sounds/54047/ +Copyright: 2008, guitarguy1985 +License: CC-0 + +Files: login/toycaralarm.ogg +Source: http://www.freesound.org/people/AMPUL/sounds/29723/ +Copyright: 2007, AMPUL +License: Sampling+ + +Files: logout/cha ching.ogg +Source: http://www.freesound.org/people/creek23/sounds/75235/ +Copyright: 2009, creek23 +License: CC-BY-3.0 + +Files: purchase/camera.ogg +Source: http://www.freesound.org/people/FreqMan/sounds/42899/ +Copyright: 2007, FreqMan +License: CC-BY-3.0 + +Files: purchase/beep.ogg +Source: http://www.freesound.org/people/KorgMS2000B/sounds/54415/ +Copyright: 2008, KorgMS2000B +License: Sampling+ diff --git a/sounds/user/beep/error/buzzer.ogg b/sounds/user/beep/error/buzzer.ogg Binary files differnew file mode 100644 index 0000000..eebd2fa --- /dev/null +++ b/sounds/user/beep/error/buzzer.ogg diff --git a/sounds/user/beep/login/toycaralarm.ogg b/sounds/user/beep/login/toycaralarm.ogg Binary files differnew file mode 100644 index 0000000..817a4c9 --- /dev/null +++ b/sounds/user/beep/login/toycaralarm.ogg diff --git a/sounds/user/beep/logout/cha ching.ogg b/sounds/user/beep/logout/cha ching.ogg Binary files differnew file mode 100644 index 0000000..4c6d88d --- /dev/null +++ b/sounds/user/beep/logout/cha ching.ogg diff --git a/sounds/user/beep/purchase/beep.ogg b/sounds/user/beep/purchase/beep.ogg Binary files differnew file mode 100644 index 0000000..e3dbad4 --- /dev/null +++ b/sounds/user/beep/purchase/beep.ogg diff --git a/sounds/user/beep/purchase/camera.ogg b/sounds/user/beep/purchase/camera.ogg Binary files differnew file mode 100644 index 0000000..41373d4 --- /dev/null +++ b/sounds/user/beep/purchase/camera.ogg diff --git a/sounds/user/dude/LICENSE b/sounds/user/dude/LICENSE new file mode 100644 index 0000000..3b65ddd --- /dev/null +++ b/sounds/user/dude/LICENSE @@ -0,0 +1,19 @@ +Files: error/I broke something.ogg +Source: http://www.freesound.org/people/ecfike/sounds/154574/ +Copyright: ecfike +License: CC-0 + +Files: login/hey dude, whats up man.ogg +Source: http://www.freesound.org/people/ecfike/sounds/154619/ +Copyright: ecfike +License: CC-0 + +Files: logout/bye.ogg +Source: http://www.freesound.org/people/ecfike/sounds/154546/ +Copyright: ecfike +License: CC-0 + +Files: purchase/yeah man.ogg +Source: http://www.freesound.org/people/ecfike/sounds/154582/ +Copyright: ecfike +License: CC-0 diff --git a/sounds/user/dude/error/I broke something.ogg b/sounds/user/dude/error/I broke something.ogg Binary files differnew file mode 100644 index 0000000..ae8c298 --- /dev/null +++ b/sounds/user/dude/error/I broke something.ogg diff --git a/sounds/user/dude/login/hey dude, whats up man.ogg b/sounds/user/dude/login/hey dude, whats up man.ogg Binary files differnew file mode 100644 index 0000000..8b6d7b5 --- /dev/null +++ b/sounds/user/dude/login/hey dude, whats up man.ogg diff --git a/sounds/user/dude/logout/bye.ogg b/sounds/user/dude/logout/bye.ogg Binary files differnew file mode 100644 index 0000000..de62d3b --- /dev/null +++ b/sounds/user/dude/logout/bye.ogg diff --git a/sounds/user/dude/purchase/yeah man.ogg b/sounds/user/dude/purchase/yeah man.ogg Binary files differnew file mode 100644 index 0000000..b3c2d09 --- /dev/null +++ b/sounds/user/dude/purchase/yeah man.ogg diff --git a/sounds/user/girlfriend/LICENSE b/sounds/user/girlfriend/LICENSE new file mode 100644 index 0000000..9153012 --- /dev/null +++ b/sounds/user/girlfriend/LICENSE @@ -0,0 +1,39 @@ +Files: error/no, no, forget it.ogg +Source: http://www.freesound.org/people/epanody/sounds/86427/ +Copyright: 2009, epanody +License: CC-BY-3.0 + +Files: login/hello.ogg +Source: http://www.freesound.org/people/epanody/sounds/97830/ +Copyright: 2010, epanody +License: CC-BY-3.0 + +Files: login/we need to talk about this.ogg +Source: http://www.freesound.org/people/epanody/sounds/86454/ +Copyright: 2009, epanody +License: CC-BY-3.0 + +Files: logout/get out, get outta here.ogg +Source: http://www.freesound.org/people/epanody/sounds/86409/ +Copyrigt: 2009, epanody +License: CC-BY-3.0 + +Files: logout/why dont you just leave then.ogg +Source: http://www.freesound.org/people/epanody/sounds/86463/ +Copyrigt: 2009, epanody +License: CC-BY-3.0 + +Files: logout/i dont have time for this.ogg +Source: http://www.freesound.org/people/epanody/sounds/86386/ +Copyrigt: 2009, epanody +License: CC-BY-3.0 + +Files: purchase/code accepted.ogg +Source: http://www.freesound.org/people/epanody/sounds/97827/ +Copyright: 2010, epanody +License: CC-BY-3.0 + +Files: purchase/yeah so what.ogg +Source: http://www.freesound.org/people/epanody/sounds/86468/ +Copyright: 2010, epanody +License: CC-BY-3.0 diff --git a/sounds/user/girlfriend/error/no, no, forget it.ogg b/sounds/user/girlfriend/error/no, no, forget it.ogg Binary files differnew file mode 100644 index 0000000..825f24b --- /dev/null +++ b/sounds/user/girlfriend/error/no, no, forget it.ogg diff --git a/sounds/user/girlfriend/login/hello.ogg b/sounds/user/girlfriend/login/hello.ogg Binary files differnew file mode 100644 index 0000000..7c76e4d --- /dev/null +++ b/sounds/user/girlfriend/login/hello.ogg diff --git a/sounds/user/girlfriend/login/we need to talk about this.ogg b/sounds/user/girlfriend/login/we need to talk about this.ogg Binary files differnew file mode 100644 index 0000000..2df048f --- /dev/null +++ b/sounds/user/girlfriend/login/we need to talk about this.ogg diff --git a/sounds/user/girlfriend/logout/get out, get outta here.ogg b/sounds/user/girlfriend/logout/get out, get outta here.ogg Binary files differnew file mode 100644 index 0000000..c305d26 --- /dev/null +++ b/sounds/user/girlfriend/logout/get out, get outta here.ogg diff --git a/sounds/user/girlfriend/logout/i dont have time for this.ogg b/sounds/user/girlfriend/logout/i dont have time for this.ogg Binary files differnew file mode 100644 index 0000000..77b0fce --- /dev/null +++ b/sounds/user/girlfriend/logout/i dont have time for this.ogg diff --git a/sounds/user/girlfriend/logout/why dont you just leave then.ogg b/sounds/user/girlfriend/logout/why dont you just leave then.ogg Binary files differnew file mode 100644 index 0000000..eac83c8 --- /dev/null +++ b/sounds/user/girlfriend/logout/why dont you just leave then.ogg diff --git a/sounds/user/girlfriend/purchase/code accepted.ogg b/sounds/user/girlfriend/purchase/code accepted.ogg Binary files differnew file mode 100644 index 0000000..34dc3d4 --- /dev/null +++ b/sounds/user/girlfriend/purchase/code accepted.ogg diff --git a/sounds/user/girlfriend/purchase/yeah so what.ogg b/sounds/user/girlfriend/purchase/yeah so what.ogg Binary files differnew file mode 100644 index 0000000..c488a26 --- /dev/null +++ b/sounds/user/girlfriend/purchase/yeah so what.ogg diff --git a/sounds/user/robot/LICENSE b/sounds/user/robot/LICENSE new file mode 100644 index 0000000..ac119af --- /dev/null +++ b/sounds/user/robot/LICENSE @@ -0,0 +1,19 @@ +Files: error/critical error.ogg +Source: http://www.freesound.org/people/liquidhot/sounds/23514/ +Copyright: 2009, liquidhot +License: CC-BY-3.0 + +Files: login/login accepted.ogg +Source: http://www.freesound.org/people/liquidhot/sounds/23516/ +Copyright: 2006, liquidhot +License: CC-BY-3.0 + +Files: logout/terminating.ogg +Source: http://www.freesound.org/people/liquidhot/sounds/23513/ +Copyright: 2006, liquidhot +License: CC-BY-3.0 + +Files: purchase/code accepted.ogg +Source: http://www.freesound.org/people/epanody/sounds/97827/ +Copyright: 2010, epanody +License: CC-BY-3.0 diff --git a/sounds/user/robot/error/critical error.ogg b/sounds/user/robot/error/critical error.ogg Binary files differnew file mode 100644 index 0000000..f3abfcd --- /dev/null +++ b/sounds/user/robot/error/critical error.ogg diff --git a/sounds/user/robot/login/login accepted.ogg b/sounds/user/robot/login/login accepted.ogg Binary files differnew file mode 100644 index 0000000..90e0e48 --- /dev/null +++ b/sounds/user/robot/login/login accepted.ogg diff --git a/sounds/user/robot/logout/terminating.ogg b/sounds/user/robot/logout/terminating.ogg Binary files differnew file mode 100644 index 0000000..dccb6d6 --- /dev/null +++ b/sounds/user/robot/logout/terminating.ogg diff --git a/sounds/user/robot/purchase/accepted.ogg b/sounds/user/robot/purchase/accepted.ogg Binary files differnew file mode 100644 index 0000000..b980230 --- /dev/null +++ b/sounds/user/robot/purchase/accepted.ogg diff --git a/sounds/user/sexy/LICENSE b/sounds/user/sexy/LICENSE new file mode 100644 index 0000000..99238dc --- /dev/null +++ b/sounds/user/sexy/LICENSE @@ -0,0 +1,39 @@ +Files: error/error.ogg +Source: http://www.freesound.org/people/Corsica_S/sounds/56097/ +Copyright: 2008, Corsica_S +License: CC-BY-3.0 + +Files: login/welcome back sexy bitch.ogg +Source: http://www.freesound.org/people/Corsica_S/sounds/99889/ +Copyright: 2010, Corsica_S +License: CC-BY-3.0 + +Files: logout/what about me.ogg +Source: http://www.freesound.org/people/epanody/sounds/86457/ +Copyright: 2010, Corsica_S +License: CC-BY-3.0 + +Files: logout/well if thats how you feel.ogg +Source: http://www.freesound.org/people/epanody/sounds/86456/ +Copyright: 2010, Corsica_S +License: CC-BY-3.0 + +Files: purchase/yes, master.ogg +Source: http://www.freesound.org/people/Corsica_S/sounds/107555/ +Copyright: 2010, Corsica_S +License: CC-BY-3.0 + +Files: purchase/your will is my command.ogg +Source: http://www.freesound.org/people/Corsica_S/sounds/107556/ +Copyright: 2012, Corsica_S +License: CC-BY-3.0 + +Files: purchase/do it again.ogg +Source: http://www.freesound.org/people/Corsica_S/sounds/95235/ +Copyright: 2010, Corsica_S +License: CC-BY-3.0 + +Files: purchase/what is next.ogg +Source: http://www.freesound.org/people/Corsica_S/sounds/72257/ +Copyright: 2009, Corsica_S +License: CC-BY-3.0 diff --git a/sounds/user/sexy/error/error.ogg b/sounds/user/sexy/error/error.ogg Binary files differnew file mode 100644 index 0000000..bd0f41d --- /dev/null +++ b/sounds/user/sexy/error/error.ogg diff --git a/sounds/user/sexy/login/welcome back sexy bitch.ogg b/sounds/user/sexy/login/welcome back sexy bitch.ogg Binary files differnew file mode 100644 index 0000000..77fc7ac --- /dev/null +++ b/sounds/user/sexy/login/welcome back sexy bitch.ogg diff --git a/sounds/user/sexy/logout/well if thats how you feel.ogg b/sounds/user/sexy/logout/well if thats how you feel.ogg Binary files differnew file mode 100644 index 0000000..30fb42c --- /dev/null +++ b/sounds/user/sexy/logout/well if thats how you feel.ogg diff --git a/sounds/user/sexy/logout/what about me.ogg b/sounds/user/sexy/logout/what about me.ogg Binary files differnew file mode 100644 index 0000000..9ed10db --- /dev/null +++ b/sounds/user/sexy/logout/what about me.ogg diff --git a/sounds/user/sexy/purchase/do it again.ogg b/sounds/user/sexy/purchase/do it again.ogg Binary files differnew file mode 100644 index 0000000..6465c60 --- /dev/null +++ b/sounds/user/sexy/purchase/do it again.ogg diff --git a/sounds/user/sexy/purchase/what is next.ogg b/sounds/user/sexy/purchase/what is next.ogg Binary files differnew file mode 100644 index 0000000..e3d3927 --- /dev/null +++ b/sounds/user/sexy/purchase/what is next.ogg diff --git a/sounds/user/sexy/purchase/yes, master.ogg b/sounds/user/sexy/purchase/yes, master.ogg Binary files differnew file mode 100644 index 0000000..f0723a1 --- /dev/null +++ b/sounds/user/sexy/purchase/yes, master.ogg diff --git a/sounds/user/sexy/purchase/your will is my command.ogg b/sounds/user/sexy/purchase/your will is my command.ogg Binary files differnew file mode 100644 index 0000000..3f07616 --- /dev/null +++ b/sounds/user/sexy/purchase/your will is my command.ogg diff --git a/src/audio.vala b/src/audio.vala index e30f3b1..eeff7b1 100644 --- a/src/audio.vala +++ b/src/audio.vala @@ -15,6 +15,7 @@ public class AudioPlayer { private dynamic Gst.Element p; + string path; public signal void end_of_stream(); @@ -29,13 +30,49 @@ public class AudioPlayer { } public AudioPlayer() { + path = Environment.get_current_dir()+"/sounds/"; p = Gst.ElementFactory.make("playbin", "play"); p.get_bus().add_watch(bus_callback); } - public void play(string file) { + public void play_system(string file) { p.set_state(Gst.State.NULL); - p.uri = "file://"+Environment.get_current_dir()+"/sounds/"+file; + p.uri = "file://" + path + "system/"+file; + p.set_state(Gst.State.PLAYING); + } + + private string[] get_files(string dir) { + try { + var directory = File.new_for_path(dir); + var enumerator = directory.enumerate_children(FileAttribute.STANDARD_NAME, 0); + string[] result = {}; + + FileInfo file_info; + while ((file_info = enumerator.next_file ()) != null) { + result += file_info.get_name(); + } + + return result; + } catch (Error e) { + write_to_log("Error: %s\n", e.message); + return {}; + } + } + + private string get_random_file(string dir) { + var files = get_files(dir); + var index = Random.int_range(0, files.length); + return files[index]; + } + + public string get_random_user_theme() { + return get_random_file(path + "user/"); + } + + public void play_user(string theme, string type) { + p.set_state(Gst.State.NULL); + var file = get_random_file(path + "user/" + theme+ "/" + type); + p.uri = "file://" + path + "user/" + theme+ "/" + type + "/" + file; p.set_state(Gst.State.PLAYING); } } diff --git a/src/main.vala b/src/main.vala index aadafe7..7f9d3c1 100644 --- a/src/main.vala +++ b/src/main.vala @@ -62,6 +62,7 @@ public static int main(string[] args) { db = new Database("shop.db"); audio = new AudioPlayer(); loop = new MainLoop(); + localsession = new ScannerSession(); dev.received_barcode.connect((data) => { if(localsession.interpret(data)) @@ -69,7 +70,7 @@ public static int main(string[] args) { }); write_to_log("KtT Shop System has been started"); - audio.play("system/startup.ogg"); + audio.play_system("startup.ogg"); /* attach webserver to mainloop */ new WebServer(); @@ -78,7 +79,7 @@ public static int main(string[] args) { loop.run(); write_to_log("Stopping Shop System"); - audio.play("system/shutdown.ogg"); + audio.play_system("shutdown.ogg"); /* we need to run the mainloop to play audio */ audio.end_of_stream.connect(() => { loop.quit(); }); diff --git a/src/scannersession.vala b/src/scannersession.vala index e286387..7f19b77 100644 --- a/src/scannersession.vala +++ b/src/scannersession.vala @@ -34,6 +34,11 @@ public class ScannerSession { private set; default = false; } + public string theme { + get; + private set; + default = "beep"; + } public void logout() { logged_in = false; @@ -48,6 +53,7 @@ public class ScannerSession { return false; } this.logged_in = true; + this.theme = audio.get_random_user_theme(); return true; } @@ -62,7 +68,7 @@ public class ScannerSession { /* check if scannerdata has valid format */ if(scannerdata != "USER %d".printf(id)) { - audio.play("system/error.ogg"); + audio.play_system("error.ogg"); write_to_log("Error: Invalid User ID: %s", scannerdata); return false; } @@ -73,11 +79,11 @@ public class ScannerSession { } if(login(id)) { - /* TODO: play audio */ + audio.play_user(theme, "login"); write_to_log("Login: %s (%d)", name, user); return true; } else { - audio.play("system/error.ogg"); + audio.play_system("error.ogg"); write_to_log("Error: Login failed (User ID = %d)", id); return false; } @@ -88,33 +94,33 @@ public class ScannerSession { } if(login(0)) { - /* TODO: play audio */ + audio.play_user(theme, "login"); write_to_log("Login: %s (%d)", name, user); return true; } else { - audio.play("system/error.ogg"); + audio.play_system("error.ogg"); write_to_log("Error: Login failed (User ID = 0)"); return false; } } else if(scannerdata == "UNDO") { if(!logged_in) { - audio.play("system/error.ogg"); + audio.play_system("error.ogg"); write_to_log("Error: Can't undo if not logged in!"); return false; } else { if(db.undo(user)) { - /* TODO: play audio */ + audio.play_user(theme, "purchase"); write_to_log("Undo last purchase!"); return true; } else { - /* TODO: play audio */ + audio.play_user(theme, "error"); write_to_log("Error: Couldn't undo last purchase!"); return false; } } } else if(scannerdata == "LOGOUT") { if(logged_in) { - /* TODO: play audio */ + audio.play_user(theme, "logout"); write_to_log("Logout!"); logout(); return true; @@ -126,19 +132,25 @@ public class ScannerSession { /* check if scannerdata has valid format */ if(scannerdata != "%llu".printf(id)) { - /* TODO: play audio */ + audio.play_user(theme, "error"); write_to_log("Error: invalid product: %s", scannerdata); return false; } + if(!logged_in) { + audio.play_system("error.ogg"); + write_to_log("Error: Login Required!"); + return false; + } + if(db.buy(user, id)) { - /* TODO: play audio */ + audio.play_user(theme, "purchase"); var name = db.get_product_name(id); var price = db.get_product_price(user, id); write_to_log(@"article bought: $name ($price €)"); return true; } else { - /* TODO: play audio */ + audio.play_user(theme, "error"); write_to_log("Error: purchase failed!"); return false; } |