working on displaying players on minimap

This commit is contained in:
in0finite 2019-06-26 03:08:44 +02:00
parent acf566f79a
commit 221086fe95
4 changed files with 65 additions and 2 deletions

View file

@ -0,0 +1,43 @@
using UnityEngine;
using SanAndreasUnity.UI;
using SanAndreasUnity.Utilities;
namespace SanAndreasUnity.Behaviours
{
public class Player2Minimap : MonoBehaviour
{
Net.Player m_player;
void Awake()
{
m_player = this.GetComponentOrThrow<Net.Player>();
}
void OnEnable()
{
UI.MapWindow.Instance.onDrawMapItems += OnMinimapGUI;
}
void OnDisable()
{
UI.MapWindow.Instance.onDrawMapItems -= OnMinimapGUI;
}
void OnMinimapGUI()
{
if (m_player == Net.Player.Local) // don't draw anything for local player - it's done by map window
return;
var ped = m_player.OwnedPed;
if (null == ped)
return;
MapWindow.Instance.DrawItemOnMapRotated( MiniMap.Instance.PlayerBlip, ped.transform.position, ped.transform.forward,
(int) MapWindow.Instance.PlayerPointerSize );
}
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: de46f572586cdb697b6c95283affa511
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -7,6 +7,8 @@ namespace SanAndreasUnity.UI {
public class MapWindow : PauseMenuWindow { public class MapWindow : PauseMenuWindow {
public static MapWindow Instance { get; private set; }
//private Rect visibleMapRect = new Rect (); //private Rect visibleMapRect = new Rect ();
private Vector2 m_focusPos = Vector2.one * MiniMap.mapSize / 2.0f; private Vector2 m_focusPos = Vector2.one * MiniMap.mapSize / 2.0f;
private float zoomLevel = 1; private float zoomLevel = 1;
@ -16,6 +18,7 @@ namespace SanAndreasUnity.UI {
private Texture2D m_infoAreaTexture; private Texture2D m_infoAreaTexture;
private float m_playerPointerSize = 10; private float m_playerPointerSize = 10;
public float PlayerPointerSize { get => m_playerPointerSize; set { m_playerPointerSize = value; } }
private bool m_drawZones = false; private bool m_drawZones = false;
private bool m_isWaypointPlaced = false; private bool m_isWaypointPlaced = false;
@ -25,6 +28,8 @@ namespace SanAndreasUnity.UI {
private Vector2 m_infoAreaScrollViewPos = Vector2.zero; private Vector2 m_infoAreaScrollViewPos = Vector2.zero;
public event System.Action onDrawMapItems = delegate {};
MapWindow() { MapWindow() {
@ -42,6 +47,9 @@ namespace SanAndreasUnity.UI {
void Awake () { void Awake () {
if (null == Instance)
Instance = this;
m_infoAreaTexture = F.CreateTexture (1, 1, Color.grey); m_infoAreaTexture = F.CreateTexture (1, 1, Color.grey);
} }
@ -572,6 +580,9 @@ namespace SanAndreasUnity.UI {
} }
// draw registered items
onDrawMapItems();
// draw player pointer // draw player pointer
this.DrawItemOnMapRotated( MiniMap.Instance.PlayerBlip, Ped.Instance.transform.position, Ped.Instance.transform.forward, (int) m_playerPointerSize ); this.DrawItemOnMapRotated( MiniMap.Instance.PlayerBlip, Ped.Instance.transform.position, Ped.Instance.transform.forward, (int) m_playerPointerSize );
// this.DrawItemOnMapRotated( MiniMap.Instance.PlayerBlip, Player.Instance.transform.position, Player.Instance.transform.forward, 10 ); // this.DrawItemOnMapRotated( MiniMap.Instance.PlayerBlip, Player.Instance.transform.position, Player.Instance.transform.forward, 10 );

View file

@ -14,8 +14,6 @@
- Cell focus is not always assigned on client - it happens when a syncvar for current ped in Player script arrives after Ped.Start() - Cell focus is not always assigned on client - it happens when a syncvar for current ped in Player script arrives after Ped.Start()
- add option to pause spawning, and to set spawn interval
- display players on minimap - display players on minimap
- port the whole UI to multiplayer - port the whole UI to multiplayer