Merge remote-tracking branch 'origin/implement_task_UI' into feature/fix-dyn-tasks

This commit is contained in:
MinhHai
2025-12-15 10:01:23 +07:00
21 changed files with 1092 additions and 19 deletions
@@ -0,0 +1,397 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &111271885693053298
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 562642038236230410}
- component: {fileID: 3682957078725161371}
m_Layer: 5
m_Name: EmotionWindow
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &562642038236230410
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 111271885693053298}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 6149182975052679886}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &3682957078725161371
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 111271885693053298}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e42ed2cbf208e60488b8bc1d63a3b1d7, type: 3}
m_Name:
m_EditorClassIdentifier:
slot: 0
--- !u!1 &2171808091279523492
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2795398590258317195}
- component: {fileID: 659088020461764430}
- component: {fileID: 8890278808492480577}
- component: {fileID: 1984081446122729312}
m_Layer: 5
m_Name: Button
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2795398590258317195
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2171808091279523492}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 2.5381, y: 2.5381, z: 2.5381}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3590330098133380806}
m_Father: {fileID: 6149182975052679886}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: -435}
m_SizeDelta: {x: 160, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &659088020461764430
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2171808091279523492}
m_CullTransparentMesh: 1
--- !u!114 &8890278808492480577
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2171808091279523492}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &1984081446122729312
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2171808091279523492}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 8890278808492480577}
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 3682957078725161371}
m_TargetAssemblyTypeName: BrewMonster.UI.EmoteWindow, Assembly-CSharp
m_MethodName: OnDragClick
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!1 &4678669480211337198
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6149182975052679886}
- component: {fileID: 3021640613906495181}
- component: {fileID: 7003611699134334505}
m_Layer: 5
m_Name: Image
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6149182975052679886
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4678669480211337198}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2795398590258317195}
m_Father: {fileID: 562642038236230410}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3021640613906495181
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4678669480211337198}
m_CullTransparentMesh: 1
--- !u!114 &7003611699134334505
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4678669480211337198}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.8679245, g: 0.7242908, b: 0.1514774, a: 0.20392157}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &6260694520480554099
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3590330098133380806}
- component: {fileID: 7504965690579856955}
- component: {fileID: 8982944209707270503}
m_Layer: 5
m_Name: Text (TMP)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3590330098133380806
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6260694520480554099}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2795398590258317195}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7504965690579856955
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6260694520480554099}
m_CullTransparentMesh: 1
--- !u!114 &8982944209707270503
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6260694520480554099}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: WaveHand
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4281479730
m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 24
m_fontSizeBase: 24
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: eb88919320b4229459c83b6b1f8f1e7b
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -21,3 +21,5 @@ MonoBehaviour:
prefab: {fileID: 903595479696773158, guid: cf26d96ae7d984ba8a5b6cef44adffeb, type: 3}
- id: Win_Task
prefab: {fileID: 6999114045547682248, guid: 8027cada0ef5e4a9f827001b4747174d, type: 3}
- id: Win_SkillSubAction
prefab: {fileID: 111271885693053298, guid: eb88919320b4229459c83b6b1f8f1e7b, type: 3}
+2 -2
View File
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3c180e1658dbb5bd3b438f36770253ae8e04dff1d86b8b22e2bc279b683134d8
size 10732
oid sha256:305e74354eced472681f3a976c741e7e70d3ce8ba20714b215ac2e700299a956
size 10892
@@ -750,6 +750,14 @@ namespace BrewMonster.Scripts
{
return IsWorkRunning(Host_work_ID.WORK_SIT);
}
public bool IsStanding()
{
return IsWorkRunning(Host_work_ID.WORK_STAND);
}
public bool IsBeingBound()
{
return IsWorkRunning(Host_work_ID.WORK_BEBOUND);
}
//todo: use this method
public void FinishAllWork(bool bGotoStand)
{
@@ -62,6 +62,7 @@ namespace PerfectWorld.Scripts.Managers
case EC_MsgDef.MSG_PM_FACTION_PVP_MASK_MODIFY:
case EC_MsgDef.MSG_PM_PLAYERATKRESULT:
case EC_MsgDef.MSG_PM_CASTSKILL:
case EC_MsgDef.MSG_PM_PLAYERDOEMOTE:
TransmitMessage(Msg);
break;
case int value when value == EC_MsgDef.MSG_PM_PLAYERDIED:
@@ -620,6 +621,18 @@ namespace PerfectWorld.Scripts.Managers
case CommandID.PLAYER_CAST_RUNE_SKILL: cid = ((cmd_player_cast_rune_skill*)Msg.dwParam1).caster; break;
case CommandID.PLAYER_CAST_RUNE_INSTANT_SKILL: cid = ((cmd_player_cast_rune_instant_skill*)Msg.dwParam1).caster; break;*/
}
break;
case long value when value == EC_MsgDef.MSG_PM_PLAYERDOEMOTE:
if (Convert.ToInt32(Msg.dwParam2) == CommandID.OBJECT_DO_EMOTE)
{
cmd_object_do_emote pCmdDoEmote = GPDataTypeHelper.FromBytes<cmd_object_do_emote>((byte[])Msg.dwParam1);
cid = pCmdDoEmote.id;
}
else // Msg.dwParam2 == OBJECT_EMOTE_RESTORE
{
// cid = ((cmd_object_emote_restore*)Msg.dwParam1)->id;
}
break;
// ⚠️ Các case khác cũng tương tự, chỉ việc lấy ra đúng trường id / caster / user ...
@@ -652,6 +652,14 @@ namespace CSNetwork.C2SCommand
return octets;
}
public static Octets CreateEmoteActionCmd(int wPose)
{
cmd_emote_action pCmd = new cmd_emote_action()
{
action = (ushort)wPose
};
return SerializeCommand(CommandID.EMOTE_ACTION, pCmd);
}
// TODO: Check orginal C++ implementation
public static Octets CreateTaskNotifyCmd(byte[] pData, uint dwDataSize)
@@ -1,4 +1,5 @@
using System.Collections.Generic;
using BrewMonster;
namespace CSNetwork
{
@@ -61,6 +62,11 @@ namespace CSNetwork
for (i = 0; i < count; i++)
{
ECMSG msg = Instance.m_MsgList.Dequeue();
if (!Instance.m_MsgHandlerList.ContainsKey(msg.iManager))
{
BMLogger.LogError("Did not find handler ID: " + msg.iManager);
continue;
}
Instance.m_tempHandler = Instance.m_MsgHandlerList[msg.iManager];
if (Instance.m_tempHandler != null)
{
@@ -184,7 +184,7 @@ namespace CSNetwork
public static int MSG_PM_PLAYERSITDOWN = 369; // Player sit down / stand up
public const int MSG_PM_PLAYERATKRESULT = 370; // Player attack result
public static int MSG_PM_PLAYEREXTSTATE = 371; // Player extend states changed
public static int MSG_PM_PLAYERDOEMOTE = 372; // Player do emotion
public const int MSG_PM_PLAYERDOEMOTE = 372; // Player do emotion
public static int MSG_PM_PLAYERUSEITEM = 373; // Player use item
public static int MSG_PM_PLAYERCUSTOM = 374; // Player custom data
public static int MSG_PM_ENCHANTRESULT = 375; // Enchant result
@@ -1759,6 +1759,12 @@ namespace CSNetwork.GPDataType
public ushort id;
public int expiretime;
public char flag;
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct cmd_emote_action
{
public ushort action;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
@@ -1826,6 +1832,13 @@ namespace CSNetwork.GPDataType
public int op;
public int goal_id;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_object_do_emote
{
public int id;
public ushort emotion;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct cmd_task_deliver_item
@@ -733,6 +733,10 @@ namespace CSNetwork
case CommandID.OWN_EXT_PROP:
EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_OWNEXTPROP, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader);
break;
case CommandID.OBJECT_DO_EMOTE:
case CommandID.OBJECT_EMOTE_RESTORE:
EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PLAYERDOEMOTE, MANAGER_INDEX.MAN_PLAYER, -1, pDataBuf, pCmdHeader);
break;
}
}
@@ -1286,7 +1290,12 @@ namespace CSNetwork
iCount += iNumSend;
}
}
public void c2s_SendCmdEmoteAction(uint wPose)
{
gamedatasend gamedatasend = new gamedatasend();
gamedatasend.Data = C2SCommandFactory.CreateEmoteActionCmd((int)wPose);
SendProtocol(gamedatasend);
}
public void c2s_SendCmdTaskNotify(byte[] pData, uint dwDataSize)
{
gamedatasend gamedatasend = new gamedatasend();
@@ -329,6 +329,10 @@ namespace BrewMonster.Network
Instance._gameSession.c2s_SendCmdGetAllData(byPack, byEquip, byTask);
}
public static void c2s_CmdEmoteAction(uint wPose)
{
Instance._gameSession.c2s_SendCmdEmoteAction(wPose);
}
public static void c2s_CmdTaskNotify( byte[] pBuf, uint sz)
{
Instance._gameSession.c2s_SendCmdTaskNotify( pBuf, sz);
@@ -778,20 +778,154 @@ namespace BrewMonster
{
return m_iSCType;
}
//public abstract CECShortcut Clone();
public virtual CECShortcut Clone()
{
return new CECShortcut();
}
public virtual bool Execute() { return true; }
}
/* public class CECSCCommand : CECShortcut
{
public const int CMD_PLAYPOSE = 1; // Example constant
public override ShortcutType GetType() => ShortcutType.SCT_COMMAND;
public override CECShortcut Clone() => null;
public int GetCommandID() => 0;
public int GetParam() => 0;
}
public class CECSCCommand : CECShortcut
{
private int m_iCommand; // Command ID
private uint m_dwParam; // Parameter
public enum CommandID
{
CMD_UNKNOWN = -1,
CMD_SITDOWN = 0,
CMD_WALKRUN,
CMD_NORMALATTACK,
CMD_FINDTARGET,
CMD_ASSISTATTACK,
CMD_INVITETOTEAM,
CMD_LEAVETEAM,
CMD_KICKTEAMMEM,
CMD_FINDTEAM,
CMD_STARTTRADE,
CMD_SELLBOOTH,
CMD_BUYBOOTH,
CMD_PLAYPOSE,
CMD_INVITETOFACTION,
CMD_FLY,
CMD_PICKUP,
CMD_GATHER,
CMD_RUSHFLY,
CMD_BINDBUDDY,
}
public CECSCCommand(int iCommand)
{
m_iSCType = (int)ShortcutType.SCT_COMMAND;
m_iCommand = iCommand;
m_dwParam = 0;
}
public class CECSCSkill : CECShortcut
public CECSCCommand(CECSCCommand src)
{
m_iCommand = src.m_iCommand;
m_dwParam = src.m_dwParam;
}
public const int CMD_PLAYPOSE = 1; // Example constant
// public override ShortcutType GetType() => ShortcutType.SCT_COMMAND;
public override CECShortcut Clone() => new CECSCCommand(this);
public int GetCommandID() => 0;
public int GetParam() => 0;
// Set / Get command parameter
public void SetParam(uint dwParam) { m_dwParam = dwParam; }
// Execute shortcut
public override bool Execute()
{
CECHostPlayer pHost = CECGameRun.Instance.GetHostPlayer();
if (!pHost || !pHost.IsAllResReady())
return false;
// if (GetCoolTime(0)>0)
// {
// bool bForbidCmd = true;
// if (m_iCommand == CMD_RUSHFLY && pHost.GetRushFlyFlag())
// bForbidCmd = false;
//
// if (bForbidCmd)
// {
// g_pGame->GetGameRun()->AddFixedMessage(FIXMSG_CMD_INCOOLTIME);
// return false;
// }
// }
switch (m_iCommand)
{
// case CMD_SITDOWN: pHost->CmdSitDown(!pHost->IsSitting()); break;
// case CMD_WALKRUN: pHost->CmdWalkRun(!pHost->GetWalkRunFlag()); break;
// case CMD_NORMALATTACK: pHost->CmdNormalAttack(); break;
// case CMD_FINDTARGET: pHost->CmdFindTarget(); break;
// case CMD_ASSISTATTACK: pHost->CmdAssistAttack(); break;
// case CMD_INVITETOTEAM: pHost->CmdInviteToTeam(); break;
// case CMD_LEAVETEAM: pHost->CmdLeaveTeam(); break;
// case CMD_KICKTEAMMEM: pHost->CmdKickTeamMember(); break;
// case CMD_FINDTEAM: pHost->CmdFindTeam(); break;
// case CMD_STARTTRADE: pHost->CmdStartTrade(); break;
// case CMD_SELLBOOTH: pHost->CmdSellBooth(); break;
// case CMD_BUYBOOTH: pHost->CmdBuyBooth(); break;
case (int)CommandID.CMD_PLAYPOSE: pHost.CmdStartPose((int)m_dwParam); break;
// case CMD_INVITETOFACTION: pHost->CmdInviteToFaction(); break;
// case CMD_FLY:
// {
// // Èç¹ûÆï³ËÒª·ÉÐУ¬ÔòÕâЩ action switcher£¬·ñÔò CmdFly
// if (!pHost->GetActionSwitcher() || !pHost->GetActionSwitcher()->OnRideToFlyAction())
// pHost->CmdFly();
// break;
// }
// case CMD_PICKUP: pHost->CmdPickup(); break;
// case CMD_GATHER: pHost->CmdGather(); break;
// case CMD_RUSHFLY: pHost->CmdRushFly(); break;
// case CMD_BINDBUDDY: pHost->CmdBindBuddy(pHost->GetSelectedTarget()); break;
default:
return false;
}
return true;
}
// Get item cool time
int GetCoolTime(ref int piMax/* NULL */)
{
CECHostPlayer pHost = CECGameRun.Instance.GetHostPlayer();
int iTime = 0;
switch ((CommandID)m_iCommand)
{
case CommandID.CMD_RUSHFLY:
// iTime = pHost.GetCoolTime(GP_CT_FLY_RUSH, piMax);
break;
case CommandID.CMD_PLAYPOSE:
// todo need to get cooldown here
// iTime = pHost.GetCoolTime(GP_CT_EMOTE, piMax);
break;
case CommandID.CMD_BINDBUDDY:
{
// CECCounter& cnt = pHost->GetBindCmdCoolCnt();
// iTime = cnt.GetPeriod() - cnt.GetCounter();
//
// if (piMax)
// *piMax = cnt.GetPeriod();
break;
}
default:
// if (piMax) *piMax = 0;
break;
}
return iTime;
}
}
/* public class CECSCSkill : CECShortcut
{
private CECSkill m_pSkill;
public override ShortcutType GetType() => ShortcutType.SCT_SKILL;
@@ -332,7 +332,7 @@ namespace BrewMonster.Scripts.Task
byte[] m_pFinishedCountListBuf;// Finished count list buffer
byte[] m_pStorageTaskListBuf; // Storage tasks list buffer
private Dictionary<int, bool> m_TasksToConfirm = new Dictionary<int, bool>();
private readonly System.Collections.Generic.Dictionary<uint, bool> m_emotionTask = new System.Collections.Generic.Dictionary<uint, bool>();
private readonly Dictionary<uint, bool> m_emotionTask = new System.Collections.Generic.Dictionary<uint, bool>();
private bool m_bForceNavigateFinish;
private int m_tmFinishDlgShown;
public CECTaskInterface()
@@ -1660,6 +1660,83 @@ namespace BrewMonster.Scripts.Task
{
return m_pFinishedCountListBuf;
}
#region Emote
public void SetEmotion(int emotion)
{
ActiveTaskList pList = GetActiveTaskList();
List<ActiveTaskEntry> aEntries = new List<ActiveTaskEntry>(pList.m_TaskEntries);
ATaskTempl pTempl;
if (emotion < (int)TaskInterface.CommandTaskAction.CMD_EMOTION_BINDBUDDY)// pTempl->m_uiEmotion ֵΪ0±íʾ²»¼ì²é£¬ËùÒÔËùÓбíÇéÐòºÅ¶¼ºóÒÆ1
emotion += 1;
for (int i = 0; i < pList.m_uTaskCount; i++)
{
ActiveTaskEntry curEntry = aEntries[i];
pTempl = curEntry.GetTempl();
if (pTempl != null &&
pTempl.m_FixedData.m_enumMethod == (uint)TaskCompletionMethod.enumTMSimpleClientTask &&
pTempl.m_FixedData.m_uiEmotion > 0)
{
uint id = pTempl.GetID();
// Check if map does not contain OR value == false
if (!m_emotionTask.TryGetValue(id, out bool exists) || !exists)
{
m_emotionTask[id] = (pTempl.m_FixedData.m_uiEmotion == (uint)emotion);
}
}
}
}
// void CECTaskInterface::UpdateTaskEmotionAction(unsigned int task_id)
// {
// if (m_emotionTask.find(task_id)!=m_emotionTask.end())
// {
// m_emotionTask[task_id] = false;
// }
// }
// void CECTaskInterface::UpdateEmotionDlg(unsigned int task)
// {
// ActiveTaskList* pList = static_cast<ActiveTaskList*>(GetActiveTaskList());
// ActiveTaskEntry* aEntries = pList->m_TaskEntries;
// unsigned char i;
// const ATaskTempl* pTempl, *pTarget = NULL;
// ActiveTaskEntry* pTargetEntry = NULL;
//
// for (i = 0; i < pList->m_uTaskCount; i++)
// {
// ActiveTaskEntry& CurEntry = aEntries[i];
// pTempl = CurEntry.GetTempl();
//
// if (!pTempl || pTempl->GetID() == task)
// continue;
//
// if (pTempl && pTempl->m_enumMethod==enumTMSimpleClientTask && pTempl->m_uiEmotion)
// {
// pTarget = pTempl;
// pTargetEntry = &CurEntry;
// break;
// }
// }
// if (pTarget && pTargetEntry && !pTempl->CanFinishTask(this, pTargetEntry, GetCurTime()))
// {
// PopEmotionUI(pTarget->GetID(),pTarget->m_uiEmotion,true);
// }
// }
// void TaskInterface::PopEmotionUI(unsigned int task_id,unsigned int uiEmotion,bool bShow)
// {
// CECGameUIMan* pGameUI = g_pGame->GetGameRun()->GetUIManager()->GetInGameUIMan();
//
// if (pGameUI)
// {
// pGameUI->PopTaskEmotionDlg(task_id,uiEmotion,bShow);
// }
// }
#endregion
}
@@ -94,6 +94,14 @@ namespace BrewMonster.Scripts.Task
uint CanDeliverTask(uint ulTaskId);
void UpdateTaskUI(uint idTask, int reason);
#endif
public enum CommandTaskAction
{
CMD_EMOTION_BINDBUDDY = 1024, // If there are other non-expression actions, they will be 1025, 1026...
CMD_EMOTION_SITDOWN, // Sit down
CMD_JUMP_TRICKACTION, // Jump and roll
CMD_RUN_TRICKACTION, // Run and roll
}
// bool HasTask(uint taskId);
// bool CheckTaskForbid(uint taskId);
long GetGlobalValue(long key);
+12 -3
View File
@@ -1,12 +1,9 @@
using BrewMonster;
using System;
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices;
using BrewMonster.Scripts.Task.UI;
using BrewMonster.Scripts.UI;
using BrewMonster.UI;
using CSNetwork.Common;
using ModelRenderer.Scripts.Common;
using PerfectWorld.Scripts.Task;
using UnityEngine;
@@ -59,6 +56,18 @@ namespace BrewMonster.Scripts.Task
pAward.Show(false);
}
}
if (Input.GetKeyDown(KeyCode.E))
{
var dlg = CECUIManager.Instance.GetInGameUIMan().GetDialog("Win_SkillSubAction");
if (dlg && !dlg.gameObject.activeInHierarchy)
{
dlg.Show(true);
}
else
{
dlg.Show(false);
}
}
#endif
}
@@ -0,0 +1,132 @@
using BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay;
using BrewMonster.Network;
using UnityEngine;
using UnityEngine.UI;
namespace BrewMonster.UI
{
public class EmoteWindow : AUIDialog
{
public override void Show(bool value)
{
base.Show(value);
// int i, j;
// char szName[40];
// string strFile;
// CECShortcut pSCThis;
// PAUIIMAGEPICTURE pImage;
// PAUILABEL pLabel;
// CECGameRun pGameRun = EC_Game.GetGameRun();
// CECShortcutSet[] a_pSC =
// {
// pGameRun.GetGenCmdShortcuts(),
// pGameRun.GetTeamCmdShortcuts(),
// pGameRun.GetTradeCmdShortcuts(),
// pGameRun.GetPoseCmdShortcuts()
// };
// char *a_pszPrefix[] = { "BscCmd_", "TeamCmd_","TradeCmd_", "FaceCmd_" };
// char *a_pszTxtPrefix[] = { "Txt_BscCmd", "Txt_TeamCmd", "Txt_TradeCmd", "Txt_FaceCmd" };
// int objCount[] = { 9, 3, 3, 30 };
//
// a_LogOutput(1, "[Dat Emote] CDlgSkillSubAction::OnShowDialog");
// a_LogOutput(1, "[Dat Emote] CDlgSkillSubAction::OnShowDialog szName: %s", szName);
//
// for( i = 0; i < sizeof(a_pSC) / sizeof(CECShortcutSet *); i++ )
// {
// for( j = 0; j < objCount[i]; j++ )
// {
// sprintf(szName, "%s%02d", a_pszPrefix[i], j + 1);
// pImage = dynamic_cast<AUIImagePicture*>(GetDlgItem(szName));
//
// sprintf(szName, "%s%02d", a_pszTxtPrefix[i], j + 1);
// pLabel = dynamic_cast<AUILabel*>(GetDlgItem(szName));
//
// if( !pImage ) break;
//
// if (j < a_pSC[i]->GetShortcutNum()) {
// pSCThis = a_pSC[i]->GetShortcut(j);
// pImage->SetDataPtr(pSCThis,"ptr_CECShortcut");
//
// af_GetFileTitle(pSCThis->GetIconFile(), strFile);
// strFile.MakeLower();
// pImage->SetCover(GetGameUIMan()->m_pA2DSpriteIcons[CECGameUIMan::ICONS_ACTION],
// GetGameUIMan()->m_IconMap[CECGameUIMan::ICONS_ACTION][strFile]);
//
// pLabel->SetText(pSCThis->GetDesc());
// } else {
// pImage->Show(false);
// pLabel->Show(false);
// }
// }
// }
// ÔÚÇл»½çÃæ·ç¸ñµÄʱºò£¬´Ëʱ¿ÉÄܸ¸¶Ô»°¿òÖ¸ÕëΪ¿Õ
// if (GetParentDlgControl()) {
// SIZE size;
// size.cx = 326;
// size.cy = 720;
// size.cx = (int)(size.cx * m_pAUIManager->GetWindowScale() + 0.5f);
// size.cy = (int)(size.cy * m_pAUIManager->GetWindowScale() + 0.5f);
//
// if (!m_bSetVScroll) {
// GetParentDlgControl()->SetSubDialogOrgSize(size.cx, size.cy);
// m_bSetVScroll = true;
// }
// }
}
public int slot;
[ContextMenu("Test")]
public void OnDragClick() //PAUIDIALOG pDlgSrc, PAUIOBJECT pObjSrc, PAUIDIALOG pDlgOver, PAUIOBJECT pObjOver
{
// bool bInAutoMode = CECAutoPolicy::GetInstance().IsAutoPolicyEnabled();
// if (strstr(pDlgSrc->GetName(), "Win_Quickbar") ||
// 0 == stricmp(pDlgSrc->GetName(), "Win_SkillSubAction")) // 20140708 ÐµĶ¯×÷½çÃæ
// {
// if (bInAutoMode) return;
//todo: dummy call StartGame
// EC_Game.GetGameRun().StartGame(0, Vector3.zero);
if (EC_Game.GetGameRun().GetPoseCmdShortcuts() == null)
{
EC_Game.GetGameRun().StartGame(0, Vector3.zero);
}
CECShortcut pSC = EC_Game.GetGameRun().GetPoseCmdShortcuts().GetShortcut(slot);
// if (CDlgAutoHelp::IsAutoHelp() && strstr(pDlgSrc->GetName(), "Win_Quickbar"))
// {
// a_LogOutput(1, "[Dat Emote] Win_Quickbar");
// if (pSC->GetType() == CECShortcut::SCT_SKILL)
// {
// CECSCSkill* pSkillSC = dynamic_cast<CECSCSkill*>(pSC);
// if (pSkillSC && pSkillSC->GetSkill())
// CDlgWikiShortcut::PopSkillWiki(GetGameUIMan(), pSkillSC->GetSkill()->GetSkillID());
//
// }
// else if (pSC->GetType() == CECShortcut::SCT_ITEM)
// {
// CECSCItem* pItemSC = dynamic_cast<CECSCItem*>(pSC);
// CECIvtrItem* pItem = CECIvtrItem::CreateItem(pItemSC->GetItemTID(), 0, 1);
// if (pItem)
// {
// CDlgWikiShortcut::PopItemWiki(GetGameUIMan(), pItem);
// delete pItem;
// }
// }
// else
// {
// GetGameUIMan()->MessageBox("", GetStringFromTable(10754), MB_OK,
// A3DCOLORRGBA(255, 255, 255, 160));
// }
// }
// else
// {
if (pSC != null) // && pObjSrc->GetDataPtr("ptr_CECShortcut") == pSC
{
// a_LogOutput(1, "[Dat Emote] ptr_CECShortcut");
pSC.Execute();
}
// }
// }
}
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: e42ed2cbf208e60488b8bc1d63a3b1d7
@@ -17,6 +17,7 @@ namespace BrewMonster.UI
public virtual void Show(bool value)
{
gameObject.SetActive(value);
OnShowDialogue();
}
public void SetData(uint dwData, string strName)
@@ -99,6 +100,9 @@ namespace BrewMonster.UI
{
}
public virtual void OnShowDialogue()
{
}
}
}
+97
View File
@@ -18,6 +18,13 @@ public partial class CECGameRun
private GameObject _playerPrefab;
private GameObject _monsterPrefab;//CECMonster
private GameObject _npcServerPrefab;//CECNPCServer
// CECTeamMan* m_pTeamMan; // Team manager
private CECShortcutSet m_pNormalSCS; // Normal shortcut set
private CECShortcutSet m_pTeamSCS; // Team shortcut set
private CECShortcutSet m_pTradeSCS; // Trade shortcut set
private CECShortcutSet m_pPoseSCS; // Pose shortcut set
private CECShortcutSet m_pFactionSCS; // Faction shortcut set
// private GameRunConfig _gameRunConfig;
//[SerializeField] private Transform ground;
@@ -27,6 +34,12 @@ public partial class CECGameRun
protected CECUIManager m_pUIManager; // UI manager
public CECWorld GetWorld() { return m_pWorld; }
// Get shortcut sets
public CECShortcutSet GetGenCmdShortcuts() { return m_pNormalSCS; }
public CECShortcutSet GetTeamCmdShortcuts() { return m_pTeamSCS; }
public CECShortcutSet GetTradeCmdShortcuts() { return m_pTradeSCS; }
public CECShortcutSet GetPoseCmdShortcuts() { return m_pPoseSCS; }
public CECShortcutSet GetFactionCmdShortcuts() { return m_pFactionSCS; }
private static Dictionary<int, CECInstance> m_InstTab = new Dictionary<int, CECInstance>();
public void Init()
@@ -50,6 +63,7 @@ public partial class CECGameRun
//}
m_InstTab.Add(161, new CECInstance());
AddressableManager.Instance.OnDispose += Dispose;
StartGame(0, Vector3.zero);
}
private static void Dispose()
@@ -66,13 +80,26 @@ public partial class CECGameRun
_monsterPrefab = await AddressableManager.Instance.LoadPrefabAsync(AddressResourceConfig.MonsterPrefab);
_npcServerPrefab = await AddressableManager.Instance.LoadPrefabAsync(AddressResourceConfig.NpcServerPrefab);
}
private bool init;
public bool StartGame(int idInst, Vector3 vHostPos)
{
if (init)
{
return false;
}
// Create shortcuts
if (!CreateShortcuts())
{
return false;
}
if (!JumpToInstance(idInst, vHostPos))
{
BMLogger.LogError("CECGameRun::StartGame, Failed to create game world.");
return false;
}
init = true;
return true;
}
@@ -315,6 +342,76 @@ public partial class CECGameRun
return true;
}
// Create shortcuts
public bool CreateShortcuts()
{
// // Normal command shortcut set
m_pNormalSCS = new CECShortcutSet();
m_pNormalSCS.Init(8);
CECSCCommand pSC = new CECSCCommand((int)CECSCCommand.CommandID.CMD_SITDOWN);
m_pNormalSCS.SetShortcut(0, pSC);
pSC = new CECSCCommand((int)CECSCCommand.CommandID.CMD_WALKRUN);
m_pNormalSCS.SetShortcut(1, pSC);
pSC = new CECSCCommand((int)CECSCCommand.CommandID.CMD_NORMALATTACK);
m_pNormalSCS.SetShortcut(2, pSC);
pSC = new CECSCCommand((int)CECSCCommand.CommandID.CMD_FINDTARGET);
m_pNormalSCS.SetShortcut(3, pSC);
pSC = new CECSCCommand((int)CECSCCommand.CommandID.CMD_ASSISTATTACK);
m_pNormalSCS.SetShortcut(3, pSC);
pSC = new CECSCCommand((int)CECSCCommand.CommandID.CMD_FLY);
m_pNormalSCS.SetShortcut(4, pSC);
pSC = new CECSCCommand((int)CECSCCommand.CommandID.CMD_PICKUP);
m_pNormalSCS.SetShortcut(5, pSC);
pSC = new CECSCCommand((int)CECSCCommand.CommandID.CMD_GATHER);
m_pNormalSCS.SetShortcut(6, pSC);
pSC = new CECSCCommand((int)CECSCCommand.CommandID.CMD_RUSHFLY);
m_pNormalSCS.SetShortcut(6, pSC);
pSC = new CECSCCommand((int)CECSCCommand.CommandID.CMD_BINDBUDDY);
m_pNormalSCS.SetShortcut(7, pSC);
// Team command shortcut set
m_pTeamSCS = new CECShortcutSet();
m_pTeamSCS.Init(2);
pSC = new CECSCCommand((int)CECSCCommand.CommandID.CMD_INVITETOTEAM);
m_pTeamSCS.SetShortcut(0, pSC);
pSC = new CECSCCommand((int)CECSCCommand.CommandID.CMD_LEAVETEAM);
m_pTeamSCS.SetShortcut(1, pSC);
pSC = new CECSCCommand((int)CECSCCommand.CommandID.CMD_KICKTEAMMEM);
m_pTeamSCS.SetShortcut(2, pSC);
pSC = new CECSCCommand((int)CECSCCommand.CommandID.CMD_FINDTEAM);
m_pTeamSCS.SetShortcut(2, pSC);
// Trade command shortcut set
m_pTradeSCS = new CECShortcutSet();
m_pTradeSCS.Init(2);
pSC = new CECSCCommand((int)CECSCCommand.CommandID.CMD_STARTTRADE);
m_pTradeSCS.SetShortcut(0, pSC);
pSC = new CECSCCommand((int)CECSCCommand.CommandID.CMD_SELLBOOTH);
m_pTradeSCS.SetShortcut(1, pSC);
// Pose command shortcut set
m_pPoseSCS = new CECShortcutSet();
m_pPoseSCS.Init((int)RoleExpression.NUM_ROLEEXP);
for (int i = 0; i < (int)RoleExpression.NUM_ROLEEXP; i++)
{
pSC = new CECSCCommand((int)CECSCCommand.CommandID.CMD_PLAYPOSE);
pSC.SetParam((uint)i);
m_pPoseSCS.SetShortcut(i, pSC);
}
// Faction command shortcut set
m_pFactionSCS = new CECShortcutSet();
m_pFactionSCS.Init(1);
pSC = new CECSCCommand((int)CECSCCommand.CommandID.CMD_INVITETOFACTION);
m_pFactionSCS.SetShortcut(0, pSC);
return true;
}
// Get UI manager
+143
View File
@@ -426,6 +426,7 @@ namespace BrewMonster
case int value when value == EC_MsgDef.MSG_HST_STOPATTACK: OnMsgHstStopAttack(Msg); break;
case int value when value == EC_MsgDef.MSG_HST_SKILLRESULT: OnMsgHstSkillResult(Msg); break;
case int value when value == EC_MsgDef.MSG_HST_OWNEXTPROP: OnMsgHstExtProp(Msg); break;
case int value when value == EC_MsgDef.MSG_PM_PLAYERDOEMOTE: OnMsgPlayerDoEmote(Msg); break;
}
@@ -3652,6 +3653,148 @@ namespace BrewMonster
m_BasicProps.iResilience = pCmd.resilience;
m_BasicProps.iVigour = pCmd.vigour;
}
private void OnMsgPlayerDoEmote(ECMSG Msg)
{
if (!m_pWorkMan.IsStanding() &&
!m_pWorkMan.IsBeingBound())
return;
int cmd = Convert.ToInt32(Msg.dwParam2);
if (cmd == CommandID.OBJECT_DO_EMOTE)
{
cmd_object_do_emote pCmd = GPDataTypeHelper.FromBytes<cmd_object_do_emote>((byte[])Msg.dwParam1);
DoEmote(pCmd.emotion);
// if( m_iBuddyId )
// {
// CECPlayer pBuddy = m_pPlayerMan->GetPlayer(m_iBuddyId);
// if (pBuddy)
// pBuddy->DoEmote(pCmd->emotion);
// }
GetTaskInterface().SetEmotion(pCmd.emotion);
}
else if (cmd == CommandID.OBJECT_EMOTE_RESTORE)
{
CECHPWork pWork = m_pWorkMan.GetRunningWork((int)WorkID.WORK_STAND);
if (pWork!=null){
((CECHPWorkStand)pWork).SetPoseAction((int)PLAYER_ACTION_TYPE.ACT_STAND, false);
}
}
}
// Do emote action
private bool DoEmote(int idEmote)
{
if (!m_pWorkMan.IsStanding())
return false;
CECHPWorkStand pWork = m_pWorkMan.GetRunningWork(Host_work_ID.WORK_STAND) as CECHPWorkStand;
if (pWork == null)
{
Debug.LogError("Null CECHPWorkStand");
}
int iAction = (int)PLAYER_ACTION_TYPE.ACT_STAND;
bool bSession = false;
// Select action according to pose
switch (idEmote)
{
case (int)RoleExpression.ROLEEXP_WAVE: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_WAVE; break;
case (int)RoleExpression.ROLEEXP_NOD: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_NOD; break;
case (int)RoleExpression.ROLEEXP_SHAKEHEAD: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_SHAKEHEAD; break;
case (int)RoleExpression.ROLEEXP_SHRUG: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_SHRUG; break;
case (int)RoleExpression.ROLEEXP_LAUGH: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_LAUGH; break;
case (int)RoleExpression.ROLEEXP_ANGRY: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_ANGRY; break;
case (int)RoleExpression.ROLEEXP_STUN: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_STUN; break;
case (int)RoleExpression.ROLEEXP_DEPRESSED: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_DEPRESSED; break;
case (int)RoleExpression.ROLEEXP_KISSHAND: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_KISSHAND; break;
case (int)RoleExpression.ROLEEXP_SHY: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_SHY; break;
case (int)RoleExpression.ROLEEXP_SALUTE: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_SALUTE; break;
case (int)RoleExpression.ROLEEXP_SITDOWN:
iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_SITDOWN;
bSession = true;
break;
case (int)RoleExpression.ROLEEXP_ASSAULT: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_ASSAULT; break;
case (int)RoleExpression.ROLEEXP_THINK: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_THINK; break;
case (int)RoleExpression.ROLEEXP_DEFIANCE: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_DEFIANCE; break;
case (int)RoleExpression.ROLEEXP_VICTORY: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_VICTORY; break;
case (int)RoleExpression.ROLEEXP_GAPE: iAction = (int)PLAYER_ACTION_TYPE.ACT_GAPE; break;
case (int)RoleExpression.ROLEEXP_KISS: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_KISS; break;
case (int)RoleExpression.ROLEEXP_FIGHT: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_FIGHT; break;
case (int)RoleExpression.ROLEEXP_ATTACK1: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_ATTACK1; break;
case (int)RoleExpression.ROLEEXP_ATTACK2: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_ATTACK2; break;
case (int)RoleExpression.ROLEEXP_ATTACK3: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_ATTACK3; break;
case (int)RoleExpression.ROLEEXP_ATTACK4: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_ATTACK4; break;
case (int)RoleExpression.ROLEEXP_DEFENCE: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_DEFENCE; break;
case (int)RoleExpression.ROLEEXP_FALL: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_FALL; break;
case (int)RoleExpression.ROLEEXP_FALLONGROUND:
iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_FALLONGROUND; break;
case (int)RoleExpression.ROLEEXP_LOOKAROUND:
iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_LOOKAROUND; break;
case (int)RoleExpression.ROLEEXP_DANCE: iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_DANCE; break;
case (int)RoleExpression.ROLEEXP_FASHIONWEAPON:
iAction = (int)PLAYER_ACTION_TYPE.ACT_EXP_FASHIONWEAPON; break;
case (int)RoleExpression.ROLEEXP_TWO_KISS: iAction = (int)PLAYER_ACTION_TYPE.ACT_TWO_KISS; break;
case (int)RoleExpression.ROLEEXP_FIREWORK: iAction = (int)PLAYER_ACTION_TYPE.ACT_ATTACK_TOSS; break;
default:
break;
}
pWork.SetPoseAction(iAction, bSession);
return true;
}
// Get cool time
public int GetCoolTime(int iIndex,ref int piMax/* NULL */)
{
// if (iIndex >= 0 && iIndex < GP_CT_MAX)
// {
// if (piMax>0)
// piMax = m_aCoolTimes[iIndex].iMaxTime;
//
// return m_aCoolTimes[iIndex].iCurTime;
// }
return 0;
}
// Play a pose
public bool CmdStartPose(int iPose)
{
// first of all see if we need to cancel sitdown work.
if (m_pWorkMan.IsSitting())
{
UnityGameSession.c2s_CmdStandUp();
return false;
}
if (!CanDo(ActionCanDo.CANDO_PLAYPOSE))
return false;
if (!m_pWorkMan.IsStanding())
return false;
if (iPose == (int)RoleExpression.ROLEEXP_SITDOWN)
{
// UnityGameSession.c2s_CmdSessionEmote(iPose);
}
else if (iPose == (int)RoleExpression.ROLEEXP_KISS)
{
// if (GPDataTypeHelper.ISPLAYERID(m_idSelTarget))
// UnityGameSession.c2s_CmdConEmoteRequest(RoleExpression.ROLEEXP_KISS, m_idSelTarget);
}
else
UnityGameSession.c2s_CmdEmoteAction((uint)iPose);
return true;
}
}
public enum StateAnim