Merge branch 'develop' of https://git.brew.monster/Unity/perfect-world-unity into update-in-game

This commit is contained in:
Chomper9981
2026-01-23 17:38:52 +07:00
18 changed files with 856 additions and 256 deletions
-56
View File
@@ -68,53 +68,6 @@ public class CECNPC : CECObject
m_pNPCModelPolicy = new CECNPCModelDefaultPolicy(this);
}
// Add this field to CECNPC class
private bool m_bHasRelatedTask = false;
private float _timerCheckTask = 0;
public void UpdateTaskIcon()
{
// Check if npcUI is assigned
if (m_npcUI == null)
{
m_npcUI = GetComponentInChildren<UINPC>();
if (m_npcUI == null) return;
}
// 2. Get Host Player & Interface
var host = CECGameRun.Instance.GetHostPlayer();
if (host == null) return;
var taskInterface = host.GetTaskInterface();
if (taskInterface == null)
{
if (m_bHasRelatedTask) // only update if state changed
{
m_npcUI.SetTaskIconMain(false);
m_bHasRelatedTask = false;
}
return;
}
// Get NPC Template ID
int npcTemplateID = m_NPCInfo.tid;
// Check if there are tasks related to this NPC
bool hasTask = taskInterface.HasTaskRelatedToNPC(npcTemplateID);
// Update icon only if state changed
if (m_bHasRelatedTask != hasTask)
{
m_bHasRelatedTask = hasTask;
m_npcUI.SetTaskIconMain(hasTask);
if (hasTask)
{
Debug.Log($"[Icon] NPC {m_strName} (TID: {npcTemplateID})");
}
}
}
public string GetName()
{
@@ -226,8 +179,6 @@ public class CECNPC : CECObject
new Vector2(m_vServerPos.x, m_vServerPos.z),
new Vector2(pHost.transform.position.x, pHost.transform.position.z));
}
UpdateTaskIcon();
return true;
}
@@ -561,13 +512,6 @@ public class CECNPC : CECObject
{
StartAdjustTransparency(-1.0f, GetTransparentLimit(), 500);
}
_timerCheckTask += Time.deltaTime;
if (_timerCheckTask > 1.0f)
{
_timerCheckTask = 0;
UpdateTaskIcon();
}
}
private void TickWork_Dead(float deltaTime)
+238 -3
View File
@@ -1,4 +1,7 @@
using BrewMonster;
using BrewMonster.Network;
using BrewMonster.Scripts;
using BrewMonster.Scripts.Task;
using CSNetwork.GPDataType;
using System;
using System.Runtime.InteropServices;
@@ -10,12 +13,17 @@ public class CECNPCServer : CECNPC
{
NPC_ESSENCE? m_pDBEssence;
MONSTER_ESSENCE? m_pMonEssence;
float m_fTaxRate = 0.05f; // Tax rate
float m_fTaxRate = 0.05f; // Tax rate
private IconTaskType m_TaskIcon = IconTaskType.QI_NONE;
private CECCounter m_TaskCounter = new CECCounter();
public override void SetUpCECNPC(CECNPCMan pNPCMan)
{
base.SetUpCECNPC(pNPCMan);
m_iCID = (int)Class_ID.OCID_SERVER;
m_pDBEssence = null;
m_TaskCounter.SetPeriod(1000);
}
public override bool Init(int tid, in info_npc info, ReadOnlySpan<byte> packet, int infoOffset)
{
@@ -57,11 +65,20 @@ public class CECNPCServer : CECNPC
transform.position = EC_Utility.ToVector3(info.pos);
StartWork((int)WorkType.WT_NOTHING, (int)WorkID.WORK_STAND);
UpdateTaskIcon();
return true;
}
protected override void Update()
{
base.Update();
if (m_TaskCounter.IncCounter(Time.deltaTime * 1000))
{
m_TaskCounter.Reset();
UpdateCurTaskIcon();
}
}
// Get way point ID bound with this NPC
public uint? GetWayPointID()
{
@@ -83,4 +100,222 @@ public class CECNPCServer : CECNPC
{
return 1.0f + m_pDBEssence.Value.tax_rate;
}
private void UpdateCurTaskIcon()
{
var pHost = CECGameRun.Instance.GetHostPlayer();
if (pHost == null || pHost.GetTaskInterface() == null)
{
return;
}
if (m_pDBEssence == null)
{
return;
}
var pTaskMan = EC_Game.GetTaskTemplateMan();
var pDataMan = ElementDataManProvider.GetElementDataMan();
var pTask = pHost.GetTaskInterface();
const uint TASK_HAVE_COMPLETE = 0x10000000;
const uint TASK_COMPLETE = 0x01;
const uint TASK_INCOMPLETE = 0x02;
const uint TASK_CANGET = 0x04;
const uint TASK_CANNOTGET = 0x08;
const uint TASK_COMPLETE_TYPE1 = 0x10;
const uint TASK_CANGET_TYPE1 = 0x20;
const uint TASK_COMPLETE_TYPE2 = 0x40;
const uint TASK_CANGET_TYPE2 = 0x80;
const uint TASK_COMPLETE_TYPE3 = 0x100;
const uint TASK_CANGET_TYPE3 = 0x200;
const uint TASK_COMPLETE_TYPE4 = 0x400;
const uint TASK_CANGET_TYPE4 = 0x800;
m_TaskIcon = IconTaskType.QI_NONE;
uint taskFlag = 0;
BMLogger.Log($"[UpdateCurTaskIcon] NPC {m_NPCInfo.nid}, id_task_in_service={m_pDBEssence.Value.id_task_in_service}, id_task_out_service={m_pDBEssence.Value.id_task_out_service}");
if (m_pDBEssence.Value.id_task_in_service != 0)
{
DATA_TYPE dt = DATA_TYPE.DT_INVALID;
var serviceData = pDataMan.get_data_ptr(m_pDBEssence.Value.id_task_in_service, ID_SPACE.ID_SPACE_ESSENCE, ref dt);
if (serviceData != null && dt == DATA_TYPE.DT_NPC_TASK_IN_SERVICE)
{
var inService = (NPC_TASK_IN_SERVICE)serviceData;
for (int i = 0; i < inService.id_tasks.Length; i++)
{
uint idTask = inService.id_tasks[i];
if (idTask <= 0 || !pTask.HasTask(idTask))
continue;
BMLogger.Log($"[UpdateCurTaskIcon] Check IN task {idTask}, HasTask={pTask.HasTask(idTask)}, CanFinish={pTask.CanFinishTask((idTask))}");
var pTaskTemp = pTaskMan.GetTaskTemplByID(idTask);
if (pTaskTemp == null)
continue;
if (pTask.CanFinishTask(idTask))
{
taskFlag |= TASK_HAVE_COMPLETE;
if (pTaskTemp.IsKeyTask())
{
m_TaskIcon = IconTaskType.QI_IN_K;
BMLogger.Log($"[UpdateCurTaskIcon] Set icon QI_IN_K for task {idTask}");
UpdateTaskIconUI();
return;
}
else if (pTaskTemp.GetType() == (uint)ENUM_TASK_TYPE.enumTTEvent || pTaskTemp.GetType() == (uint)ENUM_TASK_TYPE.enumTTDaily)
{
taskFlag |= TASK_COMPLETE_TYPE3;
}
else if (pTaskTemp.GetType() == (uint)ENUM_TASK_TYPE.enumTTQiShaList)
{
taskFlag |= TASK_COMPLETE_TYPE2;
}
else if (pTaskTemp.GetType() == (uint)ENUM_TASK_TYPE.enumTTFaction || pTaskTemp.GetType() == (uint)ENUM_TASK_TYPE.enumTTFunction)
{
taskFlag |= TASK_COMPLETE_TYPE1;
}
else if (pTaskTemp.GetType() == (uint)ENUM_TASK_TYPE.enumTTMajor)
{
taskFlag |= TASK_COMPLETE_TYPE4;
}
else
{
taskFlag |= TASK_COMPLETE;
}
}
else
{
taskFlag |= TASK_INCOMPLETE;
}
}
}
}
if ((taskFlag & TASK_HAVE_COMPLETE) != 0)
{
if ((taskFlag & TASK_COMPLETE_TYPE4) != 0)
m_TaskIcon = IconTaskType.QI_IN_TYPE4;
else if ((taskFlag & TASK_COMPLETE_TYPE3) != 0)
m_TaskIcon = IconTaskType.QI_IN_TYPE3;
else if ((taskFlag & TASK_COMPLETE_TYPE2) != 0)
m_TaskIcon = IconTaskType.QI_IN_TYPE2;
else if ((taskFlag & TASK_COMPLETE) != 0)
m_TaskIcon = IconTaskType.QI_IN;
else if ((taskFlag & TASK_COMPLETE_TYPE1) != 0)
m_TaskIcon = IconTaskType.QI_IN_TYPE1;
BMLogger.Log($"[UpdateCurTaskIcon] Set complete icon {m_TaskIcon}");
UpdateTaskIconUI();
return;
}
if (m_pDBEssence.Value.id_task_out_service != 0)
{
DATA_TYPE dt = DATA_TYPE.DT_INVALID;
var serviceData = pDataMan.get_data_ptr(
m_pDBEssence.Value.id_task_out_service,
ID_SPACE.ID_SPACE_ESSENCE,
ref dt
);
if (serviceData != null && dt == DATA_TYPE.DT_NPC_TASK_OUT_SERVICE)
{
var outService = (NPC_TASK_OUT_SERVICE)serviceData;
if (outService.storage_id != 0 && outService.storage_open_item != 0)
{
var pack = pHost.GetInventory(InventoryConst.IVTRTYPE_PACK);
if (pack != null && pack.GetItemTotalNum((int)outService.storage_open_item) > 0)
{
taskFlag |= TASK_CANGET_TYPE2;
}
}
// Check normal tasks
for (int i = 0; i < outService.id_tasks.Length; i++)
{
uint idTask = outService.id_tasks[i];
if (idTask <= 0)
continue;
BMLogger.Log($"[UpdateCurTaskIcon] Check OUT task {idTask}, CanShow={pTask.CanShowTask(idTask)}, CanDeliver={pTask.CanDeliverTask(idTask)}");
if (!pTask.CanShowTask(idTask))
continue;
var pTaskTemp = pTaskMan.GetTaskTemplByID(idTask);
if (pTaskTemp == null)
continue;
if (pTask.CanDeliverTask(idTask) == 0)
{
if (pTaskTemp.IsKeyTask())
{
m_TaskIcon = IconTaskType.QI_OUT_K;
BMLogger.Log($"[UpdateCurTaskIcon] Set icon QI_OUT_K for task {idTask}");
UpdateTaskIconUI();
return;
}
else if (pTaskTemp.GetType() == (uint)ENUM_TASK_TYPE.enumTTEvent || pTaskTemp.GetType() == (uint)ENUM_TASK_TYPE.enumTTDaily)
{
taskFlag |= TASK_CANGET_TYPE3;
}
else if (pTaskTemp.GetType() == (uint)ENUM_TASK_TYPE.enumTTQiShaList)
{
taskFlag |= TASK_CANGET_TYPE2;
}
else if (pTaskTemp.GetType() == (uint)ENUM_TASK_TYPE.enumTTFaction || pTaskTemp.GetType() == (uint)ENUM_TASK_TYPE.enumTTFunction)
{
taskFlag |= TASK_CANGET_TYPE1;
}
else if (pTaskTemp.GetType() == (uint)ENUM_TASK_TYPE.enumTTMajor)
{
taskFlag |= TASK_CANGET_TYPE4;
}
else
{
taskFlag |= TASK_CANGET;
}
}
else
{
taskFlag |= TASK_CANNOTGET;
}
}
}
}
// Set icon by available task priority
if ((taskFlag & TASK_CANGET_TYPE4) != 0)
m_TaskIcon = IconTaskType.QI_OUT_TYPE4;
else if ((taskFlag & TASK_CANGET_TYPE3) != 0)
m_TaskIcon = IconTaskType.QI_OUT_TYPE3;
else if ((taskFlag & TASK_CANGET_TYPE2) != 0)
m_TaskIcon = IconTaskType.QI_OUT_TYPE2;
else if ((taskFlag & TASK_CANGET) != 0)
m_TaskIcon = IconTaskType.QI_OUT;
else if ((taskFlag & TASK_CANGET_TYPE1) != 0)
m_TaskIcon = IconTaskType.QI_OUT_TYPE1;
else if ((taskFlag & TASK_INCOMPLETE) != 0)
m_TaskIcon = IconTaskType.QI_IN_N;
else if ((taskFlag & TASK_CANNOTGET) != 0)
m_TaskIcon = IconTaskType.QI_OUT_N;
BMLogger.Log($"[UpdateCurTaskIcon] Final icon {m_TaskIcon}, taskFlag={taskFlag}");
UpdateTaskIconUI();
}
private void UpdateTaskIconUI()
{
if(m_npcUI != null)
{
m_npcUI.SetTaskIcon(m_TaskIcon);
}
}
}
@@ -300,96 +300,28 @@ namespace BrewMonster.Scripts.Task
return tasks;
}
// Add this method to ATaskTemplMan class if not exists
public List<ATaskTempl> GetAllTopTasks()
public int GetStorageRefreshPerDay(uint storageId)
{
List<ATaskTempl> topTasks = new List<ATaskTempl>();
if (storageId == 0 || storageId > TaskInterfaceConstants.TASK_STORAGE_COUNT)
return 0;
// Iterate through all task templates and collect top-level tasks
// Assuming you have a dictionary or collection of all tasks
foreach (var kvp in m_TaskTemplMap) // Replace with your actual collection name
if (!m_StorageEssenseMap.TryGetValue(storageId, out uint essenceId))
return 0;
DATA_TYPE dt = DATA_TYPE.DT_INVALID;
var serviceData = m_pEleDataMan.get_data_ptr(
essenceId,
ID_SPACE.ID_SPACE_ESSENCE,
ref dt
);
if (serviceData != null && dt == DATA_TYPE.DT_NPC_TASK_OUT_SERVICE)
{
var templ = kvp.Value;
if (templ != null && templ.m_pParent == null) // Top-level task has no parent
{
topTasks.Add(templ);
}
var outService = (NPC_TASK_OUT_SERVICE)serviceData;
return (int)outService.storage_refresh_per_day;
}
return topTasks;
}
// Alternative method if you want to check by NPC ID directly
public List<ATaskTempl> GetAvailableTasksForNPC(int npcID)
{
List<ATaskTempl> availableTasks = new List<ATaskTempl>();
foreach (var kvp in m_TaskTemplMap) // Replace with your actual collection name
{
var templ = kvp.Value;
if (templ != null &&
templ.m_pParent == null &&
templ.m_FixedData.m_ulDelvNPC == npcID)
{
availableTasks.Add(templ);
}
}
return availableTasks;
}
// Add this method to ATaskTemplMan class
/// <summary>
/// Get all task templates (for iterating to find available tasks)
/// Lấy tất cả task templates (để duyệt tìm nhiệm vụ có thể nhận)
/// </summary>
public List<ATaskTempl> GetAllTaskTemplates()
{
List<ATaskTempl> allTasks = new List<ATaskTempl>();
// Assuming you have a collection storing all task templates
// Replace m_TaskMap with your actual collection name
if (m_TaskTemplMap != null)
{
foreach (var kvp in m_TaskTemplMap)
{
if (kvp.Value != null)
{
allTasks.Add(kvp.Value);
}
}
}
return allTasks;
}
/// <summary>
/// Get list of tasks delivered by a specific NPC
/// </summary>
public List<ATaskTempl> GetTasksFromNPC(int npcID)
{
var result = new List<ATaskTempl>();
// Check if NPC info map is available
if (m_NPCInfoMap != null && m_NPCInfoMap.TryGetValue((uint)npcID, out var npcInfo))
{
return new List<ATaskTempl>();
}
else
{
// Fallback
foreach (var kvp in m_TaskTemplMap)
{
var templ = kvp.Value;
if (templ != null && templ.m_FixedData.m_ulDelvNPC == npcID)
{
result.Add(templ);
}
}
}
return result;
return 0;
}
// General method to read a struct from a FileStream
@@ -531,85 +531,6 @@ namespace BrewMonster.Scripts.Task
return m_pActiveListBuf;
}
// Trong file CECTaskInterface.cs
public bool HasTaskRelatedToNPC(int npcID)
{
// Check tasks is active
ActiveTaskList activeList = GetActiveTaskList();
if (activeList != null && activeList.m_TaskEntries != null)
{
for (int i = 0; i < activeList.m_uTaskCount; i++)
{
var entry = activeList.m_TaskEntries[i];
if (entry == null) continue;
ATaskTempl templ = entry.GetTempl();
if (templ == null) continue;
// Check if this NPC is the target of the task
if (IsNPCTargetOfTask(templ, entry, npcID))
{
return true;
}
}
}
// Check tasks new
ATaskTemplMan taskMan = GetTaskTemplMan();
if (taskMan != null)
{
List<ATaskTempl> npcTasks = taskMan.GetTasksFromNPC(npcID);
if (npcTasks != null)
{
uint ulCurTime = GetCurTime();
foreach (var templ in npcTasks)
{
// Check prerequisite
if (templ.CheckPrerequisite(this, activeList, ulCurTime) == 0)
{
return true;
}
}
}
}
return false;
}
// Check NPC is target of the task
private bool IsNPCTargetOfTask(ATaskTempl templ, ActiveTaskEntry entry, int npcID)
{
var data = templ.m_FixedData;
// Task completed case
if (entry.IsFinished())
{
if (data.m_ulAwardNPC == npcID) return true;
}
else
{
// NPC target
if (data.m_ulNPCMoving == npcID) return true;
// Pos target
if (data.m_ulNPCDestSite == npcID) return true;
// Security target
if (data.m_ulNPCToProtect == npcID) return true;
if (data.m_enumMethod == (ulong)TaskCompletionMethod.enumTMTalkToNPC)
{
if (data.m_ulNPCMoving == 0 && data.m_ulAwardNPC == npcID)
{
return true;
}
}
}
return false;
}
// private void InitActiveTaskList()
// {
// ActiveTaskList pLst = GetActiveTaskList();
@@ -5,6 +5,27 @@ using UnityEngine.UI;
namespace BrewMonster
{
public enum IconTaskType
{
QI_NONE = -1,
QI_OUT = 2, // task tu chan (nhan)
QI_IN = 2, // task tu chan (hoan thanh)
QI_OUT_N = 3, // chua du dieu kien nhan task
QI_IN_N = 3, // task nhan nhung chua lam (chua xong)
QI_OUT_K = 0, // chua biet
QI_IN_K = 5, // chua biet
QI_OUT_TYPE1 = 5, // task bang hoi (nhan)
QI_IN_TYPE1 = 5, // task bang hoi (hoan thanh)
QI_OUT_TYPE2 = 1, // chua biet
QI_IN_TYPE2 = 1, // chua biet
QI_OUT_TYPE3 = -1, // task daily (nhan)
QI_IN_TYPE3 = -1, // task daily (hoan thanh)
QI_OUT_TYPE4 = 0, // task chinh (nhan)
QI_IN_TYPE4 = 4, // task chinh (hoan thanh)
}
public class UINPC : MonoBehaviour
{
[SerializeField] private TextMeshProUGUI _nameText;
@@ -13,6 +34,21 @@ namespace BrewMonster
[Header("List Icon Task")]
[SerializeField] private GameObject _iconTaskMain;
[SerializeField] private List<Sprite> _listIconTask;
private Image _cachedIconImage;
private void Awake()
{
if (_iconTaskMain != null)
{
_cachedIconImage = _iconTaskMain.GetComponent<Image>();
if (_cachedIconImage == null)
{
BMLogger.LogError($"[UINPC] _iconTaskMain doesn't have Image component!");
}
}
}
// Start is called once before the first execution of Update after the MonoBehaviour is created
public void SetName(string name)
@@ -30,10 +66,30 @@ namespace BrewMonster
_healthText.text = healthText;
}
public void SetTaskIcon(IconTaskType iconType)
{
if (_iconTaskMain == null || _cachedIconImage == null)
{
return;
}
int iconIndex = (int)iconType;
if (iconIndex >= 0 && _listIconTask != null && iconIndex < _listIconTask.Count)
{
_cachedIconImage.sprite = _listIconTask[iconIndex];
_iconTaskMain.SetActive(true);
}
else
{
_iconTaskMain.SetActive(false);
}
}
public void SetTaskIconMain(bool isShow)
{
if(_iconTaskMain != null)
if (_iconTaskMain != null)
_iconTaskMain.SetActive(isShow);
}
}
}

