From 712a549b78db984100ca17075ddaa0ef1ac613eb Mon Sep 17 00:00:00 2001
From: ducdat0507 <62660527+ducdat0507@users.noreply.github.com>
Date: Thu, 22 Dec 2022 21:20:06 +0700
Subject: [PATCH] More UI changes

---
 src/data/layers/Factory.vue        |  2 +-
 src/data/layers/factory.tsx        | 93 ++++++++++++++----------------
 src/data/layers/styles/factory.css | 61 +++++++++++++-------
 src/features/bars/Bar.vue          |  2 +-
 4 files changed, 84 insertions(+), 74 deletions(-)

diff --git a/src/data/layers/Factory.vue b/src/data/layers/Factory.vue
index 9edbf0b..a9ef034 100644
--- a/src/data/layers/Factory.vue
+++ b/src/data/layers/Factory.vue
@@ -26,8 +26,8 @@ onMounted(() => {
     position: absolute;
     top: 0;
     bottom: 0;
+    left: 148px;
     right: 0;
-    width: 100%;
     touch-action: none;
 }
 </style>
diff --git a/src/data/layers/factory.tsx b/src/data/layers/factory.tsx
index 4e09df4..c92db51 100644
--- a/src/data/layers/factory.tsx
+++ b/src/data/layers/factory.tsx
@@ -37,6 +37,7 @@ import Modal from "components/Modal.vue";
 import { createBar, GenericBar } from "features/bars/bar";
 import HotkeyVue from "components/Hotkey.vue";
 import { createHotkey, GenericHotkey } from "features/hotkey";
+import Tooltip from "features/tooltips/Tooltip.vue";
 
 const id = "factory";
 
@@ -131,13 +132,41 @@ const factory = createLayer(id, () => {
                 : Decimal.sub(1, Decimal.div(energyConsumption.value, computedEnergy.value)),
         display: jsx(() => (
             <>
-                {formatWhole(energyConsumption.value)} / {formatWhole(computedEnergy.value)} energy
-                used
-                {Decimal.lt(tickRate.value, 1) ? (
-                    <>{" (" + format(Decimal.mul(tickRate.value, 100))}% efficiency)</>
-                ) : (
-                    ""
-                )}
+                <div>
+                    {formatWhole(energyConsumption.value)} / {formatWhole(computedEnergy.value)}{" "}
+                    energy used
+                    {Decimal.lt(tickRate.value, 1) ? (
+                        <>{" (" + format(Decimal.mul(tickRate.value, 100))}% efficiency)</>
+                    ) : (
+                        ""
+                    )}
+                </div>
+                <div>
+                    <Tooltip display="Clear Tracks" direction={Direction.Down}>
+                        <button class="control-btn material-icons" onClick={setTracks}>
+                            clear
+                        </button>
+                    </Tooltip>
+                    <Tooltip display="Clear Factory" direction={Direction.Down}>
+                        <button class="control-btn material-icons" onClick={clearFactory}>
+                            delete
+                        </button>
+                    </Tooltip>
+                    <Tooltip display="Go to Center" direction={Direction.Down} xoffset="-26px">
+                        <button class="control-btn material-icons" onClick={moveToCenter}>
+                            center_focus_weak
+                        </button>
+                    </Tooltip>
+                    <Tooltip
+                        display={(paused.value ? "Unpause" : "Pause") + " the Factory"}
+                        direction={Direction.Down}
+                        xoffset="-63px"
+                    >
+                        <button class="control-btn material-icons" onClick={togglePaused}>
+                            {paused.value ? "play_arrow" : "pause"}
+                        </button>
+                    </Tooltip>
+                </div>
             </>
         ))
     }));
@@ -807,7 +836,7 @@ const factory = createLayer(id, () => {
         } as FactoryInternalProcessor;
         spriteContainer.addChild(sprite);
     }
