diff --git a/.import/bad_connection_dummy.png-d603acf473f5d93783cd2e8725da9aaa.md5 b/.import/bad_connection_dummy.png-d603acf473f5d93783cd2e8725da9aaa.md5 new file mode 100644 index 0000000..46d86a6 --- /dev/null +++ b/.import/bad_connection_dummy.png-d603acf473f5d93783cd2e8725da9aaa.md5 @@ -0,0 +1,3 @@ +source_md5="65887843cb9e3f314672714c33e5c80c" +dest_md5="e634cce8794e713a0204ac6665cce260" + diff --git a/.import/bad_connection_dummy.png-d603acf473f5d93783cd2e8725da9aaa.stex b/.import/bad_connection_dummy.png-d603acf473f5d93783cd2e8725da9aaa.stex new file mode 100644 index 0000000..0f8171c Binary files /dev/null and b/.import/bad_connection_dummy.png-d603acf473f5d93783cd2e8725da9aaa.stex differ diff --git a/.import/button_slot_00.png-d749c98176c3b5eb995d14535557ff84.md5 b/.import/button_slot_00.png-d749c98176c3b5eb995d14535557ff84.md5 new file mode 100644 index 0000000..479d971 --- /dev/null +++ b/.import/button_slot_00.png-d749c98176c3b5eb995d14535557ff84.md5 @@ -0,0 +1,3 @@ +source_md5="bd833f3f857ec3c97b54188096171119" +dest_md5="6597d56ed5e8f3497b427b2491b88e3b" + diff --git a/.import/button_slot_00.png-d749c98176c3b5eb995d14535557ff84.stex b/.import/button_slot_00.png-d749c98176c3b5eb995d14535557ff84.stex new file mode 100644 index 0000000..eac3d60 Binary files /dev/null and b/.import/button_slot_00.png-d749c98176c3b5eb995d14535557ff84.stex differ diff --git a/.import/button_slot_01.png-a353ceb9ea4fce9f27981c31cba2f17f.md5 b/.import/button_slot_01.png-a353ceb9ea4fce9f27981c31cba2f17f.md5 new file mode 100644 index 0000000..87798d6 --- /dev/null +++ b/.import/button_slot_01.png-a353ceb9ea4fce9f27981c31cba2f17f.md5 @@ -0,0 +1,3 @@ +source_md5="ec6962b5da25c9a1c423db7010bad687" +dest_md5="8d6531273cead91578845851499e095b" + diff --git a/.import/button_slot_01.png-a353ceb9ea4fce9f27981c31cba2f17f.stex b/.import/button_slot_01.png-a353ceb9ea4fce9f27981c31cba2f17f.stex new file mode 100644 index 0000000..7f10441 Binary files /dev/null and b/.import/button_slot_01.png-a353ceb9ea4fce9f27981c31cba2f17f.stex differ diff --git a/.import/call_background.png-febb68c673359f8512b0b1b1fceb9195.md5 b/.import/call_background.png-febb68c673359f8512b0b1b1fceb9195.md5 new file mode 100644 index 0000000..65336c8 --- /dev/null +++ b/.import/call_background.png-febb68c673359f8512b0b1b1fceb9195.md5 @@ -0,0 +1,3 @@ +source_md5="8ddba6805dbefd0c82dfa792fc196cc0" +dest_md5="af0e03ec5b47e62a9fb5f7e3313f3dfb" + diff --git a/.import/call_background.png-febb68c673359f8512b0b1b1fceb9195.stex b/.import/call_background.png-febb68c673359f8512b0b1b1fceb9195.stex new file mode 100644 index 0000000..2d1daba Binary files /dev/null and b/.import/call_background.png-febb68c673359f8512b0b1b1fceb9195.stex differ diff --git a/.import/call_leaved.wav-e9fca95b7995df90f4ce36c929defd1a.md5 b/.import/call_leaved.wav-e9fca95b7995df90f4ce36c929defd1a.md5 new file mode 100644 index 0000000..b34af4d --- /dev/null +++ b/.import/call_leaved.wav-e9fca95b7995df90f4ce36c929defd1a.md5 @@ -0,0 +1,3 @@ +source_md5="ddf51718025a81777b02ba6bdf289c49" +dest_md5="34dd14e343c7cf783ea2c67b5f585bb1" + diff --git a/.import/call_leaved.wav-e9fca95b7995df90f4ce36c929defd1a.sample b/.import/call_leaved.wav-e9fca95b7995df90f4ce36c929defd1a.sample new file mode 100644 index 0000000..1b283cb Binary files /dev/null and b/.import/call_leaved.wav-e9fca95b7995df90f4ce36c929defd1a.sample differ diff --git a/.import/call_left.wav-cb1676933b0dd5bc9fb8c01e9c67c91a.md5 b/.import/call_left.wav-cb1676933b0dd5bc9fb8c01e9c67c91a.md5 new file mode 100644 index 0000000..f76f1e5 --- /dev/null +++ b/.import/call_left.wav-cb1676933b0dd5bc9fb8c01e9c67c91a.md5 @@ -0,0 +1,3 @@ +source_md5="77d4fca710d75112782629583d9b740c" +dest_md5="cd334a4b25cab7fa58485412f57359c0" + diff --git a/.import/call_left.wav-cb1676933b0dd5bc9fb8c01e9c67c91a.sample b/.import/call_left.wav-cb1676933b0dd5bc9fb8c01e9c67c91a.sample new file mode 100644 index 0000000..0349afe Binary files /dev/null and b/.import/call_left.wav-cb1676933b0dd5bc9fb8c01e9c67c91a.sample differ diff --git a/.import/call_requested.wav-7b5ae508e5cfe6687362e0994586fc1d.md5 b/.import/call_requested.wav-7b5ae508e5cfe6687362e0994586fc1d.md5 new file mode 100644 index 0000000..c938667 --- /dev/null +++ b/.import/call_requested.wav-7b5ae508e5cfe6687362e0994586fc1d.md5 @@ -0,0 +1,3 @@ +source_md5="79b3677527880574b6917b1fa9e9dc16" +dest_md5="22357d48ebaea669b019fbf8000d2e02" + diff --git a/.import/call_requested.wav-7b5ae508e5cfe6687362e0994586fc1d.sample b/.import/call_requested.wav-7b5ae508e5cfe6687362e0994586fc1d.sample new file mode 100644 index 0000000..ca0bbf5 Binary files /dev/null and b/.import/call_requested.wav-7b5ae508e5cfe6687362e0994586fc1d.sample differ diff --git a/.import/connection_dummy.png-04aac731a55c60ce979c8a1a9715e32c.md5 b/.import/connection_dummy.png-04aac731a55c60ce979c8a1a9715e32c.md5 new file mode 100644 index 0000000..fef14b9 --- /dev/null +++ b/.import/connection_dummy.png-04aac731a55c60ce979c8a1a9715e32c.md5 @@ -0,0 +1,3 @@ +source_md5="444c4516f46c4807667d8eb2ead11c6f" +dest_md5="97ed87635856ee8e8700631948925a18" + diff --git a/.import/connection_dummy.png-04aac731a55c60ce979c8a1a9715e32c.stex b/.import/connection_dummy.png-04aac731a55c60ce979c8a1a9715e32c.stex new file mode 100644 index 0000000..82a230f Binary files /dev/null and b/.import/connection_dummy.png-04aac731a55c60ce979c8a1a9715e32c.stex differ diff --git a/.import/do_not_disturb_indicator.png-8f46b84e507105802477f7f0de86f50c.md5 b/.import/do_not_disturb_indicator.png-8f46b84e507105802477f7f0de86f50c.md5 new file mode 100644 index 0000000..982ef58 --- /dev/null +++ b/.import/do_not_disturb_indicator.png-8f46b84e507105802477f7f0de86f50c.md5 @@ -0,0 +1,3 @@ +source_md5="9b590bd832f918054446ac9a4dccd19b" +dest_md5="5f9089446672bf1c5a7f0b920392e9b0" + diff --git a/.import/do_not_disturb_indicator.png-8f46b84e507105802477f7f0de86f50c.stex b/.import/do_not_disturb_indicator.png-8f46b84e507105802477f7f0de86f50c.stex new file mode 100644 index 0000000..857b593 Binary files /dev/null and b/.import/do_not_disturb_indicator.png-8f46b84e507105802477f7f0de86f50c.stex differ diff --git a/.import/end_call.png-0252a2b529009bf93166b1b642618cdc.md5 b/.import/end_call.png-0252a2b529009bf93166b1b642618cdc.md5 new file mode 100644 index 0000000..bd5d38c --- /dev/null +++ b/.import/end_call.png-0252a2b529009bf93166b1b642618cdc.md5 @@ -0,0 +1,3 @@ +source_md5="4d958eafe259b85ab0a3bd173c11bc2c" +dest_md5="fdbbbe040cd8478804ff155921a4c49a" + diff --git a/.import/end_call.png-0252a2b529009bf93166b1b642618cdc.stex b/.import/end_call.png-0252a2b529009bf93166b1b642618cdc.stex new file mode 100644 index 0000000..e9e0c04 Binary files /dev/null and b/.import/end_call.png-0252a2b529009bf93166b1b642618cdc.stex differ diff --git a/.import/end_call_hover.png-1914cbbbbe2f203abe7835f13266f818.md5 b/.import/end_call_hover.png-1914cbbbbe2f203abe7835f13266f818.md5 new file mode 100644 index 0000000..ef10b44 --- /dev/null +++ b/.import/end_call_hover.png-1914cbbbbe2f203abe7835f13266f818.md5 @@ -0,0 +1,3 @@ +source_md5="56c8d7639e14f827309259f304cd7fe5" +dest_md5="b92639d4fad501a4ef29861caad5401f" + diff --git a/.import/end_call_hover.png-1914cbbbbe2f203abe7835f13266f818.stex b/.import/end_call_hover.png-1914cbbbbe2f203abe7835f13266f818.stex new file mode 100644 index 0000000..862cba6 Binary files /dev/null and b/.import/end_call_hover.png-1914cbbbbe2f203abe7835f13266f818.stex differ diff --git a/.import/end_call_pressed.png-5b550455fee90a6caacb81c38f8f4198.md5 b/.import/end_call_pressed.png-5b550455fee90a6caacb81c38f8f4198.md5 new file mode 100644 index 0000000..c3fa0da --- /dev/null +++ b/.import/end_call_pressed.png-5b550455fee90a6caacb81c38f8f4198.md5 @@ -0,0 +1,3 @@ +source_md5="87ea57e2033a8a6a1bf412eb78520fbd" +dest_md5="a31c6c68e3ff653886f24fda9cd6efe5" + diff --git a/.import/end_call_pressed.png-5b550455fee90a6caacb81c38f8f4198.stex b/.import/end_call_pressed.png-5b550455fee90a6caacb81c38f8f4198.stex new file mode 100644 index 0000000..6bf7845 Binary files /dev/null and b/.import/end_call_pressed.png-5b550455fee90a6caacb81c38f8f4198.stex differ diff --git a/.import/mic_indicator.png-42f4fcef1ae8fb2d839d321912fcfef3.md5 b/.import/mic_indicator.png-42f4fcef1ae8fb2d839d321912fcfef3.md5 new file mode 100644 index 0000000..1387f85 --- /dev/null +++ b/.import/mic_indicator.png-42f4fcef1ae8fb2d839d321912fcfef3.md5 @@ -0,0 +1,3 @@ +source_md5="6b57a81861cb2fd762d65cbcc9a7f13f" +dest_md5="571c20090131492ae162f4f25145526b" + diff --git a/.import/mic_indicator.png-42f4fcef1ae8fb2d839d321912fcfef3.stex b/.import/mic_indicator.png-42f4fcef1ae8fb2d839d321912fcfef3.stex new file mode 100644 index 0000000..dd2de38 Binary files /dev/null and b/.import/mic_indicator.png-42f4fcef1ae8fb2d839d321912fcfef3.stex differ diff --git a/.import/mute.png-f57d5a0117cf6bb7710e96be37eaf7ac.md5 b/.import/mute.png-f57d5a0117cf6bb7710e96be37eaf7ac.md5 new file mode 100644 index 0000000..7307978 --- /dev/null +++ b/.import/mute.png-f57d5a0117cf6bb7710e96be37eaf7ac.md5 @@ -0,0 +1,3 @@ +source_md5="36623d069b485b709ccba7950f821e19" +dest_md5="039c7f94933d9890d0fdecedc7ee9e46" + diff --git a/.import/mute.png-f57d5a0117cf6bb7710e96be37eaf7ac.stex b/.import/mute.png-f57d5a0117cf6bb7710e96be37eaf7ac.stex new file mode 100644 index 0000000..819f712 Binary files /dev/null and b/.import/mute.png-f57d5a0117cf6bb7710e96be37eaf7ac.stex differ diff --git a/.import/mute.wav-dc1deab4311f362f84e52df9f218fcd2.md5 b/.import/mute.wav-dc1deab4311f362f84e52df9f218fcd2.md5 new file mode 100644 index 0000000..bc182fe --- /dev/null +++ b/.import/mute.wav-dc1deab4311f362f84e52df9f218fcd2.md5 @@ -0,0 +1,3 @@ +source_md5="37189b32eb93cc04e61b046789dab6eb" +dest_md5="f8050a4a22fe61b460321869f09c7b0b" + diff --git a/.import/mute.wav-dc1deab4311f362f84e52df9f218fcd2.sample b/.import/mute.wav-dc1deab4311f362f84e52df9f218fcd2.sample new file mode 100644 index 0000000..bb0d00a Binary files /dev/null and b/.import/mute.wav-dc1deab4311f362f84e52df9f218fcd2.sample differ diff --git a/.import/mute_hover.png-bddc307f8f2e54f6a42cffe7d1f5e566.md5 b/.import/mute_hover.png-bddc307f8f2e54f6a42cffe7d1f5e566.md5 new file mode 100644 index 0000000..d4f20ff --- /dev/null +++ b/.import/mute_hover.png-bddc307f8f2e54f6a42cffe7d1f5e566.md5 @@ -0,0 +1,3 @@ +source_md5="f98f23226d4bd3f848ac1a0c29af184b" +dest_md5="b5688b2575d68ead81b4bedaea0aba2f" + diff --git a/.import/mute_hover.png-bddc307f8f2e54f6a42cffe7d1f5e566.stex b/.import/mute_hover.png-bddc307f8f2e54f6a42cffe7d1f5e566.stex new file mode 100644 index 0000000..97b8897 Binary files /dev/null and b/.import/mute_hover.png-bddc307f8f2e54f6a42cffe7d1f5e566.stex differ diff --git a/.import/mute_pressed.png-a37dfc12109d4bc611ac49c640fd486e.md5 b/.import/mute_pressed.png-a37dfc12109d4bc611ac49c640fd486e.md5 new file mode 100644 index 0000000..1f27caf --- /dev/null +++ b/.import/mute_pressed.png-a37dfc12109d4bc611ac49c640fd486e.md5 @@ -0,0 +1,3 @@ +source_md5="72b98824d5b5e0105330376222014227" +dest_md5="a863cb9a37ac3a6023e42f2b1660b8a0" + diff --git a/.import/mute_pressed.png-a37dfc12109d4bc611ac49c640fd486e.stex b/.import/mute_pressed.png-a37dfc12109d4bc611ac49c640fd486e.stex new file mode 100644 index 0000000..361a8c6 Binary files /dev/null and b/.import/mute_pressed.png-a37dfc12109d4bc611ac49c640fd486e.stex differ diff --git a/.import/muted_indicator.png-fbae7ff9b6eb0d462f402523634b9058.md5 b/.import/muted_indicator.png-fbae7ff9b6eb0d462f402523634b9058.md5 new file mode 100644 index 0000000..b4ea7d8 --- /dev/null +++ b/.import/muted_indicator.png-fbae7ff9b6eb0d462f402523634b9058.md5 @@ -0,0 +1,3 @@ +source_md5="ffcd2543547a0b7befcc541d7be8ac55" +dest_md5="61dc498db30cb867457879319a1eb873" + diff --git a/.import/muted_indicator.png-fbae7ff9b6eb0d462f402523634b9058.stex b/.import/muted_indicator.png-fbae7ff9b6eb0d462f402523634b9058.stex new file mode 100644 index 0000000..97d3b4c Binary files /dev/null and b/.import/muted_indicator.png-fbae7ff9b6eb0d462f402523634b9058.stex differ diff --git a/.import/online_indicator.png-2d258838fdc7795767450bfdf841a636.md5 b/.import/online_indicator.png-2d258838fdc7795767450bfdf841a636.md5 new file mode 100644 index 0000000..a5b0d61 --- /dev/null +++ b/.import/online_indicator.png-2d258838fdc7795767450bfdf841a636.md5 @@ -0,0 +1,3 @@ +source_md5="eca1cf9e0e3a87ae1926c96bb799563b" +dest_md5="7955dc8bbbc8f31034ca16e4d2d71f44" + diff --git a/.import/online_indicator.png-2d258838fdc7795767450bfdf841a636.stex b/.import/online_indicator.png-2d258838fdc7795767450bfdf841a636.stex new file mode 100644 index 0000000..fd68c1f Binary files /dev/null and b/.import/online_indicator.png-2d258838fdc7795767450bfdf841a636.stex differ diff --git a/.import/profile_image_rect_mask.png-68cd7df3bd9548ac71682728fbbcb099.md5 b/.import/profile_image_rect_mask.png-68cd7df3bd9548ac71682728fbbcb099.md5 new file mode 100644 index 0000000..1012b79 --- /dev/null +++ b/.import/profile_image_rect_mask.png-68cd7df3bd9548ac71682728fbbcb099.md5 @@ -0,0 +1,3 @@ +source_md5="cebb0d65b47778589290a06a84b17a0d" +dest_md5="8b0573861334a96a007520bc6f097b51" + diff --git a/.import/profile_image_rect_mask.png-68cd7df3bd9548ac71682728fbbcb099.stex b/.import/profile_image_rect_mask.png-68cd7df3bd9548ac71682728fbbcb099.stex new file mode 100644 index 0000000..46236e1 Binary files /dev/null and b/.import/profile_image_rect_mask.png-68cd7df3bd9548ac71682728fbbcb099.stex differ diff --git a/.import/profile_image_rect_mask.png-db03cd01e096622e62acb2146ceb8303.md5 b/.import/profile_image_rect_mask.png-db03cd01e096622e62acb2146ceb8303.md5 index 1328594..1012b79 100644 --- a/.import/profile_image_rect_mask.png-db03cd01e096622e62acb2146ceb8303.md5 +++ b/.import/profile_image_rect_mask.png-db03cd01e096622e62acb2146ceb8303.md5 @@ -1,3 +1,3 @@ -source_md5="ceec25b08b0d0ebb65b34989f2ac10b2" -dest_md5="34ea352b537e79967ccf8d818710414f" +source_md5="cebb0d65b47778589290a06a84b17a0d" +dest_md5="8b0573861334a96a007520bc6f097b51" diff --git a/.import/profile_image_rect_mask.png-db03cd01e096622e62acb2146ceb8303.stex b/.import/profile_image_rect_mask.png-db03cd01e096622e62acb2146ceb8303.stex index 9250a8e..46236e1 100644 Binary files a/.import/profile_image_rect_mask.png-db03cd01e096622e62acb2146ceb8303.stex and b/.import/profile_image_rect_mask.png-db03cd01e096622e62acb2146ceb8303.stex differ diff --git a/.import/profile_image_rect_mask_with_indicator_slot.png-ac5e2b2e0eacfa74d710ebf0438d1a53.md5 b/.import/profile_image_rect_mask_with_indicator_slot.png-ac5e2b2e0eacfa74d710ebf0438d1a53.md5 new file mode 100644 index 0000000..2b53f72 --- /dev/null +++ b/.import/profile_image_rect_mask_with_indicator_slot.png-ac5e2b2e0eacfa74d710ebf0438d1a53.md5 @@ -0,0 +1,3 @@ +source_md5="b61d3993601a6ab00cada486c575f1ab" +dest_md5="af3c38cb5d6ac874c32b0c08d4256766" + diff --git a/.import/profile_image_rect_mask_with_indicator_slot.png-ac5e2b2e0eacfa74d710ebf0438d1a53.stex b/.import/profile_image_rect_mask_with_indicator_slot.png-ac5e2b2e0eacfa74d710ebf0438d1a53.stex new file mode 100644 index 0000000..55a0007 Binary files /dev/null and b/.import/profile_image_rect_mask_with_indicator_slot.png-ac5e2b2e0eacfa74d710ebf0438d1a53.stex differ diff --git a/.import/profile_image_rect_mask_with_indicator_slot.png-e5c59f48efbfef6a84fdc74155d71eba.md5 b/.import/profile_image_rect_mask_with_indicator_slot.png-e5c59f48efbfef6a84fdc74155d71eba.md5 new file mode 100644 index 0000000..f788482 --- /dev/null +++ b/.import/profile_image_rect_mask_with_indicator_slot.png-e5c59f48efbfef6a84fdc74155d71eba.md5 @@ -0,0 +1,3 @@ +source_md5="6d8758139038c2a96a44c5a9d4768c66" +dest_md5="f59a0326fbe90c08fa9e0e47288c11b6" + diff --git a/.import/profile_image_rect_mask_with_indicator_slot.png-e5c59f48efbfef6a84fdc74155d71eba.stex b/.import/profile_image_rect_mask_with_indicator_slot.png-e5c59f48efbfef6a84fdc74155d71eba.stex new file mode 100644 index 0000000..a1c24c1 Binary files /dev/null and b/.import/profile_image_rect_mask_with_indicator_slot.png-e5c59f48efbfef6a84fdc74155d71eba.stex differ diff --git a/.import/profile_image_rect_mask_with_muted_slot.png-3093c591a8cd4a9433cb3722fbe50d99.md5 b/.import/profile_image_rect_mask_with_muted_slot.png-3093c591a8cd4a9433cb3722fbe50d99.md5 new file mode 100644 index 0000000..f788482 --- /dev/null +++ b/.import/profile_image_rect_mask_with_muted_slot.png-3093c591a8cd4a9433cb3722fbe50d99.md5 @@ -0,0 +1,3 @@ +source_md5="6d8758139038c2a96a44c5a9d4768c66" +dest_md5="f59a0326fbe90c08fa9e0e47288c11b6" + diff --git a/.import/profile_image_rect_mask_with_muted_slot.png-3093c591a8cd4a9433cb3722fbe50d99.stex b/.import/profile_image_rect_mask_with_muted_slot.png-3093c591a8cd4a9433cb3722fbe50d99.stex new file mode 100644 index 0000000..a1c24c1 Binary files /dev/null and b/.import/profile_image_rect_mask_with_muted_slot.png-3093c591a8cd4a9433cb3722fbe50d99.stex differ diff --git a/.import/profile_image_rect_mask_with_muted_slot.png-a1da5e32f0974a4dae02e0cffda9de95.md5 b/.import/profile_image_rect_mask_with_muted_slot.png-a1da5e32f0974a4dae02e0cffda9de95.md5 new file mode 100644 index 0000000..f788482 --- /dev/null +++ b/.import/profile_image_rect_mask_with_muted_slot.png-a1da5e32f0974a4dae02e0cffda9de95.md5 @@ -0,0 +1,3 @@ +source_md5="6d8758139038c2a96a44c5a9d4768c66" +dest_md5="f59a0326fbe90c08fa9e0e47288c11b6" + diff --git a/.import/profile_image_rect_mask_with_muted_slot.png-a1da5e32f0974a4dae02e0cffda9de95.stex b/.import/profile_image_rect_mask_with_muted_slot.png-a1da5e32f0974a4dae02e0cffda9de95.stex new file mode 100644 index 0000000..a1c24c1 Binary files /dev/null and b/.import/profile_image_rect_mask_with_muted_slot.png-a1da5e32f0974a4dae02e0cffda9de95.stex differ diff --git a/.import/profile_image_rect_mask_with_status_slot.png-9e3619f295b1bbdc62a3579c9218b86a.md5 b/.import/profile_image_rect_mask_with_status_slot.png-9e3619f295b1bbdc62a3579c9218b86a.md5 new file mode 100644 index 0000000..c012cd1 --- /dev/null +++ b/.import/profile_image_rect_mask_with_status_slot.png-9e3619f295b1bbdc62a3579c9218b86a.md5 @@ -0,0 +1,3 @@ +source_md5="0a811ca5c8216b31e43b0c9d6381aa74" +dest_md5="276050e6954660279ecd0e05d517e74d" + diff --git a/.import/profile_image_rect_mask_with_status_slot.png-9e3619f295b1bbdc62a3579c9218b86a.stex b/.import/profile_image_rect_mask_with_status_slot.png-9e3619f295b1bbdc62a3579c9218b86a.stex new file mode 100644 index 0000000..b5af7d3 Binary files /dev/null and b/.import/profile_image_rect_mask_with_status_slot.png-9e3619f295b1bbdc62a3579c9218b86a.stex differ diff --git a/.import/settings_dummy.png-87d20b7bb4c8ea9c113f34ada82dd4f9.md5 b/.import/settings_dummy.png-87d20b7bb4c8ea9c113f34ada82dd4f9.md5 new file mode 100644 index 0000000..4ce0dbb --- /dev/null +++ b/.import/settings_dummy.png-87d20b7bb4c8ea9c113f34ada82dd4f9.md5 @@ -0,0 +1,3 @@ +source_md5="b58ab8a05a490ccd88b7feab51e26377" +dest_md5="d463371567af870e1664fbb3c8c75b88" + diff --git a/.import/settings_dummy.png-87d20b7bb4c8ea9c113f34ada82dd4f9.stex b/.import/settings_dummy.png-87d20b7bb4c8ea9c113f34ada82dd4f9.stex new file mode 100644 index 0000000..7b7c8ec Binary files /dev/null and b/.import/settings_dummy.png-87d20b7bb4c8ea9c113f34ada82dd4f9.stex differ diff --git a/.import/unmute.png-da417004d39e91dbae889f01dfd48177.md5 b/.import/unmute.png-da417004d39e91dbae889f01dfd48177.md5 new file mode 100644 index 0000000..dbfbd57 --- /dev/null +++ b/.import/unmute.png-da417004d39e91dbae889f01dfd48177.md5 @@ -0,0 +1,3 @@ +source_md5="f04219911999080ca24a619d4ca7f335" +dest_md5="a9e34d284aa4e706f15a17499bfb645e" + diff --git a/.import/unmute.png-da417004d39e91dbae889f01dfd48177.stex b/.import/unmute.png-da417004d39e91dbae889f01dfd48177.stex new file mode 100644 index 0000000..1641bb6 Binary files /dev/null and b/.import/unmute.png-da417004d39e91dbae889f01dfd48177.stex differ diff --git a/.import/unmute.wav-ceabb8573bbc427b75d71f10bb987d7d.md5 b/.import/unmute.wav-ceabb8573bbc427b75d71f10bb987d7d.md5 new file mode 100644 index 0000000..3136085 --- /dev/null +++ b/.import/unmute.wav-ceabb8573bbc427b75d71f10bb987d7d.md5 @@ -0,0 +1,3 @@ +source_md5="45f2c86b387aec8066f8e156c2389950" +dest_md5="cf17fafb6e457c5543dc1a9f3cf2aed6" + diff --git a/.import/unmute.wav-ceabb8573bbc427b75d71f10bb987d7d.sample b/.import/unmute.wav-ceabb8573bbc427b75d71f10bb987d7d.sample new file mode 100644 index 0000000..22685a1 Binary files /dev/null and b/.import/unmute.wav-ceabb8573bbc427b75d71f10bb987d7d.sample differ diff --git a/.import/unmute_hover.png-572626c5ab9e63469db868a4d7809202.md5 b/.import/unmute_hover.png-572626c5ab9e63469db868a4d7809202.md5 new file mode 100644 index 0000000..249c14a --- /dev/null +++ b/.import/unmute_hover.png-572626c5ab9e63469db868a4d7809202.md5 @@ -0,0 +1,3 @@ +source_md5="1b5390fb13d561dad8128bf91a33eb4e" +dest_md5="458c03ca20d395b63bea76f2b11b8b84" + diff --git a/.import/unmute_hover.png-572626c5ab9e63469db868a4d7809202.stex b/.import/unmute_hover.png-572626c5ab9e63469db868a4d7809202.stex new file mode 100644 index 0000000..67cd9b5 Binary files /dev/null and b/.import/unmute_hover.png-572626c5ab9e63469db868a4d7809202.stex differ diff --git a/.import/unmute_pressed.png-7053bf0ccf5fb605571b94c3b4e149ad.md5 b/.import/unmute_pressed.png-7053bf0ccf5fb605571b94c3b4e149ad.md5 new file mode 100644 index 0000000..06b0c61 --- /dev/null +++ b/.import/unmute_pressed.png-7053bf0ccf5fb605571b94c3b4e149ad.md5 @@ -0,0 +1,3 @@ +source_md5="2ff41d92f6b13a1d03bf8f7bc70c61e3" +dest_md5="f0db47e5a20c83f6a1b258dd60a31128" + diff --git a/.import/unmute_pressed.png-7053bf0ccf5fb605571b94c3b4e149ad.stex b/.import/unmute_pressed.png-7053bf0ccf5fb605571b94c3b4e149ad.stex new file mode 100644 index 0000000..e6500fb Binary files /dev/null and b/.import/unmute_pressed.png-7053bf0ccf5fb605571b94c3b4e149ad.stex differ diff --git a/.import/user_joined.wav-1f3374bde821efef06ce7951e4a7d031.md5 b/.import/user_joined.wav-1f3374bde821efef06ce7951e4a7d031.md5 new file mode 100644 index 0000000..258bb95 --- /dev/null +++ b/.import/user_joined.wav-1f3374bde821efef06ce7951e4a7d031.md5 @@ -0,0 +1,3 @@ +source_md5="c99f4f69ab16efc09489c22c7256d8cc" +dest_md5="3f93d137838e497e3fbc5e11d736e11c" + diff --git a/.import/user_joined.wav-1f3374bde821efef06ce7951e4a7d031.sample b/.import/user_joined.wav-1f3374bde821efef06ce7951e4a7d031.sample new file mode 100644 index 0000000..8a4dd6a Binary files /dev/null and b/.import/user_joined.wav-1f3374bde821efef06ce7951e4a7d031.sample differ diff --git a/configuration/helper_user.tres b/configuration/helper_user.tres index 281ad6d..95d2283 100644 --- a/configuration/helper_user.tres +++ b/configuration/helper_user.tres @@ -13,9 +13,10 @@ popup_menu_color = Color( 0.321569, 0.133333, 0.258824, 1 ) own_message_color = Color( 0.380392, 0.152941, 0.27451, 1 ) others_message_color = Color( 0.294118, 0.168627, 0.34902, 1 ) scroll_bar_color = Color( 0.372549, 0.137255, 0.286275, 1 ) -scroll_bar_highlight_color = Color( 0.760784, 0.34902, 0.964706, 1 ) +scroll_bar_highlight_color = Color( 0.52549, 0.321569, 0.623529, 1 ) scroll_bar_pressed_color = Color( 1, 0.631373, 0.701961, 1 ) casual_topic_color = Color( 0.415686, 0.168627, 0.298039, 1 ) daily_topic_color = Color( 0.341176, 0.168627, 0.337255, 1 ) urgent_topic_color = Color( 0.352941, 0.129412, 0.243137, 1 ) add_topic_button_color = Color( 0.745098, 0.301961, 0.521569, 1 ) +call_background_color = Color( 0.290196, 0.0666667, 0.207843, 1 ) diff --git a/configuration/primary_user.tres b/configuration/primary_user.tres index e2d396e..1768289 100644 --- a/configuration/primary_user.tres +++ b/configuration/primary_user.tres @@ -19,3 +19,4 @@ casual_topic_color = Color( 0.14902, 0.172549, 0.203922, 1 ) daily_topic_color = Color( 0.0980392, 0.180392, 0.305882, 1 ) urgent_topic_color = Color( 0.290196, 0.152941, 0.203922, 1 ) add_topic_button_color = Color( 0.231373, 0.266667, 0.321569, 1 ) +call_background_color = Color( 0.0784314, 0.0901961, 0.301961, 1 ) diff --git a/default_bus_layout.tres b/default_bus_layout.tres index eb4accc..e1ffd92 100644 --- a/default_bus_layout.tres +++ b/default_bus_layout.tres @@ -1,3 +1,16 @@ -[gd_resource type="AudioBusLayout" format=2] +[gd_resource type="AudioBusLayout" load_steps=2 format=2] + +[sub_resource type="AudioEffectSpectrumAnalyzer" id=1] +resource_name = "SpectrumAnalyzer" +buffer_length = 0.1 +fft_size = 0 [resource] +bus/1/name = "Recorder" +bus/1/solo = false +bus/1/mute = true +bus/1/bypass_fx = false +bus/1/volume_db = 0.0 +bus/1/send = "Master" +bus/1/effect/0/effect = SubResource( 1 ) +bus/1/effect/0/enabled = true diff --git a/project.godot b/project.godot index 52de242..32e1504 100644 --- a/project.godot +++ b/project.godot @@ -102,6 +102,10 @@ config/name="SelfMessenger" run/main_scene="res://user_interface/main.tscn" config/icon="res://icon.png" +[audio] + +enable_audio_input=true + [autoload] Data="*res://system/data/data_singleton.gd" diff --git a/sounds/call_left.wav b/sounds/call_left.wav new file mode 100644 index 0000000..e7e0424 Binary files /dev/null and b/sounds/call_left.wav differ diff --git a/sounds/call_left.wav.import b/sounds/call_left.wav.import new file mode 100644 index 0000000..499e529 --- /dev/null +++ b/sounds/call_left.wav.import @@ -0,0 +1,21 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/call_left.wav-cb1676933b0dd5bc9fb8c01e9c67c91a.sample" + +[deps] + +source_file="res://sounds/call_left.wav" +dest_files=[ "res://.import/call_left.wav-cb1676933b0dd5bc9fb8c01e9c67c91a.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop=false +compress/mode=0 diff --git a/sounds/call_requested.wav b/sounds/call_requested.wav new file mode 100644 index 0000000..1720168 Binary files /dev/null and b/sounds/call_requested.wav differ diff --git a/sounds/call_requested.wav.import b/sounds/call_requested.wav.import new file mode 100644 index 0000000..ca56072 --- /dev/null +++ b/sounds/call_requested.wav.import @@ -0,0 +1,21 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/call_requested.wav-7b5ae508e5cfe6687362e0994586fc1d.sample" + +[deps] + +source_file="res://sounds/call_requested.wav" +dest_files=[ "res://.import/call_requested.wav-7b5ae508e5cfe6687362e0994586fc1d.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop=true +compress/mode=0 diff --git a/sounds/mute.wav b/sounds/mute.wav new file mode 100644 index 0000000..74f146a Binary files /dev/null and b/sounds/mute.wav differ diff --git a/sounds/mute.wav.import b/sounds/mute.wav.import new file mode 100644 index 0000000..6f59d73 --- /dev/null +++ b/sounds/mute.wav.import @@ -0,0 +1,21 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/mute.wav-dc1deab4311f362f84e52df9f218fcd2.sample" + +[deps] + +source_file="res://sounds/mute.wav" +dest_files=[ "res://.import/mute.wav-dc1deab4311f362f84e52df9f218fcd2.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop=false +compress/mode=0 diff --git a/sounds/unmute.wav b/sounds/unmute.wav new file mode 100644 index 0000000..e0540ec Binary files /dev/null and b/sounds/unmute.wav differ diff --git a/sounds/unmute.wav.import b/sounds/unmute.wav.import new file mode 100644 index 0000000..24b2046 --- /dev/null +++ b/sounds/unmute.wav.import @@ -0,0 +1,21 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/unmute.wav-ceabb8573bbc427b75d71f10bb987d7d.sample" + +[deps] + +source_file="res://sounds/unmute.wav" +dest_files=[ "res://.import/unmute.wav-ceabb8573bbc427b75d71f10bb987d7d.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop=false +compress/mode=0 diff --git a/sounds/user_joined.wav b/sounds/user_joined.wav new file mode 100644 index 0000000..a723f87 Binary files /dev/null and b/sounds/user_joined.wav differ diff --git a/sounds/user_joined.wav.import b/sounds/user_joined.wav.import new file mode 100644 index 0000000..0d9f20b --- /dev/null +++ b/sounds/user_joined.wav.import @@ -0,0 +1,21 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/user_joined.wav-1f3374bde821efef06ce7951e4a7d031.sample" + +[deps] + +source_file="res://sounds/user_joined.wav" +dest_files=[ "res://.import/user_joined.wav-1f3374bde821efef06ce7951e4a7d031.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop=false +compress/mode=0 diff --git a/system/call/call_singleton.gd b/system/call/call_singleton.gd index 0202d45..3d25380 100644 --- a/system/call/call_singleton.gd +++ b/system/call/call_singleton.gd @@ -2,11 +2,105 @@ extends Node # warning-ignore:unused_signal signal requested +signal accepted +signal closed +signal mute_toggled(value) +signal microphone_input_state_changed -var is_call_active: bool = false -var muted: bool = false +const MUTE_SOUND = preload("res://sounds/mute.wav") +const UNMUTE_SOUND = preload("res://sounds/unmute.wav") + +var is_active: bool = false +var is_accepted: bool = false +var is_muted: bool = false + +var spectrum_analyizer: AudioEffectSpectrumAnalyzerInstance +var audio_stream_player: AudioStreamPlayer +var audio_stream_microphone: AudioStreamPlayer +var microphone_magnitude: float +var microphone_input_detected = false + +var activity_value = 1.0 +var activity_velocity = 0.0 + + +func _ready(): + var idx = AudioServer.get_bus_index("Recorder") + spectrum_analyizer = AudioServer.get_bus_effect_instance(idx, 0) + audio_stream_microphone = AudioStreamPlayer.new() + audio_stream_microphone.stream = AudioStreamMicrophone.new() + audio_stream_microphone.bus = "Recorder" + audio_stream_microphone.autoplay = true + add_child(audio_stream_microphone) + + audio_stream_player = AudioStreamPlayer.new() + add_child(audio_stream_player) + + +var t = 0.0 +func _process(delta): + var interval = 0.04 + t += delta + while t > interval: + _check_for_microphone_input() + t -= interval + _check_for_hit_up(delta) func request_call(): - #emit_signal("requested") - pass + is_active = true + _reset_activity_stats() + emit_signal("requested") + + +func close_call(): + is_active = false + is_accepted = false + emit_signal("closed") + + +func toggle_mute(): + if is_muted: + audio_stream_player.stream = UNMUTE_SOUND + else: + audio_stream_player.stream = MUTE_SOUND + audio_stream_player.play() + is_muted = !is_muted + emit_signal("mute_toggled", is_muted) + + +func _check_for_microphone_input(): + microphone_magnitude *= 0.92 + var magnitude = spectrum_analyizer.get_magnitude_for_frequency_range( + 80.0, 255.0, AudioEffectSpectrumAnalyzerInstance.MAGNITUDE_MAX + ).length() + if microphone_magnitude < magnitude: + microphone_magnitude = magnitude + var above_threshold = Settings.microphone_threshold < microphone_magnitude + if above_threshold != microphone_input_detected: + microphone_input_detected = above_threshold + emit_signal("microphone_input_state_changed") + + +func _check_for_hit_up(delta): # Rather helper account should ping or not. + if not is_active: + return + if is_muted: + activity_velocity += delta * 0.5 + else: + activity_velocity += delta * (1.3 if microphone_input_detected else -1.2) + activity_velocity = clamp(activity_velocity, -1.0, 1.0) + + var delay = 0.066 / (1.0 + PingSystem.unhandled_ping_list.size() * 1.5) + + activity_value += activity_velocity * delta * delay + activity_value = clamp(activity_value, -0.2, 1.0) + + if activity_value <= 0.0: + PingSystem.send_ping(Time.get_current_time()) + _reset_activity_stats() + + +func _reset_activity_stats(): + activity_value = 1.0 + activity_velocity = 0.0 diff --git a/system/data/message_data/message.gd b/system/data/message_data/message.gd index 150eaab..2213e22 100644 --- a/system/data/message_data/message.gd +++ b/system/data/message_data/message.gd @@ -23,6 +23,7 @@ func delete(): func edit(new_content: String): content = new_content Data.messages.dirty_flag = true + Data.messages.emit_signal("message_edited") # Used by the MessageFeed, to spawn message nodes. diff --git a/system/data/message_data/message_data_singleton.gd b/system/data/message_data/message_data_singleton.gd index 0787794..409280d 100644 --- a/system/data/message_data/message_data_singleton.gd +++ b/system/data/message_data/message_data_singleton.gd @@ -3,6 +3,8 @@ class_name MessageData signal message_added(message) signal message_group_added(message_group) +# warning-ignore:unused_signal +signal message_edited const FILE_NAME = "message_history.dat" const MAX_MESSAGES = 200 @@ -104,8 +106,4 @@ func _add_message_group(time_stamp, user) -> MessageGroup: message_group.time_stamp = time_stamp loaded_message_groups.append(message_group) emit_signal("message_group_added", message_group) - -# var container = message_group.create_container() -# UI.message_feed_container.add_child(container) - return message_group diff --git a/system/data/miscellaneous_data/miscellaneous_data_singleton.gd b/system/data/miscellaneous_data/miscellaneous_data_singleton.gd index 5ec60dd..fcc2c1f 100644 --- a/system/data/miscellaneous_data/miscellaneous_data_singleton.gd +++ b/system/data/miscellaneous_data/miscellaneous_data_singleton.gd @@ -4,7 +4,8 @@ class_name MiscellaneousData const FILE_NAME = "miscellaneous.dat" var dirty_flag = false -var lkp_time_stamp = 0 # last_key_press_time_stamp +var big_interaction = 0 # Time stamp of last sent or filled out message. +var small_interaction = 0 # Time stamp of last key press func load_data(): @@ -17,14 +18,17 @@ func load_data(): printerr("\"" + FILE_NAME + "\" was found, but is corrupted.") return var data = parse_json(json_string) - if data.has("lkpts"): - lkp_time_stamp = data["lkpts"] + if data.has("big_interaction"): + big_interaction = data["big_interaction"] + if data.has("small_interaction"): + small_interaction = data["small_interaction"] func save_data(): if dirty_flag: var data = { - "lkpts" : lkp_time_stamp + "big_interaction" : big_interaction, + "small_interaction" : small_interaction, } var json_string = to_json(data) var file = File.new() diff --git a/system/ping_system/ping_system_singleton.gd b/system/ping_system/ping_system_singleton.gd index 5246b50..c4a8d5f 100644 --- a/system/ping_system/ping_system_singleton.gd +++ b/system/ping_system/ping_system_singleton.gd @@ -4,12 +4,11 @@ extends Node signal ping_handled(ping) const AUTO_PING_ENABLED = true -const MAX_PINGS_ALLOWED = 8 +const MAX_PINGS_ALLOWED = 6 onready var ping_sound = get_node("PingSound") var unhandled_ping_list = [] -var _unhandled_ping_count = 0 var total_ping_count = 0 var current_ping_id = 0 @@ -42,22 +41,22 @@ func send_ping(time_stamp: int): func reschedule_pings(): scheduled_pings.clear() - var lmbp_time_stamp = _get_lmbp_time_stamp() + var big_interaction = Data.miscellaneous.big_interaction - var lkp_time_stamp = Data.miscellaneous.lkp_time_stamp # last_key_press_time_stamp + var small_interaction = Data.miscellaneous.small_interaction # last_key_press_time_stamp - var last_t_s_of_interaction = max(lmbp_time_stamp, lkp_time_stamp) + var last_t_s_of_interaction = max(big_interaction, small_interaction) seed(last_t_s_of_interaction) var minimum_t_s_for_next_ping minimum_t_s_for_next_ping = max( - lmbp_time_stamp + _get_time_until_next_ping(), - lkp_time_stamp + 30 + big_interaction + _get_time_until_next_ping(), + small_interaction + 30 ) var previous_time_stamp = minimum_t_s_for_next_ping - for _i in range(8): + for i in range(8): if not _is_time_stamp_during_active_phase(previous_time_stamp): previous_time_stamp = Time.get_current_phase_skipped( previous_time_stamp @@ -68,29 +67,19 @@ func reschedule_pings(): keep_pinging = randi() % 100 < 30 # 30% chance. if keep_pinging: previous_time_stamp += randi() % 6 - previous_time_stamp += _get_time_until_next_ping() - - -func _get_lmbp_time_stamp(): - var lmbp # last_message_by_primary - lmbp = Data.messages.get_last_message_of_user( - Users.get_primary() - ) - if lmbp: - return lmbp.time_stamp - else: - return Time.get_current_time() # Just act as if just sent. + previous_time_stamp += _get_time_until_next_ping() + i * 2400 func _is_time_stamp_during_active_phase(time_stamp: int) -> bool: + var big_interaction = Data.miscellaneous.big_interaction if Time.is_during_night_time(time_stamp): return false elif Time.is_during_inactive_time(time_stamp): - return Time.is_during_inactive_time(_get_lmbp_time_stamp()) + return Time.is_during_inactive_time(big_interaction) elif Time.is_during_active_time(time_stamp): return true else: - return Time.is_during_calm_down_time(_get_lmbp_time_stamp()) + return Time.is_during_calm_down_time(big_interaction) func _get_time_until_next_ping() -> int: diff --git a/system/settings/settings_singleton.gd b/system/settings/settings_singleton.gd index 26178e8..cbea3e7 100644 --- a/system/settings/settings_singleton.gd +++ b/system/settings/settings_singleton.gd @@ -6,6 +6,9 @@ signal settings_menu_requested var menu_open = false +# Microphone. +var microphone_threshold = 0.008 + # Ping System behavior. var inactive_time = 7 var active_time = 15 diff --git a/system/users/user.gd b/system/users/user.gd index 1a2b409..0bad5f3 100644 --- a/system/users/user.gd +++ b/system/users/user.gd @@ -16,6 +16,7 @@ export(Color) var casual_topic_color export(Color) var daily_topic_color export(Color) var urgent_topic_color export(Color) var add_topic_button_color +export(Color) var call_background_color var message_box_content: String = "" diff --git a/user_interface/call_panel/call_background.png b/user_interface/call_panel/call_background.png new file mode 100644 index 0000000..b00569e Binary files /dev/null and b/user_interface/call_panel/call_background.png differ diff --git a/user_interface/call_panel/call_background.png.import b/user_interface/call_panel/call_background.png.import new file mode 100644 index 0000000..0bf5c23 --- /dev/null +++ b/user_interface/call_panel/call_background.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/call_background.png-febb68c673359f8512b0b1b1fceb9195.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/call_panel/call_background.png" +dest_files=[ "res://.import/call_background.png-febb68c673359f8512b0b1b1fceb9195.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/call_panel/call_member.gd b/user_interface/call_panel/call_member.gd new file mode 100644 index 0000000..745ba3b --- /dev/null +++ b/user_interface/call_panel/call_member.gd @@ -0,0 +1,83 @@ +extends CenterContainer + +const PROFILE_IMAGE_RECT_MASK = preload("res://user_interface/utility_controls/profile_image_rect/profile_image_rect_mask.png") +const PROFILE_IMAGE_RECT_MASK_WITH_MUTED_SLOT = preload("res://user_interface/call_panel/profile_image_rect_mask_with_muted_slot.png") + +onready var mic_indicator = get_node("MicIndicator") +onready var profile_picture = get_node("ProfilePicture") +onready var muted_indicator = get_node("ProfilePicture/MutedIndicator") + +var associated_user: User setget _set_associated_user +var picture_size: int setget _set_picture_size +var visibility: float setget _set_visibility + + +func _ready(): +# warning-ignore:return_value_discarded + Call.connect("mute_toggled", self, "_on_mute_toggled") +# warning-ignore:return_value_discarded + Call.connect("accepted", self, "_check_if_muted") +# warning-ignore:return_value_discarded + Call.connect("closed", self, "_check_if_muted") +# warning-ignore:return_value_discarded + Call.connect( + "microphone_input_state_changed", + self, + "_on_microphone_input_state_changed" + ) + + +func _check_if_muted(): + if _is_valid(): + if not Call.is_muted: + _change_mute_indication(false) + return + if name == "RightMember" and not Call.is_accepted: + _change_mute_indication(false) + return + _change_mute_indication(true) + + +func _check_if_microphone_input(): + if _is_valid() and not Call.is_muted: + if not (Users.get_helper().is_current() and not Call.is_accepted): + mic_indicator.visible = Call.microphone_input_detected + return + mic_indicator.visible = false + + +func _change_mute_indication(muted): + if muted: + profile_picture.mask = PROFILE_IMAGE_RECT_MASK_WITH_MUTED_SLOT + muted_indicator.visible = true + else: + profile_picture.mask = PROFILE_IMAGE_RECT_MASK + muted_indicator.visible = false + + +func _on_mute_toggled(_value): + _check_if_microphone_input() + _check_if_muted() + + +func _on_microphone_input_state_changed(): + _check_if_microphone_input() + + +func _is_valid(): + return associated_user == Users.get_primary() + + +func _set_associated_user(user): + associated_user = user + profile_picture.texture = user.profile_image + _check_if_muted() + _check_if_microphone_input() + + +func _set_picture_size(value): + profile_picture.rect_min_size = Vector2(value, value) + + +func _set_visibility(value): + profile_picture.self_modulate.a = value diff --git a/user_interface/call_panel/call_member.tscn b/user_interface/call_panel/call_member.tscn new file mode 100644 index 0000000..ecbd06c --- /dev/null +++ b/user_interface/call_panel/call_member.tscn @@ -0,0 +1,63 @@ +[gd_scene load_steps=9 format=2] + +[ext_resource path="res://user_interface/utility_controls/profile_image_rect/profile_image_rect.tscn" type="PackedScene" id=1] +[ext_resource path="res://user_interface/utility_controls/profile_image_rect/profile_image_rect_mask.png" type="Texture" id=2] +[ext_resource path="res://user_interface/call_panel/ping_effect.gd" type="Script" id=3] +[ext_resource path="res://user_interface/call_panel/call_member.gd" type="Script" id=4] +[ext_resource path="res://user_interface/call_panel/icons/mic_indicator.png" type="Texture" id=5] +[ext_resource path="res://user_interface/call_panel/icons/muted_indicator.png" type="Texture" id=7] + +[sub_resource type="Shader" id=1] +code = "shader_type canvas_item; +render_mode blend_mix; + +uniform sampler2D mask; + +void fragment() { + COLOR = texture(TEXTURE, UV) * vec4(vec3(1.0), texture(mask, UV).r); +}" + +[sub_resource type="ShaderMaterial" id=2] +shader = SubResource( 1 ) +shader_param/mask = ExtResource( 2 ) + +[node name="CallMember" type="CenterContainer"] +margin_left = 220.0 +margin_right = 376.0 +margin_bottom = 156.0 +rect_min_size = Vector2( 156, 156 ) +script = ExtResource( 4 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="MicIndicator" type="TextureRect" parent="."] +visible = false +margin_left = 11.0 +margin_top = 11.0 +margin_right = 145.0 +margin_bottom = 145.0 +texture = ExtResource( 5 ) + +[node name="PingEffect" type="Control" parent="."] +visible = false +margin_left = 78.0 +margin_top = 78.0 +margin_right = 78.0 +margin_bottom = 78.0 +script = ExtResource( 3 ) + +[node name="ProfilePicture" parent="." instance=ExtResource( 1 )] +material = SubResource( 2 ) +margin_left = 18.0 +margin_top = 18.0 +margin_right = 138.0 +margin_bottom = 138.0 +rect_min_size = Vector2( 120, 120 ) + +[node name="MutedIndicator" type="TextureRect" parent="ProfilePicture"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 7 ) +expand = true diff --git a/user_interface/call_panel/call_panel.gd b/user_interface/call_panel/call_panel.gd index 48121ca..2bfbf7a 100644 --- a/user_interface/call_panel/call_panel.gd +++ b/user_interface/call_panel/call_panel.gd @@ -1,12 +1,28 @@ -extends PanelContainer +extends ViewportContainer onready var animation_player = get_node("AnimationPlayer") - +onready var viewport = get_node("Viewport") +onready var interface = get_node("Viewport/Interface") func _ready(): # warning-ignore:return_value_discarded Call.connect("requested", self, "_on_call_requested") +# warning-ignore:return_value_discarded + Call.connect("closed", self, "_on_call_closed") + + +func _clips_input(): + return true func _on_call_requested(): animation_player.play("FadeIn") + + +func _on_call_closed(): + animation_player.play("FadeOut") + + +func _on_resized(): + if interface: + interface.margin_top = rect_size.y * 0.5 - interface.rect_size.y * 0.5 diff --git a/user_interface/call_panel/call_panel.tscn b/user_interface/call_panel/call_panel.tscn index cfbca12..90cf48f 100644 --- a/user_interface/call_panel/call_panel.tscn +++ b/user_interface/call_panel/call_panel.tscn @@ -1,34 +1,82 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=22 format=2] [ext_resource path="res://user_interface/call_panel/call_panel.gd" type="Script" id=1] +[ext_resource path="res://user_interface/call_panel/call_background.png" type="Texture" id=2] +[ext_resource path="res://user_interface/call_panel/icons/button_slot_01.png" type="Texture" id=3] +[ext_resource path="res://user_interface/call_panel/interface.gd" type="Script" id=4] +[ext_resource path="res://user_interface/call_panel/mute_button.gd" type="Script" id=5] +[ext_resource path="res://user_interface/call_panel/icons/mute_hover.png" type="Texture" id=6] +[ext_resource path="res://user_interface/call_panel/icons/end_call_pressed.png" type="Texture" id=7] +[ext_resource path="res://user_interface/call_panel/icons/end_call.png" type="Texture" id=8] +[ext_resource path="res://user_interface/call_panel/icons/mute_pressed.png" type="Texture" id=9] +[ext_resource path="res://user_interface/call_panel/icons/end_call_hover.png" type="Texture" id=10] +[ext_resource path="res://user_interface/fonts/username_font.tres" type="DynamicFont" id=11] +[ext_resource path="res://user_interface/call_panel/call_member.tscn" type="PackedScene" id=12] +[ext_resource path="res://user_interface/call_panel/icons/mute.png" type="Texture" id=13] +[ext_resource path="res://user_interface/call_panel/end_call_button.gd" type="Script" id=14] +[ext_resource path="res://user_interface/call_panel/icons/bad_connection_dummy.png" type="Texture" id=15] +[ext_resource path="res://user_interface/call_panel/icons/settings_dummy.png" type="Texture" id=16] +[ext_resource path="res://user_interface/call_panel/icons/button_slot_00.png" type="Texture" id=17] + +[sub_resource type="StyleBoxTexture" id=4] +texture = ExtResource( 2 ) +region_rect = Rect2( 0, 0, 17, 300 ) +margin_left = 8.0 +margin_right = 8.0 +margin_top = 8.0 +margin_bottom = 8.0 [sub_resource type="Animation" id=1] resource_name = "FadeIn" -length = 0.2 +length = 0.3 tracks/0/type = "value" -tracks/0/path = NodePath(".:visible") -tracks/0/interp = 1 +tracks/0/path = NodePath(".:rect_min_size") +tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 0.4, 4.43828 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 300 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("../..:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ true ] } -tracks/1/type = "value" -tracks/1/path = NodePath(".:rect_min_size") -tracks/1/interp = 2 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0, 0.2 ), -"transitions": PoolRealArray( 1, 1 ), +tracks/2/type = "value" +tracks/2/path = NodePath("../..:rect_min_size") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 0.4, 1 ), "update": 0, "values": [ Vector2( 0, 0 ), Vector2( 0, 300 ) ] } +tracks/3/type = "value" +tracks/3/path = NodePath(".:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} [sub_resource type="Animation" id=2] resource_name = "FadeOut" @@ -41,12 +89,12 @@ tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "times": PoolRealArray( 0, 0.3 ), -"transitions": PoolRealArray( 1, 1 ), +"transitions": PoolRealArray( 0.4, 1 ), "update": 0, -"values": [ Vector2( 0, 200 ), Vector2( 0, 0 ) ] +"values": [ Vector2( 0, 300 ), Vector2( 0, 0 ) ] } tracks/1/type = "value" -tracks/1/path = NodePath(".:visible") +tracks/1/path = NodePath("../..:visible") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false @@ -57,11 +105,35 @@ tracks/1/keys = { "update": 1, "values": [ false ] } +tracks/2/type = "value" +tracks/2/path = NodePath("../..:rect_min_size") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 0.4, 1 ), +"update": 0, +"values": [ Vector2( 0, 300 ), Vector2( 0, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath(".:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.3 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} [sub_resource type="Animation" id=3] length = 0.001 tracks/0/type = "value" -tracks/0/path = NodePath(".:visible") +tracks/0/path = NodePath(".:rect_min_size") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false @@ -70,10 +142,10 @@ tracks/0/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, -"values": [ false ] +"values": [ Vector2( 0, 0 ) ] } tracks/1/type = "value" -tracks/1/path = NodePath(".:rect_min_size") +tracks/1/path = NodePath("../..:visible") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false @@ -82,20 +154,187 @@ tracks/1/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("../..:rect_min_size") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, "values": [ Vector2( 0, 0 ) ] } +tracks/3/type = "value" +tracks/3/path = NodePath(".:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} -[node name="CallPanel" type="PanelContainer"] -self_modulate = Color( 0.219608, 2.00392, 3.52549, 1 ) -margin_top = 88.0 -margin_right = 1008.0 -margin_bottom = 88.0 +[node name="CallPanel" type="ViewportContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 1 +stretch = true script = ExtResource( 1 ) __meta__ = { "_edit_use_anchors_": false } +[node name="Viewport" type="Viewport" parent="."] +size = Vector2( 1024, 576 ) +transparent_bg = true +handle_input_locally = false +render_target_update_mode = 0 + +[node name="Interface" type="PanelContainer" parent="Viewport"] +visible = false +anchor_right = 1.0 +custom_styles/panel = SubResource( 4 ) +script = ExtResource( 4 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="Viewport/Interface"] +margin_left = 8.0 +margin_top = 8.0 +margin_right = 1016.0 +margin_bottom = 264.0 +size_flags_vertical = 3 +custom_constants/separation = 12 + +[node name="LabelMembers" type="Label" parent="Viewport/Interface/VBoxContainer"] +margin_right = 1008.0 +margin_bottom = 12.0 +custom_fonts/font = ExtResource( 11 ) + +[node name="CenterContainer" type="CenterContainer" parent="Viewport/Interface/VBoxContainer"] +margin_top = 24.0 +margin_right = 1008.0 +margin_bottom = 180.0 +size_flags_vertical = 3 + +[node name="HBoxContainer" type="HBoxContainer" parent="Viewport/Interface/VBoxContainer/CenterContainer"] +margin_left = 316.0 +margin_right = 692.0 +margin_bottom = 156.0 +custom_constants/separation = 64 +alignment = 1 + +[node name="LeftMember" parent="Viewport/Interface/VBoxContainer/CenterContainer/HBoxContainer" instance=ExtResource( 12 )] +margin_left = 0.0 +margin_right = 156.0 + +[node name="RightMember" parent="Viewport/Interface/VBoxContainer/CenterContainer/HBoxContainer" instance=ExtResource( 12 )] + +[node name="HBoxContainer" type="HBoxContainer" parent="Viewport/Interface/VBoxContainer"] +margin_top = 192.0 +margin_right = 1008.0 +margin_bottom = 240.0 +custom_constants/separation = 48 +alignment = 1 + +[node name="ButtonSlot00" type="TextureRect" parent="Viewport/Interface/VBoxContainer/HBoxContainer"] +margin_left = 308.0 +margin_top = 20.0 +margin_right = 316.0 +margin_bottom = 28.0 +size_flags_vertical = 4 +texture = ExtResource( 3 ) + +[node name="ButtonSlot01" type="TextureRect" parent="Viewport/Interface/VBoxContainer/HBoxContainer"] +margin_left = 364.0 +margin_top = 14.0 +margin_right = 384.0 +margin_bottom = 34.0 +size_flags_vertical = 4 +texture = ExtResource( 17 ) + +[node name="EndCallButton" type="TextureButton" parent="Viewport/Interface/VBoxContainer/HBoxContainer"] +margin_left = 432.0 +margin_right = 480.0 +margin_bottom = 48.0 +texture_normal = ExtResource( 8 ) +texture_pressed = ExtResource( 7 ) +texture_hover = ExtResource( 10 ) +script = ExtResource( 14 ) + +[node name="MuteButton" type="TextureButton" parent="Viewport/Interface/VBoxContainer/HBoxContainer"] +margin_left = 528.0 +margin_right = 576.0 +margin_bottom = 48.0 +texture_normal = ExtResource( 13 ) +texture_pressed = ExtResource( 9 ) +texture_hover = ExtResource( 6 ) +script = ExtResource( 5 ) + +[node name="ButtonSlot02" type="TextureRect" parent="Viewport/Interface/VBoxContainer/HBoxContainer"] +margin_left = 624.0 +margin_top = 14.0 +margin_right = 644.0 +margin_bottom = 34.0 +size_flags_vertical = 4 +texture = ExtResource( 17 ) + +[node name="ButtonSlot03" type="TextureRect" parent="Viewport/Interface/VBoxContainer/HBoxContainer"] +margin_left = 692.0 +margin_top = 20.0 +margin_right = 700.0 +margin_bottom = 28.0 +size_flags_vertical = 4 +texture = ExtResource( 3 ) + +[node name="Filler" type="Control" parent="Viewport/Interface/VBoxContainer"] +margin_top = 252.0 +margin_right = 1008.0 +margin_bottom = 256.0 +rect_min_size = Vector2( 0, 4 ) + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="Viewport/Interface"] + +[node name="Dummies" type="Control" parent="Viewport/Interface"] +margin_left = 8.0 +margin_top = 8.0 +margin_right = 1016.0 +margin_bottom = 264.0 +mouse_filter = 2 + +[node name="ConnectionDummy" type="TextureRect" parent="Viewport/Interface/Dummies"] +anchor_top = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = -20.0 +margin_right = 20.0 +margin_bottom = -4.0 +texture = ExtResource( 15 ) + +[node name="SettingsDummy" type="TextureRect" parent="Viewport/Interface/Dummies"] +anchor_left = 1.0 +anchor_right = 1.0 +margin_left = -20.0 +margin_top = 4.0 +margin_right = -4.0 +margin_bottom = 20.0 +texture = ExtResource( 16 ) + [node name="AnimationPlayer" type="AnimationPlayer" parent="."] +root_node = NodePath("../Viewport/Interface") anims/FadeIn = SubResource( 1 ) anims/FadeOut = SubResource( 2 ) anims/RESET = SubResource( 3 ) + +[connection signal="resized" from="." to="." method="_on_resized"] +[connection signal="pressed" from="Viewport/Interface/VBoxContainer/HBoxContainer/EndCallButton" to="Viewport/Interface/VBoxContainer/HBoxContainer/EndCallButton" method="_on_pressed"] +[connection signal="pressed" from="Viewport/Interface/VBoxContainer/HBoxContainer/MuteButton" to="Viewport/Interface/VBoxContainer/HBoxContainer/MuteButton" method="_on_pressed"] diff --git a/user_interface/call_panel/end_call_button.gd b/user_interface/call_panel/end_call_button.gd new file mode 100644 index 0000000..4f5a11e --- /dev/null +++ b/user_interface/call_panel/end_call_button.gd @@ -0,0 +1,5 @@ +extends TextureButton + + +func _on_pressed(): + Call.close_call() diff --git a/user_interface/call_panel/icons/bad_connection_dummy.png b/user_interface/call_panel/icons/bad_connection_dummy.png new file mode 100644 index 0000000..bc6035c Binary files /dev/null and b/user_interface/call_panel/icons/bad_connection_dummy.png differ diff --git a/user_interface/call_panel/icons/bad_connection_dummy.png.import b/user_interface/call_panel/icons/bad_connection_dummy.png.import new file mode 100644 index 0000000..570a12c --- /dev/null +++ b/user_interface/call_panel/icons/bad_connection_dummy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/bad_connection_dummy.png-d603acf473f5d93783cd2e8725da9aaa.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/call_panel/icons/bad_connection_dummy.png" +dest_files=[ "res://.import/bad_connection_dummy.png-d603acf473f5d93783cd2e8725da9aaa.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/call_panel/icons/button_slot_00.png b/user_interface/call_panel/icons/button_slot_00.png new file mode 100644 index 0000000..98080af Binary files /dev/null and b/user_interface/call_panel/icons/button_slot_00.png differ diff --git a/user_interface/call_panel/icons/button_slot_00.png.import b/user_interface/call_panel/icons/button_slot_00.png.import new file mode 100644 index 0000000..90c5b80 --- /dev/null +++ b/user_interface/call_panel/icons/button_slot_00.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/button_slot_00.png-d749c98176c3b5eb995d14535557ff84.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/call_panel/icons/button_slot_00.png" +dest_files=[ "res://.import/button_slot_00.png-d749c98176c3b5eb995d14535557ff84.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/call_panel/icons/button_slot_01.png b/user_interface/call_panel/icons/button_slot_01.png new file mode 100644 index 0000000..5819197 Binary files /dev/null and b/user_interface/call_panel/icons/button_slot_01.png differ diff --git a/user_interface/call_panel/icons/button_slot_01.png.import b/user_interface/call_panel/icons/button_slot_01.png.import new file mode 100644 index 0000000..1308c6c --- /dev/null +++ b/user_interface/call_panel/icons/button_slot_01.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/button_slot_01.png-a353ceb9ea4fce9f27981c31cba2f17f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/call_panel/icons/button_slot_01.png" +dest_files=[ "res://.import/button_slot_01.png-a353ceb9ea4fce9f27981c31cba2f17f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/call_panel/icons/connection_dummy.png b/user_interface/call_panel/icons/connection_dummy.png new file mode 100644 index 0000000..b937239 Binary files /dev/null and b/user_interface/call_panel/icons/connection_dummy.png differ diff --git a/user_interface/call_panel/icons/connection_dummy.png.import b/user_interface/call_panel/icons/connection_dummy.png.import new file mode 100644 index 0000000..82687bc --- /dev/null +++ b/user_interface/call_panel/icons/connection_dummy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/connection_dummy.png-04aac731a55c60ce979c8a1a9715e32c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/call_panel/icons/connection_dummy.png" +dest_files=[ "res://.import/connection_dummy.png-04aac731a55c60ce979c8a1a9715e32c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/call_panel/icons/end_call.png b/user_interface/call_panel/icons/end_call.png new file mode 100644 index 0000000..70a7641 Binary files /dev/null and b/user_interface/call_panel/icons/end_call.png differ diff --git a/user_interface/call_panel/icons/end_call.png.import b/user_interface/call_panel/icons/end_call.png.import new file mode 100644 index 0000000..155fb35 --- /dev/null +++ b/user_interface/call_panel/icons/end_call.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/end_call.png-0252a2b529009bf93166b1b642618cdc.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/call_panel/icons/end_call.png" +dest_files=[ "res://.import/end_call.png-0252a2b529009bf93166b1b642618cdc.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/call_panel/icons/end_call_hover.png b/user_interface/call_panel/icons/end_call_hover.png new file mode 100644 index 0000000..1a6b59a Binary files /dev/null and b/user_interface/call_panel/icons/end_call_hover.png differ diff --git a/user_interface/call_panel/icons/end_call_hover.png.import b/user_interface/call_panel/icons/end_call_hover.png.import new file mode 100644 index 0000000..d910a6a --- /dev/null +++ b/user_interface/call_panel/icons/end_call_hover.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/end_call_hover.png-1914cbbbbe2f203abe7835f13266f818.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/call_panel/icons/end_call_hover.png" +dest_files=[ "res://.import/end_call_hover.png-1914cbbbbe2f203abe7835f13266f818.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/call_panel/icons/end_call_pressed.png b/user_interface/call_panel/icons/end_call_pressed.png new file mode 100644 index 0000000..e63789e Binary files /dev/null and b/user_interface/call_panel/icons/end_call_pressed.png differ diff --git a/user_interface/call_panel/icons/end_call_pressed.png.import b/user_interface/call_panel/icons/end_call_pressed.png.import new file mode 100644 index 0000000..ba84e36 --- /dev/null +++ b/user_interface/call_panel/icons/end_call_pressed.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/end_call_pressed.png-5b550455fee90a6caacb81c38f8f4198.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/call_panel/icons/end_call_pressed.png" +dest_files=[ "res://.import/end_call_pressed.png-5b550455fee90a6caacb81c38f8f4198.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/call_panel/icons/mic_indicator.png b/user_interface/call_panel/icons/mic_indicator.png new file mode 100644 index 0000000..a0207dc Binary files /dev/null and b/user_interface/call_panel/icons/mic_indicator.png differ diff --git a/user_interface/call_panel/icons/mic_indicator.png.import b/user_interface/call_panel/icons/mic_indicator.png.import new file mode 100644 index 0000000..be7ca9a --- /dev/null +++ b/user_interface/call_panel/icons/mic_indicator.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mic_indicator.png-42f4fcef1ae8fb2d839d321912fcfef3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/call_panel/icons/mic_indicator.png" +dest_files=[ "res://.import/mic_indicator.png-42f4fcef1ae8fb2d839d321912fcfef3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/call_panel/icons/mute.png b/user_interface/call_panel/icons/mute.png new file mode 100644 index 0000000..0bd13bb Binary files /dev/null and b/user_interface/call_panel/icons/mute.png differ diff --git a/user_interface/call_panel/icons/mute.png.import b/user_interface/call_panel/icons/mute.png.import new file mode 100644 index 0000000..8281ece --- /dev/null +++ b/user_interface/call_panel/icons/mute.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mute.png-f57d5a0117cf6bb7710e96be37eaf7ac.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/call_panel/icons/mute.png" +dest_files=[ "res://.import/mute.png-f57d5a0117cf6bb7710e96be37eaf7ac.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/call_panel/icons/mute_hover.png b/user_interface/call_panel/icons/mute_hover.png new file mode 100644 index 0000000..7226564 Binary files /dev/null and b/user_interface/call_panel/icons/mute_hover.png differ diff --git a/user_interface/call_panel/icons/mute_hover.png.import b/user_interface/call_panel/icons/mute_hover.png.import new file mode 100644 index 0000000..87ad578 --- /dev/null +++ b/user_interface/call_panel/icons/mute_hover.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mute_hover.png-bddc307f8f2e54f6a42cffe7d1f5e566.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/call_panel/icons/mute_hover.png" +dest_files=[ "res://.import/mute_hover.png-bddc307f8f2e54f6a42cffe7d1f5e566.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/call_panel/icons/mute_pressed.png b/user_interface/call_panel/icons/mute_pressed.png new file mode 100644 index 0000000..f029bd3 Binary files /dev/null and b/user_interface/call_panel/icons/mute_pressed.png differ diff --git a/user_interface/call_panel/icons/mute_pressed.png.import b/user_interface/call_panel/icons/mute_pressed.png.import new file mode 100644 index 0000000..62c8570 --- /dev/null +++ b/user_interface/call_panel/icons/mute_pressed.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mute_pressed.png-a37dfc12109d4bc611ac49c640fd486e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/call_panel/icons/mute_pressed.png" +dest_files=[ "res://.import/mute_pressed.png-a37dfc12109d4bc611ac49c640fd486e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/call_panel/icons/muted_indicator.png b/user_interface/call_panel/icons/muted_indicator.png new file mode 100644 index 0000000..254b469 Binary files /dev/null and b/user_interface/call_panel/icons/muted_indicator.png differ diff --git a/user_interface/call_panel/icons/muted_indicator.png.import b/user_interface/call_panel/icons/muted_indicator.png.import new file mode 100644 index 0000000..59d5a14 --- /dev/null +++ b/user_interface/call_panel/icons/muted_indicator.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/muted_indicator.png-fbae7ff9b6eb0d462f402523634b9058.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/call_panel/icons/muted_indicator.png" +dest_files=[ "res://.import/muted_indicator.png-fbae7ff9b6eb0d462f402523634b9058.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/call_panel/icons/settings_dummy.png b/user_interface/call_panel/icons/settings_dummy.png new file mode 100644 index 0000000..5900fb2 Binary files /dev/null and b/user_interface/call_panel/icons/settings_dummy.png differ diff --git a/user_interface/call_panel/icons/settings_dummy.png.import b/user_interface/call_panel/icons/settings_dummy.png.import new file mode 100644 index 0000000..3aa84e5 --- /dev/null +++ b/user_interface/call_panel/icons/settings_dummy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/settings_dummy.png-87d20b7bb4c8ea9c113f34ada82dd4f9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/call_panel/icons/settings_dummy.png" +dest_files=[ "res://.import/settings_dummy.png-87d20b7bb4c8ea9c113f34ada82dd4f9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/call_panel/icons/unmute.png b/user_interface/call_panel/icons/unmute.png new file mode 100644 index 0000000..f761fa3 Binary files /dev/null and b/user_interface/call_panel/icons/unmute.png differ diff --git a/user_interface/call_panel/icons/unmute.png.import b/user_interface/call_panel/icons/unmute.png.import new file mode 100644 index 0000000..326746f --- /dev/null +++ b/user_interface/call_panel/icons/unmute.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/unmute.png-da417004d39e91dbae889f01dfd48177.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/call_panel/icons/unmute.png" +dest_files=[ "res://.import/unmute.png-da417004d39e91dbae889f01dfd48177.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/call_panel/icons/unmute_hover.png b/user_interface/call_panel/icons/unmute_hover.png new file mode 100644 index 0000000..cdec29f Binary files /dev/null and b/user_interface/call_panel/icons/unmute_hover.png differ diff --git a/user_interface/call_panel/icons/unmute_hover.png.import b/user_interface/call_panel/icons/unmute_hover.png.import new file mode 100644 index 0000000..4db809d --- /dev/null +++ b/user_interface/call_panel/icons/unmute_hover.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/unmute_hover.png-572626c5ab9e63469db868a4d7809202.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/call_panel/icons/unmute_hover.png" +dest_files=[ "res://.import/unmute_hover.png-572626c5ab9e63469db868a4d7809202.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/call_panel/icons/unmute_pressed.png b/user_interface/call_panel/icons/unmute_pressed.png new file mode 100644 index 0000000..6e1cda7 Binary files /dev/null and b/user_interface/call_panel/icons/unmute_pressed.png differ diff --git a/user_interface/call_panel/icons/unmute_pressed.png.import b/user_interface/call_panel/icons/unmute_pressed.png.import new file mode 100644 index 0000000..31b7d78 --- /dev/null +++ b/user_interface/call_panel/icons/unmute_pressed.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/unmute_pressed.png-7053bf0ccf5fb605571b94c3b4e149ad.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/call_panel/icons/unmute_pressed.png" +dest_files=[ "res://.import/unmute_pressed.png-7053bf0ccf5fb605571b94c3b4e149ad.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/call_panel/interface.gd b/user_interface/call_panel/interface.gd new file mode 100644 index 0000000..17a8010 --- /dev/null +++ b/user_interface/call_panel/interface.gd @@ -0,0 +1,79 @@ +extends PanelContainer + + +const CALL_REQUESTED_SOUND = preload("res://sounds/call_requested.wav") +const USER_JOINED_SOUND = preload("res://sounds/user_joined.wav") +const CALL_LEFT_SOUND = preload("res://sounds/call_left.wav") + +const CONNECTION_DUMMY = preload("res://user_interface/call_panel/icons/connection_dummy.png") +const BAD_CONNECTION_DUMMY = preload("res://user_interface/call_panel/icons/bad_connection_dummy.png") + + +onready var label_members = get_node("VBoxContainer/LabelMembers") +onready var left_member = get_node("VBoxContainer/CenterContainer/HBoxContainer/LeftMember") +onready var right_member = get_node("VBoxContainer/CenterContainer/HBoxContainer/RightMember") +onready var ping_effect = get_node("VBoxContainer/CenterContainer/HBoxContainer/RightMember/PingEffect") +onready var connection_dummy = get_node("Dummies/ConnectionDummy") +onready var audio_stream_player = get_node("AudioStreamPlayer") + +var until_accept_timer = 0.0 + + +func _ready(): +# warning-ignore:return_value_discarded + Call.connect("requested", self, "_on_call_requested") +# warning-ignore:return_value_discarded + Call.connect("closed", self, "_on_call_closed") +# warning-ignore:return_value_discarded + Users.connect("switched", self, "_on_user_switched") + + +func _process(delta): + if until_accept_timer > 0.0: + until_accept_timer -= delta + if until_accept_timer <= 0.0: + _accept_call() + + +func _on_call_requested(): + left_member.picture_size = 120 + left_member.visibility = 1.0 + right_member.picture_size = 112 + right_member.visibility = 0.65 + ping_effect.timer = 1.2 + ping_effect.visible = true + until_accept_timer = 0.8 + randf() * 3.0 + audio_stream_player.stream = CALL_REQUESTED_SOUND + audio_stream_player.play() + + +func _on_call_closed(): + left_member.picture_size = 112 + left_member.visibility = 0.65 + right_member.picture_size = 112 + right_member.visibility = 0.65 + ping_effect.visible = false + until_accept_timer = 0.0 + connection_dummy.texture = BAD_CONNECTION_DUMMY + audio_stream_player.stream = CALL_LEFT_SOUND + audio_stream_player.play() + + +func _accept_call(): + right_member.picture_size = 120 + right_member.visibility = 1.0 + ping_effect.visible = false + audio_stream_player.stream = USER_JOINED_SOUND + audio_stream_player.play() + connection_dummy.texture = CONNECTION_DUMMY + Call.is_accepted = true + right_member._check_if_microphone_input() + Call.emit_signal("accepted") + + +func _on_user_switched(): + self_modulate = Users.get_current().call_background_color + left_member.associated_user = Users.get_current() + right_member.associated_user = Users.get_inactive() + label_members.text = Users.get_current().username + ", " + label_members.text += Users.get_inactive().username + "..." diff --git a/user_interface/call_panel/mute_button.gd b/user_interface/call_panel/mute_button.gd new file mode 100644 index 0000000..150c32a --- /dev/null +++ b/user_interface/call_panel/mute_button.gd @@ -0,0 +1,47 @@ +extends TextureButton + +const MUTE_NORMAL = preload("res://user_interface/call_panel/icons/mute.png") +const MUTE_HOVER = preload("res://user_interface/call_panel/icons/mute_hover.png") +const MUTE_PRESSED = preload("res://user_interface/call_panel/icons/mute_pressed.png") + +const UNMUTE_NORMAL = preload("res://user_interface/call_panel/icons/unmute.png") +const UNMUTE_HOVER = preload("res://user_interface/call_panel/icons/unmute_hover.png") +const UNMUTE_PRESSED = preload("res://user_interface/call_panel/icons/unmute_pressed.png") + + +func _ready(): +# warning-ignore:return_value_discarded + Call.connect("mute_toggled", self, "_on_mute_toggled") +# warning-ignore:return_value_discarded + Users.connect("switched", self, "_on_user_switched") + + +func _change_icon_to_mute(): + texture_normal = MUTE_NORMAL + texture_hover = MUTE_HOVER + texture_pressed = MUTE_PRESSED + + +func _change_icon_to_unmute(): + texture_normal = UNMUTE_NORMAL + texture_hover = UNMUTE_HOVER + texture_pressed = UNMUTE_PRESSED + + +func _on_pressed(): + if Users.get_primary().is_current(): + Call.toggle_mute() + + +func _on_mute_toggled(value): + if value: + _change_icon_to_unmute() + else: + _change_icon_to_mute() + + +func _on_user_switched(): + if Users.get_helper().is_current(): + _change_icon_to_unmute() + else: + _on_mute_toggled(Call.is_muted) diff --git a/user_interface/call_panel/ping_effect.gd b/user_interface/call_panel/ping_effect.gd new file mode 100644 index 0000000..3342ba4 --- /dev/null +++ b/user_interface/call_panel/ping_effect.gd @@ -0,0 +1,22 @@ +extends Control + +var timer = 0.0 +var circle_01_radius = 20.0 +var circle_02_radius = 20.0 + + +func _process(delta): + if not visible: + return + timer += delta + circle_01_radius = 48.0 + fmod(timer, 1.5) * 208.0 + circle_02_radius = 48.0 + fmod(timer + 0.15, 1.5) * 208.0 + update() + + +func _draw(): + var alpha_01 = range_lerp(circle_01_radius, 48.0, 80.0, 0.5, 0.0) + draw_circle(Vector2.ZERO, circle_01_radius, Color(1.0, 1.0, 1.0, alpha_01)) + + var alpha_02 = range_lerp(circle_02_radius, 48.0, 80.0, 0.5, 0.0) + draw_circle(Vector2.ZERO, circle_02_radius, Color(1.0, 1.0, 1.0, alpha_02)) diff --git a/user_interface/call_panel/profile_image_rect_mask_with_muted_slot.png b/user_interface/call_panel/profile_image_rect_mask_with_muted_slot.png new file mode 100644 index 0000000..d9071c3 Binary files /dev/null and b/user_interface/call_panel/profile_image_rect_mask_with_muted_slot.png differ diff --git a/user_interface/call_panel/profile_image_rect_mask_with_muted_slot.png.import b/user_interface/call_panel/profile_image_rect_mask_with_muted_slot.png.import new file mode 100644 index 0000000..a08212d --- /dev/null +++ b/user_interface/call_panel/profile_image_rect_mask_with_muted_slot.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/profile_image_rect_mask_with_muted_slot.png-3093c591a8cd4a9433cb3722fbe50d99.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/call_panel/profile_image_rect_mask_with_muted_slot.png" +dest_files=[ "res://.import/profile_image_rect_mask_with_muted_slot.png-3093c591a8cd4a9433cb3722fbe50d99.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/chat_panel/chat_panel.tscn b/user_interface/chat_panel/chat_panel.tscn index f5f9437..2f1dea5 100644 --- a/user_interface/chat_panel/chat_panel.tscn +++ b/user_interface/chat_panel/chat_panel.tscn @@ -12,6 +12,9 @@ margin_right = 1008.0 margin_bottom = 472.0 size_flags_horizontal = 3 theme = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} [node name="MessageFeed" type="PanelContainer" parent="."] margin_right = 672.0 @@ -79,5 +82,8 @@ placeholder = "Type Message" stream = ExtResource( 5 ) volume_db = -6.0 +[connection signal="resized" from="MessageFeed/MarginContainer/ScrollContainer" to="MessageFeed" method="_on_content_resized"] +[connection signal="scroll_ended" from="MessageFeed/MarginContainer/ScrollContainer" to="MessageFeed" method="_on_scroll_ended"] +[connection signal="resized" from="MessageFeed/MarginContainer/ScrollContainer/MarginContainer" to="MessageFeed" method="_on_content_resized"] [connection signal="confirmed" from="MessageBox/MarginContainer/ContentFitTextEdit" to="MessageFeed" method="_on_message_box_confirmed"] [connection signal="confirmed" from="MessageBox/MarginContainer/ContentFitTextEdit" to="MessageBox" method="_on_message_box_confirmed"] diff --git a/user_interface/chat_panel/message_box.gd b/user_interface/chat_panel/message_box.gd index 88c2763..b0fe14c 100644 --- a/user_interface/chat_panel/message_box.gd +++ b/user_interface/chat_panel/message_box.gd @@ -8,6 +8,8 @@ onready var message_denied_sound = get_node("MessageDeniedSound") func _ready(): # warning-ignore:return_value_discarded Users.connect("switched", self, "_on_user_switched") +# warning-ignore:return_value_discarded + Data.messages.connect("message_edited", self, "_on_message_edited") func _input(event): @@ -33,3 +35,9 @@ func _on_user_switched(): text_edit.text = Users.get_current().message_box_content text_edit._on_text_changed() # To adjust height. text_edit.select_all() + + +func _on_message_edited(): + yield(get_tree(), "idle_frame") + if PingSystem.unhandled_ping_list.empty(): + text_edit.grab_focus() diff --git a/user_interface/chat_panel/message_editable.gd b/user_interface/chat_panel/message_editable.gd index 7c95baf..7f4e62f 100644 --- a/user_interface/chat_panel/message_editable.gd +++ b/user_interface/chat_panel/message_editable.gd @@ -131,6 +131,7 @@ func _disable_insert_mode(): text_edit.min_height = 0 PingSystem.disconnect("ping_handled", self, "_on_ping_handled") PingSystem.emit_signal("ping_handled", associated_message.get_ref()) + Data.miscellaneous.big_interaction = Time.get_current_time() message_inserted_sound.play() diff --git a/user_interface/chat_panel/message_feed.gd b/user_interface/chat_panel/message_feed.gd index be88133..fcde5e8 100644 --- a/user_interface/chat_panel/message_feed.gd +++ b/user_interface/chat_panel/message_feed.gd @@ -1,10 +1,13 @@ extends PanelContainer +onready var scroll_container = get_node("MarginContainer/ScrollContainer") onready var v_scroll = get_node("MarginContainer/ScrollContainer/_v_scroll") onready var margin_container = get_node("MarginContainer/ScrollContainer/MarginContainer") onready var message_feed_container = get_node("MarginContainer/ScrollContainer/MarginContainer/MessageFeedContainer") +var cling_to_end = true + func _ready(): # warning-ignore:return_value_discarded @@ -15,6 +18,8 @@ func _ready(): Data.messages.connect( "message_group_added", self, "_on_data_message_group_added" ) +# warning-ignore:return_value_discarded + v_scroll.connect("value_changed", self, "_on_scroll_value_changed") func scroll_to_newest(): @@ -27,14 +32,26 @@ func _on_message_box_confirmed(content): Data.messages.add_message( content, Time.get_current_time(), Users.get_current() ) + Data.miscellaneous.big_interaction = Time.get_current_time() func _on_data_message_added(message): var node = message.create_node() message.associated_message_group.get_ref().associated_container.add(node) - scroll_to_newest() + if not message.content.empty(): + scroll_to_newest() func _on_data_message_group_added(message_group): var container = message_group.create_container() message_feed_container.add_child(container) + + +func _on_content_resized(): + if cling_to_end: + scroll_to_newest() + + +func _on_scroll_value_changed(value): + var scroll_end = scroll_container.get_rect().size.y + value + cling_to_end = scroll_end == margin_container.get_rect().size.y diff --git a/user_interface/chat_panel/message_group_container.tscn b/user_interface/chat_panel/message_group_container.tscn index ce17b1d..236ce91 100644 --- a/user_interface/chat_panel/message_group_container.tscn +++ b/user_interface/chat_panel/message_group_container.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=5 format=2] -[ext_resource path="res://user_interface/utility_controls/profile_image_rect.tscn" type="PackedScene" id=1] +[ext_resource path="res://user_interface/utility_controls/profile_image_rect/profile_image_rect.tscn" type="PackedScene" id=1] [ext_resource path="res://user_interface/chat_panel/message_group_container.gd" type="Script" id=2] [ext_resource path="res://user_interface/fonts/date_font.tres" type="DynamicFont" id=3] [ext_resource path="res://user_interface/fonts/username_font.tres" type="DynamicFont" id=4] diff --git a/user_interface/debug_panel/debug_panel.tscn b/user_interface/debug_panel/debug_panel.tscn deleted file mode 100644 index 03d86ed..0000000 --- a/user_interface/debug_panel/debug_panel.tscn +++ /dev/null @@ -1,6 +0,0 @@ -[gd_scene format=2] - -[node name="DebugPanel" type="PanelContainer"] -margin_right = 1008.0 -margin_bottom = 80.0 -rect_min_size = Vector2( 0, 80 ) diff --git a/user_interface/main.gd b/user_interface/main.gd index 793a40b..fc16847 100644 --- a/user_interface/main.gd +++ b/user_interface/main.gd @@ -10,8 +10,6 @@ func _ready(): # warning-ignore:return_value_discarded Users.connect("switched", self, "_on_user_switched") Users.emit_signal("switched") - - print(OS.get_datetime_from_unix_time(0)) func _enter_tree(): diff --git a/user_interface/main.tscn b/user_interface/main.tscn index d50d41c..f32fff5 100644 --- a/user_interface/main.tscn +++ b/user_interface/main.tscn @@ -1,9 +1,8 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=8 format=2] [ext_resource path="res://user_interface/chat_panel/chat_panel.tscn" type="PackedScene" id=1] [ext_resource path="res://user_interface/tool_bar/tool_bar.tscn" type="PackedScene" id=2] [ext_resource path="res://user_interface/topic_panel/topic_panel.tscn" type="PackedScene" id=3] -[ext_resource path="res://user_interface/debug_panel/debug_panel.tscn" type="PackedScene" id=4] [ext_resource path="res://user_interface/call_panel/call_panel.tscn" type="PackedScene" id=5] [ext_resource path="res://user_interface/settings_menu/settings_menu.tscn" type="PackedScene" id=6] [ext_resource path="res://user_interface/main.theme" type="Theme" id=9] @@ -39,13 +38,7 @@ margin_top = 8.0 margin_right = 1016.0 margin_bottom = 568.0 -[node name="DebugPanel" parent="Panel/MarginContainer/VBoxContainer" instance=ExtResource( 4 )] -visible = false - [node name="CallPanel" parent="Panel/MarginContainer/VBoxContainer" instance=ExtResource( 5 )] -visible = false -margin_top = 0.0 -margin_bottom = 0.0 [node name="HBoxContainer" type="HBoxContainer" parent="Panel/MarginContainer/VBoxContainer"] margin_right = 1008.0 diff --git a/user_interface/tool_bar/call_button.gd b/user_interface/tool_bar/call_button.gd index b3c6ad7..f0a30a4 100644 --- a/user_interface/tool_bar/call_button.gd +++ b/user_interface/tool_bar/call_button.gd @@ -1,6 +1,5 @@ extends TextureButton - const START_CALL_NORMAL = preload("res://user_interface/tool_bar/icons/start_call.png") const START_CALL_HOVER = preload("res://user_interface/tool_bar/icons/start_call_hover.png") const START_CALL_PRESSED = preload("res://user_interface/tool_bar/icons/start_call_pressed.png") @@ -10,24 +9,27 @@ const END_CALL_HOVER = preload("res://user_interface/tool_bar/icons/end_call_hov const END_CALL_PRESSED = preload("res://user_interface/tool_bar/icons/end_call_pressed.png") -func _on_toggled(_button_pressed): - Call.request_call() +func _ready(): +# warning-ignore:return_value_discarded + Call.connect("requested", self, "_on_call_requested") +# warning-ignore:return_value_discarded + Call.connect("closed", self, "_on_call_closed") func _on_pressed(): - if Call.is_call_active: - Call.is_call_active = false - texture_normal = START_CALL_NORMAL - texture_hover = START_CALL_HOVER - texture_pressed = START_CALL_PRESSED + if Call.is_active: + Call.close_call() else: - Call.is_call_active = true - texture_normal = END_CALL_NORMAL - texture_hover = END_CALL_HOVER - texture_pressed = END_CALL_PRESSED + Call.request_call() -func _on_mouse_exited(): - if Call.is_call_active: - #texture_hover = END_CALL_HOVER - pass +func _on_call_requested(): + texture_normal = END_CALL_NORMAL + texture_hover = END_CALL_HOVER + texture_pressed = END_CALL_PRESSED + + +func _on_call_closed(): + texture_normal = START_CALL_NORMAL + texture_hover = START_CALL_HOVER + texture_pressed = START_CALL_PRESSED diff --git a/user_interface/tool_bar/icons/do_not_disturb_indicator.png b/user_interface/tool_bar/icons/do_not_disturb_indicator.png new file mode 100644 index 0000000..7d24bb7 Binary files /dev/null and b/user_interface/tool_bar/icons/do_not_disturb_indicator.png differ diff --git a/user_interface/tool_bar/icons/do_not_disturb_indicator.png.import b/user_interface/tool_bar/icons/do_not_disturb_indicator.png.import new file mode 100644 index 0000000..465ceeb --- /dev/null +++ b/user_interface/tool_bar/icons/do_not_disturb_indicator.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/do_not_disturb_indicator.png-8f46b84e507105802477f7f0de86f50c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/tool_bar/icons/do_not_disturb_indicator.png" +dest_files=[ "res://.import/do_not_disturb_indicator.png-8f46b84e507105802477f7f0de86f50c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/tool_bar/icons/online_indicator.png b/user_interface/tool_bar/icons/online_indicator.png new file mode 100644 index 0000000..4195e0f Binary files /dev/null and b/user_interface/tool_bar/icons/online_indicator.png differ diff --git a/user_interface/tool_bar/icons/online_indicator.png.import b/user_interface/tool_bar/icons/online_indicator.png.import new file mode 100644 index 0000000..01ea457 --- /dev/null +++ b/user_interface/tool_bar/icons/online_indicator.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/online_indicator.png-2d258838fdc7795767450bfdf841a636.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/tool_bar/icons/online_indicator.png" +dest_files=[ "res://.import/online_indicator.png-2d258838fdc7795767450bfdf841a636.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/tool_bar/mute_button.gd b/user_interface/tool_bar/mute_button.gd index 088b016..578b0c1 100644 --- a/user_interface/tool_bar/mute_button.gd +++ b/user_interface/tool_bar/mute_button.gd @@ -11,21 +11,49 @@ const UNMUTE_PRESSED = preload("res://user_interface/tool_bar/icons/unmute_press onready var mute_dash = get_node("MuteDash") -func _on_pressed(): - if Call.muted: - Call.muted = false - mute_dash.visible = false - texture_normal = MUTE_NORMAL - texture_hover = MUTE_HOVER - texture_pressed = MUTE_PRESSED - else: - Call.muted = true - mute_dash.visible = true - texture_normal = UNMUTE_NORMAL +func _ready(): +# warning-ignore:return_value_discarded + Call.connect("mute_toggled", self, "_on_mute_toggled") +# warning-ignore:return_value_discarded + Users.connect("switched", self, "_on_user_switched") + + +func _change_icon_to_mute(): + mute_dash.visible = false + texture_normal = MUTE_NORMAL + texture_hover = MUTE_HOVER + texture_pressed = MUTE_PRESSED + + +func _change_icon_to_unmute(): + mute_dash.visible = true + texture_normal = UNMUTE_NORMAL + if get_global_rect().has_point(get_global_mouse_position()): texture_hover = UNMUTE_NORMAL - texture_pressed = UNMUTE_PRESSED + else: + texture_hover = UNMUTE_HOVER + texture_pressed = UNMUTE_PRESSED + + +func _on_pressed(): + if Users.get_primary().is_current(): + Call.toggle_mute() + + +func _on_mute_toggled(value): + if value: + _change_icon_to_unmute() + else: + _change_icon_to_mute() func _on_mouse_exited(): - if Call.muted: + if Call.is_muted or Users.get_helper().is_current(): texture_hover = UNMUTE_HOVER + + +func _on_user_switched(): + if Users.get_helper().is_current(): + _change_icon_to_unmute() + else: + _on_mute_toggled(Call.is_muted) diff --git a/user_interface/tool_bar/profile_image_rect_mask_with_status_slot.png b/user_interface/tool_bar/profile_image_rect_mask_with_status_slot.png new file mode 100644 index 0000000..b3d25fa Binary files /dev/null and b/user_interface/tool_bar/profile_image_rect_mask_with_status_slot.png differ diff --git a/user_interface/tool_bar/profile_image_rect_mask_with_status_slot.png.import b/user_interface/tool_bar/profile_image_rect_mask_with_status_slot.png.import new file mode 100644 index 0000000..d4b6d7f --- /dev/null +++ b/user_interface/tool_bar/profile_image_rect_mask_with_status_slot.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/profile_image_rect_mask_with_status_slot.png-9e3619f295b1bbdc62a3579c9218b86a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://user_interface/tool_bar/profile_image_rect_mask_with_status_slot.png" +dest_files=[ "res://.import/profile_image_rect_mask_with_status_slot.png-9e3619f295b1bbdc62a3579c9218b86a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/user_interface/tool_bar/tool_bar.tscn b/user_interface/tool_bar/tool_bar.tscn index 1041415..fed3795 100644 --- a/user_interface/tool_bar/tool_bar.tscn +++ b/user_interface/tool_bar/tool_bar.tscn @@ -1,8 +1,8 @@ -[gd_scene load_steps=22 format=2] +[gd_scene load_steps=24 format=2] [ext_resource path="res://user_interface/main.theme" type="Theme" id=1] -[ext_resource path="res://user_interface/utility_controls/profile_image_rect_mask.png" type="Texture" id=2] -[ext_resource path="res://user_interface/utility_controls/profile_image_rect.tscn" type="PackedScene" id=3] +[ext_resource path="res://user_interface/utility_controls/profile_image_rect/profile_image_rect_mask.png" type="Texture" id=2] +[ext_resource path="res://user_interface/utility_controls/profile_image_rect/profile_image_rect.tscn" type="PackedScene" id=3] [ext_resource path="res://user_interface/tool_bar/icons/start_call_hover.png" type="Texture" id=4] [ext_resource path="res://user_interface/fonts/Helvetica/Helvetica-Bold.ttf" type="DynamicFontData" id=5] [ext_resource path="res://user_interface/tool_bar/tool_bar.gd" type="Script" id=6] @@ -18,6 +18,8 @@ [ext_resource path="res://user_interface/tool_bar/icons/start_call_pressed.png" type="Texture" id=16] [ext_resource path="res://user_interface/tool_bar/icons/mute_pressed.png" type="Texture" id=17] [ext_resource path="res://user_interface/tool_bar/settings_button.gd" type="Script" id=18] +[ext_resource path="res://user_interface/tool_bar/profile_image_rect_mask_with_status_slot.png" type="Texture" id=19] +[ext_resource path="res://user_interface/tool_bar/icons/online_indicator.png" type="Texture" id=20] [sub_resource type="Shader" id=1] code = "shader_type canvas_item; @@ -73,6 +75,16 @@ material = SubResource( 2 ) margin_right = 46.0 margin_bottom = 46.0 rect_min_size = Vector2( 46, 46 ) +mask = ExtResource( 19 ) + +[node name="StatusIndicator" type="TextureRect" parent="Margin/Structure/Profile/ProfileImageRect"] +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 20 ) +expand = true +__meta__ = { +"_edit_use_anchors_": false +} [node name="UserTexts" type="VBoxContainer" parent="Margin/Structure/Profile"] margin_left = 56.0 @@ -149,9 +161,7 @@ texture_pressed = ExtResource( 15 ) texture_hover = ExtResource( 14 ) script = ExtResource( 18 ) -[connection signal="mouse_exited" from="Margin/Structure/CallButton" to="Margin/Structure/CallButton" method="_on_mouse_exited"] [connection signal="pressed" from="Margin/Structure/CallButton" to="Margin/Structure/CallButton" method="_on_pressed"] -[connection signal="toggled" from="Margin/Structure/CallButton" to="Margin/Structure/CallButton" method="_on_toggled"] [connection signal="mouse_exited" from="Margin/Structure/MuteButton" to="Margin/Structure/MuteButton" method="_on_mouse_exited"] [connection signal="pressed" from="Margin/Structure/MuteButton" to="Margin/Structure/MuteButton" method="_on_pressed"] [connection signal="pressed" from="Margin/Structure/SettingsButton" to="Margin/Structure/SettingsButton" method="_on_pressed"] diff --git a/user_interface/utility_controls/content_fit_text_edit.gd b/user_interface/utility_controls/content_fit_text_edit.gd index 76d2bc3..d7ed1dd 100644 --- a/user_interface/utility_controls/content_fit_text_edit.gd +++ b/user_interface/utility_controls/content_fit_text_edit.gd @@ -66,7 +66,7 @@ func _on_text_changed(): if expand_width: # I honestly don't know why, but the second call helps with refreshing. adjust_size() - Data.miscellaneous.lkp_time_stamp = Time.get_current_time() + Data.miscellaneous.small_interaction = Time.get_current_time() Data.miscellaneous.dirty_flag = true PingSystem.reschedule_pings() diff --git a/user_interface/utility_controls/profile_image_rect/profile_image_rect.gd b/user_interface/utility_controls/profile_image_rect/profile_image_rect.gd new file mode 100644 index 0000000..cdf2454 --- /dev/null +++ b/user_interface/utility_controls/profile_image_rect/profile_image_rect.gd @@ -0,0 +1,11 @@ +extends TextureRect + +const DEFAULT_MASK = preload("res://user_interface/utility_controls/profile_image_rect/profile_image_rect_mask.png") + +export(Texture) var mask = DEFAULT_MASK setget _set_mask + + +func _set_mask(value): + if mask == DEFAULT_MASK: + material = material.duplicate() + material.set_shader_param("mask", value) diff --git a/user_interface/utility_controls/profile_image_rect.tscn b/user_interface/utility_controls/profile_image_rect/profile_image_rect.tscn similarity index 72% rename from user_interface/utility_controls/profile_image_rect.tscn rename to user_interface/utility_controls/profile_image_rect/profile_image_rect.tscn index 1d90d6e..c4b38e0 100644 --- a/user_interface/utility_controls/profile_image_rect.tscn +++ b/user_interface/utility_controls/profile_image_rect/profile_image_rect.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=5 format=2] -[ext_resource path="res://user_interface/utility_controls/profile_image_rect_mask.png" type="Texture" id=1] +[ext_resource path="res://user_interface/utility_controls/profile_image_rect/profile_image_rect_mask.png" type="Texture" id=1] +[ext_resource path="res://user_interface/utility_controls/profile_image_rect/profile_image_rect.gd" type="Script" id=2] [sub_resource type="Shader" id=1] code = "shader_type canvas_item; @@ -24,6 +25,7 @@ rect_min_size = Vector2( 48, 48 ) texture = ExtResource( 1 ) expand = true stretch_mode = 1 +script = ExtResource( 2 ) __meta__ = { "_edit_use_anchors_": false } diff --git a/user_interface/utility_controls/profile_image_rect/profile_image_rect_mask.png b/user_interface/utility_controls/profile_image_rect/profile_image_rect_mask.png new file mode 100644 index 0000000..215e3ba Binary files /dev/null and b/user_interface/utility_controls/profile_image_rect/profile_image_rect_mask.png differ diff --git a/user_interface/utility_controls/profile_image_rect_mask.png.import b/user_interface/utility_controls/profile_image_rect/profile_image_rect_mask.png.import similarity index 72% rename from user_interface/utility_controls/profile_image_rect_mask.png.import rename to user_interface/utility_controls/profile_image_rect/profile_image_rect_mask.png.import index c4ff487..e6ec2a0 100644 --- a/user_interface/utility_controls/profile_image_rect_mask.png.import +++ b/user_interface/utility_controls/profile_image_rect/profile_image_rect_mask.png.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/profile_image_rect_mask.png-db03cd01e096622e62acb2146ceb8303.stex" +path="res://.import/profile_image_rect_mask.png-68cd7df3bd9548ac71682728fbbcb099.stex" metadata={ "vram_texture": false } [deps] -source_file="res://user_interface/utility_controls/profile_image_rect_mask.png" -dest_files=[ "res://.import/profile_image_rect_mask.png-db03cd01e096622e62acb2146ceb8303.stex" ] +source_file="res://user_interface/utility_controls/profile_image_rect/profile_image_rect_mask.png" +dest_files=[ "res://.import/profile_image_rect_mask.png-68cd7df3bd9548ac71682728fbbcb099.stex" ] [params] diff --git a/user_interface/utility_controls/profile_image_rect_mask.png b/user_interface/utility_controls/profile_image_rect_mask.png deleted file mode 100644 index 76f8ed7..0000000 Binary files a/user_interface/utility_controls/profile_image_rect_mask.png and /dev/null differ