Before

Width:  |  Height:  |  Size: 634 KiB

After

Width:  |  Height:  |  Size: 634 KiB

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: d2ab8e4bde76db4478aff9994361b46a
guid: 4276d7122cfaf624f8aa32336fc90f1c
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
@@ -110,7 +110,7 @@ TextureImporter:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: ChuTuyen_0
name: iconTask1_0
rect:
serializedVersion: 2
x: 201
@@ -125,8 +125,8 @@ TextureImporter:
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 42af0f91f2269ff47b862dbb765d32f2
internalID: -338310257
spriteID: 3577b54168afc5242a9c02dce91f1260
internalID: 1049366989
vertices: []
indices:
edges: []
@@ -135,7 +135,7 @@ TextureImporter:
customData:
physicsShape: []
bones: []
spriteID: f1f78b52002efcf4da3264912e38dddb
spriteID: 16fc5ffd47ee2f1429eb79e647db644d
internalID: 0
vertices: []
indices:
@@ -145,7 +145,7 @@ TextureImporter:
spriteCustomMetadata:
entries: []
nameFileIdTable:
ChuTuyen_0: -338310257
iconTask1_0: 1049366989
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:

Before

Width:  |  Height:  |  Size: 568 KiB

After

Width:  |  Height:  |  Size: 568 KiB

