private void HandleLeftClick(NetworkPlayer me, MouseClickEventArgs e) { uiManager.ContextMenu.Hide(); // ignore other players for now since we don't have // a left button action on players yet. Going to be for selecting/targeting players. var player = e.GetNetworkPlayer(); if (player) { UnityEngine.Debug.Log("We left clicked on a player."); return; } var npc = e.GetNetworkNpc(); if (npc) { me.MoveToAndInteractWith(NpcInteraction.Create(me, npc, -1), CheckIfRunning()); return; } var worldObject = e.GetNetworkObject(); //var worldObject = e.Object.transform.GetComponentInParent<NetworkObject>(); if (worldObject) { me.MoveToAndInteractWith(ObjectInteraction.Create(me, worldObject), CheckIfRunning()); return; } if (moveSound) { moveSound.Play(); } var terrainHit = e.GetTerrain(); //var terrain = e.Object.transform.GetComponent<Terrain>(); if (terrainHit.Terrain) { HandleTerrainInteraction(e, terrainHit.Terrain, terrainHit.Point); return; } WalkTo(me, terrainHit.Point); }
private void HandleRightClick(NetworkPlayer me, MouseClickEventArgs e) { var player = e.GetNetworkPlayer(); if (player) { var playerActions = playerManager.GetPlayerAlignmentActions(player.Alignment); if (playerActions.Count == 0) { return; } uiManager.ContextMenu .SetHeader(player.name) .SetItems(playerActions.Select(x => new ContextMenuItem { Text = x.Name, Click = () => HandlePlayerInteraction(player, x.Id), ActionId = x.Id }).ToArray()) .Show(); return; } var npc = e.GetNetworkNpc(); if (npc) { var npcActions = npc.Data.Actions; if (npcActions.Length == 0) { return; } uiManager.ContextMenu .SetHeader(npc.name) .SetItems(npcActions.Select(x => new ContextMenuItem { Text = x.Name, Click = () => HandleNpcInteraction(npc, x.Id), ActionId = x.Id }).ToArray()) .Show(); return; } var worldObject = e.GetNetworkObject(); if (worldObject) { uiManager.ContextMenu .SetHeader(worldObject.Data.Name) .Show(); return; } var terrainHit = e.GetTerrain(); if (terrainHit.Terrain) { var staticObjectHit = e.Collection.FirstOrDefault(x => x.collider.name.Contains("::")); if (staticObjectHit.point != Vector3.zero || IsStaticObject(terrainHit.Terrain, terrainHit.Point)) { var objCollider = e.GetStaticCollider(); var objId = objCollider.gameObject.GetObjectId(); if (objId >= 0) { var data = objectManager.GetObjectData(objId); uiManager.ContextMenu .SetHeader(data.Name) .SetItems(data.Actions.Select(x => new ContextMenuItem { Text = x.Name, Click = () => HandleStaticObjectInteraction(terrainHit.Terrain, terrainHit.Point, x.Id, objCollider), ActionId = x.Id }).ToArray()) .Show(); } return; } uiManager.ContextMenu .SetHeader("Terrain") .SetItems(new ContextMenuItem { Text = "Walk Here", Click = () => WalkTo(me, terrainHit.Point) }) .Show(); } }