aboutsummaryrefslogtreecommitdiff
path: root/src/main.odin
blob: 43a9d2811347da082362e6e7ab9a4f6f5477440a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package main

import "core:fmt"
import "core:math"
import "core:slice"
import "core:strings"
import rl "vendor:raylib"

main :: proc() {

	workdays: [dynamic]^Workday
	resize(&workdays, 3)

	workday0: = new_workday({10, 22, 4, 5, 2023},
	                        {00, 08, 5, 5, 2023},
	                        {00, 22, 5, 5, 2023},
	                        {30, 21, 5, 5, 2023})
	workdays[0] = &workday0

	workday1: = new_workday(workday0.wrap,
	                        {00, 08, 7, 5, 2023},
	                        {30, 17, 7, 5, 2023},
	                        {30, 16, 7, 5, 2023})
	workdays[1] = &workday1

	workday2: = new_workday(workday1.wrap,
	                        {00, 12, 6, 5, 2023},
	                        {15, 17, 6, 5, 2023},
	                        {00, 17, 6, 5, 2023})
	workdays[2] = &workday2

	slice.sort_by(workdays[:], lessWorkdayPtr)

	//call_text: cstring = "00:00"
	call_text: = make([]byte, 6)
	defer delete(call_text)
	call_text[len(call_text)-1] = 0
	//wrap_text: cstring = "00:00"
	wrap_text: = make([]byte, 6)
	defer delete(wrap_text)
	wrap_text[len(wrap_text)-1] = 0

	total_sum: cstring = "3500 NOK + 26%"
	inc_soc: cstring = "4276 NOK"
	text_height: f32


	using rl
	width: i32 = 500
	height: i32 = 400

	InitWindow(width, height, "satscalc")
	defer CloseWindow()

	SetTargetFPS(60)
	SetWindowState({.WINDOW_RESIZABLE})
	SetWindowMinSize(width, height)

	// Loading fonts - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	font_size :: 18
	font: Font = LoadFontEx("res/UbuntuMono-Regular.ttf", font_size, nil, 0)
	defer UnloadFont(font)

	small_font_size :: 14
	small_font: Font = LoadFontEx("res/UbuntuMono-Regular.ttf", small_font_size, nil, 0)
	defer UnloadFont(small_font)

	big_font_size :: 24
	big_font: Font = LoadFontEx("res/UbuntuMono-Regular.ttf", big_font_size, nil, 0)
	defer UnloadFont(big_font)


	for !WindowShouldClose() {

		if IsWindowResized() {
			height = GetScreenHeight()
			width = GetScreenWidth()
			fmt.println("Resized to:", width, 'x', height)
		}


		// TODO: Find a good way to calculate the size and location
		//       of all the timeblocks in every day.
		//       
		//       I know I want them to scale with the window, and
		//       that the width of them should be normalized.
		//       If you add a day that lasts until 4 AM the morning
		//       after, all the other days should scale down to keep
		//       the vertical alignment of time accurate
		//       
		// TODO: Hovering over a timeblock should put a white border
		//       around the timeblock's timeline square, and display
		//       information about the block in the bottom left of
		//       the screen.


		// DRAW
		// ------------------------------------------
		BeginDrawing()
			ClearBackground(BGCOLOR)
			//DrawTextEx(font, "Test text", {20, 20}, 18, 0, RAYWHITE);

			for day, i in workdays {

				DrawRectangle(10, DAY_HEIGHT*i32(i+1)-4, width-20, DAY_HEIGHT-1, PBGCOLOR)
				for block in day.blocks {
					DrawRectangle(80,
					              DAY_HEIGHT*i32(i+1)-4, width-170, DAY_HEIGHT-1, BLUE)
				}

				copy(call_text, clockprint(day.call))
				copy(wrap_text, clockprint(day.wrap))

				text_height = math.round(f32(i+1)*DAY_HEIGHT+(DAY_HEIGHT-font_size)*0.25)

				DrawTextEx(font, cstring(&call_text[0]), {20, text_height}, font_size, 0, RAYWHITE);
				DrawTextEx(font, cstring(&wrap_text[0]), {f32(width)-70, text_height}, font_size, 0, RAYWHITE);

				if i == len(workdays)-1 {
					DrawTextEx(big_font, "+", {20, DAY_HEIGHT*f32(i+2)}, big_font_size, 0, RAYWHITE)
				}
			}

			DrawRectangle(0, height-50, width+10, 60, PBGCOLOR)

			DrawTextEx(small_font,	total_sum,	{f32(width)-120, f32(height)-43}, small_font_size, 0, RAYWHITE);
			DrawTextEx(big_font,	inc_soc,	{f32(width)-120, f32(height)-29}, big_font_size, 0, RAYWHITE);

		EndDrawing()
	}
}

BGCOLOR : rl.Color : {30, 30, 30, 255}
PBGCOLOR : rl.Color : {40, 40, 40, 255}

DAY_HEIGHT :: 35