public void Init(Entity player, PlayerController controller, LevelCamera levelCam, FollowTransform followCam, EntityHUD hud, SaverOwner gameSaver, EntityObjectAttacher.Attacher attacher, EntityObjectAttacher.AttachTag attachTag, EntityLocalVarOverrider varOverrider, Vector3 P, Vector3 D) { this.ent = player; this.controller = controller; this.RegEvents(player); this.levelCam = levelCam; this.followCam = followCam; this.spawnPos = P; this.roomSpawnPos = P; this.spawnDir = D; this.roomSpawnDir = D; this.hud = hud; this.gameSaver = gameSaver; this.attacher = attacher; this.attachTag = attachTag; this.varOverrider = varOverrider; base.enabled = false; IDataSaver saver = gameSaver.GetSaver("/local/start", true); if (saver != null) { string a = saver.LoadData("level"); Vector3 vector; Vector3 vector2; if (a == Utility.GetCurrentSceneName() && SceneDoor.GetSpawnPoint(saver.LoadData("door"), out vector, out vector2)) { this.spawnPos = vector; this.spawnDir = vector2; } } }
void MouseMove(int btn, Vector2 P) { for (int i = this.currClickers.Count - 1; i >= 0; i--) { EntityHUD.ClickTrack clickTrack = this.currClickers[i]; if (clickTrack.btn == btn) { GuiClickableWheel guiClickableWheel = clickTrack.click as GuiClickableWheel; if (guiClickableWheel != null) { Camera cam = this.GetOverlayCam(); Rect activeScreenRect = guiClickableWheel.GetComponent <GuiClickRect>().GetActiveScreenRect(cam); Vector2 vector = (P - activeScreenRect.center) * 2f; float num = vector.sqrMagnitude / (activeScreenRect.width * activeScreenRect.width + activeScreenRect.height * activeScreenRect.height); if (num > 0.005f) { float num2 = EntityHUD.BiasWheelAngle(Mathf.Atan2(vector.y, vector.x)); vector..ctor(Mathf.Cos(num2), Mathf.Sin(num2)); Vector2 d = vector * num; guiClickableWheel.SendDir(d); } } } } }
static float BiasWheelAngle(float ang) { int q; float quadrant = EntityHUD.GetQuadrant(ang, out q); float x = EntityHUD.Sigmoid(quadrant * 2f - 1f, 1.5f); return(EntityHUD.ToQuadrant(x, q)); }
public void Stop() { EntityHUD entityHUD = this.owner; EntityHUD.ConnectedHealthMeter connectedHealthMeter = this.meter; this.owner = null; this.meter = null; if (entityHUD != null && connectedHealthMeter != null) { entityHUD.DisconnectHealthMeter(connectedHealthMeter); } }
void DoSpawn(Vector3 P, Vector3 dir) { Vector3 vector; if (this._spawnOnFloor && PhysicsUtility.GetFloorPoint(P, 20f, 50f, this._floorLayer, out vector)) { P.y = vector.y; } Vector3 vector2 = P + this._playerEnt.transform.localPosition; GameObject gameObject = Object.Instantiate <GameObject>(this._playerCamera, vector2 + this._playerCamera.transform.localPosition, this._playerCamera.transform.localRotation); gameObject.transform.localScale = this._playerCamera.transform.localScale; gameObject.name = this._playerCamera.name; CameraContainer component = gameObject.GetComponent <CameraContainer>(); component.Init(this._playerCamera); Entity entity = Object.Instantiate <Entity>(this._playerEnt, vector2, base.transform.rotation); entity.name = this._playerEnt.name; if (component != null) { RoomSwitchable componentInChildren = entity.GetComponentInChildren <RoomSwitchable>(); if (componentInChildren != null) { componentInChildren.SetLevelCamera(component); } } if (this._playerGraphics != null) { GameObject gameObject2 = Object.Instantiate <GameObject>(this._playerGraphics, entity.transform.position + this._playerGraphics.transform.localPosition, this._playerGraphics.transform.localRotation); gameObject2.transform.parent = entity.transform; gameObject2.transform.localScale = this._playerGraphics.transform.localScale; gameObject2.name = this._playerGraphics.name; } entity.Init(); entity.TurnTo(dir, 0f); FollowTransform componentInChildren2 = gameObject.GetComponentInChildren <FollowTransform>(); if (componentInChildren2 != null) { componentInChildren2.SetTarget(entity.transform); } LevelCamera componentInChildren3 = gameObject.GetComponentInChildren <LevelCamera>(); if (componentInChildren3 != null) { LevelRoom roomForPosition = LevelRoom.GetRoomForPosition(entity.WorldTracePosition, null); if (roomForPosition != null) { componentInChildren3.SetRoom(roomForPosition); roomForPosition.SetImportantPoint(vector2); LevelRoom.SetCurrentActiveRoom(roomForPosition, false); } } PlayerController controller = ControllerFactory.Instance.GetController <PlayerController>(this._controller); controller.ControlEntity(entity); controller.name = this._controller.name; entity.Activate(); if (this._varOverrider != null) { this._varOverrider.Apply(entity); } EntityHUD componentInChildren4 = gameObject.GetComponentInChildren <EntityHUD>(); if (componentInChildren4 != null) { componentInChildren4.Observe(entity, controller); } EntityObjectAttacher.Attacher attacher = null; EntityObjectAttacher component2 = base.GetComponent <EntityObjectAttacher>(); if (component2 != null) { attacher = component2.GetAttacher(); } EntityObjectAttacher.AttachTag attachTag = null; if (attacher != null) { attachTag = attacher.Attach(entity); } PlayerRespawner playerRespawner; if (this._respawner != null) { playerRespawner = Object.Instantiate <PlayerRespawner>(this._respawner); playerRespawner.name = this._respawner.name; } else { GameObject gameObject3 = new GameObject("PlayerRespawer"); playerRespawner = gameObject3.AddComponent <PlayerRespawner>(); } playerRespawner.Init(entity, controller, componentInChildren3, componentInChildren2, componentInChildren4, this._gameSaver, attacher, attachTag, this._varOverrider, P, dir); VarHelper.PlayerObj = entity.gameObject; // Store reference to player obj PlayerSpawner.OnSpawnedFunc onSpawnedFunc = PlayerSpawner.onSpawned; PlayerSpawner.onSpawned = null; if (onSpawnedFunc != null) { onSpawnedFunc(entity, gameObject, controller); } EventListener.PlayerSpawn(false); // Invoke custom event Object.Destroy(base.gameObject); }
public void TakeDamage(int damageAmount, ElementType hitElement) { PersistentGameManager pgMngr = FindObjectOfType <PersistentGameManager>(); // Modify damageAmount by resistance (via persistentgamemanager?) damageAmount = PersistentGameManager.CalculateDamage(Element, hitElement, damageAmount); EntityHUD myHud = GetComponentInChildren <EntityHUD>(); if (damageAmount > 0) { if (currentHP <= 0) { return; } GetComponentInChildren <HPBar>().UpdateBarForDamage(Mathf.Clamp(damageAmount, 0, currentHP)); if (shakeStrength <= 0) { StartCoroutine(ShowGotDamaged()); } else { shakeStrength = startShakeStrength; } // Display damaged text DamageText dmgText = ((GameObject)Instantiate(pgMngr.DamagedText, myHud.transform.GetChild(0).position + Vector3.up, pgMngr.DamagedText.transform.rotation)).GetComponent <DamageText>(); dmgText.elementType = hitElement; dmgText.damageAmount = damageAmount; } else if (damageAmount < 0) { if (currentHP < MaxHP) { GetComponentInChildren <HPBar>().UpdateBarForHeal(Mathf.Clamp(-damageAmount, 0, MaxHP - currentHP)); // Display healed text DamageText healText = ((GameObject)Instantiate(pgMngr.HealedText, myHud.transform.GetChild(0).position + Vector3.up, pgMngr.HealedText.transform.rotation)).GetComponent <DamageText>(); healText.elementType = hitElement; healText.damageAmount = -damageAmount; } } else { // Do Blocked // Display blocked text DamageText blockText = ((GameObject)Instantiate(pgMngr.BlockedText, myHud.transform.GetChild(0).position + Vector3.up, pgMngr.BlockedText.transform.rotation)).GetComponent <DamageText>(); blockText.elementType = hitElement; return; } currentHP = Mathf.Clamp(currentHP - damageAmount, 0, MaxHP); if (currentHP <= 0) { if (!hasDeathThrown && !InParty && Random.value < spareableChance) { ++currentHP; // DO THE DERP StartCoroutine(BecomeSpareable()); hasDeathThrown = true; } else { Die(); } } }
public HealthMeterTag(EntityHUD owner, EntityHUD.ConnectedHealthMeter meter) { this.owner = owner; this.meter = meter; }
void Awake() { EntityHUD.currentHud = this; }