@@ -1,12 +1,12 @@
fileFormatVersion: 2
guid: cd36f0d3de378e94caea2807302f7a18
guid: 454cf3e89d0aaa54b9c60ca081ff5f46
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
@@ -37,13 +37,13 @@ TextureImporter:
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
@@ -52,9 +52,9 @@ TextureImporter:
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 0
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
@@ -108,12 +108,34 @@ TextureImporter:
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
sprites:
- serializedVersion: 2
name: iconTask2_0
rect:
serializedVersion: 2
x: 178
y: 221
width: 616
height: 628
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 88c7b386a6be7bd4dbb002f3a93895a1
internalID: -61588767
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
spriteID: a16d633ba72e5c04487f3be78b1735bc
internalID: 0
vertices: []
indices:
@@ -122,7 +144,8 @@ TextureImporter:
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
nameFileIdTable:
iconTask2_0: -61588767
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:

Before

Width:  |  Height:  |  Size: 640 KiB

After

Width:  |  Height:  |  Size: 640 KiB

@@ -0,0 +1,153 @@
fileFormatVersion: 2
guid: 13278f4394269834cb244620cd66c803
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: iconTask3_0
rect:
serializedVersion: 2
x: 154
y: 231
width: 632
height: 655
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 252520bbad7c9374e90d1c950b8482d6
internalID: 1481922406
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: fdab89333c5e8344e98af4bef992c422
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
iconTask3_0: 1481922406
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