-        
+
     function removeFactoryComp(x: number, y: number) {
         const data = compInternalData[x + "x" + y];
         if (data === undefined) return;
@@ -976,7 +1005,7 @@ const factory = createLayer(id, () => {
     function onCompClick(name: FactoryCompNames) {
         compSelected.value = name;
     }
-        
+
     function setTracks() {
         for (const [key, comp] of Object.entries(compInternalData)) {
             if (comp == null) continue;
@@ -988,7 +1017,7 @@ const factory = createLayer(id, () => {
                 comp.nextPackages = [];
                 comp.packages = [];
             } else {
-                const producerComp = components.value[key] as FactoryComponentProducer;
+                const producerComp = components.value[key] as FactoryComponentProcessor;
                 if (producerComp.outputStock !== undefined) {
                     for (const key in producerComp.outputStock) {
                         delete producerComp.outputStock[key];
@@ -1003,7 +1032,7 @@ const factory = createLayer(id, () => {
             }
         }
     }
-        
+
     function clearFactory() {
         for (const key of Object.keys(compInternalData)) {
             const [x, y] = key.split("x").map(i => +i);
@@ -1058,45 +1087,7 @@ const factory = createLayer(id, () => {
                                     onPointerleave={onFactoryMouseLeave}
                                     onContextmenu={(e: MouseEvent) => e.preventDefault()}
                                 />
-                                <div class="controls-container">
-                    <button
-                        class="control-btn"
-                        style={{
-                            "border-color": "purple"
-                        }}
-                        onClick={setTracks}
-                    >
-                        Clear Tracks
-                    </button>
-                    <button
-                        class="control-btn"
-                        style={{
-                            "border-color": "red"
-                        }}
-                        onClick={clearFactory}
-                    >
-                        Clear Factory
-                    </button>
-                    <button
-                        class="control-btn"
-                        style={{
-                            "border-color": "green"
-                        }}
-                        onClick={moveToCenter}
-                    >
-                        Go to Center
-                    </button>
-                    <button
-                        class="control-btn"
-                        style={{
-                            "border-color": paused.value ? "green" : "red"
-                        }}
-                        onClick={togglePaused}
-                    >
-                        {paused.value ? "Unpause" : "Pause"} the Factory
-                    </button>
-                </div>
-                                
+
                                 <div class="comp-container">
                                     <div
                                         class={{
@@ -1173,7 +1164,7 @@ const factory = createLayer(id, () => {
                                                     ?.clientWidth ?? 0) >
                                             app.view.width - 30
                                                 ? { right: app.view.width - mouseCoords.x + "px" }
-                                                : { left: mouseCoords.x + "px" }),
+                                                : { left: mouseCoords.x + 148 + "px" }),
                                             ...(mouseCoords.y +
                                                 (document.getElementById("factory-info")
                                                     ?.clientHeight ?? 0) >
diff --git a/src/data/layers/styles/factory.css b/src/data/layers/styles/factory.css
index f25c3b8..bdc00ec 100644
--- a/src/data/layers/styles/factory.css
+++ b/src/data/layers/styles/factory.css
@@ -12,14 +12,51 @@
     margin-top: 60px !important;
 }
 
-
 .energy-bar .overlayText {
-    display: inline-block;
-    padding: 5px 10px;
+    display: block;
+    width: 100%;
+    padding: 10px;
+
+    line-height: 30px;
+    height: 30px;
+}
+
+.energy-bar, .energy-bar .overlayTextContainer {
+    overflow: visible !important;
+}
+
+.energy-bar .overlayText > div {
     background: var(--raised-background);
     border-radius: var(--border-radius);
     box-shadow: 0 1px 5px black;
+    line-height: 20px;
+    height: 20px;
 }
+.energy-bar .overlayText > div:first-child {
+    padding: 5px 10px;
+    float: left;
+}
+.energy-bar .overlayText > div:last-child {
+    height: 30px;
+    float: right;
+}
+.energy-bar .overlayText .tooltip-container {
+    display: inline-block;
+}
+
+
+.control-btn {
+    background: transparent;
+    color: var(--foreground);
+    border: none;
+
+    line-height: 30px;
+    height: 30px;
+}
+:not(:first-child) > .control-btn {
+    border-left: 1px solid var(--foreground);
+}
+
 
 
 .factory-container {
@@ -57,24 +94,6 @@
     z-index: 2;
 }
 
-.controls-container {
-    position: absolute;
-    top: 0%;
-    right: 0%;
-    margin: 0;
-    padding: 10px;
-    height: max-content;
-    background: var(--background);
-    border-radius: 0 0 var(--border-radius) var(--border-radius);
-    box-shadow: 0 1px 5px #0007;
-    display: flex;
-}
-.control-btn {
-    border-radius: 5px;
-    border-width: 2px;
-    border-style: solid;
-}
-
 .comp-container {
     position: absolute;
     top: 0;
diff --git a/src/features/bars/Bar.vue b/src/features/bars/Bar.vue
index beae69b..b703658 100644
--- a/src/features/bars/Bar.vue
+++ b/src/features/bars/Bar.vue
@@ -180,7 +180,7 @@ export default defineComponent({
     position: absolute;
     background-color: var(--foreground);
     overflow: hidden;
-    padding: 2px 1px;
+    padding: 0.5px;
     margin-left: -0.5px;
     transition-duration: 0.2s;
     z-index: 2;