Drastic rebranding... lol

This commit is contained in:
2026-07-30 19:32:30 -04:00
parent 8f86359d8c
commit 2308cc834e
14 changed files with 195 additions and 95 deletions
+5 -15
View File
@@ -1,21 +1,11 @@
# Stoner Alarm # Trigalarm
An alarm designed to reliably wake a snoozing stoner. Seize the day (or at least don't get fired)! A habit-correcting alarm for heavy sleepers. Cannot be shut off until you solve a triangle.
## The Pitch ## The Pitch
### Simple ### Simple
The app only has one page. You can only set one alarm. There is no snooze, there is no weekly schedule, and there is no way to disable the alarm (you'll always have one set - every day - like it or not). The app only has one page. You can only set one alarm. There is no snooze, there is no weekly schedule, and there is no way to disable the alarm (you'll always have one set - every day - like it or not).
### Persistent ### Persistent
The alarm cannot be stopped until the drowsy stoner completes a thematically appropriate, touch-based game. Play well enough and quickly enough to prove you're awake and defuse the alarm. The alarm cannot be stopped until you solve a randomized triangle. Even if you force-close the app, it will re-open itself until you solve the triangle.
#### "What if I just force-close the app in my sleep?"
Then it will schedule itself to re-open ASAP :)
### The Game
The alarm-defusing game requires you to serve some customers at an illegal flower bar. There are three stages, with each stage having its own meter to fill before progressing to the next.
#### The Stages
1. Grind the flower
- Quickly move your finger in a circle to utilize the grinder
2. Fill the bowls
- Drag the ground flower into each bowl
3. Light the bowls
- Swipe in the prompted direction with good reaction time to use the lighter
For all stages, be sure to watch for cops! Don't move a muscle when they're looking. ## Why Trigonometry?
Because it requires the perfect amount of thought to activate your brain in the morning. If the app gave you a more typical math problem, you could just mindlessly punch it into a calculator. Trigonometry still requires a base amount of thought ("Do I need sine, cosine, or tangent?") before a calculator is of any use.
+15 -7
View File
@@ -1,12 +1,12 @@
{ {
"name": "stoner-alarm", "name": "trigalarm",
"author": "RandyTheSilly", "author": "RandyTheSilly",
"version": "1.0.0", "version": "1.0.0",
"keywords": ["alarm"], "keywords": ["alarm", "math", "trigonometry", "trig", "triangle"],
"private": true, "private": true,
"dependencies": {}, "dependencies": {},
"pebble": { "pebble": {
"displayName": "Stoner Alarm", "displayName": "Trigalarm",
"uuid": "293cd38c-4e8c-46ae-a3dc-c789d7ce93ab", "uuid": "293cd38c-4e8c-46ae-a3dc-c789d7ce93ab",
"sdkVersion": "3", "sdkVersion": "3",
"enableMultiJS": true, "enableMultiJS": true,
@@ -22,16 +22,24 @@
"resources": { "resources": {
"media": [ "media": [
{ {
"file": "leaf.png", "file": "clock25.png",
"memoryFormat": "Smallest", "memoryFormat": "Smallest",
"name": "LEAF", "name": "CLOCK25",
"spaceOptimization": "storage",
"type": "bitmap",
"menuIcon": true
},
{
"file": "clock35.png",
"memoryFormat": "Smallest",
"name": "CLOCK35",
"spaceOptimization": "storage", "spaceOptimization": "storage",
"type": "bitmap" "type": "bitmap"
}, },
{ {
"file": "clock.png", "file": "check.png",
"memoryFormat": "Smallest", "memoryFormat": "Smallest",
"name": "CLOCK", "name": "CHECK",
"spaceOptimization": "storage", "spaceOptimization": "storage",
"type": "bitmap" "type": "bitmap"
} }
+2 -5
View File
@@ -1,8 +1,5 @@
# Leaf Icon
[marijuana leaf by Rachel Fredericks](https://thenounproject.com/icon/marijuana-leaf-6959339/) (CC BY 3.0)
# Check Icon # Check Icon
[checkmark by Asmuh](https://thenounproject.com/icon/checkmark-2193586/) (CC BY 3.0) Modified version of [checkmark by Asmuh](https://thenounproject.com/icon/checkmark-2193586/) (CC BY 3.0)
# Clock Icon # Clock Icon
[pebble-dev/iconography](https://raw.githubusercontent.com/pebble-dev/iconography/refs/heads/master/pebbleos/Pebble_50x50_Alarm_clock.svg) Modified version of [pebble-dev/iconography](https://raw.githubusercontent.com/pebble-dev/iconography/refs/heads/master/pebbleos/Pebble_50x50_Alarm_clock.svg)
+144
View File
@@ -0,0 +1,144 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
version="1.1"
id="Comments"
x="0px"
y="0px"
viewBox="0 0 50 50"
enable-background="new 0 0 50 50"
xml:space="preserve"
sodipodi:docname="clock.svg"
inkscape:version="1.4.4 (dcaf3e7d9e, 2026-05-05)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs6" /><sodipodi:namedview
id="namedview6"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="12.586501"
inkscape:cx="20.02145"
inkscape:cy="24.748737"
inkscape:window-width="1524"
inkscape:window-height="793"
inkscape:window-x="20"
inkscape:window-y="20"
inkscape:window-maximized="0"
inkscape:current-layer="Comments" />
<line
display="inline"
fill="none"
stroke="#000000"
stroke-width="3"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
x1="7.5"
y1="15.5"
x2="14.5"
y2="8.5"
id="line1"
inkscape:label="leftRinger" /><line
display="inline"
fill="none"
stroke="#000000"
stroke-width="3"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
x1="34.5"
y1="8.5"
x2="41.5"
y2="15.5"
id="line2"
inkscape:label="rightRinger" /><line
display="inline"
fill="none"
stroke="#000000"
stroke-width="3"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
x1="11.5"
y1="40.5"
x2="9.5"
y2="45.059055"
id="line3"
inkscape:label="leftFoot" /><line
display="inline"
fill="none"
stroke="#000000"
stroke-width="3"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
x1="37.5"
y1="40.5"
x2="39.5"
y2="45.059055"
id="line4"
inkscape:label="rightFoot" /><path
sodipodi:type="star"
style="fill:#ffffff;stroke:#000000;stroke-width:2.73055;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
id="path6"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="18.426966"
sodipodi:cy="23.988764"
sodipodi:r1="18.541454"
sodipodi:r2="9.2707272"
sodipodi:arg1="-1.5707963"
sodipodi:arg2="-0.52359878"
inkscape:rounded="0.1"
inkscape:randomized="0"
d="m 18.426966,5.4473095 c 3.211474,10e-8 17.663107,25.0309635 16.05737,27.8121815 -1.605737,2.781219 -30.509004,2.781218 -32.114741,0 C 0.76385803,30.478272 15.215492,5.4473094 18.426966,5.4473095 Z"
inkscape:transform-center-y="-5.2946266"
transform="matrix(1.0567917,0,0,1.1422253,5.0410137,0.4019325)"
inkscape:export-filename="../resources/clock25.png"
inkscape:export-xdpi="57.838966"
inkscape:export-ydpi="57.838966"
inkscape:label="triangle" />
<line
display="inline"
fill="none"
stroke="#000000"
stroke-width="3"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
x1="18.5"
y1="33.5"
x2="24.5"
y2="27.5"
id="line5"
inkscape:label="hourHand" />
<line
display="inline"
fill="none"
stroke="#000000"
stroke-width="3"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
x1="24.5"
y1="15.5"
x2="24.5"
y2="27.5"
id="line6"
inkscape:label="minuteHand"
inkscape:export-filename="../resources/clock50~color.png"
inkscape:export-xdpi="115.67793"
inkscape:export-ydpi="115.67793" />
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

-13
View File
@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Comments" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 50 50" enable-background="new 0 0 50 50" xml:space="preserve">
<polygon display="inline" fill="#FFFFFF" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
7.5,18.5 17.5,8.5 31.5,8.5 41.5,18.5 41.5,32.5 31.5,42.5 17.5,42.5 7.5,32.5 "/>
<line display="inline" fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="5.5" y1="13.5" x2="12.5" y2="6.5"/>
<line display="inline" fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="36.5" y1="6.5" x2="43.5" y2="13.5"/>
<line display="inline" fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="11.5" y1="36.5" x2="9.5" y2="44.5"/>
<line display="inline" fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="37.5" y1="36.5" x2="39.5" y2="44.5"/>
<line display="inline" fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="18.5" y1="31.5" x2="24.5" y2="25.5"/>
<line display="inline" fill="none" stroke="#000000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="24.5" y1="13.5" x2="24.5" y2="25.5"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 333 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 974 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 624 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 787 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 952 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

+29 -18
View File
@@ -2,15 +2,17 @@
// layer-age // layer-age
static Window *s_window; static Window *s_window;
static BitmapLayer *s_leaf_layer;
static Layer *s_top_bar_layer; static Layer *s_top_bar_layer;
static Layer *s_bottom_bar_layer; static Layer *s_bottom_bar_layer;
static BitmapLayer *s_clock_bmp_layer;
static BitmapLayer *s_check_bmp_layer;
// bitmaps // bitmaps
static GBitmap *s_leaf_bmp; static GBitmap *s_clock_bmp;
static GBitmap *s_check_bmp;
// global vars // global vars
static GColor s_bar_color = GColorDarkGreen; static GColor s_bar_color = GColorMayGreen;
// constants // constants
static const uint8_t s_edge_bar_height = ((PBL_DISPLAY_HEIGHT / 7) * 2); static const uint8_t s_edge_bar_height = ((PBL_DISPLAY_HEIGHT / 7) * 2);
@@ -27,32 +29,41 @@ static void rect_fill_layer_update_proc(Layer *layer, GContext *ctx) {
} }
static void setter_window_load() { static void setter_window_load() {
window_set_background_color(s_window, GColorMintGreen);
// leaf
s_leaf_bmp = gbitmap_create_with_resource(RESOURCE_ID_LEAF);
s_leaf_layer = bitmap_layer_create(GRect(PBL_IF_ROUND_ELSE(0, -4), PBL_IF_ROUND_ELSE(0, 7), PBL_IF_ROUND_ELSE(PBL_DISPLAY_WIDTH, PBL_DISPLAY_WIDTH + 8), PBL_DISPLAY_HEIGHT));
bitmap_layer_set_alignment(s_leaf_layer, GAlignCenter);
bitmap_layer_set_compositing_mode(s_leaf_layer, GCompOpSet);
bitmap_layer_set_bitmap(s_leaf_layer, s_leaf_bmp);
// top&bottom bars // top&bottom bars
s_top_bar_layer = layer_create(GRect(0, 0, PBL_DISPLAY_WIDTH, s_edge_bar_height)); GRect top_bar_grect = GRect(0, 0, PBL_DISPLAY_WIDTH, s_edge_bar_height);
s_top_bar_layer = layer_create(top_bar_grect);
layer_set_update_proc(s_top_bar_layer, rect_fill_layer_update_proc); layer_set_update_proc(s_top_bar_layer, rect_fill_layer_update_proc);
s_bottom_bar_layer = layer_create(GRect(0, PBL_DISPLAY_HEIGHT - s_edge_bar_height, PBL_DISPLAY_WIDTH, s_edge_bar_height)); GRect bottom_bar_grect = GRect(0, PBL_DISPLAY_HEIGHT - s_edge_bar_height, PBL_DISPLAY_WIDTH, s_edge_bar_height);
s_bottom_bar_layer = layer_create(bottom_bar_grect);
layer_set_update_proc(s_bottom_bar_layer, rect_fill_layer_update_proc); layer_set_update_proc(s_bottom_bar_layer, rect_fill_layer_update_proc);
// clock icon
s_clock_bmp = gbitmap_create_with_resource(RESOURCE_ID_CLOCK35);
s_clock_bmp_layer = bitmap_layer_create(GRect(PBL_IF_ROUND_ELSE(0, 8), PBL_IF_ROUND_ELSE(8, 0), top_bar_grect.size.w, top_bar_grect.size.h));
bitmap_layer_set_bitmap(s_clock_bmp_layer, s_clock_bmp);
bitmap_layer_set_alignment(s_clock_bmp_layer, PBL_IF_ROUND_ELSE(GAlignTop, GAlignLeft));
bitmap_layer_set_compositing_mode(s_clock_bmp_layer, GCompOpSet);
// check icon
s_check_bmp = gbitmap_create_with_resource(RESOURCE_ID_CHECK);
s_check_bmp_layer = bitmap_layer_create(bottom_bar_grect);
bitmap_layer_set_bitmap(s_check_bmp_layer, s_check_bmp);
bitmap_layer_set_compositing_mode(s_check_bmp_layer, GCompOpSet);
Layer *window_layer = window_get_root_layer(s_window); Layer *window_layer = window_get_root_layer(s_window);
layer_add_child(window_layer, bitmap_layer_get_layer(s_leaf_layer));
layer_add_child(window_layer, s_top_bar_layer); layer_add_child(window_layer, s_top_bar_layer);
layer_add_child(window_layer, s_bottom_bar_layer); layer_add_child(window_layer, s_bottom_bar_layer);
layer_add_child(window_layer, bitmap_layer_get_layer(s_clock_bmp_layer));
layer_add_child(window_layer, bitmap_layer_get_layer(s_check_bmp_layer));
} }
static void setter_window_unload() { static void setter_window_unload() {
bitmap_layer_destroy(s_check_bmp_layer);
bitmap_layer_destroy(s_clock_bmp_layer);
gbitmap_destroy(s_check_bmp);
gbitmap_destroy(s_clock_bmp);
layer_destroy(s_bottom_bar_layer); layer_destroy(s_bottom_bar_layer);
layer_destroy(s_top_bar_layer); layer_destroy(s_top_bar_layer);
bitmap_layer_destroy(s_leaf_layer);
gbitmap_destroy(s_leaf_bmp);
} }
static void init() { static void init() {
@@ -60,7 +71,7 @@ static void init() {
switch (launch_reason()) { switch (launch_reason()) {
case APP_LAUNCH_WAKEUP: case APP_LAUNCH_WAKEUP:
break; // TODO alarm game time! break; // TODO math time!
default: default:
window_set_window_handlers( window_set_window_handlers(
s_window, s_window,