Exemplo n.º 1
0
    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;
            }
        }
    }
Exemplo n.º 2
0
 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);
                 }
             }
         }
     }
 }
Exemplo n.º 3
0
    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));
    }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
    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);
    }
Exemplo n.º 6
0
    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();
            }
        }
    }
Exemplo n.º 7
0
 public HealthMeterTag(EntityHUD owner, EntityHUD.ConnectedHealthMeter meter)
 {
     this.owner = owner;
     this.meter = meter;
 }
Exemplo n.º 8
0
 void Awake()
 {
     EntityHUD.currentHud = this;
 }