Net.Like.Xue.Tokyo/Assets/Plugins/Draw XXL/scripts/internal utilities/UtilitiesDXXL_CharsAndIcons.cs

660 lines
25 KiB
C#

namespace DrawXXL
{
using UnityEngine;
public class UtilitiesDXXL_CharsAndIcons
{
///Symbol definition format:
//a jagged array of Vector2 arrays,
//each Vector2 array describes a stringLine of points,
//multiple stringLine of points describe a symbol.
//(actually Vector3, but z-component is ignored)
//saving GC.Alloc and ctor's:
static Vector3 deletedMarkupStroke_lineStart = new Vector2(0.0f, 0.375f);
static Vector3 deletedMarkupStroke_lineEnd = new Vector2(1.0f, 0.375f);
static Vector3 underlinedMarkupStroke_lineStart = new Vector2(0.0f, -0.25f);
static Vector3 underlinedMarkupStroke_lineEnd = new Vector2(1.0f, -0.25f);
public static string GetIconAsMarkupString(DrawBasics.IconType requestedIcon)
{
switch (requestedIcon)
{
case DrawBasics.IconType.profileFoto:
return "<icon=profileFoto>";
case DrawBasics.IconType.imageLandscape:
return "<icon=imageLandscape>";
case DrawBasics.IconType.homeHouse:
return "<icon=homeHouse>";
case DrawBasics.IconType.dataDisc:
return "<icon=dataDisc>";
case DrawBasics.IconType.saveData:
return "<icon=saveData>";
case DrawBasics.IconType.loadData:
return "<icon=loadData>";
case DrawBasics.IconType.speechBubble:
return "<icon=speechBubble>";
case DrawBasics.IconType.speechBubbleEmpty:
return "<icon=speechBubbleEmpty>";
case DrawBasics.IconType.thumbUp:
return "<icon=thumbUp>";
case DrawBasics.IconType.thumbDown:
return "<icon=thumbDown>";
case DrawBasics.IconType.lightBulbOn:
return "<icon=lightBulbOn>";
case DrawBasics.IconType.lightBulbOff:
return "<icon=lightBulbOff>";
case DrawBasics.IconType.videoCamera:
return "<icon=videoCamera>";
case DrawBasics.IconType.camera:
return "<icon=camera>";
case DrawBasics.IconType.music:
return "<icon=music>";
case DrawBasics.IconType.audioSpeaker:
return "<icon=audioSpeaker>";
case DrawBasics.IconType.microphone:
return "<icon=microphone>";
case DrawBasics.IconType.wlan_wifi:
return "<icon=wlan_wifi>";
case DrawBasics.IconType.share:
return "<icon=share>";
case DrawBasics.IconType.timeClock:
return "<icon=timeClock>";
case DrawBasics.IconType.telephone:
return "<icon=telephone>";
case DrawBasics.IconType.doorOpen:
return "<icon=doorOpen>";
case DrawBasics.IconType.doorEnter:
return "<icon=doorEnter>";
case DrawBasics.IconType.doorLeave:
return "<icon=doorLeave>";
case DrawBasics.IconType.locationPin:
return "<icon=locationPin>";
case DrawBasics.IconType.folder:
return "<icon=folder>";
case DrawBasics.IconType.saveToFolder:
return "<icon=saveToFolder>";
case DrawBasics.IconType.loadFromFolder:
return "<icon=loadFromFolder>";
case DrawBasics.IconType.optionsSettingsGear:
return "<icon=optionsSettingsGear>";
case DrawBasics.IconType.adjustOptionsSettings:
return "<icon=adjustOptionsSettings>";
case DrawBasics.IconType.pen:
return "<icon=pen>";
case DrawBasics.IconType.questionMark:
return "<icon=questionMark>";
case DrawBasics.IconType.exclamationMark:
return "<icon=exclamationMark>";
case DrawBasics.IconType.shoppingCart:
return "<icon=shoppingCart>";
case DrawBasics.IconType.checkmarkChecked:
return "<icon=checkmarkChecked>";
case DrawBasics.IconType.checkmarkUnchecked:
return "<icon=checkmarkUnchecked>";
case DrawBasics.IconType.battery:
return "<icon=battery>";
case DrawBasics.IconType.cloud:
return "<icon=cloud>";
case DrawBasics.IconType.magnifier:
return "<icon=magnifier>";
case DrawBasics.IconType.magnifierPlus:
return "<icon=magnifierPlus>";
case DrawBasics.IconType.magnifierMinus:
return "<icon=magnifierMinus>";
case DrawBasics.IconType.timeHourglassCursor:
return "<icon=timeHourglassCursor>";
case DrawBasics.IconType.cursorHand:
return "<icon=cursorHand>";
case DrawBasics.IconType.cursorPointer:
return "<icon=cursorPointer>";
case DrawBasics.IconType.trashcan:
return "<icon=trashcan>";
case DrawBasics.IconType.switchOnOff:
return "<icon=switchOnOff>";
case DrawBasics.IconType.playButton:
return "<icon=playButton>";
case DrawBasics.IconType.pauseButton:
return "<icon=pauseButton>";
case DrawBasics.IconType.stopButton:
return "<icon=stopButton>";
case DrawBasics.IconType.playPauseButton:
return "<icon=playPauseButton>";
case DrawBasics.IconType.heart:
return "<icon=heart>";
case DrawBasics.IconType.coin:
return "<icon=coin>";
case DrawBasics.IconType.coins:
return "<icon=coins>";
case DrawBasics.IconType.moneyBills:
return "<icon=moneyBills>";
case DrawBasics.IconType.moneyBag:
return "<icon=moneyBag>";
case DrawBasics.IconType.chestTreasureBox_closed:
return "<icon=chestTreasureBox_closed>";
case DrawBasics.IconType.lootbox:
return "<icon=lootbox>";
case DrawBasics.IconType.crown:
return "<icon=crown>";
case DrawBasics.IconType.trophy:
return "<icon=trophy>";
case DrawBasics.IconType.awardMedal:
return "<icon=awardMedal>";
case DrawBasics.IconType.sword:
return "<icon=sword>";
case DrawBasics.IconType.shield:
return "<icon=shield>";
case DrawBasics.IconType.gun:
return "<icon=gun>";
case DrawBasics.IconType.bullet:
return "<icon=bullet>";
case DrawBasics.IconType.rocket:
return "<icon=rocket>";
case DrawBasics.IconType.crosshair:
return "<icon=crosshair>";
case DrawBasics.IconType.arrow:
return "<icon=arrow>";
case DrawBasics.IconType.arrowBow:
return "<icon=arrowBow>";
case DrawBasics.IconType.bomb:
return "<icon=bomb>";
case DrawBasics.IconType.shovel:
return "<icon=shovel>";
case DrawBasics.IconType.hammer:
return "<icon=hammer>";
case DrawBasics.IconType.axe:
return "<icon=axe>";
case DrawBasics.IconType.magnet:
return "<icon=magnet>";
case DrawBasics.IconType.compass:
return "<icon=compass>";
case DrawBasics.IconType.fuelStation:
return "<icon=fuelStation>";
case DrawBasics.IconType.fuelCan:
return "<icon=fuelCan>";
case DrawBasics.IconType.lockLocked:
return "<icon=lockLocked>";
case DrawBasics.IconType.lockUnlocked:
return "<icon=lockUnlocked>";
case DrawBasics.IconType.key:
return "<icon=key>";
case DrawBasics.IconType.gemDiamond:
return "<icon=gemDiamond>";
case DrawBasics.IconType.gold:
return "<icon=gold>";
case DrawBasics.IconType.potion:
return "<icon=potion>";
case DrawBasics.IconType.presentGift:
return "<icon=presentGift>";
case DrawBasics.IconType.death:
return "<icon=death>";
case DrawBasics.IconType.map:
return "<icon=map>";
case DrawBasics.IconType.mushroom:
return "<icon=mushroom>";
case DrawBasics.IconType.star:
return "<icon=star>";
case DrawBasics.IconType.pill:
return "<icon=pill>";
case DrawBasics.IconType.health:
return "<icon=health>";
case DrawBasics.IconType.foodPlate:
return "<icon=foodPlate>";
case DrawBasics.IconType.foodMeat:
return "<icon=foodMeat>";
case DrawBasics.IconType.flag:
return "<icon=flag>";
case DrawBasics.IconType.flagChequered:
return "<icon=flagChequered>";
case DrawBasics.IconType.ball:
return "<icon=ball>";
case DrawBasics.IconType.dice:
return "<icon=dice>";
case DrawBasics.IconType.joystick:
return "<icon=joystick>";
case DrawBasics.IconType.gamepad:
return "<icon=gamepad>";
case DrawBasics.IconType.jigsawPuzzle:
return "<icon=jigsawPuzzle>";
case DrawBasics.IconType.fish:
return "<icon=fish>";
case DrawBasics.IconType.car:
return "<icon=car>";
case DrawBasics.IconType.tree:
return "<icon=tree>";
case DrawBasics.IconType.palm:
return "<icon=palm>";
case DrawBasics.IconType.leaf:
return "<icon=leaf>";
case DrawBasics.IconType.nukeNuclearWarning:
return "<icon=nukeNuclearWarning>";
case DrawBasics.IconType.biohazardWarning:
return "<icon=biohazardWarning>";
case DrawBasics.IconType.fireWarning:
return "<icon=fireWarning>";
case DrawBasics.IconType.warning:
return "<icon=warning>";
case DrawBasics.IconType.emergencyExit:
return "<icon=emergencyExit>";
case DrawBasics.IconType.sun:
return "<icon=sun>";
case DrawBasics.IconType.rain:
return "<icon=rain>";
case DrawBasics.IconType.wind:
return "<icon=wind>";
case DrawBasics.IconType.snow:
return "<icon=snow>";
case DrawBasics.IconType.lightning:
return "<icon=lightning>";
case DrawBasics.IconType.fire:
return "<icon=fire>";
case DrawBasics.IconType.unitSquare:
return "<icon=unitSquare>";
case DrawBasics.IconType.unitSquareIncl1Right:
return "<icon=unitSquareIncl1Right>";
case DrawBasics.IconType.unitSquareIncl2Right:
return "<icon=unitSquareIncl2Right>";
case DrawBasics.IconType.unitSquareIncl3Right:
return "<icon=unitSquareIncl3Right>";
case DrawBasics.IconType.unitSquareIncl4Right:
return "<icon=unitSquareIncl4Right>";
case DrawBasics.IconType.unitSquareIncl5Right:
return "<icon=unitSquareIncl5Right>";
case DrawBasics.IconType.unitSquareIncl6Right:
return "<icon=unitSquareIncl6Right>";
case DrawBasics.IconType.unitSquareCrossed:
return "<icon=unitSquareCrossed>";
case DrawBasics.IconType.unitCircle:
return "<icon=unitCircle>";
case DrawBasics.IconType.animal:
return "<icon=animal>";
case DrawBasics.IconType.bird:
return "<icon=bird>";
case DrawBasics.IconType.humanMale:
return "<icon=humanMale>";
case DrawBasics.IconType.humanFemale:
return "<icon=humanFemale>";
case DrawBasics.IconType.bombExplosion:
return "<icon=bombExplosion>";
case DrawBasics.IconType.tower:
return "<icon=tower>";
case DrawBasics.IconType.circleDotFilled:
return "<icon=circleDotFilled>";
case DrawBasics.IconType.circleDotUnfilled:
return "<icon=circleDotUnfilled>";
case DrawBasics.IconType.logMessage:
return "<icon=logMessage>";
case DrawBasics.IconType.logMessageError:
return "<icon=logMessageError>";
case DrawBasics.IconType.logMessageException:
return "<icon=logMessageException>";
case DrawBasics.IconType.logMessageAssertion:
return "<icon=logMessageAssertion>";
case DrawBasics.IconType.up_oneStroke:
return "<icon=up_oneStroke>";
case DrawBasics.IconType.up_twoStroke:
return "<icon=up_twoStroke>";
case DrawBasics.IconType.up_threeStroke:
return "<icon=up_threeStroke>";
case DrawBasics.IconType.down_oneStroke:
return "<icon=down_oneStroke>";
case DrawBasics.IconType.down_twoStroke:
return "<icon=down_twoStroke>";
case DrawBasics.IconType.down_threeStroke:
return "<icon=down_threeStroke>";
case DrawBasics.IconType.left_oneStroke:
return "<icon=left_oneStroke>";
case DrawBasics.IconType.left_twoStroke:
return "<icon=left_twoStroke>";
case DrawBasics.IconType.left_threeStroke:
return "<icon=left_threeStroke>";
case DrawBasics.IconType.right_oneStroke:
return "<icon=right_oneStroke>";
case DrawBasics.IconType.right_twoStroke:
return "<icon=right_twoStroke>";
case DrawBasics.IconType.right_threeStroke:
return "<icon=right_threeStroke>";
case DrawBasics.IconType.fist:
return "<icon=fist>";
case DrawBasics.IconType.boxingGlove:
return "<icon=boxingGlove>";
case DrawBasics.IconType.stars5Rate:
return "<icon=stars5Rate>";
case DrawBasics.IconType.stars3:
return "<icon=stars3>";
case DrawBasics.IconType.shootingStar:
return "<icon=shootingStar>";
case DrawBasics.IconType.moonHalf:
return "<icon=moonHalf>";
case DrawBasics.IconType.moonFullPlanet:
return "<icon=moonFullPlanet>";
case DrawBasics.IconType.leftHandRule:
return "<icon=leftHandRule>";
case DrawBasics.IconType.rightHandRule:
return "<icon=rightHandRule>";
case DrawBasics.IconType.megaphone:
return "<icon=megaphone>";
case DrawBasics.IconType.arrowLeft:
return "<icon=arrowLeft>";
case DrawBasics.IconType.arrowRight:
return "<icon=arrowRight>";
case DrawBasics.IconType.arrowUp:
return "<icon=arrowUp>";
case DrawBasics.IconType.arrowDown:
return "<icon=arrowDown>";
case DrawBasics.IconType.healthBox:
return "<icon=healthBox>";
case DrawBasics.IconType.iceIcicle:
return "<icon=iceIcicle>";
case DrawBasics.IconType.pickAxe:
return "<icon=pickAxe>";
case DrawBasics.IconType.audioSpeakerMute:
return "<icon=audioSpeakerMute>";
case DrawBasics.IconType.chestTreasureBox_open:
return "<icon=chestTreasureBox_open>";
case DrawBasics.IconType.doorClosed:
return "<icon=doorClosed>";
default:
Debug.LogError("Icon '" + requestedIcon + "' not implemented.");
return "";
}
}
public static void RefillCurrPrintedCharDef(InternalDXXL_CharConfig charToFillIn, out bool charIsMissing)
{
Vector3[][] charDefinition;
if (charToFillIn.isIcon)
{
charDefinition = DrawXXL_LinesManager.instance.GetPointsArray(charToFillIn.iconString, out charIsMissing);
}
else
{
charDefinition = DrawXXL_LinesManager.instance.GetPointsArray(charToFillIn.character, out charIsMissing);
}
int addionalMarkupStrokes = 0;
if (charToFillIn.deleted)
{
addionalMarkupStrokes++;
}
if (charToFillIn.underlined)
{
addionalMarkupStrokes++;
}
DrawXXL_LinesManager.instance.numberOfStrokes_forCurrUsedChar = charDefinition.Length + addionalMarkupStrokes;
for (int i_stroke = 0; i_stroke < charDefinition.Length; i_stroke++)
{
DrawXXL_LinesManager.instance.numberOfPointsForEachStroke_forCurrUsedChar[i_stroke] = charDefinition[i_stroke].Length;
for (int i_point = 0; i_point < charDefinition[i_stroke].Length; i_point++)
{
DrawXXL_LinesManager.instance.currPrinted_charDef[i_stroke][i_point] = charDefinition[i_stroke][i_point];
}
}
int curr_stroke = charDefinition.Length;
if (charToFillIn.deleted)
{
DrawXXL_LinesManager.instance.numberOfPointsForEachStroke_forCurrUsedChar[curr_stroke] = 2;
DrawXXL_LinesManager.instance.currPrinted_charDef[curr_stroke][0] = deletedMarkupStroke_lineStart;
DrawXXL_LinesManager.instance.currPrinted_charDef[curr_stroke][1] = deletedMarkupStroke_lineEnd;
curr_stroke++;
}
if (charToFillIn.underlined)
{
DrawXXL_LinesManager.instance.numberOfPointsForEachStroke_forCurrUsedChar[curr_stroke] = 2;
DrawXXL_LinesManager.instance.currPrinted_charDef[curr_stroke][0] = underlinedMarkupStroke_lineStart;
DrawXXL_LinesManager.instance.currPrinted_charDef[curr_stroke][1] = underlinedMarkupStroke_lineEnd;
curr_stroke++;
}
}
static Vector3 offset_toShiftIconsCenterToZero = new Vector3(-0.5f, -0.5f, 0.0f);
public static void RefillCurrPrintedCharDefWithZeroCenteredIcon(DrawBasics.IconType iconToFillIn)
{
Vector3[][] charDefinition = DrawXXL_LinesManager.instance.GetPointsArray(iconToFillIn);
DrawXXL_LinesManager.instance.numberOfStrokes_forCurrUsedChar = charDefinition.Length;
for (int i_stroke = 0; i_stroke < charDefinition.Length; i_stroke++)
{
DrawXXL_LinesManager.instance.numberOfPointsForEachStroke_forCurrUsedChar[i_stroke] = charDefinition[i_stroke].Length;
for (int i_point = 0; i_point < charDefinition[i_stroke].Length; i_point++)
{
DrawXXL_LinesManager.instance.currPrinted_charDef[i_stroke][i_point] = charDefinition[i_stroke][i_point] + offset_toShiftIconsCenterToZero;
}
}
}
public static void DrawAllIconsWithTheirNames(Vector3 position, Color iconsColor, Color textColor, bool displayNameTexts, float sizeOfIconWall)
{
if (DXXLWrapperForUntiysBuildInDrawLines.CheckIfDrawingIsCurrentlySkipped()) { return; }
iconsColor = UtilitiesDXXL_Colors.OverwriteDefaultColor(iconsColor, Color.white);
textColor = UtilitiesDXXL_Colors.OverwriteDefaultColor(textColor, Color.black);
sizeOfIconWall = Mathf.Max(sizeOfIconWall, 1.0f);
Vector3 positionOfNextThemeBlock = position;
positionOfNextThemeBlock = DrawIconThemeBlock(positionOfNextThemeBlock, "System / Operate", 0, 37, iconsColor, textColor, sizeOfIconWall, displayNameTexts, (-1));
positionOfNextThemeBlock = DrawIconThemeBlock(positionOfNextThemeBlock, "Human", 38, 45, iconsColor, textColor, sizeOfIconWall, displayNameTexts, (-1));
positionOfNextThemeBlock = DrawIconThemeBlock(positionOfNextThemeBlock, "Nature / Weather", 46, 63, iconsColor, textColor, sizeOfIconWall, displayNameTexts, (-1));
positionOfNextThemeBlock = DrawIconThemeBlock(positionOfNextThemeBlock, "Games", 64, 113, iconsColor, textColor, sizeOfIconWall, displayNameTexts, (-1));
positionOfNextThemeBlock = DrawIconThemeBlock(positionOfNextThemeBlock, "Tools / Weapons", 114, 124, iconsColor, textColor, sizeOfIconWall, displayNameTexts, (-1));
positionOfNextThemeBlock = DrawIconThemeBlock(positionOfNextThemeBlock, "Signs / Warning", 125, 133, iconsColor, textColor, sizeOfIconWall, displayNameTexts, (-1));
positionOfNextThemeBlock = DrawIconThemeBlock(positionOfNextThemeBlock, "Basics", 134, 164, iconsColor, textColor, sizeOfIconWall, displayNameTexts, 158);
positionOfNextThemeBlock = DrawIconThemeBlock(positionOfNextThemeBlock, "Miscellaneous", 165, 166, iconsColor, textColor, sizeOfIconWall, displayNameTexts, (-1));
}
static Vector3 DrawIconThemeBlock(Vector3 startPos, string headline, int i_startIcon, int i_endIcon, Color iconsColor, Color textColor, float sizeOfWholeIconWall, bool displayNameTexts, int newLineForEveryIconAfterThisIconI)
{
Vector3 currPosOfLineStart = startPos;
float iconSize = 0.1f * sizeOfWholeIconWall;
float lineHeight = 1.8f * iconSize;
UtilitiesDXXL_Text.Write(headline + ":", currPosOfLineStart + Vector3.left * 0.5f * iconSize, iconsColor, 0.65f * iconSize, Vector3.right, Vector3.up, DrawText.TextAnchorDXXL.MiddleLeft, DrawBasics.LineStyle.invisible, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, true, 0.0f, false, false, false, true);
currPosOfLineStart = currPosOfLineStart + Vector3.down * lineHeight;
int i_line = 0;
int i_ofIconInsideLine = 0;
int iconsPerLine = 10;
bool hasAlreadyDrawnAnIconInCurrLine = false;
Quaternion rotation = Quaternion.LookRotation(Vector3.forward, Vector3.up);
for (int i_icon = i_startIcon; i_icon <= i_endIcon; i_icon++)
{
Vector3 currIconPosition = currPosOfLineStart + Vector3.right * 1.8f * iconSize * i_ofIconInsideLine;
string text = ((DrawBasics.IconType)i_icon).ToString();
UtilitiesDXXL_DrawBasics.Icon(currIconPosition, (DrawBasics.IconType)i_icon, iconsColor, iconSize, displayNameTexts ? DrawText.MarkupColor(text, textColor) : null, rotation, 0, false, 0.0f, false, 0.1f, 0.004f, true);
hasAlreadyDrawnAnIconInCurrLine = true;
i_ofIconInsideLine++;
if (i_icon == newLineForEveryIconAfterThisIconI)
{
iconsPerLine = 1;
}
if (i_ofIconInsideLine >= iconsPerLine)
{
i_ofIconInsideLine = 0;
i_line++;
currPosOfLineStart = currPosOfLineStart + Vector3.down * lineHeight;
hasAlreadyDrawnAnIconInCurrLine = false;
}
}
Vector3 positionOfNextThemeBlock = currPosOfLineStart + 0.65f * Vector3.down * lineHeight;
if (hasAlreadyDrawnAnIconInCurrLine)
{
positionOfNextThemeBlock = positionOfNextThemeBlock + Vector3.down * lineHeight;
}
return positionOfNextThemeBlock;
}
}
}