@@ -1,12 +1,12 @@
fileFormatVersion: 2
guid: 7c5f76c428f533d4ca3a449e2bc02ff5
guid: f666d782d2b84fa48912bb3166f214aa
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
@@ -37,13 +37,13 @@ TextureImporter:
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
@@ -52,9 +52,9 @@ TextureImporter:
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 0
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
@@ -108,12 +108,34 @@ TextureImporter:
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
sprites:
- serializedVersion: 2
name: iconTask4_0
rect:
serializedVersion: 2
x: 67
y: 108
width: 330
height: 312
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 591aabfa2f20afb4ea7673f8c6f3b77b
internalID: 799372409
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
spriteID: c8e66269510e1524eb24b5af756fb09f
internalID: 0
vertices: []
indices:
@@ -122,7 +144,8 @@ TextureImporter:
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
nameFileIdTable:
iconTask4_0: 799372409
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

@@ -0,0 +1,153 @@
fileFormatVersion: 2
guid: c27a0fab8aef4d74787fe56595601d9f
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: iconTask5_0
rect:
serializedVersion: 2
x: 169
y: 91
width: 247
height: 246
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 81a887702ec996041a55a92f080c99e2
internalID: 1342343447
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: ee5d2861e27ff8f43bb7b8face30c7bb
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
iconTask5_0: 1342343447
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

