MCPcopy Index your code
hub / github.com/NetHack/NetHack / domouseaction

Function domouseaction

src/cmd.c:4915–5006  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4913}
4914
4915staticfn int
4916domouseaction(void)
4917{
4918 coordxy x, y;
4919 struct obj *o;
4920 int dir;
4921
4922 x = gc.clicklook_cc.x - u.ux;
4923 y = gc.clicklook_cc.y - u.uy;
4924
4925 if (flags.travelcmd) {
4926 if (abs(x) <= 1 && abs(y) <= 1) {
4927 x = sgn(x), y = sgn(y);
4928 } else {
4929 iflags.travelcc.x = u.tx = u.ux + x;
4930 iflags.travelcc.y = u.ty = u.uy + y;
4931 cmdq_add_ec(CQ_CANNED, dotravel_target);
4932 return ECMD_OK;
4933 }
4934
4935 if (x == 0 && y == 0) {
4936 /* here */
4937 if (IS_FOUNTAIN(levl[u.ux][u.uy].typ)
4938 || IS_SINK(levl[u.ux][u.uy].typ)) {
4939 cmdq_add_ec(CQ_CANNED, dodrink);
4940 return ECMD_OK;
4941 } else if (IS_THRONE(levl[u.ux][u.uy].typ)) {
4942 cmdq_add_ec(CQ_CANNED, dosit);
4943 return ECMD_OK;
4944 } else if (On_stairs_up(u.ux, u.uy)) {
4945 cmdq_add_ec(CQ_CANNED, doup);
4946 return ECMD_OK;
4947 } else if (On_stairs_dn(u.ux, u.uy)) {
4948 cmdq_add_ec(CQ_CANNED, dodown);
4949 return ECMD_OK;
4950 } else if ((o = vobj_at(u.ux, u.uy)) != 0) {
4951 cmdq_add_ec(CQ_CANNED, Is_container(o) ? doloot : dopickup);
4952 return ECMD_OK;
4953 } else {
4954 cmdq_add_ec(CQ_CANNED, donull); /* just rest */
4955 return ECMD_OK;
4956 }
4957 }
4958
4959 /* directional commands */
4960
4961 dir = xytodir(x, y);
4962 if (!m_at(u.ux + x, u.uy + y)
4963 && !test_move(u.ux, u.uy, x, y, TEST_MOVE)) {
4964 if (IS_DOOR(levl[u.ux + x][u.uy + y].typ)) {
4965 /* slight assistance to player: choose kick/open for them */
4966 if (levl[u.ux + x][u.uy + y].doormask & D_LOCKED) {
4967 cmdq_add_ec(CQ_CANNED, dokick);
4968 return ECMD_OK;
4969 }
4970 if (levl[u.ux + x][u.uy + y].doormask & D_CLOSED) {
4971 cmdq_add_ec(CQ_CANNED, doopen);
4972 return ECMD_OK;

Callers

nothing calls this directly

Calls 6

sgnFunction · 0.85
cmdq_add_ecFunction · 0.85
On_stairs_upFunction · 0.85
On_stairs_dnFunction · 0.85
xytodirFunction · 0.85
test_moveFunction · 0.85

Tested by

no test coverage detected