dvc890 commited on
Commit
62383cd
·
verified ·
1 Parent(s): 9e4e7e8

Update pages/GameLucky.tsx

Browse files
Files changed (1) hide show
  1. pages/GameLucky.tsx +51 -14
pages/GameLucky.tsx CHANGED
@@ -137,23 +137,60 @@ const LuckyWheel = ({ config, isSpinning, result, onSpin }: {
137
  const largeArcFlag = slice.angle > 180 ? 1 : 0;
138
  const pathData = `M 0 0 L ${startX} ${startY} A 1 1 0 ${largeArcFlag} 0 ${endX} ${endY} Z`;
139
 
 
 
 
 
 
 
140
  return (
141
  <g key={i}>
142
  <path d={pathData} fill={slice.color} stroke="white" strokeWidth="0.01" />
143
- {/* Text Label - Midpoint */}
144
- <g transform={`rotate(${(slice.startAngle + slice.endAngle)/2}) translate(0.6)`}>
145
- <text
146
- x="0" y="0"
147
- fill="white"
148
- fontSize="0.08"
149
- fontWeight="bold"
150
- textAnchor="middle"
151
- dominantBaseline="middle"
152
- transform="rotate(90)"
153
- style={{ textShadow: '1px 1px 2px rgba(0,0,0,0.3)' }}
154
- >
155
- {slice.name.length > 6 ? slice.name.substring(0,5)+'..' : slice.name}
156
- </text>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  </g>
158
  </g>
159
  );
 
137
  const largeArcFlag = slice.angle > 180 ? 1 : 0;
138
  const pathData = `M 0 0 L ${startX} ${startY} A 1 1 0 ${largeArcFlag} 0 ${endX} ${endY} Z`;
139
 
140
+ // Text Layout Logic
141
+ // If slice is narrow (<45 deg) OR text is long (>4 chars), use Vertical Stack
142
+ const isVertical = slice.angle < 45 || slice.name.length > 4;
143
+ const midAngle = (slice.startAngle + slice.endAngle) / 2;
144
+ const displayText = slice.name.length > 8 ? slice.name.substring(0,7)+'..' : slice.name;
145
+
146
  return (
147
  <g key={i}>
148
  <path d={pathData} fill={slice.color} stroke="white" strokeWidth="0.01" />
149
+
150
+ <g transform={`rotate(${midAngle})`}>
151
+ {isVertical ? (
152
+ // Vertical Stack Mode (Characters stacked radially)
153
+ displayText.split('').map((char, idx) => {
154
+ const charSize = 0.08;
155
+ const spacing = 0.09;
156
+ // Center the stack around radius ~0.6
157
+ const totalHeight = displayText.length * spacing;
158
+ const startR = 0.65 - (totalHeight / 2) + (spacing/2);
159
+ const r = startR + idx * spacing;
160
+
161
+ return (
162
+ <text
163
+ key={idx}
164
+ x={r}
165
+ y={0}
166
+ fill="white"
167
+ fontSize={charSize}
168
+ fontWeight="bold"
169
+ textAnchor="middle"
170
+ dominantBaseline="middle"
171
+ transform={`rotate(90, ${r}, 0)`}
172
+ style={{ textShadow: '1px 1px 2px rgba(0,0,0,0.3)' }}
173
+ >
174
+ {char}
175
+ </text>
176
+ );
177
+ })
178
+ ) : (
179
+ // Horizontal Mode (Tangential)
180
+ <text
181
+ x={0.65}
182
+ y={0}
183
+ fill="white"
184
+ fontSize="0.09"
185
+ fontWeight="bold"
186
+ textAnchor="middle"
187
+ dominantBaseline="middle"
188
+ transform="rotate(90, 0.65, 0)"
189
+ style={{ textShadow: '1px 1px 2px rgba(0,0,0,0.3)' }}
190
+ >
191
+ {displayText}
192
+ </text>
193
+ )}
194
  </g>
195
  </g>
196
  );