@@ -0,0 +1,153 @@
fileFormatVersion: 2
guid: 6deb3d497e3c2a44cb875be0f13bbf36
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: iconTask6_0
rect:
serializedVersion: 2
x: 93
y: 79
width: 313
height: 343
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 18be220273ab7564389626093c9fa09a
internalID: 1458661374
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 33b9f9e65720df144a10109ca92117d7
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
iconTask6_0: 1458661374
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
+11 -4
View File
@@ -147,7 +147,7 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3297168817873124018}
m_LocalRotation: {x: -0.08684798, y: 0.24095127, z: 0.02165367, w: 0.9664011}
m_LocalRotation: {x: -3.7702125e-16, y: 0.97228837, z: 0.23378475, w: 1.5679955e-15}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
@@ -255,7 +255,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
m_IsActive: 1
--- !u!224 &7509779512108699303
RectTransform:
m_ObjectHideFlags: 0
@@ -303,7 +303,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: -338310257, guid: d2ab8e4bde76db4478aff9994361b46a, type: 3}
m_Sprite: {fileID: 1049366989, guid: 4276d7122cfaf624f8aa32336fc90f1c, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
@@ -362,6 +362,13 @@ MonoBehaviour:
_healthText: {fileID: 0}
_healthImage: {fileID: 0}
_iconTaskMain: {fileID: 5100466107490290627}
_listIconTask:
- {fileID: 1049366989, guid: 4276d7122cfaf624f8aa32336fc90f1c, type: 3}
- {fileID: -61588767, guid: 454cf3e89d0aaa54b9c60ca081ff5f46, type: 3}
- {fileID: 1481922406, guid: 13278f4394269834cb244620cd66c803, type: 3}
- {fileID: 799372409, guid: f666d782d2b84fa48912bb3166f214aa, type: 3}
- {fileID: 1342343447, guid: c27a0fab8aef4d74787fe56595601d9f, type: 3}
- {fileID: 1458661374, guid: 6deb3d497e3c2a44cb875be0f13bbf36, type: 3}
--- !u!1 &6510845919681767284
GameObject:
m_ObjectHideFlags: 0
@@ -388,7 +395,7 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6510845919681767284}
m_LocalRotation: {x: 0.028356783, y: 0.9830809, z: 0.02226828, w: 0.17958853}
m_LocalRotation: {x: 0.15080568, y: -0.8027092, z: -0.16719593, w: 0.5522329}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0